diff --git a/.github/ISSUE_TEMPLATE/build_error.yml b/.github/ISSUE_TEMPLATE/build_error.yml index cf5d867ffe28f5..a537b7e63416e6 100644 --- a/.github/ISSUE_TEMPLATE/build_error.yml +++ b/.github/ISSUE_TEMPLATE/build_error.yml @@ -16,19 +16,29 @@ body: attributes: label: Steps to reproduce the issue description: | - Fill in the exact spec you are trying to build and the relevant part of the error message - placeholder: | + Fill in the console output from the exact spec you are trying to build. + value: | ```console - $ spack install + $ spack spec -I ... ``` + - type: textarea + id: error + attributes: + label: Error message + description: | + Please post the error message from spack inside the `
` tag below: + value: | +
Error message
+        ...
+        
validations: required: true - type: textarea id: information attributes: label: Information on your system - description: Please include the output of `spack debug report` + description: Please include the output of `spack debug report`. validations: required: true - type: markdown diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index 1208d8e3b10bf8..5051a575b399f5 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -31,7 +31,7 @@ jobs: bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ make patch unzip which xz python3 python3-devel tree \ cmake bison bison-devel libstdc++-static - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Setup repo and non-root user run: | git --version @@ -61,7 +61,7 @@ jobs: bzip2 curl file g++ gcc gfortran git gnupg2 gzip \ make patch unzip xz-utils python3 python3-dev tree \ cmake bison - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Setup repo and non-root user run: | git --version @@ -90,7 +90,7 @@ jobs: apt-get install -y \ bzip2 curl file g++ gcc gfortran git gnupg2 gzip \ make patch unzip xz-utils python3 python3-dev tree - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Setup repo and non-root user run: | git --version @@ -118,7 +118,7 @@ jobs: bzip2 curl file gcc-c++ gcc gcc-fortran tar git gpg2 gzip \ make patch unzip which xz python3 python3-devel tree \ cmake bison - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Setup repo and non-root user run: | git --version @@ -138,7 +138,7 @@ jobs: - name: Install dependencies run: | brew install cmake bison@2.7 tree - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Bootstrap clingo run: | source share/spack/setup-env.sh @@ -157,8 +157,8 @@ jobs: - name: Install dependencies run: | brew install tree - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: ${{ matrix.python-version }} - name: Bootstrap clingo @@ -174,8 +174,8 @@ jobs: matrix: python-version: ['2.7', '3.5', '3.6', '3.7', '3.8', '3.9'] steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: ${{ matrix.python-version }} - name: Setup repo and non-root user @@ -202,7 +202,7 @@ jobs: apt-get install -y \ bzip2 curl file g++ gcc patchelf gfortran git gzip \ make patch unzip xz-utils python3 python3-dev tree - - uses: actions/checkout@v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Setup repo and non-root user run: | git --version @@ -231,7 +231,7 @@ jobs: bzip2 curl file g++ gcc patchelf gfortran git gzip \ make patch unzip xz-utils python3 python3-dev tree \ gawk - - uses: actions/checkout@v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Setup repo and non-root user run: | git --version @@ -256,7 +256,7 @@ jobs: brew install tree # Remove GnuPG since we want to bootstrap it sudo rm -rf /usr/local/bin/gpg - - uses: actions/checkout@v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Bootstrap GnuPG run: | source share/spack/setup-env.sh @@ -272,7 +272,7 @@ jobs: brew install gawk tree # Remove GnuPG since we want to bootstrap it sudo rm -rf /usr/local/bin/gpg - - uses: actions/checkout@v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Bootstrap GnuPG run: | source share/spack/setup-env.sh diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index ab1cd8dbe06d3c..358960d56330c0 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -37,7 +37,7 @@ jobs: name: Build ${{ matrix.dockerfile[0] }} steps: - name: Checkout - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Set Container Tag Normal (Nightly) run: | @@ -67,7 +67,7 @@ jobs: uses: docker/setup-buildx-action@94ab11c41e45d028884a99163086648e898eed25 # @v1 - name: Log in to GitHub Container Registry - uses: docker/login-action@42d299face0c5c43a0487c477f595ac9cf22f1a7 # @v1 + uses: docker/login-action@dd4fa0671be5250ee6f50aedf4cb05514abda2c7 # @v1 with: registry: ghcr.io username: ${{ github.actor }} @@ -75,13 +75,13 @@ jobs: - name: Log in to DockerHub if: ${{ github.event_name != 'pull_request' }} - uses: docker/login-action@42d299face0c5c43a0487c477f595ac9cf22f1a7 # @v1 + uses: docker/login-action@dd4fa0671be5250ee6f50aedf4cb05514abda2c7 # @v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build & Deploy ${{ matrix.dockerfile[1] }} - uses: docker/build-push-action@7f9d37fa544684fb73bfe4835ed7214c255ce02b # @v2 + uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a # @v2 with: file: share/spack/docker/${{matrix.dockerfile[1]}} platforms: ${{ matrix.dockerfile[2] }} diff --git a/.github/workflows/execute_installer.ps1 b/.github/workflows/execute_installer.ps1 new file mode 100644 index 00000000000000..9d9f5cfbebbef4 --- /dev/null +++ b/.github/workflows/execute_installer.ps1 @@ -0,0 +1,7 @@ +$ proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru +$handle = $proc.Handle # cache proc.Handle +$proc.WaitForExit(); + +if ($proc.ExitCode -ne 0) { + Write-Warning "$_ exited with status code $($proc.ExitCode)" +} diff --git a/.github/workflows/macos_python.yml b/.github/workflows/macos_python.yml index a217a5aad40185..d04960a2f40e78 100644 --- a/.github/workflows/macos_python.yml +++ b/.github/workflows/macos_python.yml @@ -24,8 +24,8 @@ jobs: name: gcc with clang runs-on: macos-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: spack install @@ -39,8 +39,8 @@ jobs: runs-on: macos-latest timeout-minutes: 700 steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: spack install @@ -52,8 +52,8 @@ jobs: name: scipy, mpl, pd runs-on: macos-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: spack install diff --git a/.github/workflows/setup_git.ps1 b/.github/workflows/setup_git.ps1 new file mode 100644 index 00000000000000..36e0157c54444b --- /dev/null +++ b/.github/workflows/setup_git.ps1 @@ -0,0 +1,11 @@ +# (c) 2021 Lawrence Livermore National Laboratory + +Set-Location spack + +git config --global user.email "spack@example.com" +git config --global user.name "Test User" + +if ($(git branch --show-current) -ne "develop") +{ + git branch develop origin/develop +} diff --git a/.github/workflows/system_shortcut_check.ps1 b/.github/workflows/system_shortcut_check.ps1 new file mode 100644 index 00000000000000..03b3a236f1adc6 --- /dev/null +++ b/.github/workflows/system_shortcut_check.ps1 @@ -0,0 +1,4 @@ +param ($systemFolder, $shortcut) + +$start = [System.Environment]::GetFolderPath("$systemFolder") +Invoke-Item "$start\Programs\Spack\$shortcut" diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index 5935a81dd1be13..5c3079c07cf628 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -15,8 +15,8 @@ jobs: validate: runs-on: ubuntu-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: Install Python Packages @@ -31,10 +31,10 @@ jobs: style: runs-on: ubuntu-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 with: fetch-depth: 0 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: Install Python packages @@ -57,7 +57,7 @@ jobs: packages: ${{ steps.filter.outputs.packages }} with_coverage: ${{ steps.coverage.outputs.with_coverage }} steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 if: ${{ github.event_name == 'push' }} with: fetch-depth: 0 @@ -106,10 +106,10 @@ jobs: - python-version: 3.9 concretizer: original steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 with: fetch-depth: 0 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: ${{ matrix.python-version }} - name: Install System packages @@ -127,6 +127,10 @@ jobs: if python -c 'import sys; sys.exit(not sys.version_info >= (3, 6))'; then pip install --upgrade flake8 isort>=4.3.5 mypy>=0.900 black fi + - name: Pin pathlib for Python 2.7 + if: ${{ matrix.python-version == 2.7 }} + run: | + pip install -U pathlib2==2.3.6 - name: Setup git configuration run: | # Need this for the git tests to succeed. @@ -167,10 +171,10 @@ jobs: needs: [ validate, style, changes ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 with: fetch-depth: 0 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: Install System packages @@ -214,7 +218,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@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 - name: Setup repo and non-root user run: | git --version @@ -233,10 +237,10 @@ jobs: needs: [ validate, style, changes ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 with: fetch-depth: 0 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: Install System packages @@ -282,10 +286,10 @@ jobs: matrix: python-version: [3.8] steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 with: fetch-depth: 0 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: ${{ matrix.python-version }} - name: Install Python packages @@ -327,8 +331,8 @@ jobs: needs: [ validate, style, changes ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # @v2 - - uses: actions/setup-python@f38219332975fe8f9c04cca981d674bf22aea1d3 # @v2 + - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # @v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd # @v2 with: python-version: 3.9 - name: Install Python packages diff --git a/.github/workflows/windows_python.yml b/.github/workflows/windows_python.yml new file mode 100644 index 00000000000000..e1f1f99b3721c8 --- /dev/null +++ b/.github/workflows/windows_python.yml @@ -0,0 +1,188 @@ +name: windows tests + +on: + push: + branches: + - develop + - releases/** + pull_request: + branches: + - develop + - releases/** +defaults: + run: + shell: + powershell Invoke-Expression -Command ".\share\spack\qa\windows_test_setup.ps1"; {0} +jobs: + validate: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python Packages + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade vermin + - name: vermin (Spack's Core) + run: vermin --backport argparse --backport typing -t='2.7-' -t='3.5-' -v spack/lib/spack/spack/ spack/lib/spack/llnl/ spack/bin/ + - name: vermin (Repositories) + run: vermin --backport argparse --backport typing -t='2.7-' -t='3.5-' -v spack/var/spack/repos + # Run style checks on the files that have been changed + style: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python packages + run: | + python -m pip install --upgrade pip six setuptools flake8 isort>=4.3.5 mypy>=0.800 black pywin32 types-python-dateutil + - name: Create local develop + run: | + .\spack\.github\workflows\setup_git.ps1 + - name: Run style tests + run: | + spack style + - name: Verify license headers + run: | + python spack\bin\spack license verify + unittest: + needs: [ validate, style ] + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python packages + run: | + python -m pip install --upgrade pip six pywin32 setuptools codecov coverage + - name: Create local develop + run: | + .\spack\.github\workflows\setup_git.ps1 + - name: Unit Test + run: | + echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml + spack unit-test --verbose --ignore=lib/spack/spack/test/cmd + unittest-cmd: + needs: [ validate, style ] + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python packages + run: | + python -m pip install --upgrade pip six pywin32 setuptools codecov coverage + - name: Create local develop + run: | + .\spack\.github\workflows\setup_git.ps1 + - name: Command Unit Test + run: | + echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml + spack unit-test lib/spack/spack/test/cmd --verbose + buildtest: + needs: [ validate, style ] + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python packages + run: | + python -m pip install --upgrade pip six pywin32 setuptools codecov coverage + - name: Build Test + run: | + spack compiler find + echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml + spack external find cmake + spack external find ninja + spack install abseil-cpp + generate-installer-test: + needs: [ validate, style ] + runs-on: windows-latest + steps: + - name: Disable Windows Symlinks + run: | + git config --global core.symlinks false + shell: + powershell + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python packages + run: | + python -m pip install --upgrade pip six pywin32 setuptools codecov coverage + - name: Add Light and Candle to Path + run: | + $env:WIX >> $GITHUB_PATH + - name: Run Installer + run: | + .\spack\share\spack\qa\setup_spack.ps1 + spack make-installer -s spack -g SILENT pkg + echo "installer_root=$((pwd).Path)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + env: + ProgressPreference: SilentlyContinue + - uses: actions/upload-artifact@v2 + with: + name: Windows Spack Installer Bundle + path: ${{ env.installer_root }}\pkg\Spack.exe + - uses: actions/upload-artifact@v2 + with: + name: Windows Spack Installer + path: ${{ env.installer_root}}\pkg\Spack.msi + execute-installer: + needs: generate-installer-test + runs-on: windows-latest + defaults: + run: + shell: pwsh + steps: + - uses: actions/setup-python@9c644ca2ab8e57ea0a487b5ec2f8290740378bfd + with: + python-version: 3.9 + - name: Install Python packages + run: | + python -m pip install --upgrade pip six pywin32 setuptools codecov coverage + - name: Setup installer directory + run: | + mkdir -p spack_installer + echo "spack_installer=$((pwd).Path)\spack_installer" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + - uses: actions/download-artifact@v2 + with: + name: Windows Spack Installer Bundle + path: ${{ env.spack_installer }} + - name: Execute Bundled Installer + run: | + $proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru + $handle = $proc.Handle # cache proc.Handle + $proc.WaitForExit(); + $LASTEXITCODE + env: + ProgressPreference: SilentlyContinue + - uses: actions/download-artifact@v2 + with: + name: Windows Spack Installer + path: ${{ env.spack_installer }} + - name: Execute MSI + run: | + $proc = Start-Process ${{ env.spack_installer }}\spack.msi "/quiet" -Passthru + $handle = $proc.Handle # cache proc.Handle + $proc.WaitForExit(); + $LASTEXITCODE \ No newline at end of file diff --git a/bin/haspywin.py b/bin/haspywin.py new file mode 100644 index 00000000000000..ea08e74d416051 --- /dev/null +++ b/bin/haspywin.py @@ -0,0 +1,20 @@ +# Copyright 2013-2021 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 subprocess +import sys + + +def getpywin(): + try: + import win32con # noqa + except ImportError: + subprocess.check_call( + [sys.executable, "-m", "pip", "-q", "install", "--upgrade", "pip"]) + subprocess.check_call( + [sys.executable, "-m", "pip", "-q", "install", "pywin32"]) + + +if __name__ == '__main__': + getpywin() diff --git a/bin/spack.bat b/bin/spack.bat new file mode 100644 index 00000000000000..4781c427025e65 --- /dev/null +++ b/bin/spack.bat @@ -0,0 +1,223 @@ +:: Copyright 2013-2021 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) +::####################################################################### +:: +:: This file is part of Spack and sets up the spack environment for batch, +:: This includes environment modules and lmod support, +:: and it also puts spack in your path. The script also checks that at least +:: module support exists, and provides suggestions if it doesn't. Source +:: it like this: +:: +:: . /path/to/spack/install/spack_cmd.bat +:: +@echo off + +set spack=%SPACK_ROOT%\bin\spack + +::####################################################################### +:: This is a wrapper around the spack command that forwards calls to +:: 'spack load' and 'spack unload' to shell functions. This in turn +:: allows them to be used to invoke environment modules functions. +:: +:: 'spack load' is smarter than just 'load' because it converts its +:: arguments into a unique Spack spec that is then passed to module +:: commands. This allows the user to use packages without knowing all +:: their installation details. +:: +:: e.g., rather than requiring a full spec for libelf, the user can type: +:: +:: spack load libelf +:: +:: This will first find the available libelf module file and use a +:: matching one. If there are two versions of libelf, the user would +:: need to be more specific, e.g.: +:: +:: spack load libelf@0.8.13 +:: +:: This is very similar to how regular spack commands work and it +:: avoids the need to come up with a user-friendly naming scheme for +:: spack module files. +::####################################################################### + +:_sp_shell_wrapper +set "_sp_flags=" +set "_sp_args=" +set "_sp_subcommand=" +setlocal enabledelayedexpansion +:: commands have the form '[flags] [subcommand] [args]' +:: flags will always start with '-', e.g. --help or -V +:: subcommands will never start with '-' +:: everything after the subcommand is an arg +for %%x in (%*) do ( + set t="%%~x" + if "!t:~0,1!" == "-" ( + if defined _sp_subcommand ( + :: We already have a subcommand, processing args now + set "_sp_args=!_sp_args! !t!" + ) else ( + set "_sp_flags=!_sp_flags! !t!" + shift + ) + ) else if not defined _sp_subcommand ( + set "_sp_subcommand=!t!" + shift + ) else ( + set "_sp_args=!_sp_args! !t!" + shift + ) +) + +:: --help, -h and -V flags don't require further output parsing. +:: If we encounter, execute and exit +if defined _sp_flags ( + if NOT "%_sp_flags%"=="%_sp_flags:-h=%" ( + python "%spack%" %_sp_flags% + exit /B 0 + ) else if NOT "%_sp_flags%"=="%_sp_flags:--help=%" ( + python "%spack%" %_sp_flags% + exit /B 0 + ) else if NOT "%_sp_flags%"=="%_sp_flags:-V=%" ( + python "%spack%" %_sp_flags% + exit /B 0 + ) +) +:: pass parsed variables outside of local scope. Need to do +:: this because delayedexpansion can only be set by setlocal +echo %_sp_flags%>flags +echo %_sp_args%>args +echo %_sp_subcommand%>subcmd +endlocal +set /p _sp_subcommand= 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" + "%py_exe%" "%SPACK_ROOT%\bin\spack" external find python >NUL +) + +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 diff --git a/bin/spack_pwsh.ps1 b/bin/spack_pwsh.ps1 new file mode 100644 index 00000000000000..9747fd3254069a --- /dev/null +++ b/bin/spack_pwsh.ps1 @@ -0,0 +1,59 @@ +# Copyright 2013-2022 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) + +Push-Location $PSScriptRoot/.. +$Env:SPACK_ROOT = $PWD.Path +Push-Location $PWD/.. +$Env:spackinstdir = $PWD.Path +Pop-Location + +Set-Variable -Name python_pf_ver -Value (Get-Command -Name python -ErrorAction SilentlyContinue).Path + +# If python_pf_ver is not defined, we cannot find Python on the Path +# We next look for Spack vendored copys +if ($null -eq $python_pf_ver) +{ + $python_pf_ver_list = Resolve-Path -Path "$PWD\Python*" + if ($python_pf_ver_list.Length -gt 0) + { + $py_path = $python_pf_ver_list[$python_pf_ver_list.Length-1].Path + $py_exe = "$py_path\python.exe" + } + else { + Write-Error -Message "Python was not found on system" + Write-Output "Please install Python or add Python to the PATH" + } +} +else{ + Set-Variable -Name py_exe -Value $python_pf_ver +} + +if (!$null -eq $py_path) +{ + $Env:Path = "$py_path;$Env:Path" +} + +if (!$null -eq $py_exe) +{ + Invoke-Expression "$py_exe $Env:SPACK_ROOT\bin\haspywin.py" + Invoke-Expression "$py_exe $Env:SPACK_ROOT\bin\spack external find python" | Out-Null +} + +$Env:Path = "$Env:SPACK_ROOT\bin;$Env:Path" +$Env:EDITOR = "notepad" + + +Write-Output "*****************************************************************" +Write-Output "**************** Spack Package Manager **************************" +Write-Output "*****************************************************************" + +$command = 'function global:prompt +{ + $pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf + "[spack] PS $pth>" +}' +$bytesc = [System.Text.Encoding]::Unicode.GetBytes($command) +$encoded_command = [Convert]::ToBase64String($bytesc) +powershell.exe -NoLogo -encodedCommand $encoded_command -NoExit diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml new file mode 100644 index 00000000000000..52200062c8b5e6 --- /dev/null +++ b/etc/spack/defaults/concretizer.yaml @@ -0,0 +1,17 @@ +# ------------------------------------------------------------------------- +# This is the default spack configuration file. +# +# Settings here are versioned with Spack and are intended to provide +# sensible defaults out of the box. Spack maintainers should edit this +# file to keep it current. +# +# Users can override these settings by editing +# `$SPACK_ROOT/etc/spack/concretizer.yaml`, `~/.spack/concretizer.yaml`, +# or by adding a `concretizer:` section to an environment. +# ------------------------------------------------------------------------- +concretizer: + # Whether to consider installed packages or packages from buildcaches when + # concretizing specs. If `true`, we'll try to use as many installs/binaries + # as possible, rather than building. If `false`, we'll always give you a fresh + # concretization. + reuse: false diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml index eb0d4fc409728b..d0d3468e8d66ae 100644 --- a/etc/spack/defaults/config.yaml +++ b/etc/spack/defaults/config.yaml @@ -155,14 +155,17 @@ config: # The concretization algorithm to use in Spack. Options are: # - # 'original': Spack's original greedy, fixed-point concretizer. This - # algorithm can make decisions too early and will not backtrack - # sufficiently for many specs. - # # 'clingo': Uses a logic solver under the hood to solve DAGs with full # backtracking and optimization for user preferences. Spack will # try to bootstrap the logic solver, if not already available. # + # 'original': Spack's original greedy, fixed-point concretizer. This + # algorithm can make decisions too early and will not backtrack + # sufficiently for many specs. This will soon be deprecated in + # favor of clingo. + # + # See `concretizer.yaml` for more settings you can fine-tune when + # using clingo. concretizer: clingo diff --git a/etc/spack/defaults/windows/config.yaml b/etc/spack/defaults/windows/config.yaml new file mode 100644 index 00000000000000..956bc97c20ad18 --- /dev/null +++ b/etc/spack/defaults/windows/config.yaml @@ -0,0 +1,5 @@ +config: + locks: false + concretizer: original + build_stage:: + - '$spack/.staging' diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 5fc1757c03b6bf..96fee4a125c3dd 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -194,9 +194,9 @@ Reusing installed dependencies .. warning:: - The ``--reuse`` option described here is experimental, and it will - likely be replaced with a different option and configuration settings - in the next Spack release. + The ``--reuse`` option described here will become the default installation + method in the next Spack version, and you will be able to get the current + behavior by using ``spack install --fresh``. By default, when you run ``spack install``, Spack tries to build a new version of the package you asked for, along with updated versions of @@ -216,6 +216,9 @@ the ``mpich`` will be build with the installed versions, if possible. You can use the :ref:`spack spec -I ` command to see what will be reused and what will be built before you install. +You can configure Spack to use the ``--reuse`` behavior by default in +``concretizer.yaml``. + .. _cmd-spack-uninstall: ^^^^^^^^^^^^^^^^^^^ @@ -1280,7 +1283,7 @@ Normally users don't have to bother specifying the architecture if they are installing software for their current host, as in that case the values will be detected automatically. If you need fine-grained control over which packages use which targets (or over *all* packages' default -target), see :ref:`concretization-preferences`. +target), see :ref:`package-preferences`. .. admonition:: Cray machines @@ -1720,8 +1723,8 @@ Activating Extensions in a View Another way to use extensions is to create a view, which merges the python installation along with the extensions into a single prefix. -See :ref:`filesystem-views` for a more in-depth description of views and -:ref:`cmd-spack-view` for usage of the ``spack view`` command. +See :ref:`configuring_environment_views` for a more in-depth description +of views. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Activating Extensions Globally diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index a3353a4314e5e2..8de28f8a07b995 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -209,11 +209,49 @@ Specific limitations include: then Spack will not add a new external entry (``spack config blame packages`` can help locate all external entries). -.. _concretization-preferences: +.. _concretizer-options: --------------------------- -Concretization Preferences --------------------------- +---------------------- +Concretizer options +---------------------- + +``packages.yaml`` gives the concretizer preferences for specific packages, +but you can also use ``concretizer.yaml`` to customize aspects of the +algorithm it uses to select the dependencies you install: + +.. _code-block: yaml + + concretizer: + # Whether to consider installed packages or packages from buildcaches when + # concretizing specs. If `true`, we'll try to use as many installs/binaries + # as possible, rather than building. If `false`, we'll always give you a fresh + # concretization. + reuse: false + +^^^^^^^^^^^^^^^^ +``reuse`` +^^^^^^^^^^^^^^^^ + +This controls whether Spack will prefer to use installed packages (``true``), or +whether it will do a "fresh" installation and prefer the latest settings from +``package.py`` files and ``packages.yaml`` (``false``). . + +You can use ``spack install --reuse`` to enable reuse for a single installation, +and you can use ``spack install --fresh`` to do a fresh install if ``reuse`` is +enabled by default. + +.. note:: + + ``reuse: false`` is the current default, but ``reuse: true`` will be the default + in the next Spack release. You will still be able to use ``spack install --fresh`` + to get the old behavior. + + +.. _package-preferences: + +------------------- +Package Preferences +------------------- Spack can be configured to prefer certain compilers, package versions, dependencies, and variants during concretization. @@ -269,6 +307,7 @@ concretization rules. A provider lists a value that packages may ``depend_on`` (e.g, MPI) and a list of rules for fulfilling that dependency. + .. _package_permissions: ------------------- diff --git a/lib/spack/docs/build_systems.rst b/lib/spack/docs/build_systems.rst index 0ee80276b8063e..77fb5c7838763b 100644 --- a/lib/spack/docs/build_systems.rst +++ b/lib/spack/docs/build_systems.rst @@ -51,6 +51,7 @@ on these ideas for each distinct build system that Spack supports: build_systems/perlpackage build_systems/pythonpackage build_systems/rpackage + build_systems/racketpackage build_systems/rubypackage .. toctree:: diff --git a/lib/spack/docs/build_systems/autotoolspackage.rst b/lib/spack/docs/build_systems/autotoolspackage.rst index 8e7e7d5d9165ba..d341d28d0862c4 100644 --- a/lib/spack/docs/build_systems/autotoolspackage.rst +++ b/lib/spack/docs/build_systems/autotoolspackage.rst @@ -433,7 +433,7 @@ For example: .. code-block:: python variant('profiler', when='@2.0:') - config_args += self.with_or_without('profiler) + config_args += self.with_or_without('profiler') will neither add ``--with-profiler`` nor ``--without-profiler`` when the version is below ``2.0``. diff --git a/lib/spack/docs/build_systems/cmakepackage.rst b/lib/spack/docs/build_systems/cmakepackage.rst index c565375b14eac8..9544a7df73225c 100644 --- a/lib/spack/docs/build_systems/cmakepackage.rst +++ b/lib/spack/docs/build_systems/cmakepackage.rst @@ -159,6 +159,85 @@ and CMake simply ignores the empty command line argument. For example the follow will generate ``'cmake' '-DEXAMPLE=ON' ...`` when `@2.0: +example` is met, but will result in ``'cmake' '' ...`` when the spec version is below ``2.0``. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +CMake arguments provided by Spack +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following default arguments are controlled by Spack: + + +``CMAKE_INSTALL_PREFIX`` +------------------------ + +Is set to the the package's install directory. + + +``CMAKE_PREFIX_PATH`` +--------------------- + +CMake finds dependencies through calls to ``find_package()``, ``find_program()``, +``find_library()``, ``find_file()``, and ``find_path()``, which use a list of search +paths from ``CMAKE_PREFIX_PATH``. Spack sets this variable to a list of prefixes of the +spec's transitive dependencies. + +For troubleshooting cases where CMake fails to find a dependency, add the +``--debug-find`` flag to ``cmake_args``. + +``CMAKE_BUILD_TYPE`` +-------------------- + +Every CMake-based package accepts a ``-DCMAKE_BUILD_TYPE`` flag to +dictate which level of optimization to use. In order to ensure +uniformity across packages, the ``CMakePackage`` base class adds +a variant to control this: + +.. code-block:: python + + variant('build_type', default='RelWithDebInfo', + description='CMake build type', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) + +However, not every CMake package accepts all four of these options. +Grep the ``CMakeLists.txt`` file to see if the default values are +missing or replaced. For example, the +`dealii `_ +package overrides the default variant with: + +.. code-block:: python + + variant('build_type', default='DebugRelease', + description='The build type to build', + values=('Debug', 'Release', 'DebugRelease')) + +For more information on ``CMAKE_BUILD_TYPE``, see: +https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html + + +``CMAKE_INSTALL_RPATH`` and ``CMAKE_INSTALL_RPATH_USE_LINK_PATH=ON`` +-------------------------------------------------------------------- + +CMake uses different RPATHs during the build and after installation, so that executables +can locate the libraries they're linked to during the build, and installed executables +do not have RPATHs to build directories. In Spack, we have to make sure that RPATHs are +set properly after installation. + +Spack sets ``CMAKE_INSTALL_RPATH`` to a list of ``/lib`` or ``/lib64`` +directories of the spec's link-type dependencies. Apart from that, it sets +``-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON``, which should add RPATHs for directories of +linked libraries not in the directories covered by ``CMAKE_INSTALL_RPATH``. + +Usually it's enough to set only ``-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON``, but the +reason to provide both options is that packages may dynamically open shared libraries, +which CMake cannot detect. In those cases, the RPATHs from ``CMAKE_INSTALL_RPATH`` are +used as search paths. + +.. note:: + + Some packages provide stub libraries, which contain an interface for linking without + an implementation. When using such libraries, it's best to override the option + ``-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF`` in ``cmake_args``, so that stub libraries + are not used at runtime. + ^^^^^^^^^^ Generators @@ -196,36 +275,6 @@ generators, but it should be simple to add support for alternative generators. For more information on CMake generators, see: https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html -^^^^^^^^^^^^^^^^ -CMAKE_BUILD_TYPE -^^^^^^^^^^^^^^^^ - -Every CMake-based package accepts a ``-DCMAKE_BUILD_TYPE`` flag to -dictate which level of optimization to use. In order to ensure -uniformity across packages, the ``CMakePackage`` base class adds -a variant to control this: - -.. code-block:: python - - variant('build_type', default='RelWithDebInfo', - description='CMake build type', - values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) - -However, not every CMake package accepts all four of these options. -Grep the ``CMakeLists.txt`` file to see if the default values are -missing or replaced. For example, the -`dealii `_ -package overrides the default variant with: - -.. code-block:: python - - variant('build_type', default='DebugRelease', - description='The build type to build', - values=('Debug', 'Release', 'DebugRelease')) - -For more information on ``CMAKE_BUILD_TYPE``, see: -https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ CMakeLists.txt in a sub-directory ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/build_systems/intelpackage.rst b/lib/spack/docs/build_systems/intelpackage.rst index a4197694b96865..5da16157d75708 100644 --- a/lib/spack/docs/build_systems/intelpackage.rst +++ b/lib/spack/docs/build_systems/intelpackage.rst @@ -649,7 +649,7 @@ follow `the next section `_ instead. * If you specified a custom variant (for example ``+vtune``) you may want to add this as your preferred variant in the packages configuration for the ``intel-parallel-studio`` package - as described in :ref:`concretization-preferences`. Otherwise you will have to specify + as described in :ref:`package-preferences`. Otherwise you will have to specify the variant everytime ``intel-parallel-studio`` is being used as ``mkl``, ``fftw`` or ``mpi`` implementation to avoid pulling in a different variant. @@ -811,13 +811,13 @@ by one of the following means: $ spack install libxc@3.0.0%intel -* Alternatively, request Intel compilers implicitly by concretization preferences. +* Alternatively, request Intel compilers implicitly by package preferences. Configure the order of compilers in the appropriate ``packages.yaml`` file, under either an ``all:`` or client-package-specific entry, in a ``compiler:`` list. Consult the Spack documentation for `Configuring Package Preferences `_ and - :ref:`Concretization Preferences `. + :ref:`Package Preferences `. Example: ``etc/spack/packages.yaml`` might simply contain: @@ -867,7 +867,7 @@ virtual package, in order of decreasing preference. To learn more about the ``providers:`` settings, see the Spack tutorial for `Configuring Package Preferences `_ and the section -:ref:`Concretization Preferences `. +:ref:`Package Preferences `. Example: The following fairly minimal example for ``packages.yaml`` shows how to exclusively use the standalone ``intel-mkl`` package for all the linear diff --git a/lib/spack/docs/build_systems/racketpackage.rst b/lib/spack/docs/build_systems/racketpackage.rst new file mode 100644 index 00000000000000..8ba37ceebaa221 --- /dev/null +++ b/lib/spack/docs/build_systems/racketpackage.rst @@ -0,0 +1,46 @@ +.. Copyright 2013-2021 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) + +.. _racketpackage: + +------------- +RacketPackage +------------- + +Much like Python, Racket packages and modules have their own special build system. +To learn more about the specifics of Racket package system, please refer to the +`Racket Docs `_. + +^^^^^^ +Phases +^^^^^^ + +The ``RacketPackage`` base class provides an ``install`` phase that +can be overridden, corresponding to the use of: + +.. code-block:: console + + $ raco pkg install + +^^^^^^^ +Caveats +^^^^^^^ + +In principle, ``raco`` supports a second, ``setup`` phase; however, we have not +implemented this separately, as in normal circumstances, ``install`` also handles +running ``setup`` automatically. + +Unlike Python, Racket currently on supports two installation scopes for packages, user +or system, and keeps a registry of installed packages at each scope in its configuration files. +This means we can't simply compose a "``RACKET_PATH``" environment variable listing all of the +places packages are installed, and update this at will. + +Unfortunately this means that all currently installed packages which extend Racket via ``raco pkg install`` +are accessible whenever Racket is accessible. + +Additionally, because Spack does not implement uninstall hooks, uninstalling a Spack ``rkt-`` package +will have no effect on the ``raco`` installed packages visible to your Racket installation. +Instead, you must manually run ``raco pkg remove`` to keep the two package managers in a mutually +consistent state. diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 8f62e8a40f3ee4..a7b0a6c74b4cc6 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -13,12 +13,16 @@ Spack has many configuration files. Here is a quick list of them, in case you want to skip directly to specific docs: * :ref:`compilers.yaml ` +* :ref:`concretizer.yaml ` * :ref:`config.yaml ` * :ref:`mirrors.yaml ` * :ref:`modules.yaml ` * :ref:`packages.yaml ` * :ref:`repos.yaml ` +You can also add any of these as inline configuration in ``spack.yaml`` +in an :ref:`environment `. + ----------- YAML Format ----------- diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index 5a3b7a827d4080..179ec40267f5fa 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -1057,39 +1057,39 @@ Release branches ^^^^^^^^^^^^^^^^ There are currently two types of Spack releases: :ref:`major releases -` (``0.13.0``, ``0.14.0``, etc.) and :ref:`point releases -` (``0.13.1``, ``0.13.2``, ``0.13.3``, etc.). Here is a +` (``0.17.0``, ``0.18.0``, etc.) and :ref:`point releases +` (``0.17.1``, ``0.17.2``, ``0.17.3``, etc.). Here is a diagram of how Spack release branches work:: - o branch: develop (latest version) + o branch: develop (latest version, v0.19.0.dev0) | - o merge v0.14.1 into develop - |\ - | o branch: releases/v0.14, tag: v0.14.1 - o | merge v0.14.0 into develop - |\| - | o tag: v0.14.0 + o + | o branch: releases/v0.18, tag: v0.18.1 + o | + | o tag: v0.18.0 + o | + | o |/ - o merge v0.13.2 into develop - |\ - | o branch: releases/v0.13, tag: v0.13.2 - o | merge v0.13.1 into develop - |\| - | o tag: v0.13.1 - o | merge v0.13.0 into develop - |\| - | o tag: v0.13.0 + o + | + o + | o branch: releases/v0.17, tag: v0.17.2 + o | + | o tag: v0.17.1 + o | + | o tag: v0.17.0 o | | o |/ o The ``develop`` branch has the latest contributions, and nearly all pull -requests target ``develop``. +requests target ``develop``. The ``develop`` branch will report that its +version is that of the next **major** release with a ``.dev0`` suffix. Each Spack release series also has a corresponding branch, e.g. -``releases/v0.14`` has ``0.14.x`` versions of Spack, and -``releases/v0.13`` has ``0.13.x`` versions. A major release is the first +``releases/v0.18`` has ``0.18.x`` versions of Spack, and +``releases/v0.17`` has ``0.17.x`` versions. A major release is the first tagged version on a release branch. Minor releases are back-ported from develop onto release branches. This is typically done by cherry-picking bugfix commits off of ``develop``. @@ -1100,12 +1100,20 @@ packages. They should generally only contain fixes to the Spack core. However, sometimes priorities are such that new functionality needs to be added to a minor release. -Both major and minor releases are tagged. After each release, we merge -the release branch back into ``develop`` so that the version bump and any -other release-specific changes are visible in the mainline. As a -convenience, we also tag the latest release as ``releases/latest``, -so that users can easily check it out to get the latest -stable version. See :ref:`merging-releases` for more details. +Both major and minor releases are tagged. As a convenience, we also tag +the latest release as ``releases/latest``, so that users can easily check +it out to get the latest stable version. See :ref:`updating-latest-release` +for more details. + +.. note:: + + Older spack releases were merged **back** into develop so that we could + do fancy things with tags, but since tarballs and many git checkouts do + not have tags, this proved overly complex and confusing. + + We have since converted to using `PEP 440 `_ + compliant versions. `See here `_ for + details. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Scheduling work for releases @@ -1163,10 +1171,11 @@ completed, the steps to make the major release are: ``releases/vX.Y``. That is, you should create a ``releases/vX.Y`` branch if you are preparing the ``X.Y.0`` release. -#. Bump the version in ``lib/spack/spack/__init__.py``. +#. Remove the ``dev0`` development release segment from the version tuple in + ``lib/spack/spack/__init__.py``. - See `this example from 0.13.0 - `_ + The version number itself should already be correct and should not be + modified. #. Update ``CHANGELOG.md`` with major highlights in bullet form. @@ -1188,9 +1197,16 @@ completed, the steps to make the major release are: is outdated submit pull requests to ``develop`` as normal and keep rebasing the release branch on ``develop``. +#. Bump the major version in the ``develop`` branch. + + Create a pull request targeting the ``develop`` branch, bumping the major + version in ``lib/spack/spack/__init__.py`` with a ``dev0`` release segment. + For instance when you have just released ``v0.15.0``, set the version + to ``(0, 16, 0, 'dev0')`` on ``develop``. + #. Follow the steps in :ref:`publishing-releases`. -#. Follow the steps in :ref:`merging-releases`. +#. Follow the steps in :ref:`updating-latest-release`. #. Follow the steps in :ref:`announcing-releases`. @@ -1266,9 +1282,6 @@ completed, the steps to make the point release are: #. Bump the version in ``lib/spack/spack/__init__.py``. - See `this example from 0.14.1 - `_. - #. Update ``CHANGELOG.md`` with a list of the changes. This is typically a summary of the commits you cherry-picked onto the @@ -1290,7 +1303,7 @@ completed, the steps to make the point release are: #. Follow the steps in :ref:`publishing-releases`. -#. Follow the steps in :ref:`merging-releases`. +#. Follow the steps in :ref:`updating-latest-release`. #. Follow the steps in :ref:`announcing-releases`. @@ -1351,11 +1364,11 @@ Publishing a release on GitHub selectable in the versions menu. -.. _merging-releases: +.. _updating-latest-release: -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Updating `releases/latest` and `develop` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Updating `releases/latest` +^^^^^^^^^^^^^^^^^^^^^^^^^^ If the new release is the **highest** Spack release yet, you should also tag it as ``releases/latest``. For example, suppose the highest @@ -1379,40 +1392,6 @@ To tag ``releases/latest``, do this: The ``--force`` argument to ``git tag`` makes ``git`` overwrite the existing ``releases/latest`` tag with the new one. -We also merge each release that we tag as ``releases/latest`` into ``develop``. -Make sure to do this with a merge commit: - -.. code-block:: console - - $ git checkout develop - $ git merge --no-ff -s ours vX.Y.Z # vX.Y.Z is the new release's tag - $ git push - -We merge back to ``develop`` because it: - - * updates the version and ``CHANGELOG.md`` on ``develop``; and - * ensures that your release tag is reachable from the head of - ``develop``. - -We *must* use a real merge commit (via the ``--no-ff`` option) to -ensure that the release tag is reachable from the tip of ``develop``. -This is necessary for ``spack -V`` to work properly -- it uses ``git -describe --tags`` to find the last reachable tag in the repository and -reports how far we are from it. For example: - -.. code-block:: console - - $ spack -V - 0.14.2-1486-b80d5e74e5 - -This says that we are at commit ``b80d5e74e5``, which is 1,486 commits -ahead of the ``0.14.2`` release. - -We put this step last in the process because it's best to do it only once -the release is complete and tagged. If you do it before you've tagged the -release and later decide you want to tag some later commit, you'll need -to merge again. - .. _announcing-releases: diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst index ed8e36c9ff12e2..b18648006e8a30 100644 --- a/lib/spack/docs/environments.rst +++ b/lib/spack/docs/environments.rst @@ -384,18 +384,11 @@ Sourcing that file in Bash will make the environment available to the user; and can be included in ``.bashrc`` files, etc. The ``loads`` file may also be copied out of the environment, renamed, etc. ----------- -spack.yaml ----------- - -Spack environments can be customized at finer granularity by editing -the ``spack.yaml`` manifest file directly. - .. _environment-configuration: -^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------ Configuring Environments -^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------ A variety of Spack behaviors are changed through Spack configuration files, covered in more detail in the :ref:`configuration` @@ -417,9 +410,9 @@ environment can be specified by ``env:NAME`` (to affect environment ``foo``, set ``--scope env:foo``). These commands will automatically manipulate configuration inline in the ``spack.yaml`` file. -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ Inline configurations -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ Inline Environment-scope configuration is done using the same yaml format as standard Spack configuration scopes, covered in the @@ -440,9 +433,9 @@ a ``packages.yaml`` file) could contain: This configuration sets the default compiler for all packages to ``intel``. -""""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^^^ Included configurations -""""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^^^ Spack environments allow an ``include`` heading in their yaml schema. This heading pulls in external configuration files and applies @@ -462,9 +455,9 @@ to make small changes to an individual Environment. Included configs listed earlier will have higher precedence, as the included configs are applied in reverse order. -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------------- Manually Editing the Specs List -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------------- The list of abstract/root specs in the Environment is maintained in the ``spack.yaml`` manifest under the heading ``specs``. @@ -482,9 +475,9 @@ Appending to this list in the yaml is identical to using the ``spack add`` command from the command line. However, there is more power available from the yaml file. -""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^ Spec concretization -""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^ Specs can be concretized separately or together, as already explained in :ref:`environments_concretization`. The behavior active @@ -510,9 +503,9 @@ which can currently take either one of the two allowed values ``together`` or `` the environment remains consistent. When instead the specs are concretized separately only the new specs will be re-concretized after any addition. -""""""""""""" +^^^^^^^^^^^^^ Spec Matrices -""""""""""""" +^^^^^^^^^^^^^ Entries in the ``specs`` list can be individual abstract specs or a spec matrix. @@ -572,9 +565,9 @@ This allows one to create toolchains out of combinations of constraints and apply them somewhat indiscriminately to packages, without regard for the applicability of the constraint. -"""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^ Spec List References -"""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^ The last type of possible entry in the specs list is a reference. @@ -674,9 +667,9 @@ The valid variables for a ``when`` clause are: #. ``hostname``. The hostname of the system (if ``hostname`` is an executable in the user's PATH). -"""""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^^^^ SpecLists as Constraints -"""""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^^^^ Dependencies and compilers in Spack can be both packages in an environment and constraints on other packages. References to SpecLists @@ -708,41 +701,41 @@ For example, the following environment has three root packages: This allows for a much-needed reduction in redundancy between packages and constraints. -^^^^^^^^^^^^^^^^^^^^^^^^^ -Environment-managed Views -^^^^^^^^^^^^^^^^^^^^^^^^^ - -Spack Environments can define filesystem views of their software, -which are maintained as packages and can be installed and uninstalled from -the Environment. Filesystem views provide an access point for packages -from the filesystem for users who want to access those packages -directly. For more information on filesystem views, see the section -:ref:`filesystem-views`. +---------------- +Filesystem Views +---------------- -Spack Environment managed views are updated every time the environment -is written out to the lock file ``spack.lock``, so the concrete -environment and the view are always compatible. +Spack Environments can define filesystem views, which provide a direct access point +for software similar to the directory hierarchy that might exist under ``/usr/local``. +Filesystem views are updated every time the environment is written out to the lock +file ``spack.lock``, so the concrete environment and the view are always compatible. +The files of the view's installed packages are brought into the view by symbolic or +hard links, referencing the original Spack installation, or by copy. .. _configuring_environment_views: -""""""""""""""""""""""""""""" -Configuring environment views -""""""""""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Configuration in ``spack.yaml`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The Spack Environment manifest file has a top-level keyword -``view``. Each entry under that heading is a view descriptor, headed -by a name. The view descriptor contains the root of the view, and +``view``. Each entry under that heading is a **view descriptor**, headed +by a name. Any number of views may be defined under the ``view`` heading. +The view descriptor contains the root of the view, and optionally the projections for the view, ``select`` and ``exclude`` lists for the view and link information via ``link`` and -``link_type``. For example, in the following manifest +``link_type``. + +For example, in the following manifest file snippet we define a view named ``mpis``, rooted at ``/path/to/view`` in which all projections use the package name, version, and compiler name to determine the path for a given package. This view selects all packages that depend on MPI, and excludes those built with the PGI compiler at version 18.5. -All the dependencies of each root spec in the environment will be linked -in the view due to the command ``link: all`` and the files in the view will -be symlinks to the spack install directories. +The root specs with their (transitive) link and run type dependencies +will be put in the view due to the ``link: all`` option, +and the files in the view will be symlinks to the spack install +directories. .. code-block:: yaml @@ -758,16 +751,26 @@ be symlinks to the spack install directories. link: all link_type: symlink -For more information on using view projections, see the section on -:ref:`adding_projections_to_views`. The default for the ``select`` and +The default for the ``select`` and ``exclude`` values is to select everything and exclude nothing. The default projection is the default view projection (``{}``). The ``link`` -defaults to ``all`` but can also be ``roots`` when only the root specs -in the environment are desired in the view. The ``link_type`` defaults -to ``symlink`` but can also take the value of ``hardlink`` or ``copy``. +attribute allows the following values: + +#. ``link: all`` include root specs with their transitive run and link type + dependencies (default); +#. ``link: run`` include root specs with their transitive run type dependencies; +#. ``link: roots`` include root specs without their dependencies. + +The ``link_type`` defaults to ``symlink`` but can also take the value +of ``hardlink`` or ``copy``. + +.. tip:: + + The option ``link: run`` can be used to create small environment views for + Python packages. Python will be able to import packages *inside* of the view even + when the environment is not activated, and linked libraries will be located + *outside* of the view thanks to rpaths. -Any number of views may be defined under the ``view`` heading in a -Spack Environment. There are two shorthands for environments with a single view. If the environment at ``/path/to/env`` has a single view, with a root at @@ -833,9 +836,47 @@ regenerate`` will regenerate the views for the environment. This will apply any updates in the environment configuration that have not yet been applied. -"""""""""""""""""""""""""""" +.. _view_projections: + +"""""""""""""""" +View Projections +"""""""""""""""" +The default projection into a view is to link every package into the +root of the view. The projections attribute is a mapping of partial specs to +spec format strings, defined by the :meth:`~spack.spec.Spec.format` +function, as shown in the example below: + +.. code-block:: yaml + + projections: + zlib: {name}-{version} + ^mpi: {name}-{version}/{^mpi.name}-{^mpi.version}-{compiler.name}-{compiler.version} + all: {name}-{version}/{compiler.name}-{compiler.version} + +The entries in the projections configuration file must all be either +specs or the keyword ``all``. For each spec, the projection used will +be the first non-``all`` entry that the spec satisfies, or ``all`` if +there is an entry for ``all`` and no other entry is satisfied by the +spec. Where the keyword ``all`` appears in the file does not +matter. + +Given the example above, the spec ``zlib@1.2.8`` +will be linked into ``/my/view/zlib-1.2.8/``, the spec +``hdf5@1.8.10+mpi %gcc@4.9.3 ^mvapich2@2.2`` will be linked into +``/my/view/hdf5-1.8.10/mvapich2-2.2-gcc-4.9.3``, and the spec +``hdf5@1.8.10~mpi %gcc@4.9.3`` will be linked into +``/my/view/hdf5-1.8.10/gcc-4.9.3``. + +If the keyword ``all`` does not appear in the projections +configuration file, any spec that does not satisfy any entry in the +file will be linked into the root of the view as in a single-prefix +view. Any entries that appear below the keyword ``all`` in the +projections configuration file will not be used, as all specs will use +the projection under ``all`` before reaching those entries. + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Activating environment views -"""""""""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``spack env activate`` command will put the default view for the environment into the user's path, in addition to activating the diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index cb2aa09fb91b7d..049f66a09e9890 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -1516,3 +1516,238 @@ To ensure that Spack does not autodetect the Cray programming environment, unset the environment variable ``MODULEPATH``. This will cause Spack to treat a linux container on a Cray system as a base linux distro. + +.. _windows_support: + +---------------- +Spack On Windows +---------------- + +Windows support for Spack is currently under development. While this work is still in an early stage, +it is currently possible to set up Spack and perform a few operations on Windows. This section will guide +you through the steps needed to install Spack and start running it on a fresh Windows machine. + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Step 1: Install prerequisites +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To use Spack on Windows, you will need the following packages: + +Required: +* Microsoft Visual Studio +* Python +* Git + +Optional: +* Intel Fortran (needed for some packages) + +.. note:: + + Currently MSVC is the only compiler tested for C/C++ projects. Intel OneAPI provides Fortran support. + +""""""""""""""""""""""" +Microsoft Visual Studio +""""""""""""""""""""""" + +Microsoft Visual Studio provides the only Windows C/C++ compiler that is currently supported by Spack. + +We require several specific components to be included in the Visual Studio installation. +One is the C/C++ toolset, which can be selected as "Desktop development with C++" or "C++ build tools," +depending on installation type (Professional, Build Tools, etc.) The other required component is +"C++ CMake tools for Windows," which can be selected from among the optional packages. +This provides CMake and Ninja for use during Spack configuration. + +If you already have Visual Studio installed, you can make sure these components are installed by +rerunning the installer. Next to your installation, select "Modify" and look at the +"Installation details" pane on the right. + +""""""""""""" +Intel Fortran +""""""""""""" + +For Fortran-based packages on Windows, we strongly recommend Intel's oneAPI Fortran compilers. +The suite is free to download from Intel's website, located at +https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html#gs.70t5tw. +The executable of choice for Spack will be Intel's Beta Compiler, ifx, which supports the classic +compiler's (ifort's) frontend and runtime libraries by using LLVM. + +"""""" +Python +"""""" + +As Spack is a Python-based package, an installation of Python will be needed to run it. +Python 3 can be downloaded and installed from the Windows Store, and will be automatically added +to your ``PATH`` in this case. + +.. note:: + Spack currently supports Python versions later than 3.2 inclusive. + +""" +Git +""" + +A bash console and GUI can be downloaded from https://git-scm.com/downloads. +If you are unfamiliar with Git, there are a myriad of resources online to help +guide you through checking out repositories and switching development branches. + +When given the option of adjusting your ``PATH``, choose the ``Git from the +command line and also from 3rd-party software`` option. This will automatically +update your ``PATH`` variable to include the ``git`` command. + +Spack support on Windows is currently dependent on installing the Git for Windows project +as the project providing Git support on Windows. This is additionally the recommended method +for installing Git on Windows, a link to which can be found above. Spack requires the +utilities vendored by this project. + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Step 2: Install and setup Spack +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +We are now ready to get the Spack environment set up on our machine. We +begin by using Git to clone the Spack repo, hosted at https://github.com/spack/spack.git +into a desired directory, for our purposes today, called ``spack_install``. + +In order to install Spack with Windows support, run the following one liner +in a Windows CMD prompt. + +.. code-block:: console + + git clone https://github.com/spack/spack.git + +.. note:: + If you chose to install Spack into a directory on Windows that is set up to require Administrative + Privleges, Spack will require elevated privleges to run. + Administrative Privleges can be denoted either by default such as + ``C:\Program Files``, or aministrator applied administrative restrictions + on a directory that spack installs files to such as ``C:\Users`` + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Step 3: Run and configure Spack +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To use Spack, run ``bin\spack_cmd.bat`` (you may need to Run as Administrator) from the top-level spack +directory. This will provide a Windows command prompt with an environment properly set up with Spack +and its prerequisites. If you receive a warning message that Python is not in your ``PATH`` +(which may happen if you installed Python from the website and not the Windows Store) add the location +of the Python executable to your ``PATH`` now. You can permanently add Python to your ``PATH`` variable +by using the ``Edit the system environment variables`` utility in Windows Control Panel. + +.. note:: + Alternatively, Powershell can be used in place of CMD + +To configure Spack, first run the following command inside the Spack console: + +.. code-block:: console + + spack compiler find + +This creates a ``.staging`` directory in our Spack prefix, along with a ``windows`` subdirectory +containing a ``compilers.yaml`` file. On a fresh Windows install with the above packages +installed, this command should only detect Microsoft Visual Studio and the Intel Fortran +compiler will be integrated within the first version of MSVC present in the ``compilers.yaml`` +output. + +Spack provides a default ``config.yaml`` file for Windows that it will use unless overridden. +This file is located at ``etc\spack\defaults\windows\config.yaml``. You can read more on how to +do this and write your own configuration files in the :ref:`Configuration Files` section of our +documentation. If you do this, pay particular attention to the ``build_stage`` block of the file +as this specifies the directory that will temporarily hold the source code for the packages to +be installed. This path name must be sufficiently short for compliance with cmd, otherwise you +will see build errors during installation (particularly with CMake) tied to long path names. + +To allow Spack use of external tools and dependencies already on your system, the +external pieces of software must be described in the ``packages.yaml`` file. +There are two methods to populate this file: + +The first and easiest choice is to use Spack to find installation on your system. In +the Spack terminal, run the following commands: + +.. code-block:: console + + spack external find cmake + spack external find ninja + +The ``spack external find `` will find executables on your system +with the same name given. The command will store the items found in +``packages.yaml`` in the ``.staging\`` directory. + +Assuming that the command found CMake and Ninja executables in the previous +step, continue to Step 4. If no executables were found, we may need to manually direct spack towards the CMake +and Ninja installations we set up with Visual Studio. Therefore, your ``packages.yaml`` file will look something +like this, with possibly slight variants in the paths to CMake and Ninja: + +.. code-block:: yaml + + packages: + cmake: + externals: + - spec: cmake@3.19 + prefix: 'c:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake' + buildable: False + ninja: + externals: + - spec: ninja@1.8.2 + prefix: 'c:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja' + buildable: False + +You can also use an separate installation of CMake if you have one and prefer +to use it. If you don't have a path to Ninja analogous to the above, then you can +obtain it by running the Visual Studio Installer and following the instructions +at the start of this section. Also note that .yaml files use spaces for indentation +and not tabs, so ensure that this is the case when editing one directly. + + +.. note:: Cygwin + The use of Cygwin is not officially supported by Spack and is not tested. + However Spack will not throw an error, so use if choosing to use Spack + with Cygwin, know that no functionality is garunteed. + +^^^^^^^^^^^^^^^^^ +Step 4: Use Spack +^^^^^^^^^^^^^^^^^ + +Once the configuration is complete, it is time to give the installation a test. Install a basic package though the +Spack console via: + +.. code-block:: console + + spack install cpuinfo + +If in the previous step, you did not have CMake or Ninja installed, running the command above should boostrap both packages + +""""""""""""""""""""""""""" +Windows Compatible Packages +""""""""""""""""""""""""""" + +Many Spack packages are not currently compatible with Windows, due to Unix +dependencies or incompatible build tools like autoconf. Here are several +packages known to work on Windows: + +* abseil-cpp +* clingo +* cpuinfo +* cmake +* glm +* nasm +* netlib-lapack (requires Intel Fortran) +* ninja +* openssl +* perl +* python +* ruby +* wrf +* zlib + +.. note:: + This is by no means a comprehensive list + +^^^^^^^^^^^^^^ +For developers +^^^^^^^^^^^^^^ + +The intent is to provide a Windows installer that will automatically set up +Python, Git, and Spack, instead of requiring the user to do so manually. +Instructions for creating the installer are at +https://github.com/spack/spack/blob/develop/lib/spack/spack/cmd/installer/README.md + +Alternatively a pre-built copy of the Windows installer is available as an artifact of Spack's Windows CI diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 1d292eb02d714f..6f17eb9bf48797 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -54,9 +54,8 @@ or refer to the full manual below. features getting_started basic_usage - workflows Tutorial: Spack 101 - known_issues + replace_conda_homebrew .. toctree:: :maxdepth: 2 diff --git a/lib/spack/docs/known_issues.rst b/lib/spack/docs/known_issues.rst deleted file mode 100644 index 054feb52ba540e..00000000000000 --- a/lib/spack/docs/known_issues.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. Copyright 2013-2022 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) - -============ -Known Issues -============ - -This is a list of known bugs in Spack. It provides ways of getting around these -problems if you encounter them. - ---------------------------------------------------- -Variants are not properly forwarded to dependencies ---------------------------------------------------- - -**Status:** Expected to be fixed by Spack's new concretizer - -Sometimes, a variant of a package can also affect how its dependencies are -built. For example, in order to build MPI support for a package, it may -require that its dependencies are also built with MPI support. In the -``package.py``, this looks like: - -.. code-block:: python - - depends_on('hdf5~mpi', when='~mpi') - depends_on('hdf5+mpi', when='+mpi') - -Spack handles this situation properly for *immediate* dependencies, and -builds ``hdf5`` with the same variant you used for the package that -depends on it. However, for *indirect* dependencies (dependencies of -dependencies), Spack does not backtrack up the DAG far enough to handle -this. Users commonly run into this situation when trying to build R with -X11 support: - -.. code-block:: console - - $ spack install r+X - ... - ==> Error: Invalid spec: 'cairo@1.14.8%gcc@6.2.1+X arch=linux-fedora25-x86_64 ^bzip2@1.0.6%gcc@6.2.1+shared arch=linux-fedora25-x86_64 ^font-util@1.3.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^fontconfig@2.12.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^freetype@2.7.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^gettext@0.19.8.1%gcc@6.2.1+bzip2+curses+git~libunistring+libxml2+tar+xz arch=linux-fedora25-x86_64 ^glib@2.53.1%gcc@6.2.1~libmount arch=linux-fedora25-x86_64 ^inputproto@2.3.2%gcc@6.2.1 arch=linux-fedora25-x86_64 ^kbproto@1.0.7%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libffi@3.2.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libpng@1.6.29%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libpthread-stubs@0.4%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libx11@1.6.5%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxau@1.0.8%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxcb@1.12%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxdmcp@1.1.2%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxext@1.3.3%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxml2@2.9.4%gcc@6.2.1~python arch=linux-fedora25-x86_64 ^libxrender@0.9.10%gcc@6.2.1 arch=linux-fedora25-x86_64 ^ncurses@6.0%gcc@6.2.1~symlinks arch=linux-fedora25-x86_64 ^openssl@1.0.2k%gcc@6.2.1 arch=linux-fedora25-x86_64 ^pcre@8.40%gcc@6.2.1+utf arch=linux-fedora25-x86_64 ^pixman@0.34.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^pkg-config@0.29.2%gcc@6.2.1+internal_glib arch=linux-fedora25-x86_64 ^python@2.7.13%gcc@6.2.1+shared~tk~ucs4 arch=linux-fedora25-x86_64 ^readline@7.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^renderproto@0.11.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^sqlite@3.18.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^tar^util-macros@1.19.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xcb-proto@1.12%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xextproto@7.3.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xproto@7.0.31%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xtrans@1.3.5%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xz@5.2.3%gcc@6.2.1 arch=linux-fedora25-x86_64 ^zlib@1.2.11%gcc@6.2.1+pic+shared arch=linux-fedora25-x86_64'. - Package cairo requires variant ~X, but spec asked for +X - -A workaround is to explicitly activate the variants of dependencies as well: - -.. code-block:: console - - $ spack install r+X ^cairo+X ^pango+X - -See https://github.com/spack/spack/issues/267 and -https://github.com/spack/spack/issues/2546 for further details. - ------------------------------------------------ -depends_on cannot handle recursive dependencies ------------------------------------------------ - -**Status:** Not yet a work in progress - -Although ``depends_on`` can handle any aspect of Spack's spec syntax, -it currently cannot handle recursive dependencies. If the ``^`` sigil -appears in a ``depends_on`` statement, the concretizer will hang. -For example, something like: - -.. code-block:: python - - depends_on('mfem+cuda ^hypre+cuda', when='+cuda') - - -should be rewritten as: - -.. code-block:: python - - depends_on('mfem+cuda', when='+cuda') - depends_on('hypre+cuda', when='+cuda') - - -See https://github.com/spack/spack/issues/17660 and -https://github.com/spack/spack/issues/11160 for more details. diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst index 72e28b653ed920..5ce69dfc91cbd5 100644 --- a/lib/spack/docs/module_file_support.rst +++ b/lib/spack/docs/module_file_support.rst @@ -378,7 +378,7 @@ most likely via the ``+blas`` variant specification. The most heavyweight solution to module naming is to change the entire naming convention for module files. This uses the projections format -covered in :ref:`adding_projections_to_views`. +covered in :ref:`view_projections`. .. code-block:: yaml @@ -540,8 +540,7 @@ configuration: #. The configuration is for an :ref:`environment ` and will never be applied outside the environment, -#. The environment in question is configured to use a :ref:`view - `, +#. The environment in question is configured to use a view, #. The :ref:`environment view is configured ` with a projection that ensures every package is linked to a unique directory, diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index a65a363d19f196..eb62fa8bf89abe 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -705,7 +705,8 @@ as follows: #. The following special strings are considered larger than any other numeric or non-numeric version component, and satisfy the following - order between themselves: ``develop > main > master > head > trunk``. + order between themselves: + ``develop > main > master > head > trunk > stable``. #. Numbers are ordered numerically, are less than special strings, and larger than other non-numeric components. @@ -2469,6 +2470,24 @@ Now, the ``py-numpy`` package can be used as an argument to ``spack activate``. When it is activated, all the files in its prefix will be symbolically linked into the prefix of the python package. +A package can only extend one other package at a time. To support packages +that may extend one of a list of other packages, Spack supports multiple +``extends`` directives as long as at most one of them is selected as +a dependency during concretization. For example, a lua package could extend +either lua or luajit, but not both: + +.. code-block:: python + + class LuaLpeg(Package): + ... + variant('use_lua', default=True) + extends('lua', when='+use_lua') + extends('lua-luajit', when='~use_lua') + ... + +Now, a user can install, and activate, the ``lua-lpeg`` package for either +lua or luajit. + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Adding additional constraints ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -2524,7 +2543,7 @@ from being linked in at activation time. Views ----- -As covered in :ref:`filesystem-views`, the ``spack view`` command can be +The ``spack view`` command can be used to symlink a number of packages into a merged prefix. The methods of ``PackageViewMixin`` can be overridden to customize how packages are added to views. Generally this can be used to create copies of specific files rather @@ -2858,7 +2877,7 @@ be concretized on their system. For example, one user may prefer packages built with OpenMPI and the Intel compiler. Another user may prefer packages be built with MVAPICH and GCC. -See the :ref:`concretization-preferences` section for more details. +See the :ref:`package-preferences` section for more details. .. _group_when_spec: diff --git a/lib/spack/docs/replace_conda_homebrew.rst b/lib/spack/docs/replace_conda_homebrew.rst new file mode 100644 index 00000000000000..f2f81a4799f94f --- /dev/null +++ b/lib/spack/docs/replace_conda_homebrew.rst @@ -0,0 +1,206 @@ +.. Copyright 2013-2022 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) + +===================================== +Using Spack to Replace Homebrew/Conda +===================================== + +Spack is an incredibly powerful package manager, designed for supercomputers +where users have diverse installation needs. But Spack can also be used to +handle simple single-user installations on your laptop. Most macOS users are +already familiar with package managers like Homebrew and Conda, where all +installed packages are symlinked to a single central location like ``/usr/local``. +In this section, we will show you how to emulate the behavior of Homebrew/Conda +using :ref:`environments`! + +----- +Setup +----- + +First, let's create a new environment. We'll assume that Spack is already set up +correctly, and that you've already sourced the setup script for your shell. +To create a new environment, simply run: + +.. code-block:: console + + $ spack env create myenv + +Here, *myenv* can be anything you want to name your environment. Next, we can add +a list of packages we would like to install into our environment. Let's say we +want a newer version of Bash than the one that comes with macOS, and we want a +few Python libraries. We can run: + +.. code-block:: console + + $ spack -e myenv add bash@5 python py-numpy py-scipy py-matplotlib + +Each package can be listed on a separate line, or combined into a single line like we did above. +Notice that we're explicitly asking for Bash 5 here. You can use any spec +you would normally use on the command line with other Spack commands. + +Next, we want to manually configure a couple of things: + +.. code-block:: console + + $ spack -e myenv config edit + +.. code-block:: yaml + + # This is a Spack Environment file. + # + # It describes a set of packages to be installed, along with + # configuration settings. + spack: + # add package specs to the `specs` list + specs: [bash@5, python, py-numpy, py-scipy, py-matplotlib] + view: true + +You can see the packages we added earlier in the ``specs:`` section. If you +ever want to add more packages, you can either use ``spack add`` or manually +edit this file. + +We also need to change the ``concretization:`` option. By default, Spack +concretizes each spec *separately*, allowing multiple versions of the same +package to coexist. Since we want a single consistent environment, we want to +concretize all of the specs *together*. + +Here is what your ``spack.yaml`` looks like with this new setting: + +.. code-block:: yaml + + # This is a Spack Environment file. + # + # It describes a set of packages to be installed, along with + # configuration settings. + spack: + # add package specs to the `specs` list + specs: [bash@5, python, py-numpy, py-scipy, py-matplotlib] + view: true + concretization: together + +^^^^^^^^^^^^^^^^ +Symlink location +^^^^^^^^^^^^^^^^ + +Spack symlinks all installations to ``/Users/me/spack/var/spack/environments/myenv/.spack-env/view``, +which is the default when ``view: true``. +You can actually change this to any directory you want. For example, Homebrew +uses ``/usr/local``, while Conda uses ``/Users/me/anaconda``. In order to access +files in these locations, you need to update ``PATH`` and other environment variables +to point to them. Activating the Spack environment does this automatically, but +you can also manually set them in your ``.bashrc``. + +.. warning:: + + There are several reasons why you shouldn't use ``/usr/local``: + + 1. If you are on macOS 10.11+ (El Capitan and newer), Apple makes it hard + for you. You may notice permissions issues on ``/usr/local`` due to their + `System Integrity Protection `_. + By default, users don't have permissions to install anything in ``/usr/local``, + and you can't even change this using ``sudo chown`` or ``sudo chmod``. + 2. Other package managers like Homebrew will try to install things to the + same directory. If you plan on using Homebrew in conjunction with Spack, + don't symlink things to ``/usr/local``. + 3. If you are on a shared workstation, or don't have sudo privileges, you + can't do this. + + If you still want to do this anyway, there are several ways around SIP. + You could disable SIP by booting into recovery mode and running + ``csrutil disable``, but this is not recommended, as it can open up your OS + to security vulnerabilities. Another technique is to run ``spack concretize`` + and ``spack install`` using ``sudo``. This is also not recommended. + + The safest way I've found is to create your installation directories using + sudo, then change ownership back to the user like so: + + .. code-block:: bash + + for directory in .spack bin contrib include lib man share + do + sudo mkdir -p /usr/local/$directory + sudo chown $(id -un):$(id -gn) /usr/local/$directory + done + + Depending on the packages you install in your environment, the exact list of + directories you need to create may vary. You may also find some packages + like Java libraries that install a single file to the installation prefix + instead of in a subdirectory. In this case, the action is the same, just replace + ``mkdir -p`` with ``touch`` in the for-loop above. + + But again, it's safer just to use the default symlink location. + + +------------ +Installation +------------ + +To actually concretize the environment, run: + +.. code-block:: console + + $ spack -e myenv concretize + +This will tell you which if any packages are already installed, and alert you +to any conflicting specs. + +To actually install these packages and symlink them to your ``view:`` +directory, simply run: + +.. code-block:: console + + $ spack -e myenv install + $ spack env activate myenv + +Now, when you type ``which python3``, it should find the one you just installed. + +In order to change the default shell to our newer Bash installation, we first +need to add it to this list of acceptable shells. Run: + +.. code-block:: console + + $ sudo vim /etc/shells + +and add the absolute path to your bash executable. Then run: + +.. code-block:: console + + $ chsh -s /path/to/bash + +Now, when you log out and log back in, ``echo $SHELL`` should point to the +newer version of Bash. + +--------------------------- +Updating Installed Packages +--------------------------- + +Let's say you upgraded to a new version of macOS, or a new version of Python +was released, and you want to rebuild your entire software stack. To do this, +simply run the following commands: + +.. code-block:: console + + $ spack env activate myenv + $ spack concretize --force + $ spack install + +The ``--force`` flag tells Spack to overwrite its previous concretization +decisions, allowing you to choose a new version of Python. If any of the new +packages like Bash are already installed, ``spack install`` won't re-install +them, it will keep the symlinks in place. + +-------------- +Uninstallation +-------------- + +If you decide that Spack isn't right for you, uninstallation is simple. +Just run: + +.. code-block:: console + + $ spack env activate myenv + $ spack uninstall --all + +This will uninstall all packages in your environment and remove the symlinks. diff --git a/lib/spack/docs/workflows.rst b/lib/spack/docs/workflows.rst deleted file mode 100644 index 5535c4e62465d3..00000000000000 --- a/lib/spack/docs/workflows.rst +++ /dev/null @@ -1,1193 +0,0 @@ -.. Copyright 2013-2022 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) - -========= -Workflows -========= - -The process of using Spack involves building packages, running -binaries from those packages, and developing software that depends on -those packages. For example, one might use Spack to build the -``netcdf`` package, use ``spack load`` to run the ``ncdump`` binary, and -finally, write a small C program to read/write a particular NetCDF file. - -Spack supports a variety of workflows to suit a variety of situations -and user preferences, there is no single way to do all these things. -This chapter demonstrates different workflows that have been -developed, pointing out the pros and cons of them. - ------------ -Definitions ------------ - -First some basic definitions. - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Package, Concrete Spec, Installed Package -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In Spack, a package is an abstract recipe to build one piece of software. -Spack packages may be used to build, in principle, any version of that -software with any set of variants. Examples of packages include -``curl`` and ``zlib``. - -A package may be *instantiated* to produce a concrete spec; one -possible realization of a particular package, out of combinatorially -many other realizations. For example, here is a concrete spec -instantiated from ``curl``: - -.. command-output:: spack spec curl - -Spack's core concretization algorithm generates concrete specs by -instantiating packages from its repo, based on a set of "hints", -including user input and the ``packages.yaml`` file. This algorithm -may be accessed at any time with the ``spack spec`` command. - -Every time Spack installs a package, that installation corresponds to -a concrete spec. Only a vanishingly small fraction of possible -concrete specs will be installed at any one Spack site. - -^^^^^^^^^^^^^^^ -Consistent Sets -^^^^^^^^^^^^^^^ - -A set of Spack specs is said to be *consistent* if each package is -only instantiated one way within it --- that is, if two specs in the -set have the same package, then they must also have the same version, -variant, compiler, etc. For example, the following set is consistent: - -.. code-block:: console - - curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 - zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 - -The following set is not consistent: - -.. code-block:: console - - curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 - zlib@1.2.7%gcc@5.3.0 arch=linux-SuSE11-x86_64 - -The compatibility of a set of installed packages determines what may -be done with it. It is always possible to ``spack load`` any set of -installed packages, whether or not they are consistent, and run their -binaries from the command line. However, a set of installed packages -can only be linked together in one binary if it is consistent. - -If the user produces a series of ``spack spec`` or ``spack load`` -commands, in general there is no guarantee of consistency between -them. Spack's concretization procedure guarantees that the results of -any *single* ``spack spec`` call will be consistent. Therefore, the -best way to ensure a consistent set of specs is to create a Spack -package with dependencies, and then instantiate that package. We will -use this technique below. - ------------------ -Building Packages ------------------ - -Suppose you are tasked with installing a set of software packages on a -system in order to support one application -- both a core application -program, plus software to prepare input and analyze output. The -required software might be summed up as a series of ``spack install`` -commands placed in a script. If needed, this script can always be run -again in the future. For example: - -.. code-block:: sh - - #!/bin/sh - spack install modele-utils - spack install emacs - spack install ncview - spack install nco - spack install modele-control - spack install py-numpy - -In most cases, this script will not correctly install software -according to your specific needs: choices need to be made for -variants, versions and virtual dependency choices may be needed. It -*is* possible to specify these choices by extending specs on the -command line; however, the same choices must be specified repeatedly. -For example, if you wish to use ``openmpi`` to satisfy the ``mpi`` -dependency, then ``^openmpi`` will have to appear on *every* ``spack -install`` line that uses MPI. It can get repetitive fast. - -Customizing Spack installation options is easier to do in the -``~/.spack/packages.yaml`` file. In this file, you can specify -preferred versions and variants to use for packages. For example: - -.. code-block:: yaml - - packages: - python: - version: [3.5.1] - modele-utils: - version: [cmake] - - everytrace: - version: [develop] - eigen: - variants: ~suitesparse - netcdf: - variants: +mpi - - all: - compiler: [gcc@5.3.0] - providers: - mpi: [openmpi] - blas: [openblas] - lapack: [openblas] - - -This approach will work as long as you are building packages for just -one application. - -^^^^^^^^^^^^^^^^^^^^^ -Multiple Applications -^^^^^^^^^^^^^^^^^^^^^ - -Suppose instead you're building multiple inconsistent applications. -For example, users want package A to be built with ``openmpi`` and -package B with ``mpich`` --- but still share many other lower-level -dependencies. In this case, a single ``packages.yaml`` file will not -work. Plans are to implement *per-project* ``packages.yaml`` files. -In the meantime, one could write shell scripts to switch -``packages.yaml`` between multiple versions as needed, using symlinks. - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Combinatorial Sets of Installs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Suppose that you are now tasked with systematically building many -incompatible versions of packages. For example, you need to build -``petsc`` 9 times for 3 different MPI implementations on 3 different -compilers, in order to support user needs. In this case, you will -need to either create 9 different ``packages.yaml`` files; or more -likely, create 9 different ``spack install`` command lines with the -correct options in the spec. Here is a real-life example of this kind -of usage: - -.. code-block:: sh - - #!/bin/bash - - compilers=( - %gcc - %intel - %pgi - ) - - mpis=( - openmpi+psm~verbs - openmpi~psm+verbs - mvapich2+psm~mrail - mvapich2~psm+mrail - mpich+verbs - ) - - for compiler in "${compilers[@]}" - do - # Serial installs - spack install szip $compiler - spack install hdf $compiler - spack install hdf5 $compiler - spack install netcdf $compiler - spack install netcdf-fortran $compiler - spack install ncview $compiler - - # Parallel installs - for mpi in "${mpis[@]}" - do - spack install $mpi $compiler - spack install hdf5~cxx+mpi $compiler ^$mpi - spack install parallel-netcdf $compiler ^$mpi - done - done - ------------------------------- -Running Binaries from Packages ------------------------------- - -Once Spack packages have been built, the next step is to use them. As -with building packages, there are many ways to use them, depending on -the use case. - -^^^^^^^^^^^^ -Find and Run -^^^^^^^^^^^^ - -The simplest way to run a Spack binary is to find it and run it! -In many cases, nothing more is needed because Spack builds binaries -with RPATHs. Spack installation directories may be found with ``spack -location --install-dir`` commands. For example: - -.. code-block:: console - - $ spack location --install-dir cmake - ~/spack/opt/spack/linux-SuSE11-x86_64/gcc-5.3.0/cmake-3.6.0-7cxrynb6esss6jognj23ak55fgxkwtx7 - -This gives the root of the Spack package; relevant binaries may be -found within it. For example: - -.. code-block:: console - - $ CMAKE=`spack location --install-dir cmake`/bin/cmake - - -Standard UNIX tools can find binaries as well. For example: - -.. code-block:: console - - $ find ~/spack/opt -name cmake | grep bin - ~/spack/opt/spack/linux-SuSE11-x86_64/gcc-5.3.0/cmake-3.6.0-7cxrynb6esss6jognj23ak55fgxkwtx7/bin/cmake - -These methods are suitable, for example, for setting up build -processes or GUIs that need to know the location of particular tools. -However, other more powerful methods are generally preferred for user -environments. - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Using ``spack load`` to Manage the User Environment -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Suppose that Spack has been used to install a set of command-line -programs, which users now wish to use. One can in principle put a -number of ``spack load`` commands into ``.bashrc``, for example, to -load a set of Spack packages: - -.. code-block:: sh - - spack load modele-utils - spack load emacs - spack load ncview - spack load nco - spack load modele-control - -Although simple load scripts like this are useful in many cases, they -have some drawbacks: - -1. The set of packages loaded by them will in general not be - consistent. They are a decent way to load commands to be called - from command shells. See below for better ways to assemble a - consistent set of packages for building application programs. - -2. The ``spack spec`` and ``spack install`` commands use a - sophisticated concretization algorithm that chooses the "best" - among several options, taking into account ``packages.yaml`` file. - The ``spack load`` and ``spack module tcl loads`` commands, on the - other hand, are not very smart: if the user-supplied spec matches - more than one installed package, then ``spack module tcl loads`` will - fail. This default behavior may change in the future. For now, - the workaround is to either be more specific on any failing ``spack load`` - commands or to use ``spack load --first`` to allow spack to load the - first matching spec. - - -"""""""""""""""""""""" -Generated Load Scripts -"""""""""""""""""""""" - -Another problem with using `spack load` is, it can be slow; a typical -user environment could take several seconds to load, and would not be -appropriate to put into ``.bashrc`` directly. This is because it -requires the full start-up overhead of python/Spack for each command. -In some circumstances it is preferable to use a series of ``spack -module tcl loads`` (or ``spack module lmod loads``) commands to -pre-compute which modules to load. This will generate the modulenames -to load the packages using environment modules, rather than Spack's -built-in support for environment modifications. These can be put in a -script that is run whenever installed Spack packages change. For -example: - -.. code-block:: sh - - #!/bin/sh - # - # Generate module load commands in ~/env/spackenv - - cat <$HOME/env/spackenv - FIND='spack module tcl loads --prefix linux-SuSE11-x86_64/' - - \$FIND modele-utils - \$FIND emacs - \$FIND ncview - \$FIND nco - \$FIND modele-control - EOF - -The output of this file is written in ``~/env/spackenv``: - -.. code-block:: sh - - # binutils@2.25%gcc@5.3.0+gold~krellpatch~libiberty arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/binutils-2.25-gcc-5.3.0-6w5d2t4 - # python@2.7.12%gcc@5.3.0~tk~ucs4 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/python-2.7.12-gcc-5.3.0-2azoju2 - # ncview@2.1.7%gcc@5.3.0 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/ncview-2.1.7-gcc-5.3.0-uw3knq2 - # nco@4.5.5%gcc@5.3.0 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/nco-4.5.5-gcc-5.3.0-7aqmimu - # modele-control@develop%gcc@5.3.0 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/modele-control-develop-gcc-5.3.0-7rddsij - # zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/zlib-1.2.8-gcc-5.3.0-fe5onbi - # curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/curl-7.50.1-gcc-5.3.0-4vlev55 - # hdf5@1.10.0-patch1%gcc@5.3.0+cxx~debug+fortran+mpi+shared~szip~threadsafe arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/hdf5-1.10.0-patch1-gcc-5.3.0-pwnsr4w - # netcdf@4.4.1%gcc@5.3.0~hdf4+mpi arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/netcdf-4.4.1-gcc-5.3.0-rl5canv - # netcdf-fortran@4.4.4%gcc@5.3.0 arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/netcdf-fortran-4.4.4-gcc-5.3.0-stdk2xq - # modele-utils@cmake%gcc@5.3.0+aux+diags+ic arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/modele-utils-cmake-gcc-5.3.0-idyjul5 - # everytrace@develop%gcc@5.3.0+fortran+mpi arch=linux-SuSE11-x86_64 - module load linux-SuSE11-x86_64/everytrace-develop-gcc-5.3.0-p5wmb25 - -Users may now put ``source ~/env/spackenv`` into ``.bashrc``. - -.. note :: - - Some module systems put a prefix on the names of modules created - by Spack. For example, that prefix is ``linux-SuSE11-x86_64/`` in - the above case. If a prefix is not needed, you may omit the - ``--prefix`` flag from ``spack module tcl loads``. - - -""""""""""""""""""""""" -Transitive Dependencies -""""""""""""""""""""""" - -In the script above, each ``spack module tcl loads`` command generates a -*single* ``module load`` line. Transitive dependencies do not usually -need to be loaded, only modules the user needs in ``$PATH``. This is -because Spack builds binaries with RPATH. Spack's RPATH policy has -some nice features: - -#. Modules for multiple inconsistent applications may be loaded - simultaneously. In the above example (Multiple Applications), - package A and package B can coexist together in the user's $PATH, - even though they use different MPIs. - -#. RPATH eliminates a whole class of strange errors that can happen - in non-RPATH binaries when the wrong ``LD_LIBRARY_PATH`` is - loaded. - -#. Recursive module systems such as LMod are not necessary. - -#. Modules are not needed at all to execute binaries. If a path to a - binary is known, it may be executed. For example, the path for a - Spack-built compiler can be given to an IDE without requiring the - IDE to load that compiler's module. - -Unfortunately, Spack's RPATH support does not work in every case. For example: - -#. Software comes in many forms --- not just compiled ELF binaries, - but also as interpreted code in Python, R, JVM bytecode, etc. - Those systems almost universally use an environment variable - analogous to ``LD_LIBRARY_PATH`` to dynamically load libraries. - -#. Although Spack generally builds binaries with RPATH, it does not - currently do so for compiled Python extensions (for example, - ``py-numpy``). Any libraries that these extensions depend on - (``blas`` in this case, for example) must be specified in the - ``LD_LIBRARY_PATH``.` - -#. In some cases, Spack-generated binaries end up without a - functional RPATH for no discernible reason. - -In cases where RPATH support doesn't make things "just work," it can -be necessary to load a module's dependencies as well as the module -itself. This is done by adding the ``--dependencies`` flag to the -``spack module tcl loads`` command. For example, the following line, -added to the script above, would be used to load SciPy, along with -Numpy, core Python, BLAS/LAPACK and anything else needed: - -.. code-block:: sh - - spack module tcl loads --dependencies py-scipy - -^^^^^^^^^^^^^^ -Dummy Packages -^^^^^^^^^^^^^^ - -As an alternative to a series of ``module load`` commands, one might -consider dummy packages as a way to create a *consistent* set of -packages that may be loaded as one unit. The idea here is pretty -simple: - -#. Create a package (say, ``mydummy``) with no URL and no - ``install()`` method, just dependencies. - -#. Run ``spack install mydummy`` to install. - -An advantage of this method is the set of packages produced will be -consistent. This means that you can reliably build software against -it. A disadvantage is the set of packages will be consistent; this -means you cannot load up two applications this way if they are not -consistent with each other. - -.. _filesystem-views: - -^^^^^^^^^^^^^^^^ -Filesystem Views -^^^^^^^^^^^^^^^^ - -Filesystem views offer an alternative to environment modules, another -way to assemble packages in a useful way and load them into a user's -environment. - -A single-prefix filesystem view is a single directory tree that is the -union of the directory hierarchies of a number of installed packages; -it is similar to the directory hierarchy that might exist under -``/usr/local``. The files of the view's installed packages are -brought into the view by symbolic or hard links, referencing the -original Spack installation. - -A combinatorial filesystem view can contain more software than a -single-prefix view. Combinatorial filesystem views are created by -defining a projection for each spec or set of specs. The syntax for -this will be discussed in the section for the ``spack view`` command -under `adding_projections_to_views`_. - -The projection for a spec or set of specs specifies the naming scheme -for the directory structure under the root of the view into which the -package will be linked. For example, the spec ``zlib@1.2.8%gcc@4.4.7`` -could be projected to ``MYVIEW/zlib-1.2.8-gcc``. - -When software is built and installed, absolute paths are frequently -"baked into" the software, making it non-relocatable. This happens -not just in RPATHs, but also in shebangs, configuration files, and -assorted other locations. - -Therefore, programs run out of a Spack view will typically still look -in the original Spack-installed location for shared libraries and -other resources. This behavior is not easily changed; in general, -there is no way to know where absolute paths might be written into an -installed package, and how to relocate it. Therefore, the original -Spack tree must be kept in place for a filesystem view to work, even -if the view is built with hardlinks. - -.. FIXME: reference the relocation work of Hegner and Gartung (PR #1013) - -.. _cmd-spack-view: - -"""""""""""""" -``spack view`` -"""""""""""""" - -A filesystem view is created, and packages are linked in, by the ``spack -view`` command's ``symlink`` and ``hardlink`` sub-commands. The -``spack view remove`` command can be used to unlink some or all of the -filesystem view. - -The following example creates a filesystem view based -on an installed ``cmake`` package and then removes from the view the -files in the ``cmake`` package while retaining its dependencies. - -.. code-block:: console - - $ spack view --verbose symlink myview cmake@3.5.2 - ==> Linking package: "ncurses" - ==> Linking package: "zlib" - ==> Linking package: "openssl" - ==> Linking package: "cmake" - - $ ls myview/ - bin doc etc include lib share - - $ ls myview/bin/ - captoinfo clear cpack ctest infotocap openssl tabs toe tset - ccmake cmake c_rehash infocmp ncurses6-config reset tic tput - - $ spack view --verbose --dependencies false rm myview cmake@3.5.2 - ==> Removing package: "cmake" - - $ ls myview/bin/ - captoinfo c_rehash infotocap openssl tabs toe tset - clear infocmp ncurses6-config reset tic tput - -.. note:: - - If the set of packages being included in a view is inconsistent, - then it is possible that two packages will provide the same file. Any - conflicts of this type are handled on a first-come-first-served basis, - and a warning is printed. - -.. note:: - - When packages are removed from a view, empty directories are - purged. - -.. _adding_projections_to_views: - -"""""""""""""""""""""""""""" -Controlling View Projections -"""""""""""""""""""""""""""" - -The default projection into a view is to link every package into the -root of the view. This can be changed by adding a ``projections.yaml`` -configuration file to the view. The projection configuration file for -a view located at ``/my/view`` is stored in -``/my/view/.spack/projections.yaml``. - -When creating a view, the projection configuration file can also be -specified from the command line using the ``--projection-file`` option -to the ``spack view`` command. - -The projections configuration file is a mapping of partial specs to -spec format strings, defined by the :meth:`~spack.spec.Spec.format` -function, as shown in the example below. - -.. code-block:: yaml - - projections: - zlib: {name}-{version} - ^mpi: {name}-{version}/{^mpi.name}-{^mpi.version}-{compiler.name}-{compiler.version} - all: {name}-{version}/{compiler.name}-{compiler.version} - -The entries in the projections configuration file must all be either -specs or the keyword ``all``. For each spec, the projection used will -be the first non-``all`` entry that the spec satisfies, or ``all`` if -there is an entry for ``all`` and no other entry is satisfied by the -spec. Where the keyword ``all`` appears in the file does not -matter. Given the example above, any spec satisfying ``zlib@1.2.8`` -will be linked into ``/my/view/zlib-1.2.8/``, any spec satisfying -``hdf5@1.8.10+mpi %gcc@4.9.3 ^mvapich2@2.2`` will be linked into -``/my/view/hdf5-1.8.10/mvapich2-2.2-gcc-4.9.3``, and any spec -satisfying ``hdf5@1.8.10~mpi %gcc@4.9.3`` will be linked into -``/my/view/hdf5-1.8.10/gcc-4.9.3``. - -If the keyword ``all`` does not appear in the projections -configuration file, any spec that does not satisfy any entry in the -file will be linked into the root of the view as in a single-prefix -view. Any entries that appear below the keyword ``all`` in the -projections configuration file will not be used, as all specs will use -the projection under ``all`` before reaching those entries. - -"""""""""""""""""" -Fine-Grain Control -"""""""""""""""""" - -The ``--exclude`` and ``--dependencies`` option flags allow for -fine-grained control over which packages and dependencies do or not -get included in a view. For example, suppose you are developing the -``appsy`` package. You wish to build against a view of all ``appsy`` -dependencies, but not ``appsy`` itself: - -.. code-block:: console - - $ spack view --dependencies yes --exclude appsy symlink /path/to/MYVIEW/ appsy - -Alternately, you wish to create a view whose purpose is to provide -binary executables to end users. You only need to include -applications they might want, and not those applications' -dependencies. In this case, you might use: - -.. code-block:: console - - $ spack view --dependencies no symlink /path/to/MYVIEW/ cmake - - -""""""""""""""""""""""" -Hybrid Filesystem Views -""""""""""""""""""""""" - -Although filesystem views are usually created by Spack, users are free -to add to them by other means. For example, imagine a filesystem -view, created by Spack, that looks something like: - -.. code-block:: console - - /path/to/MYVIEW/bin/programA -> /path/to/spack/.../bin/programA - /path/to/MYVIEW/lib/libA.so -> /path/to/spack/.../lib/libA.so - -Now, the user may add to this view by non-Spack means; for example, by -running a classic install script. For example: - -.. code-block:: console - - $ tar -xf B.tar.gz - $ cd B/ - $ ./configure --prefix=/path/to/MYVIEW \ - --with-A=/path/to/MYVIEW - $ make && make install - -The result is a hybrid view: - -.. code-block:: console - - /path/to/MYVIEW/bin/programA -> /path/to/spack/.../bin/programA - /path/to/MYVIEW/bin/programB - /path/to/MYVIEW/lib/libA.so -> /path/to/spack/.../lib/libA.so - /path/to/MYVIEW/lib/libB.so - -In this case, real files coexist, interleaved with the "view" -symlinks. At any time one can delete ``/path/to/MYVIEW`` or use -``spack view`` to manage it surgically. None of this will affect the -real Spack install area. - -^^^^^^^^^^^^^^^^^^ -Global Activations -^^^^^^^^^^^^^^^^^^ - -:ref:`cmd-spack-activate` may be used as an alternative to loading -Python (and similar systems) packages directly or creating a view. -If extensions are globally activated, then ``spack load python`` will -also load all the extensions activated for the given ``python``. -This reduces the need for users to load a large number of packages. - -However, Spack global activations have two potential drawbacks: - -#. Activated packages that involve compiled C extensions may still - need their dependencies to be loaded manually. For example, - ``spack load openblas`` might be required to make ``py-numpy`` - work. - -#. Global activations "break" a core feature of Spack, which is that - multiple versions of a package can co-exist side-by-side. For example, - suppose you wish to run a Python package in two different - environments but the same basic Python --- one with - ``py-numpy@1.7`` and one with ``py-numpy@1.8``. Spack extensions - will not support this potential debugging use case. - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Discussion: Running Binaries -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Modules, extension packages and filesystem views are all ways to -assemble sets of Spack packages into a useful environment. They are -all semantically similar, in that conflicting installed packages -cannot simultaneously be loaded, activated or included in a view. - -With all of these approaches, there is no guarantee that the -environment created will be consistent. It is possible, for example, -to simultaneously load application A that uses OpenMPI and application -B that uses MPICH. Both applications will run just fine in this -inconsistent environment because they rely on RPATHs, not the -environment, to find their dependencies. - -In general, environments set up using modules vs. views will work -similarly. Both can be used to set up ephemeral or long-lived -testing/development environments. Operational differences between the -two approaches can make one or the other preferable in certain -environments: - -* Filesystem views do not require environment module infrastructure. - Although Spack can install ``environment-modules``, users might be - hostile to its use. Filesystem views offer a good solution for - sysadmins serving users who just "want all the stuff I need in one - place" and don't want to hear about Spack. - -* Although modern build systems will find dependencies wherever they - might be, some applications with hand-built make files expect their - dependencies to be in one place. One common problem is makefiles - that assume that ``netcdf`` and ``netcdf-fortran`` are installed in - the same tree. Or, one might use an IDE that requires tedious - configuration of dependency paths; and it's easier to automate that - administration in a view-building script than in the IDE itself. - For all these cases, a view will be preferable to other ways to - assemble an environment. - -* On systems with I-node quotas, modules might be preferable to views - and extension packages. - -* Views and activated extensions maintain state that is semantically - equivalent to the information in a ``spack module tcl loads`` script. - Administrators might find things easier to maintain without the - added "heavyweight" state of a view. - -------------------------------------- -Using Spack to Replace Homebrew/Conda -------------------------------------- - -Spack is an incredibly powerful package manager, designed for supercomputers -where users have diverse installation needs. But Spack can also be used to -handle simple single-user installations on your laptop. Most macOS users are -already familiar with package managers like Homebrew and Conda, where all -installed packages are symlinked to a single central location like ``/usr/local``. -In this section, we will show you how to emulate the behavior of Homebrew/Conda -using :ref:`environments`! - -^^^^^ -Setup -^^^^^ - -First, let's create a new environment. We'll assume that Spack is already set up -correctly, and that you've already sourced the setup script for your shell. -To create a new environment, simply run: - -.. code-block:: console - - $ spack env create myenv - ==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view - ==> Created environment 'myenv' in /Users/me/spack/var/spack/environments/myenv - $ spack env activate myenv - -Here, *myenv* can be anything you want to name your environment. Next, we can add -a list of packages we would like to install into our environment. Let's say we -want a newer version of Bash than the one that comes with macOS, and we want a -few Python libraries. We can run: - -.. code-block:: console - - $ spack add bash - ==> Adding bash to environment myenv - ==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view - $ spack add python@3: - ==> Adding python@3: to environment myenv - ==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view - $ spack add py-numpy py-scipy py-matplotlib - ==> Adding py-numpy to environment myenv - ==> Adding py-scipy to environment myenv - ==> Adding py-matplotlib to environment myenv - ==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view - -Each package can be listed on a separate line, or combined into a single line. -Notice that we're explicitly asking for Python 3 here. You can use any spec -you would normally use on the command line with other Spack commands. - -Next, we want to manually configure a couple of things. In the ``myenv`` -directory, we can find the ``spack.yaml`` that actually defines our environment. - -.. code-block:: console - - $ vim ~/spack/var/spack/environments/myenv/spack.yaml - -.. code-block:: yaml - - # This is a Spack Environment file. - # - # It describes a set of packages to be installed, along with - # configuration settings. - spack: - # add package specs to the `specs` list - specs: [bash, 'python@3:', py-numpy, py-scipy, py-matplotlib] - view: - default: - root: /Users/me/spack/var/spack/environments/myenv/.spack-env/view - projections: {} - config: {} - mirrors: {} - modules: - enable: [] - packages: {} - repos: [] - upstreams: {} - definitions: [] - concretization: separately - -You can see the packages we added earlier in the ``specs:`` section. If you -ever want to add more packages, you can either use ``spack add`` or manually -edit this file. - -We also need to change the ``concretization:`` option. By default, Spack -concretizes each spec *separately*, allowing multiple versions of the same -package to coexist. Since we want a single consistent environment, we want to -concretize all of the specs *together*. - -Here is what your ``spack.yaml`` looks like with these new settings, and with -some of the sections we don't plan on using removed: - -.. code-block:: diff - - spack: - - specs: [bash, 'python@3:', py-numpy, py-scipy, py-matplotlib] - + specs: - + - bash - + - 'python@3:' - + - py-numpy - + - py-scipy - + - py-matplotlib - - view: - - default: - - root: /Users/me/spack/var/spack/environments/myenv/.spack-env/view - - projections: {} - + view: /Users/me/spack/var/spack/environments/myenv/.spack-env/view - - config: {} - - mirrors: {} - - modules: - - enable: [] - - packages: {} - - repos: [] - - upstreams: {} - - definitions: [] - + concretization: together - - concretization: separately - -"""""""""""""""" -Symlink location -"""""""""""""""" - -In the ``spack.yaml`` file above, you'll notice that by default, Spack symlinks -all installations to ``/Users/me/spack/var/spack/environments/myenv/.spack-env/view``. -You can actually change this to any directory you want. For example, Homebrew -uses ``/usr/local``, while Conda uses ``/Users/me/anaconda``. In order to access -files in these locations, you need to update ``PATH`` and other environment variables -to point to them. Activating the Spack environment does this automatically, but -you can also manually set them in your ``.bashrc``. - -.. warning:: - - There are several reasons why you shouldn't use ``/usr/local``: - - 1. If you are on macOS 10.11+ (El Capitan and newer), Apple makes it hard - for you. You may notice permissions issues on ``/usr/local`` due to their - `System Integrity Protection `_. - By default, users don't have permissions to install anything in ``/usr/local``, - and you can't even change this using ``sudo chown`` or ``sudo chmod``. - 2. Other package managers like Homebrew will try to install things to the - same directory. If you plan on using Homebrew in conjunction with Spack, - don't symlink things to ``/usr/local``. - 3. If you are on a shared workstation, or don't have sudo privileges, you - can't do this. - - If you still want to do this anyway, there are several ways around SIP. - You could disable SIP by booting into recovery mode and running - ``csrutil disable``, but this is not recommended, as it can open up your OS - to security vulnerabilities. Another technique is to run ``spack concretize`` - and ``spack install`` using ``sudo``. This is also not recommended. - - The safest way I've found is to create your installation directories using - sudo, then change ownership back to the user like so: - - .. code-block:: bash - - for directory in .spack bin contrib include lib man share - do - sudo mkdir -p /usr/local/$directory - sudo chown $(id -un):$(id -gn) /usr/local/$directory - done - - Depending on the packages you install in your environment, the exact list of - directories you need to create may vary. You may also find some packages - like Java libraries that install a single file to the installation prefix - instead of in a subdirectory. In this case, the action is the same, just replace - ``mkdir -p`` with ``touch`` in the for-loop above. - - But again, it's safer just to use the default symlink location. - - -^^^^^^^^^^^^ -Installation -^^^^^^^^^^^^ - -To actually concretize the environment, run: - -.. code-block:: console - - $ spack concretize - -This will tell you which if any packages are already installed, and alert you -to any conflicting specs. - -To actually install these packages and symlink them to your ``view:`` -directory, simply run: - -.. code-block:: console - - $ spack install - -Now, when you type ``which python3``, it should find the one you just installed. - -In order to change the default shell to our newer Bash installation, we first -need to add it to this list of acceptable shells. Run: - -.. code-block:: console - - $ sudo vim /etc/shells - -and add the absolute path to your bash executable. Then run: - -.. code-block:: console - - $ chsh -s /path/to/bash - -Now, when you log out and log back in, ``echo $SHELL`` should point to the -newer version of Bash. - -^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Updating Installed Packages -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Let's say you upgraded to a new version of macOS, or a new version of Python -was released, and you want to rebuild your entire software stack. To do this, -simply run the following commands: - -.. code-block:: console - - $ spack env activate myenv - $ spack concretize --force - $ spack install - -The ``--force`` flag tells Spack to overwrite its previous concretization -decisions, allowing you to choose a new version of Python. If any of the new -packages like Bash are already installed, ``spack install`` won't re-install -them, it will keep the symlinks in place. - -^^^^^^^^^^^^^^ -Uninstallation -^^^^^^^^^^^^^^ - -If you decide that Spack isn't right for you, uninstallation is simple. -Just run: - -.. code-block:: console - - $ spack env activate myenv - $ spack uninstall --all - -This will uninstall all packages in your environment and remove the symlinks. - ------------------------- -Using Spack on Travis-CI ------------------------- - -Spack can be deployed as a provider for userland software in -`Travis-CI `_. - -A starting-point for a ``.travis.yml`` file can look as follows. -It uses `caching `_ for -already built environments, so make sure to clean the Travis cache if -you run into problems. - -The main points that are implemented below: - -#. Travis is detected as having up to 34 cores available, but only 2 - are actually allocated for the user. We limit the parallelism of - the spack builds in the config. - (The Travis yaml parser is a bit buggy on the echo command.) - -#. Without control for the user, Travis jobs will run on various - ``x86_64`` microarchitectures. If you plan to cache build results, - e.g. to accelerate dependency builds, consider building for the - generic ``x86_64`` target only. - Limiting the microarchitecture will also find more packages when - working with the - `E4S Spack build cache `_. - -#. Builds over 10 minutes need to be prefixed with ``travis_wait``. - Alternatively, generate output once with ``spack install -v``. - -#. Travis builds are non-interactive. This prevents using bash - aliases and functions for modules. We fix that by sourcing - ``/etc/profile`` first (or running everything in a subshell with - ``bash -l -c '...'``). - -.. code-block:: yaml - - language: cpp - sudo: false - dist: trusty - - cache: - apt: true - directories: - - $HOME/.cache - - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.9 - - environment-modules - - env: - global: - - SPACK_ROOT: $HOME/.cache/spack - - PATH: $PATH:$HOME/.cache/spack/bin - - before_install: - - export CXX=g++-4.9 - - export CC=gcc-4.9 - - export FC=gfortran-4.9 - - export CXXFLAGS="-std=c++11" - - install: - - | - if ! which spack >/dev/null; then - mkdir -p $SPACK_ROOT && - git clone --depth 50 https://github.com/spack/spack.git $SPACK_ROOT && - printf "config:\n build_jobs: 2\n" > $SPACK_ROOT/etc/spack/config.yaml && - printf "packages:\n all:\n target: ['x86_64']\n" \ - > $SPACK_ROOT/etc/spack/packages.yaml; - fi - - travis_wait spack install cmake@3.7.2~openssl~ncurses - - travis_wait spack install boost@1.62.0~graph~iostream~locale~log~wave - - spack clean -a - - source /etc/profile && - source $SPACK_ROOT/share/spack/setup-env.sh - - spack load cmake - - spack load boost - - script: - - mkdir -p $HOME/build - - cd $HOME/build - - cmake $TRAVIS_BUILD_DIR - - make -j 2 - - make test - ------------------- -Upstream Bug Fixes ------------------- - -It is not uncommon to discover a bug in an upstream project while -trying to build with Spack. Typically, the bug is in a package that -serves a dependency to something else. This section describes -procedure to work around and ultimately resolve these bugs, while not -delaying the Spack user's main goal. - -^^^^^^^^^^^^^^^^^ -Buggy New Version -^^^^^^^^^^^^^^^^^ - -Sometimes, the old version of a package works fine, but a new version -is buggy. For example, it was once found that `Adios did not build -with hdf5@1.10 `_. If the -old version of ``hdf5`` will work with ``adios``, the suggested -procedure is: - -#. Revert ``adios`` to the old version of ``hdf5``. Put in its - ``adios/package.py``: - - .. code-block:: python - - # Adios does not build with HDF5 1.10 - # See: https://github.com/spack/spack/issues/1683 - depends_on('hdf5@:1.9') - -#. Determine whether the problem is with ``hdf5`` or ``adios``, and - report the problem to the appropriate upstream project. In this - case, the problem was with ``adios``. - -#. Once a new version of ``adios`` comes out with the bugfix, modify - ``adios/package.py`` to reflect it: - - .. code-block:: python - - # Adios up to v1.10.0 does not build with HDF5 1.10 - # See: https://github.com/spack/spack/issues/1683 - depends_on('hdf5@:1.9', when='@:1.10.0') - depends_on('hdf5', when='@1.10.1:') - -^^^^^^^^^^^^^^^^ -No Version Works -^^^^^^^^^^^^^^^^ - -Sometimes, *no* existing versions of a dependency work for a build. -This typically happens when developing a new project: only then does -the developer notice that existing versions of a dependency are all -buggy, or the non-buggy versions are all missing a critical feature. - -In the long run, the upstream project will hopefully fix the bug and -release a new version. But that could take a while, even if a bugfix -has already been pushed to the project's repository. In the meantime, -the Spack user needs things to work. - -The solution is to create an unofficial Spack release of the project, -as soon as the bug is fixed in *some* repository. A study of the `Git -history `_ -of ``py-proj/package.py`` is instructive here: - -#. On `April 1 `_, an initial bugfix was identified for the PyProj project - and a pull request submitted to PyProj. Because the upstream - authors had not yet fixed the bug, the ``py-proj`` Spack package - downloads from a forked repository, set up by the package's author. - A non-numeric version number is used to make it easy to upgrade the - package without recomputing checksums; however, this is an - untrusted download method and should not be distributed. The - package author has now become, temporarily, a maintainer of the - upstream project: - - .. code-block:: python - - # We need the benefits of this PR - # https://github.com/jswhit/pyproj/pull/54 - version('citibeth-latlong2', - git='https://github.com/citibeth/pyproj.git', - branch='latlong2') - - -#. By May 14, the upstream project had accepted a pull request with - the required bugfix. At this point, the forked repository was - deleted. However, the upstream project still had not released a - new version with a bugfix. Therefore, a Spack-only release was - created by specifying the desired hash in the main project - repository. The version number ``@1.9.5.1.1`` was chosen for this - "release" because it's a descendent of the officially released - version ``@1.9.5.1``. This is a trusted download method, and can - be released to the Spack community: - - .. code-block:: python - - # This is not a tagged release of pyproj. - # The changes in this "version" fix some bugs, especially with Python3 use. - version('1.9.5.1.1', 'd035e4bc704d136db79b43ab371b27d2', - url='https://www.github.com/jswhit/pyproj/tarball/0be612cc9f972e38b50a90c946a9b353e2ab140f') - - .. note:: - - It would have been simpler to use Spack's Git download method, - which is also a trusted download in this case: - - .. code-block:: python - - # This is not a tagged release of pyproj. - # The changes in this "version" fix some bugs, especially with Python3 use. - version('1.9.5.1.1', - git='https://github.com/jswhit/pyproj.git', - commit='0be612cc9f972e38b50a90c946a9b353e2ab140f') - - .. note:: - - In this case, the upstream project fixed the bug in its - repository in a relatively timely manner. If that had not been - the case, the numbered version in this step could have been - released from the forked repository. - - -#. The author of the Spack package has now become an unofficial - release engineer for the upstream project. Depending on the - situation, it may be advisable to put ``preferred=True`` on the - latest *officially released* version. - -#. As of August 31, the upstream project still had not made a new - release with the bugfix. In the meantime, Spack-built ``py-proj`` - provides the bugfix needed by packages depending on it. As long as - this works, there is no particular need for the upstream project to - make a new official release. - -#. If the upstream project releases a new official version with the - bugfix, then the unofficial ``version()`` line should be removed - from the Spack package. - -^^^^^^^ -Patches -^^^^^^^ - -Spack's source patching mechanism provides another way to fix bugs in -upstream projects. This has advantages and disadvantages compared to the procedures above. - -Advantages: - - 1. It can fix bugs in existing released versions, and (probably) - future releases as well. - - 2. It is lightweight, does not require a new fork to be set up. - -Disadvantages: - - 1. It is harder to develop and debug a patch, vs. a branch in a - repository. The user loses the automation provided by version - control systems. - - 2. Although patches of a few lines work OK, large patch files can be - hard to create and maintain. diff --git a/lib/spack/env/cc b/lib/spack/env/cc index fecc2d5327a2f3..9fd0e4dfbcb57b 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -241,28 +241,28 @@ case "$command" in mode=cpp debug_flags="-g" ;; - cc|c89|c99|gcc|clang|armclang|icc|icx|pgcc|nvc|xlc|xlc_r|fcc) + cc|c89|c99|gcc|clang|armclang|icc|icx|pgcc|nvc|xlc|xlc_r|fcc|amdclang|cl.exe) command="$SPACK_CC" language="C" comp="CC" lang_flags=C debug_flags="-g" ;; - c++|CC|g++|clang++|armclang++|icpc|icpx|dpcpp|pgc++|nvc++|xlc++|xlc++_r|FCC) + c++|CC|g++|clang++|armclang++|icpc|icpx|dpcpp|pgc++|nvc++|xlc++|xlc++_r|FCC|amdclang++) command="$SPACK_CXX" language="C++" comp="CXX" lang_flags=CXX debug_flags="-g" ;; - ftn|f90|fc|f95|gfortran|flang|armflang|ifort|ifx|pgfortran|nvfortran|xlf90|xlf90_r|nagfor|frt) + ftn|f90|fc|f95|gfortran|flang|armflang|ifort|ifx|pgfortran|nvfortran|xlf90|xlf90_r|nagfor|frt|amdflang) command="$SPACK_FC" language="Fortran 90" comp="FC" lang_flags=F debug_flags="-g" ;; - f77|xlf|xlf_r|pgf77) + f77|xlf|xlf_r|pgf77|amdflang) command="$SPACK_F77" language="Fortran 77" comp="F77" diff --git a/lib/spack/env/rocmcc/amdclang b/lib/spack/env/rocmcc/amdclang new file mode 120000 index 00000000000000..82c2b8e90a381e --- /dev/null +++ b/lib/spack/env/rocmcc/amdclang @@ -0,0 +1 @@ +../cc \ No newline at end of file diff --git a/lib/spack/env/rocmcc/amdclang++ b/lib/spack/env/rocmcc/amdclang++ new file mode 120000 index 00000000000000..abf4cd45c7ca9d --- /dev/null +++ b/lib/spack/env/rocmcc/amdclang++ @@ -0,0 +1 @@ +../cpp \ No newline at end of file diff --git a/lib/spack/env/rocmcc/amdflang b/lib/spack/env/rocmcc/amdflang new file mode 120000 index 00000000000000..b6c64233b03339 --- /dev/null +++ b/lib/spack/env/rocmcc/amdflang @@ -0,0 +1 @@ +../fc \ No newline at end of file diff --git a/lib/spack/external/py2/typing.py b/lib/spack/external/py2/typing.py index 7c36962d9f9e7d..a74bd4a1ea2926 100644 --- a/lib/spack/external/py2/typing.py +++ b/lib/spack/external/py2/typing.py @@ -1,4 +1,4 @@ -# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other +# Copyright 2013-2022 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) @@ -80,3 +80,24 @@ get_type_hints = None no_type_check = None no_type_check_decorator = None + +## typing_extensions +# We get a ModuleNotFoundError when attempting to import anything from typing_extensions +# if we separate this into a separate typing_extensions.py file for some reason. + +# (1) Unparameterized types. +IntVar = object +Literal = object +NewType = object +Text = object + +# (2) Parameterized types. +Protocol = defaultdict(lambda: object) + +# (3) Macro for avoiding evaluation except during type checking. +TYPE_CHECKING = False + +# (4) Decorators. +final = lambda x: x +overload = lambda x: x +runtime_checkable = lambda x: x diff --git a/lib/spack/external/py2/typing_extensions.py b/lib/spack/external/py2/typing_extensions.py deleted file mode 100644 index ca6bc10999cdd3..00000000000000 --- a/lib/spack/external/py2/typing_extensions.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2013-2021 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) -""" -This is a fake set of symbols to allow spack to import typing in python -versions where we do not support type checking (<3) -""" -from collections import defaultdict - -# (1) Unparameterized types. -IntVar = object -Literal = object -NewType = object -Text = object - -# (2) Parameterized types. -Protocol = defaultdict(lambda: object) - -# (3) Macro for avoiding evaluation except during type checking. -TYPE_CHECKING = False - -# (4) Decorators. -final = lambda x: x -overload = lambda x: x -runtime_checkable = lambda x: x diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index f9f2b3162f3cc6..fbc6a3d7ce7fa7 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -5,26 +5,36 @@ import collections import errno import glob -import grp import hashlib import itertools import numbers import os -import pwd import re import shutil import stat import sys import tempfile from contextlib import contextmanager +from sys import platform as _platform import six from llnl.util import tty from llnl.util.compat import Sequence from llnl.util.lang import dedupe, memoized +from llnl.util.symlink import symlink from spack.util.executable import Executable +from spack.util.path import path_to_os_path, system_path_filter + +is_windows = _platform == 'win32' + +if not is_windows: + import grp + import pwd +else: + import win32security + __all__ = [ 'FileFilter', @@ -44,6 +54,7 @@ 'fix_darwin_install_name', 'force_remove', 'force_symlink', + 'getuid', 'chgrp', 'chmod_x', 'copy', @@ -60,6 +71,7 @@ 'remove_directory_contents', 'remove_if_dead_link', 'remove_linked_tree', + 'rename', 'set_executable', 'set_install_permissions', 'touch', @@ -71,6 +83,26 @@ ] +def getuid(): + if is_windows: + import ctypes + if ctypes.windll.shell32.IsUserAnAdmin() == 0: + return 1 + return 0 + else: + return os.getuid() + + +@system_path_filter +def rename(src, dst): + # On Windows, os.rename will fail if the destination file already exists + if is_windows: + if os.path.exists(dst): + os.remove(dst) + os.rename(src, dst) + + +@system_path_filter def path_contains_subdirectory(path, root): norm_root = os.path.abspath(root).rstrip(os.path.sep) + os.path.sep norm_path = os.path.abspath(path).rstrip(os.path.sep) + os.path.sep @@ -95,6 +127,7 @@ def paths_containing_libs(paths, library_names): required_lib_fnames = possible_library_filenames(library_names) rpaths_to_include = [] + paths = path_to_os_path(*paths) for path in paths: fnames = set(os.listdir(path)) if fnames & required_lib_fnames: @@ -103,6 +136,7 @@ def paths_containing_libs(paths, library_names): return rpaths_to_include +@system_path_filter def same_path(path1, path2): norm1 = os.path.abspath(path1).rstrip(os.path.sep) norm2 = os.path.abspath(path2).rstrip(os.path.sep) @@ -153,7 +187,7 @@ def groupid_to_group(x): if string: regex = re.escape(regex) - + filenames = path_to_os_path(*filenames) for filename in filenames: msg = 'FILTER FILE: {0} [replacing "{1}"]' @@ -263,13 +297,39 @@ def change_sed_delimiter(old_delim, new_delim, *filenames): repl = r's@\1@\2@g' repl = repl.replace('@', new_delim) - + filenames = path_to_os_path(*filenames) for f in filenames: filter_file(whole_lines, repl, f) filter_file(single_quoted, "'%s'" % repl, f) filter_file(double_quoted, '"%s"' % repl, f) +@system_path_filter(arg_slice=slice(1)) +def get_owner_uid(path, err_msg=None): + if not os.path.exists(path): + mkdirp(path, mode=stat.S_IRWXU) + + p_stat = os.stat(path) + if p_stat.st_mode & stat.S_IRWXU != stat.S_IRWXU: + tty.error("Expected {0} to support mode {1}, but it is {2}" + .format(path, stat.S_IRWXU, p_stat.st_mode)) + + raise OSError(errno.EACCES, + err_msg.format(path, path) if err_msg else "") + else: + p_stat = os.stat(path) + + if _platform != "win32": + owner_uid = p_stat.st_uid + else: + sid = win32security.GetFileSecurity( + path, win32security.OWNER_SECURITY_INFORMATION) \ + .GetSecurityDescriptorOwner() + owner_uid = win32security.LookupAccountSid(None, sid)[0] + return owner_uid + + +@system_path_filter def set_install_permissions(path): """Set appropriate permissions on the installed file.""" # If this points to a file maintained in a Spack prefix, it is assumed that @@ -292,14 +352,22 @@ def group_ids(uid=None): Returns: (list of int): gids of groups the user is a member of """ + if is_windows: + tty.warn("Function is not supported on Windows") + return [] + if uid is None: - uid = os.getuid() + uid = getuid() user = pwd.getpwuid(uid).pw_name return [g.gr_gid for g in grp.getgrall() if user in g.gr_mem] +@system_path_filter(arg_slice=slice(1)) def chgrp(path, group): """Implement the bash chgrp function on a single path""" + if is_windows: + raise OSError("Function 'chgrp' is not supported on Windows") + if isinstance(group, six.string_types): gid = grp.getgrnam(group).gr_gid else: @@ -307,6 +375,7 @@ def chgrp(path, group): os.chown(path, -1, gid) +@system_path_filter(arg_slice=slice(1)) def chmod_x(entry, perms): """Implements chmod, treating all executable bits as set using the chmod utility's `+X` option. @@ -320,6 +389,7 @@ def chmod_x(entry, perms): os.chmod(entry, perms) +@system_path_filter def copy_mode(src, dest): """Set the mode of dest to that of src unless it is a link. """ @@ -336,6 +406,7 @@ def copy_mode(src, dest): os.chmod(dest, dest_mode) +@system_path_filter def unset_executable_mode(path): mode = os.stat(path).st_mode mode &= ~stat.S_IXUSR @@ -344,6 +415,7 @@ def unset_executable_mode(path): os.chmod(path, mode) +@system_path_filter def copy(src, dest, _permissions=False): """Copy the file(s) *src* to the file or directory *dest*. @@ -388,6 +460,7 @@ def copy(src, dest, _permissions=False): copy_mode(src, dst) +@system_path_filter def install(src, dest): """Install the file(s) *src* to the file or directory *dest*. @@ -406,6 +479,7 @@ def install(src, dest): copy(src, dest, _permissions=True) +@system_path_filter def resolve_link_target_relative_to_the_link(link): """ os.path.isdir uses os.path.exists, which for links will check @@ -420,6 +494,7 @@ def resolve_link_target_relative_to_the_link(link): return os.path.join(link_dir, target) +@system_path_filter def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False): """Recursively copy an entire directory tree rooted at *src*. @@ -488,7 +563,7 @@ def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False): .format(target, new_target)) target = new_target - os.symlink(target, d) + symlink(target, d) elif os.path.isdir(link_target): mkdirp(d) else: @@ -504,6 +579,7 @@ def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False): copy_mode(s, d) +@system_path_filter def install_tree(src, dest, symlinks=True, ignore=None): """Recursively install an entire directory tree rooted at *src*. @@ -523,11 +599,13 @@ def install_tree(src, dest, symlinks=True, ignore=None): copy_tree(src, dest, symlinks=symlinks, ignore=ignore, _permissions=True) +@system_path_filter def is_exe(path): """True if path is an executable file.""" return os.path.isfile(path) and os.access(path, os.X_OK) +@system_path_filter def get_filetype(path_name): """ Return the output of file path_name as a string to identify file type. @@ -539,6 +617,30 @@ def get_filetype(path_name): return output.strip() +@system_path_filter +def is_nonsymlink_exe_with_shebang(path): + """ + Returns whether the path is an executable script with a shebang. + Return False when the path is a *symlink* to an executable script. + """ + try: + st = os.lstat(path) + # Should not be a symlink + if stat.S_ISLNK(st.st_mode): + return False + + # Should be executable + if not st.st_mode & (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH): + return False + + # Should start with a shebang + with open(path, 'rb') as f: + return f.read(2) == b'#!' + except (IOError, OSError): + return False + + +@system_path_filter(arg_slice=slice(1)) def chgrp_if_not_world_writable(path, group): """chgrp path to group if path is not world writable""" mode = os.stat(path).st_mode @@ -568,7 +670,7 @@ def mkdirp(*paths, **kwargs): mode = kwargs.get('mode', None) group = kwargs.get('group', None) default_perms = kwargs.get('default_perms', 'args') - + paths = path_to_os_path(*paths) for path in paths: if not os.path.exists(path): try: @@ -629,6 +731,7 @@ def mkdirp(*paths, **kwargs): raise OSError(errno.EEXIST, "File already exists", path) +@system_path_filter def force_remove(*paths): """Remove files without printing errors. Like ``rm -f``, does NOT remove directories.""" @@ -640,6 +743,7 @@ def force_remove(*paths): @contextmanager +@system_path_filter def working_dir(dirname, **kwargs): if kwargs.get('create', False): mkdirp(dirname) @@ -659,6 +763,7 @@ def __init__(self, inner_exception, outer_exception): @contextmanager +@system_path_filter def replace_directory_transaction(directory_name, tmp_root=None): """Moves a directory to a temporary space. If the operations executed within the context manager don't raise an exception, the directory is @@ -714,6 +819,7 @@ def replace_directory_transaction(directory_name, tmp_root=None): tty.debug('Temporary directory deleted [{0}]'.format(tmp_dir)) +@system_path_filter def hash_directory(directory, ignore=[]): """Hashes recursively the content of a directory. @@ -742,6 +848,7 @@ def hash_directory(directory, ignore=[]): @contextmanager +@system_path_filter def write_tmp_and_move(filename): """Write to a temporary file, then move into place.""" dirname = os.path.dirname(filename) @@ -753,6 +860,7 @@ def write_tmp_and_move(filename): @contextmanager +@system_path_filter def open_if_filename(str_or_file, mode='r'): """Takes either a path or a file object, and opens it if it is a path. @@ -765,9 +873,13 @@ def open_if_filename(str_or_file, mode='r'): yield str_or_file +@system_path_filter def touch(path): """Creates an empty file at the specified path.""" - perms = (os.O_WRONLY | os.O_CREAT | os.O_NONBLOCK | os.O_NOCTTY) + if is_windows: + perms = (os.O_WRONLY | os.O_CREAT) + else: + perms = (os.O_WRONLY | os.O_CREAT | os.O_NONBLOCK | os.O_NOCTTY) fd = None try: fd = os.open(path, perms) @@ -777,6 +889,7 @@ def touch(path): os.close(fd) +@system_path_filter def touchp(path): """Like ``touch``, but creates any parent directories needed for the file. """ @@ -784,14 +897,16 @@ def touchp(path): touch(path) +@system_path_filter def force_symlink(src, dest): try: - os.symlink(src, dest) + symlink(src, dest) except OSError: os.remove(dest) - os.symlink(src, dest) + symlink(src, dest) +@system_path_filter def join_path(prefix, *args): path = str(prefix) for elt in args: @@ -799,6 +914,7 @@ def join_path(prefix, *args): return path +@system_path_filter def ancestor(dir, n=1): """Get the nth ancestor of a directory.""" parent = os.path.abspath(dir) @@ -807,6 +923,7 @@ def ancestor(dir, n=1): return parent +@system_path_filter def get_single_file(directory): fnames = os.listdir(directory) if len(fnames) != 1: @@ -826,6 +943,7 @@ def temp_cwd(): @contextmanager +@system_path_filter def temp_rename(orig_path, temp_path): same_path = os.path.realpath(orig_path) == os.path.realpath(temp_path) if not same_path: @@ -837,11 +955,13 @@ def temp_rename(orig_path, temp_path): shutil.move(temp_path, orig_path) +@system_path_filter def can_access(file_name): """True if we have read/write access to the file.""" return os.access(file_name, os.R_OK | os.W_OK) +@system_path_filter def traverse_tree(source_root, dest_root, rel_path='', **kwargs): """Traverse two filesystem trees simultaneously. @@ -924,6 +1044,80 @@ def traverse_tree(source_root, dest_root, rel_path='', **kwargs): yield (source_path, dest_path) +def lexists_islink_isdir(path): + """Computes the tuple (lexists(path), islink(path), isdir(path)) in a minimal + number of stat calls.""" + # First try to lstat, so we know if it's a link or not. + try: + lst = os.lstat(path) + except (IOError, OSError): + return False, False, False + + is_link = stat.S_ISLNK(lst.st_mode) + + # Check whether file is a dir. + if not is_link: + is_dir = stat.S_ISDIR(lst.st_mode) + return True, is_link, is_dir + + # Check whether symlink points to a dir. + try: + st = os.stat(path) + is_dir = stat.S_ISDIR(st.st_mode) + except (IOError, OSError): + # Dangling symlink (i.e. it lexists but not exists) + is_dir = False + + return True, is_link, is_dir + + +def visit_directory_tree(root, visitor, rel_path='', depth=0): + """ + Recurses the directory root depth-first through a visitor pattern + + The visitor interface is as follows: + - visit_file(root, rel_path, depth) + - before_visit_dir(root, rel_path, depth) -> bool + if True, descends into this directory + - before_visit_symlinked_dir(root, rel_path, depth) -> bool + if True, descends into this directory + - after_visit_dir(root, rel_path, depth) -> void + only called when before_visit_dir returns True + - after_visit_symlinked_dir(root, rel_path, depth) -> void + only called when before_visit_symlinked_dir returns True + """ + dir = os.path.join(root, rel_path) + + if sys.version_info >= (3, 5, 0): + dir_entries = sorted(os.scandir(dir), key=lambda d: d.name) # novermin + else: + dir_entries = os.listdir(dir) + dir_entries.sort() + + for f in dir_entries: + if sys.version_info >= (3, 5, 0): + rel_child = os.path.join(rel_path, f.name) + islink, isdir = f.is_symlink(), f.is_dir() + else: + rel_child = os.path.join(rel_path, f) + lexists, islink, isdir = lexists_islink_isdir(os.path.join(dir, f)) + if not lexists: + continue + + if not isdir: + # Handle files + visitor.visit_file(root, rel_child, depth) + elif not islink and visitor.before_visit_dir(root, rel_child, depth): + # Handle ordinary directories + visit_directory_tree(root, visitor, rel_child, depth + 1) + visitor.after_visit_dir(root, rel_child, depth) + elif islink and visitor.before_visit_symlinked_dir(root, rel_child, depth): + # Handle symlinked directories + visit_directory_tree(root, visitor, rel_child, depth + 1) + visitor.after_visit_symlinked_dir(root, rel_child, depth) + + +@system_path_filter def set_executable(path): mode = os.stat(path).st_mode if mode & stat.S_IRUSR: @@ -935,6 +1129,7 @@ def set_executable(path): os.chmod(path, mode) +@system_path_filter def last_modification_time_recursive(path): path = os.path.abspath(path) times = [os.stat(path).st_mtime] @@ -944,6 +1139,7 @@ def last_modification_time_recursive(path): return max(times) +@system_path_filter def remove_empty_directories(root): """Ascend up from the leaves accessible from `root` and remove empty directories. @@ -960,6 +1156,7 @@ def remove_empty_directories(root): pass +@system_path_filter def remove_dead_links(root): """Recursively removes any dead link that is present in root. @@ -972,6 +1169,7 @@ def remove_dead_links(root): remove_if_dead_link(path) +@system_path_filter def remove_if_dead_link(path): """Removes the argument if it is a dead link. @@ -982,6 +1180,7 @@ def remove_if_dead_link(path): os.unlink(path) +@system_path_filter def remove_linked_tree(path): """Removes a directory and its contents. @@ -991,15 +1190,31 @@ def remove_linked_tree(path): Parameters: path (str): Directory to be removed """ + # On windows, cleaning a Git stage can be an issue + # as git leaves readonly files that Python handles + # poorly on Windows. Remove readonly status and try again + def onerror(func, path, exe_info): + os.chmod(path, stat.S_IWUSR) + try: + func(path) + except Exception as e: + tty.warn(e) + pass + + kwargs = {'ignore_errors': True} + if is_windows: + kwargs = {'onerror': onerror} + if os.path.exists(path): if os.path.islink(path): - shutil.rmtree(os.path.realpath(path), True) + shutil.rmtree(os.path.realpath(path), **kwargs) os.unlink(path) else: - shutil.rmtree(path, True) + shutil.rmtree(path, **kwargs) @contextmanager +@system_path_filter def safe_remove(*files_or_dirs): """Context manager to remove the files passed as input, but restore them in case any exception is raised in the context block. @@ -1046,6 +1261,7 @@ def safe_remove(*files_or_dirs): raise +@system_path_filter def fix_darwin_install_name(path): """Fix install name of dynamic libraries on Darwin to have full path. @@ -1132,6 +1348,7 @@ def find(root, files, recursive=True): return _find_non_recursive(root, files) +@system_path_filter def _find_recursive(root, search_files): # The variable here is **on purpose** a defaultdict. The idea is that @@ -1142,7 +1359,6 @@ def _find_recursive(root, search_files): # 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)) @@ -1156,6 +1372,7 @@ def _find_recursive(root, search_files): return answer +@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) @@ -1287,7 +1504,7 @@ def directories(self, value): if isinstance(value, six.string_types): value = [value] - self._directories = [os.path.normpath(x) for x in value] + self._directories = [path_to_os_path(os.path.normpath(x))[0] for x in value] def _default_directories(self): """Default computation of directories based on the list of @@ -1445,6 +1662,7 @@ def find_headers(headers, root, recursive=False): return HeaderList(find(root, headers, recursive)) +@system_path_filter def find_all_headers(root): """Convenience function that returns the list of all headers found in the directory passed as argument. @@ -1638,12 +1856,18 @@ def find_libraries(libraries, root, shared=True, recursive=False): raise TypeError(message) # Construct the right suffix for the library - if shared is True: - suffix = 'dylib' if sys.platform == 'darwin' else 'so' + if shared: + # Used on both Linux and macOS + suffixes = ['so'] + if sys.platform == 'darwin': + # Only used on macOS + suffixes.append('dylib') else: - suffix = 'a' + suffixes = ['a'] + # List of libraries we are searching with suffixes - libraries = ['{0}.{1}'.format(lib, suffix) for lib in libraries] + libraries = ['{0}.{1}'.format(lib, suffix) for lib in libraries + for suffix in suffixes] if not recursive: # If not recursive, look for the libraries directly in root @@ -1666,6 +1890,7 @@ def find_libraries(libraries, root, shared=True, recursive=False): return LibraryList(found_libs) +@system_path_filter @memoized def can_access_dir(path): """Returns True if the argument is an accessible directory. @@ -1679,6 +1904,7 @@ def can_access_dir(path): return os.path.isdir(path) and os.access(path, os.R_OK | os.X_OK) +@system_path_filter @memoized def can_write_to_dir(path): """Return True if the argument is a directory in which we can write. @@ -1692,6 +1918,7 @@ def can_write_to_dir(path): return os.path.isdir(path) and os.access(path, os.R_OK | os.X_OK | os.W_OK) +@system_path_filter @memoized def files_in(*search_paths): """Returns all the files in paths passed as arguments. @@ -1713,6 +1940,12 @@ def files_in(*search_paths): return files +def is_readable_file(file_path): + """Return True if the path passed as argument is readable""" + return os.path.isfile(file_path) and os.access(file_path, os.R_OK) + + +@system_path_filter def search_paths_for_executables(*path_hints): """Given a list of path hints returns a list of paths where to search for an executable. @@ -1740,6 +1973,39 @@ def search_paths_for_executables(*path_hints): return executable_paths +@system_path_filter +def search_paths_for_libraries(*path_hints): + """Given a list of path hints returns a list of paths where + to search for a shared library. + + Args: + *path_hints (list of paths): list of paths taken into + consideration for a search + + Returns: + A list containing the real path of every existing directory + in `path_hints` and its `lib` and `lib64` subdirectory if it exists. + """ + library_paths = [] + for path in path_hints: + if not os.path.isdir(path): + continue + + path = os.path.abspath(path) + library_paths.append(path) + + lib_dir = os.path.join(path, 'lib') + if os.path.isdir(lib_dir): + library_paths.append(lib_dir) + + lib64_dir = os.path.join(path, 'lib64') + if os.path.isdir(lib64_dir): + library_paths.append(lib64_dir) + + return library_paths + + +@system_path_filter def partition_path(path, entry=None): """ Split the prefixes of the path at the first occurrence of entry and @@ -1756,7 +2022,11 @@ def partition_path(path, entry=None): # Derive the index of entry within paths, which will correspond to # the location of the entry in within the path. try: - entries = path.split(os.sep) + sep = os.sep + entries = path.split(sep) + if entries[0].endswith(":"): + # Handle drive letters e.g. C:/ on Windows + entries[0] = entries[0] + sep i = entries.index(entry) if '' in entries: i -= 1 @@ -1767,6 +2037,7 @@ def partition_path(path, entry=None): return paths, '', [] +@system_path_filter def prefixes(path): """ Returns a list containing the path and its ancestors, top-to-bottom. @@ -1780,6 +2051,9 @@ def prefixes(path): For example, path ``./hi/jkl/mn`` results in a list with the following paths, in order: ``./hi``, ``./hi/jkl``, and ``./hi/jkl/mn``. + On Windows, paths will be normalized to use ``/`` and ``/`` will always + be used as the separator instead of ``os.sep``. + Parameters: path (str): the string used to derive ancestor paths @@ -1788,14 +2062,17 @@ def prefixes(path): """ if not path: return [] - - parts = path.strip(os.sep).split(os.sep) - if path.startswith(os.sep): - parts.insert(0, os.sep) + sep = os.sep + parts = path.strip(sep).split(sep) + if path.startswith(sep): + parts.insert(0, sep) + elif parts[0].endswith(":"): + # Handle drive letters e.g. C:/ on Windows + parts[0] = parts[0] + sep paths = [os.path.join(*parts[:i + 1]) for i in range(len(parts))] try: - paths.remove(os.sep) + paths.remove(sep) except ValueError: pass @@ -1807,6 +2084,7 @@ def prefixes(path): return paths +@system_path_filter def md5sum(file): """Compute the MD5 sum of a file. @@ -1822,6 +2100,7 @@ def md5sum(file): return md5.digest() +@system_path_filter def remove_directory_contents(dir): """Remove all contents of a directory.""" if os.path.exists(dir): @@ -1833,6 +2112,7 @@ def remove_directory_contents(dir): @contextmanager +@system_path_filter def keep_modification_time(*filenames): """ Context manager to keep the modification timestamps of the input files. diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index c806cab1d75e66..92e3a5c3417475 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -5,6 +5,7 @@ from __future__ import division +import contextlib import functools import inspect import os @@ -12,9 +13,10 @@ import sys from datetime import datetime, timedelta +import six from six import string_types -from llnl.util.compat import Hashable, MutableMapping, zip_longest +from llnl.util.compat import MutableMapping, zip_longest # Ignore emacs backups when listing modules ignore_modules = [r'^\.#', '~$'] @@ -164,6 +166,19 @@ def union_dicts(*dicts): return result +# Used as a sentinel that disambiguates tuples passed in *args from coincidentally +# matching tuples formed from kwargs item pairs. +_kwargs_separator = (object(),) + + +def stable_args(*args, **kwargs): + """A key factory that performs a stable sort of the parameters.""" + key = args + if kwargs: + key += _kwargs_separator + tuple(sorted(kwargs.items())) + return key + + def memoized(func): """Decorator that caches the results of a function, storing them in an attribute of that function. @@ -171,15 +186,23 @@ def memoized(func): func.cache = {} @functools.wraps(func) - def _memoized_function(*args): - if not isinstance(args, Hashable): - # Not hashable, so just call the function. - return func(*args) - - if args not in func.cache: - func.cache[args] = func(*args) + def _memoized_function(*args, **kwargs): + key = stable_args(*args, **kwargs) - return func.cache[args] + try: + return func.cache[key] + except KeyError: + ret = func(*args, **kwargs) + func.cache[key] = ret + return ret + except TypeError as e: + # TypeError is raised when indexing into a dict if the key is unhashable. + raise six.raise_from( + UnhashableArguments( + "args + kwargs '{}' was not hashable for function '{}'" + .format(key, func.__name__), + ), + e) return _memoized_function @@ -566,20 +589,31 @@ def match(string): return match -def dedupe(sequence): - """Yields a stable de-duplication of an hashable sequence +def dedupe(sequence, key=None): + """Yields a stable de-duplication of an hashable sequence by key Args: sequence: hashable sequence to be de-duplicated + key: callable applied on values before uniqueness test; identity + by default. Returns: stable de-duplication of the sequence + + Examples: + + Dedupe a list of integers: + + [x for x in dedupe([1, 2, 1, 3, 2])] == [1, 2, 3] + + [x for x in llnl.util.lang.dedupe([1,-2,1,3,2], key=abs)] == [1, -2, 3] """ seen = set() for x in sequence: - if x not in seen: + x_key = x if key is None else key(x) + if x_key not in seen: yield x - seen.add(x) + seen.add(x_key) def pretty_date(time, now=None): @@ -921,3 +955,24 @@ def elide_list(line_list, max_num=10): return line_list[:max_num - 1] + ['...'] + line_list[-1:] else: return line_list + + +@contextlib.contextmanager +def nullcontext(*args, **kwargs): + """Empty context manager. + TODO: replace with contextlib.nullcontext() if we ever require python 3.7. + """ + yield + + +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) diff --git a/lib/spack/llnl/util/link_tree.py b/lib/spack/llnl/util/link_tree.py index 2a670423cbd424..58cc30c2b16e3a 100644 --- a/lib/spack/llnl/util/link_tree.py +++ b/lib/spack/llnl/util/link_tree.py @@ -10,9 +10,11 @@ import filecmp import os import shutil +from collections import OrderedDict import llnl.util.tty as tty from llnl.util.filesystem import mkdirp, touch, traverse_tree +from llnl.util.symlink import islink, symlink __all__ = ['LinkTree'] @@ -20,7 +22,7 @@ def remove_link(src, dest): - if not os.path.islink(dest): + if not islink(dest): raise ValueError("%s is not a link tree!" % dest) # remove if dest is a hardlink/symlink to src; this will only # be false if two packages are merged into a prefix and have a @@ -29,6 +31,246 @@ def remove_link(src, dest): os.remove(dest) +class MergeConflict: + """ + The invariant here is that src_a and src_b are both mapped + to dst: + + project(src_a) == project(src_b) == dst + """ + def __init__(self, dst, src_a=None, src_b=None): + self.dst = dst + self.src_a = src_a + self.src_b = src_b + + +class SourceMergeVisitor(object): + """ + Visitor that produces actions: + - An ordered list of directories to create in dst + - A list of files to link in dst + - A list of merge conflicts in dst/ + """ + def __init__(self, ignore=None): + self.ignore = ignore if ignore is not None else lambda f: False + + # When mapping to /, we need + # to prepend the bit to the relative path in the + # destination dir. + self.projection = '' + + # When a file blocks another file, the conflict can sometimes + # be resolved / ignored (e.g. /LICENSE or + # or //__init__.py conflicts can be + # ignored). + self.file_conflicts = [] + + # When we have to create a dir where a file is, or a file + # where a dir is, we have fatal errors, listed here. + self.fatal_conflicts = [] + + # What directories we have to make; this is an ordered set, + # so that we have a fast lookup and can run mkdir in order. + self.directories = OrderedDict() + + # Files to link. Maps dst_rel to (src_rel, src_root) + self.files = OrderedDict() + + def before_visit_dir(self, root, rel_path, depth): + """ + Register a directory if dst / rel_path is not blocked by a file or ignored. + """ + proj_rel_path = os.path.join(self.projection, rel_path) + + if self.ignore(rel_path): + # Don't recurse when dir is ignored. + return False + elif proj_rel_path in self.files: + # Can't create a dir where a file is. + src_a_root, src_a_relpath = self.files[proj_rel_path] + self.fatal_conflicts.append(MergeConflict( + dst=proj_rel_path, + src_a=os.path.join(src_a_root, src_a_relpath), + src_b=os.path.join(root, rel_path))) + return False + elif proj_rel_path in self.directories: + # No new directory, carry on. + return True + else: + # Register new directory. + self.directories[proj_rel_path] = (root, rel_path) + return True + + def after_visit_dir(self, root, rel_path, depth): + pass + + def before_visit_symlinked_dir(self, root, rel_path, depth): + """ + Replace symlinked dirs with actual directories when possible in low depths, + otherwise handle it as a file (i.e. we link to the symlink). + + Transforming symlinks into dirs makes it more likely we can merge directories, + e.g. when /lib -> /subdir/lib. + + We only do this when the symlink is pointing into a subdirectory from the + symlink's directory, to avoid potential infinite recursion; and only at a + constant level of nesting, to avoid potential exponential blowups in file + duplication. + """ + if self.ignore(rel_path): + return False + + # Only follow symlinked dirs in /**/**/* + if depth > 1: + handle_as_dir = False + else: + # Only follow symlinked dirs when pointing deeper + src = os.path.join(root, rel_path) + real_parent = os.path.realpath(os.path.dirname(src)) + real_child = os.path.realpath(src) + handle_as_dir = real_child.startswith(real_parent) + + if handle_as_dir: + return self.before_visit_dir(root, rel_path, depth) + + self.visit_file(root, rel_path, depth) + return False + + def after_visit_symlinked_dir(self, root, rel_path, depth): + pass + + def visit_file(self, root, rel_path, depth): + proj_rel_path = os.path.join(self.projection, rel_path) + + if self.ignore(rel_path): + pass + elif proj_rel_path in self.directories: + # Can't create a file where a dir is; fatal error + src_a_root, src_a_relpath = self.directories[proj_rel_path] + self.fatal_conflicts.append(MergeConflict( + dst=proj_rel_path, + src_a=os.path.join(src_a_root, src_a_relpath), + src_b=os.path.join(root, rel_path))) + elif proj_rel_path in self.files: + # In some cases we can resolve file-file conflicts + src_a_root, src_a_relpath = self.files[proj_rel_path] + self.file_conflicts.append(MergeConflict( + dst=proj_rel_path, + src_a=os.path.join(src_a_root, src_a_relpath), + src_b=os.path.join(root, rel_path))) + else: + # Otherwise register this file to be linked. + self.files[proj_rel_path] = (root, rel_path) + + def set_projection(self, projection): + self.projection = os.path.normpath(projection) + + # Todo, is this how to check in general for empty projection? + if self.projection == '.': + self.projection = '' + return + + # If there is a projection, we'll also create the directories + # it consists of, and check whether that's causing conflicts. + path = '' + for part in self.projection.split(os.sep): + path = os.path.join(path, part) + if path not in self.files: + self.directories[path] = ('', path) + else: + # Can't create a dir where a file is. + src_a_root, src_a_relpath = self.files[path] + self.fatal_conflicts.append(MergeConflict( + dst=path, + src_a=os.path.join(src_a_root, src_a_relpath), + src_b=os.path.join('', path))) + + +class DestinationMergeVisitor(object): + """DestinatinoMergeVisitor takes a SourceMergeVisitor + and: + + a. registers additional conflicts when merging + to the destination prefix + b. removes redundant mkdir operations when + directories already exist in the destination + prefix. + + This also makes sure that symlinked directories + in the target prefix will never be merged with + directories in the sources directories. + """ + def __init__(self, source_merge_visitor): + self.src = source_merge_visitor + + def before_visit_dir(self, root, rel_path, depth): + # If destination dir is a file in a src dir, add a conflict, + # and don't traverse deeper + if rel_path in self.src.files: + src_a_root, src_a_relpath = self.src.files[rel_path] + self.src.fatal_conflicts.append(MergeConflict( + rel_path, + os.path.join(src_a_root, src_a_relpath), + os.path.join(root, rel_path))) + return False + + # If destination dir was also a src dir, remove the mkdir + # action, and traverse deeper. + if rel_path in self.src.directories: + del self.src.directories[rel_path] + return True + + # If the destination dir does not appear in the src dir, + # don't descend into it. + return False + + def after_visit_dir(self, root, rel_path, depth): + pass + + def before_visit_symlinked_dir(self, root, rel_path, depth): + """ + Symlinked directories in the destination prefix should + be seen as files; we should not accidentally merge + source dir with a symlinked dest dir. + """ + # Always conflict + if rel_path in self.src.directories: + src_a_root, src_a_relpath = self.src.directories[rel_path] + self.src.fatal_conflicts.append(MergeConflict( + rel_path, + os.path.join(src_a_root, src_a_relpath), + os.path.join(root, rel_path))) + + if rel_path in self.src.files: + src_a_root, src_a_relpath = self.src.files[rel_path] + self.src.fatal_conflicts.append(MergeConflict( + rel_path, + os.path.join(src_a_root, src_a_relpath), + os.path.join(root, rel_path))) + + # Never descend into symlinked target dirs. + return False + + def after_visit_symlinked_dir(self, root, rel_path, depth): + pass + + def visit_file(self, root, rel_path, depth): + # Can't merge a file if target already exists + if rel_path in self.src.directories: + src_a_root, src_a_relpath = self.src.directories[rel_path] + self.src.fatal_conflicts.append(MergeConflict( + rel_path, + os.path.join(src_a_root, src_a_relpath), + os.path.join(root, rel_path))) + + elif rel_path in self.src.files: + src_a_root, src_a_relpath = self.src.files[rel_path] + self.src.fatal_conflicts.append(MergeConflict( + rel_path, + os.path.join(src_a_root, src_a_relpath), + os.path.join(root, rel_path))) + + class LinkTree(object): """Class to create trees of symbolic links from a source directory. @@ -113,7 +355,7 @@ def unmerge_directories(self, dest_root, ignore): os.remove(marker) def merge(self, dest_root, ignore_conflicts=False, ignore=None, - link=os.symlink, relative=False): + link=symlink, relative=False): """Link all files in src into dest, creating directories if necessary. @@ -125,7 +367,7 @@ def merge(self, dest_root, ignore_conflicts=False, ignore=None, ignore (callable): callable that returns True if a file is to be ignored in the merge (by default ignore nothing) - link (callable): function to create links with (defaults to os.symlink) + link (callable): function to create links with (defaults to llnl.util.symlink) relative (bool): create all symlinks relative to the target (default False) @@ -137,7 +379,7 @@ def merge(self, dest_root, ignore_conflicts=False, ignore=None, conflict = self.find_conflict( dest_root, ignore=ignore, ignore_file_conflicts=ignore_conflicts) if conflict: - raise MergeConflictError(conflict) + raise SingleMergeConflictError(conflict) self.merge_directories(dest_root, ignore) existing = [] @@ -169,7 +411,24 @@ def unmerge(self, dest_root, ignore=None, remove_file=remove_link): class MergeConflictError(Exception): + pass + +class SingleMergeConflictError(MergeConflictError): def __init__(self, path): super(MergeConflictError, self).__init__( "Package merge blocked by file: %s" % path) + + +class MergeConflictSummary(MergeConflictError): + def __init__(self, conflicts): + """ + A human-readable summary of file system view merge conflicts (showing only the + first 3 issues.) + """ + msg = "{0} fatal error(s) when merging prefixes:\n".format(len(conflicts)) + # show the first 3 merge conflicts. + for conflict in conflicts[:3]: + msg += " `{0}` and `{1}` both project to `{2}`".format( + conflict.src_a, conflict.src_b, conflict.dst) + super(MergeConflictSummary, self).__init__(msg) diff --git a/lib/spack/llnl/util/lock.py b/lib/spack/llnl/util/lock.py index 3b93303297a4e5..1ff7ceec64b173 100644 --- a/lib/spack/llnl/util/lock.py +++ b/lib/spack/llnl/util/lock.py @@ -4,9 +4,9 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import errno -import fcntl import os import socket +import sys import time from datetime import datetime from typing import Dict, Tuple # novm @@ -15,6 +15,10 @@ import spack.util.string +if sys.platform != 'win32': + import fcntl + + __all__ = [ 'Lock', 'LockDowngradeError', @@ -29,8 +33,6 @@ 'CantCreateLockError' ] -#: Mapping of supported locks to description -lock_type = {fcntl.LOCK_SH: 'read', fcntl.LOCK_EX: 'write'} #: A useful replacement for functions that should return True when not provided #: for example. @@ -166,6 +168,30 @@ def _attempts_str(wait_time, nattempts): return ' after {0:0.2f}s and {1}'.format(wait_time, attempts) +class LockType(object): + READ = 0 + WRITE = 1 + + @staticmethod + def to_str(tid): + ret = "READ" + if tid == LockType.WRITE: + ret = "WRITE" + return ret + + @staticmethod + def to_module(tid): + lock = fcntl.LOCK_SH + if tid == LockType.WRITE: + lock = fcntl.LOCK_EX + return lock + + @staticmethod + def is_valid(op): + return op == LockType.READ \ + or op == LockType.WRITE + + class Lock(object): """This is an implementation of a filesystem lock using Python's lockf. @@ -276,9 +302,10 @@ def _lock(self, op, timeout=None): successfully acquired, the total wait time and the number of attempts is returned. """ - assert op in lock_type + assert LockType.is_valid(op) + op_str = LockType.to_str(op) - self._log_acquiring('{0} LOCK'.format(lock_type[op].upper())) + self._log_acquiring('{0} LOCK'.format(op_str)) timeout = timeout or self.default_timeout # Create file and parent directories if they don't exist. @@ -286,13 +313,13 @@ def _lock(self, op, timeout=None): self._ensure_parent_directory() self._file = file_tracker.get_fh(self.path) - if op == fcntl.LOCK_EX and self._file.mode == 'r': + if LockType.to_module(op) == fcntl.LOCK_EX and self._file.mode == 'r': # Attempt to upgrade to write lock w/a read-only file. # If the file were writable, we'd have opened it 'r+' raise LockROFileError(self.path) self._log_debug("{0} locking [{1}:{2}]: timeout {3} sec" - .format(lock_type[op], self._start, self._length, + .format(op_str.lower(), self._start, self._length, timeout)) poll_intervals = iter(Lock._poll_interval_generator()) @@ -313,17 +340,16 @@ def _lock(self, op, timeout=None): return total_wait_time, num_attempts raise LockTimeoutError("Timed out waiting for a {0} lock." - .format(lock_type[op])) + .format(op_str.lower())) def _poll_lock(self, op): """Attempt to acquire the lock in a non-blocking manner. Return whether the locking attempt succeeds """ - assert op in lock_type - + module_op = LockType.to_module(op) try: # Try to get the lock (will raise if not available.) - fcntl.lockf(self._file, op | fcntl.LOCK_NB, + fcntl.lockf(self._file, module_op | fcntl.LOCK_NB, self._length, self._start, os.SEEK_SET) # help for debugging distributed locking @@ -331,11 +357,11 @@ def _poll_lock(self, op): # All locks read the owner PID and host self._read_log_debug_data() self._log_debug('{0} locked {1} [{2}:{3}] (owner={4})' - .format(lock_type[op], self.path, + .format(LockType.to_str(op), self.path, self._start, self._length, self.pid)) # Exclusive locks write their PID/host - if op == fcntl.LOCK_EX: + if module_op == fcntl.LOCK_EX: self._write_log_debug_data() return True @@ -420,7 +446,7 @@ def acquire_read(self, timeout=None): if self._reads == 0 and self._writes == 0: # can raise LockError. - wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout) + wait_time, nattempts = self._lock(LockType.READ, timeout=timeout) self._reads += 1 # Log if acquired, which includes counts when verbose self._log_acquired('READ LOCK', wait_time, nattempts) @@ -445,7 +471,7 @@ def acquire_write(self, timeout=None): if self._writes == 0: # can raise LockError. - wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout) + wait_time, nattempts = self._lock(LockType.WRITE, timeout=timeout) self._writes += 1 # Log if acquired, which includes counts when verbose self._log_acquired('WRITE LOCK', wait_time, nattempts) @@ -489,7 +515,7 @@ def downgrade_write_to_read(self, timeout=None): if self._writes == 1 and self._reads == 0: self._log_downgrading() # can raise LockError. - wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout) + wait_time, nattempts = self._lock(LockType.READ, timeout=timeout) self._reads = 1 self._writes = 0 self._log_downgraded(wait_time, nattempts) @@ -508,7 +534,7 @@ def upgrade_read_to_write(self, timeout=None): if self._reads == 1 and self._writes == 0: self._log_upgrading() # can raise LockError. - wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout) + wait_time, nattempts = self._lock(LockType.WRITE, timeout=timeout) self._reads = 0 self._writes = 1 self._log_upgraded(wait_time, nattempts) @@ -592,6 +618,12 @@ def release_write(self, release_fn=None): else: return False + def cleanup(self): + if self._reads == 0 and self._writes == 0: + os.unlink(self.path) + else: + raise LockError("Attempting to cleanup active lock.") + def _get_counts_desc(self): return '(reads {0}, writes {1})'.format(self._reads, self._writes) \ if tty.is_verbose() else '' diff --git a/lib/spack/llnl/util/symlink.py b/lib/spack/llnl/util/symlink.py new file mode 100644 index 00000000000000..6c55d74f66e002 --- /dev/null +++ b/lib/spack/llnl/util/symlink.py @@ -0,0 +1,112 @@ +# Copyright 2013-2021 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 errno +import os +import shutil +import tempfile +from os.path import exists, join +from sys import platform as _platform + +from llnl.util import lang + +is_windows = _platform == 'win32' + +if is_windows: + from win32file import CreateHardLink + + +def symlink(real_path, link_path): + """ + Create a symbolic link. + + On Windows, use junctions if os.symlink fails. + """ + if not is_windows or _win32_can_symlink(): + os.symlink(real_path, link_path) + else: + try: + # Try to use junctions + _win32_junction(real_path, link_path) + except OSError: + # If all else fails, fall back to copying files + shutil.copyfile(real_path, link_path) + + +def islink(path): + return os.path.islink(path) or _win32_is_junction(path) + + +# '_win32' functions based on +# https://github.com/Erotemic/ubelt/blob/master/ubelt/util_links.py +def _win32_junction(path, link): + # junctions require absolute paths + if not os.path.isabs(link): + link = os.path.abspath(link) + + # os.symlink will fail if link exists, emulate the behavior here + if exists(link): + raise OSError(errno.EEXIST, 'File exists: %s -> %s' % (link, path)) + + if not os.path.isabs(path): + parent = os.path.join(link, os.pardir) + path = os.path.join(parent, path) + path = os.path.abspath(path) + + CreateHardLink(link, path) + + +@lang.memoized +def _win32_can_symlink(): + tempdir = tempfile.mkdtemp() + + dpath = join(tempdir, 'dpath') + fpath = join(tempdir, 'fpath.txt') + + dlink = join(tempdir, 'dlink') + flink = join(tempdir, 'flink.txt') + + import llnl.util.filesystem as fs + fs.touchp(fpath) + + try: + os.symlink(dpath, dlink) + can_symlink_directories = os.path.islink(dlink) + except OSError: + can_symlink_directories = False + + try: + os.symlink(fpath, flink) + can_symlink_files = os.path.islink(flink) + except OSError: + can_symlink_files = False + + # Cleanup the test directory + shutil.rmtree(tempdir) + + return can_symlink_directories and can_symlink_files + + +def _win32_is_junction(path): + """ + Determines if a path is a win32 junction + """ + if os.path.islink(path): + return False + + if is_windows: + import ctypes.wintypes + + GetFileAttributes = ctypes.windll.kernel32.GetFileAttributesW + GetFileAttributes.argtypes = (ctypes.wintypes.LPWSTR,) + GetFileAttributes.restype = ctypes.wintypes.DWORD + + INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF + FILE_ATTRIBUTE_REPARSE_POINT = 0x400 + + res = GetFileAttributes(path) + return res != INVALID_FILE_ATTRIBUTES and \ + bool(res & FILE_ATTRIBUTE_REPARSE_POINT) + + return False diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index c60419be472b95..de49f3f77fcee0 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -6,19 +6,22 @@ from __future__ import unicode_literals import contextlib -import fcntl import os import struct import sys -import termios import textwrap import traceback from datetime import datetime +from sys import platform as _platform import six from six import StringIO from six.moves import input +if _platform != "win32": + import fcntl + import termios + from llnl.util.tty.color import cescape, clen, cprint, cwrite # Globals @@ -143,7 +146,7 @@ def process_stacktrace(countback): file_list = [] for frame in st: # Check that the file is a spack file - if frame[0].find("/spack") >= 0: + if frame[0].find(os.path.sep + "spack") >= 0: file_list.append(frame[0]) # We use commonprefix to find what the spack 'root' directory is. root_dir = os.path.commonprefix(file_list) @@ -370,22 +373,29 @@ def hline(label=None, **kwargs): def terminal_size(): """Gets the dimensions of the console: (rows, cols).""" - def ioctl_gwinsz(fd): - try: - rc = struct.unpack('hh', fcntl.ioctl( - fd, termios.TIOCGWINSZ, '1234')) - except BaseException: - return - return rc - rc = ioctl_gwinsz(0) or ioctl_gwinsz(1) or ioctl_gwinsz(2) - if not rc: - try: - fd = os.open(os.ctermid(), os.O_RDONLY) - rc = ioctl_gwinsz(fd) - os.close(fd) - except BaseException: - pass - if not rc: + if _platform != "win32": + def ioctl_gwinsz(fd): + try: + rc = struct.unpack('hh', fcntl.ioctl( + fd, termios.TIOCGWINSZ, '1234')) + except BaseException: + return + return rc + rc = ioctl_gwinsz(0) or ioctl_gwinsz(1) or ioctl_gwinsz(2) + if not rc: + try: + fd = os.open(os.ctermid(), os.O_RDONLY) + rc = ioctl_gwinsz(fd) + os.close(fd) + except BaseException: + pass + if not rc: + rc = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80)) + + return int(rc[0]), int(rc[1]) + else: + if sys.version_info[0] < 3: + raise RuntimeError("Terminal size not obtainable on Windows with a\ +Python version older than 3") rc = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80)) - - return int(rc[0]), int(rc[1]) + return int(rc[0]), int(rc[1]) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 1a93b570a53038..544a9a6c48c076 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -8,15 +8,19 @@ from __future__ import unicode_literals import atexit +import ctypes import errno +import io import multiprocessing import os import re import select import signal import sys +import threading import traceback from contextlib import contextmanager +from threading import Thread from types import ModuleType # novm from typing import Optional # novm @@ -399,7 +403,7 @@ def replace_environment(env): os.environ[name] = val -class log_output(object): +def log_output(*args, **kwargs): """Context manager that logs its output to a file. In the simplest case, the usage looks like this:: @@ -414,6 +418,7 @@ class log_output(object): with log_output('logfile.txt', echo=True): # do things ... output will be logged and printed out + The following is available on Unix only. No-op on Windows. And, if you just want to echo *some* stuff from the parent, use ``force_echo``:: @@ -423,6 +428,20 @@ class log_output(object): with logger.force_echo(): # things here will be echoed *and* logged + See individual log classes for more information. + + + This method is actually a factory serving a per platform + (unix vs windows) log_output class + """ + if sys.platform == 'win32': + return winlog(*args, **kwargs) + else: + return nixlog(*args, **kwargs) + + +class nixlog(object): + """ Under the hood, we spawn a daemon and set up a pipe between this process and the daemon. The daemon writes our output to both the file and to stdout (if echoing). The parent process can communicate @@ -564,7 +583,7 @@ def __enter__(self): sys.stdout.flush() sys.stderr.flush() - # Now do the actual output rediction. + # Now do the actual output redirection. self.use_fds = _file_descriptors_work(sys.stdout, sys.stderr) if self.use_fds: # We try first to use OS-level file descriptors, as this @@ -671,6 +690,175 @@ def force_echo(self): sys.stdout.flush() +class StreamWrapper: + """ Wrapper class to handle redirection of io streams """ + def __init__(self, sys_attr): + self.sys_attr = sys_attr + self.saved_stream = None + if sys.platform.startswith('win32'): + if sys.version_info < (3, 5): + libc = ctypes.CDLL(ctypes.util.find_library('c')) + else: + if hasattr(sys, 'gettotalrefcount'): # debug build + libc = ctypes.CDLL('ucrtbased') + else: + libc = ctypes.CDLL('api-ms-win-crt-stdio-l1-1-0') + + kernel32 = ctypes.WinDLL('kernel32') + + # https://docs.microsoft.com/en-us/windows/console/getstdhandle + if self.sys_attr == 'stdout': + STD_HANDLE = -11 + elif self.sys_attr == 'stderr': + STD_HANDLE = -12 + else: + raise KeyError(self.sys_attr) + + c_stdout = kernel32.GetStdHandle(STD_HANDLE) + self.libc = libc + self.c_stream = c_stdout + else: + self.libc = ctypes.CDLL(None) + self.c_stream = ctypes.c_void_p.in_dll(self.libc, self.sys_attr) + self.sys_stream = getattr(sys, self.sys_attr) + self.orig_stream_fd = self.sys_stream.fileno() + # Save a copy of the original stdout fd in saved_stream + self.saved_stream = os.dup(self.orig_stream_fd) + + def redirect_stream(self, to_fd): + """Redirect stdout to the given file descriptor.""" + # Flush the C-level buffer stream + if sys.platform.startswith('win32'): + self.libc.fflush(None) + else: + self.libc.fflush(self.c_stream) + # Flush and close sys_stream - also closes the file descriptor (fd) + sys_stream = getattr(sys, self.sys_attr) + sys_stream.flush() + sys_stream.close() + # Make orig_stream_fd point to the same file as to_fd + os.dup2(to_fd, self.orig_stream_fd) + # Set sys_stream to a new stream that points to the redirected fd + new_buffer = open(self.orig_stream_fd, 'wb') + new_stream = io.TextIOWrapper(new_buffer) + setattr(sys, self.sys_attr, new_stream) + self.sys_stream = getattr(sys, self.sys_attr) + + def flush(self): + if sys.platform.startswith('win32'): + self.libc.fflush(None) + else: + self.libc.fflush(self.c_stream) + self.sys_stream.flush() + + def close(self): + """Redirect back to the original system stream, and close stream""" + try: + if self.saved_stream is not None: + self.redirect_stream(self.saved_stream) + finally: + if self.saved_stream is not None: + os.close(self.saved_stream) + + +class winlog(object): + """ + Similar to nixlog, with underlying + functionality ported to support Windows. + + Does not support the use of 'v' toggling as nixlog does. + """ + def __init__(self, file_like=None, echo=False, debug=0, buffer=False, + env=None, filter_fn=None): + self.env = env + self.debug = debug + self.echo = echo + self.logfile = file_like + self.stdout = StreamWrapper('stdout') + self.stderr = StreamWrapper('stderr') + self._active = False + self._ioflag = False + self.old_stdout = sys.stdout + self.old_stderr = sys.stderr + + def __enter__(self): + if self._active: + raise RuntimeError("Can't re-enter the same log_output!") + + if self.logfile is None: + raise RuntimeError( + "file argument must be set by __init__ ") + + # Open both write and reading on logfile + if type(self.logfile) == StringIO: + self._ioflag = True + # cannot have two streams on tempfile, so we must make our own + sys.stdout = self.logfile + sys.stderr = self.logfile + else: + self.writer = open(self.logfile, mode='wb+') + self.reader = open(self.logfile, mode='rb+') + + # Dup stdout so we can still write to it after redirection + self.echo_writer = open(os.dup(sys.stdout.fileno()), "w") + # Redirect stdout and stderr to write to logfile + self.stderr.redirect_stream(self.writer.fileno()) + self.stdout.redirect_stream(self.writer.fileno()) + self._kill = threading.Event() + + def background_reader(reader, echo_writer, _kill): + # for each line printed to logfile, read it + # if echo: write line to user + while True: + is_killed = _kill.wait(.1) + self.stderr.flush() + self.stdout.flush() + line = reader.readline() + while line: + if self.echo: + self.echo_writer.write('{0}'.format(line.decode())) + self.echo_writer.flush() + line = reader.readline() + + if is_killed: + break + + self._active = True + with replace_environment(self.env): + self._thread = Thread(target=background_reader, + args=(self.reader, self.echo_writer, self._kill)) + self._thread.start() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + if self._ioflag: + sys.stdout = self.old_stdout + sys.stderr = self.old_stderr + self._ioflag = False + else: + self.writer.close() + self.reader.close() + self.echo_writer.flush() + self.stdout.flush() + self.stderr.flush() + self._kill.set() + self._thread.join() + self.stdout.close() + self.stderr.close() + self._active = False + + @contextmanager + def force_echo(self): + """Context manager to force local echo, even if echo is off.""" + if not self._active: + raise RuntimeError( + "Can't call force_echo() outside log_output region!") + try: + yield self + finally: + pass + + def _writer_daemon(stdin_multiprocess_fd, read_multiprocess_fd, write_fd, echo, log_file_wrapper, control_pipe, filter_fn): """Daemon used by ``log_output`` to write to a log file and to ``stdout``. diff --git a/lib/spack/llnl/util/tty/pty.py b/lib/spack/llnl/util/tty/pty.py index 7ebaa68e4289cc..1a5731a5c72431 100644 --- a/lib/spack/llnl/util/tty/pty.py +++ b/lib/spack/llnl/util/tty/pty.py @@ -11,6 +11,7 @@ things like timeouts in ``ProcessController.wait()``, which are set to get tests done quickly, not to avoid high CPU usage. +Note: The functionality in this module is unsupported on Windows """ from __future__ import print_function @@ -19,7 +20,6 @@ import re import signal import sys -import termios import time import traceback @@ -27,6 +27,13 @@ from spack.util.executable import which +termios = None +try: + import termios as term_mod + termios = term_mod +except ImportError: + pass + class ProcessController(object): """Wrapper around some fundamental process control operations. diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 74169d504085af..810d56164c8d29 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -3,10 +3,11 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -#: major, minor, patch version for Spack, in a tuple -spack_version_info = (0, 17, 1) +#: (major, minor, micro, dev release) tuple +spack_version_info = (0, 18, 0, 'dev0') -#: String containing Spack version joined with .'s -spack_version = '.'.join(str(v) for v in spack_version_info) +#: PEP440 canonical ... string +spack_version = '.'.join(str(s) for s in spack_version_info) __all__ = ['spack_version_info', 'spack_version'] +__version__ = spack_version diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index df5fd6c86b2930..893c7f6aa3ab3c 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -41,11 +41,14 @@ def _search_duplicate_compilers(error_cls): from six.moves.urllib.request import urlopen -try: - from collections.abc import Sequence # novm -except ImportError: - from collections import Sequence +import llnl.util.lang +from llnl.util.compat import Sequence +import spack.config +import spack.patch +import spack.repo +import spack.spec +import spack.variant #: Map an audit tag to a list of callables implementing checks CALLBACKS = {} @@ -180,7 +183,6 @@ def run_check(tag, **kwargs): @config_compiler def _search_duplicate_compilers(error_cls): """Report compilers with the same spec and two different definitions""" - import spack.config errors = [] compilers = list(sorted( @@ -217,8 +219,6 @@ def _search_duplicate_compilers(error_cls): @config_packages def _search_duplicate_specs_in_externals(error_cls): """Search for duplicate specs declared as externals""" - import spack.config - errors, externals = [], collections.defaultdict(list) packages_yaml = spack.config.get('packages') @@ -265,6 +265,7 @@ def _search_duplicate_specs_in_externals(error_cls): kwargs=('pkgs',) ) + #: Sanity checks on linting # This can take some time, so it's run separately from packages package_https_directives = AuditClass( @@ -275,15 +276,40 @@ def _search_duplicate_specs_in_externals(error_cls): ) +@package_directives +def _check_patch_urls(pkgs, error_cls): + """Ensure that patches fetched from GitHub have stable sha256 hashes.""" + github_patch_url_re = ( + r"^https?://github\.com/.+/.+/(?:commit|pull)/[a-fA-F0-9]*.(?:patch|diff)" + ) + + errors = [] + for pkg_name in pkgs: + pkg = spack.repo.get(pkg_name) + for condition, patches in pkg.patches.items(): + for patch in patches: + if not isinstance(patch, spack.patch.UrlPatch): + continue + + if not re.match(github_patch_url_re, patch.url): + continue + + full_index_arg = "?full_index=1" + if not patch.url.endswith(full_index_arg): + errors.append(error_cls( + "patch URL in package {0} must end with {1}".format( + pkg.name, full_index_arg, + ), + [patch.url], + )) + + return errors + + @package_https_directives def _linting_package_file(pkgs, error_cls): """Check for correctness of links """ - import llnl.util.lang - - import spack.repo - import spack.spec - errors = [] for pkg_name in pkgs: pkg = spack.repo.get(pkg_name) @@ -308,11 +334,6 @@ def _linting_package_file(pkgs, error_cls): @package_directives def _unknown_variants_in_directives(pkgs, error_cls): """Report unknown or wrong variants in directives for this package""" - import llnl.util.lang - - import spack.repo - import spack.spec - errors = [] for pkg_name in pkgs: pkg = spack.repo.get(pkg_name) @@ -323,10 +344,17 @@ def _unknown_variants_in_directives(pkgs, error_cls): vrn = spack.spec.Spec(conflict) try: vrn.constrain(trigger) - except Exception as e: - msg = 'Generic error in conflict for package "{0}": ' - errors.append(error_cls(msg.format(pkg.name), [str(e)])) - continue + except Exception: + # If one of the conflict/trigger includes a platform and the other + # includes an os or target, the constraint will fail if the current + # platform is not the plataform in the conflict/trigger. Audit the + # conflict and trigger separately in that case. + # When os and target constraints can be created independently of + # the platform, TODO change this back to add an error. + errors.extend(_analyze_variants_in_directive( + pkg, spack.spec.Spec(trigger), + directive='conflicts', error_cls=error_cls + )) errors.extend(_analyze_variants_in_directive( pkg, vrn, directive='conflicts', error_cls=error_cls )) @@ -360,9 +388,6 @@ def _unknown_variants_in_directives(pkgs, error_cls): @package_directives def _unknown_variants_in_dependencies(pkgs, error_cls): """Report unknown dependencies and wrong variants for dependencies""" - import spack.repo - import spack.spec - errors = [] for pkg_name in pkgs: pkg = spack.repo.get(pkg_name) @@ -410,8 +435,6 @@ def _unknown_variants_in_dependencies(pkgs, error_cls): @package_directives def _version_constraints_are_satisfiable_by_some_version_in_repo(pkgs, error_cls): """Report if version constraints used in directives are not satisfiable""" - import spack.repo - errors = [] for pkg_name in pkgs: pkg = spack.repo.get(pkg_name) @@ -448,7 +471,6 @@ def _version_constraints_are_satisfiable_by_some_version_in_repo(pkgs, error_cls def _analyze_variants_in_directive(pkg, constraint, directive, error_cls): - import spack.variant variant_exceptions = ( spack.variant.InconsistentValidationError, spack.variant.MultipleValuesInExclusiveVariantError, diff --git a/lib/spack/spack/bootstrap.py b/lib/spack/spack/bootstrap.py index c44f217ccd7f99..335999a120da39 100644 --- a/lib/spack/spack/bootstrap.py +++ b/lib/spack/spack/bootstrap.py @@ -727,9 +727,11 @@ def _root_spec(spec_str): spec_str (str): spec to be bootstrapped. Must be without compiler and target. """ # Add a proper compiler hint to the root spec. We use GCC for - # everything but MacOS. + # everything but MacOS and Windows. if str(spack.platforms.host()) == 'darwin': spec_str += ' %apple-clang' + elif str(spack.platforms.host()) == 'windows': + spec_str += ' %msvc' else: spec_str += ' %gcc' diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index be4e9f1d6dcc16..5f9e1d8100594f 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -46,6 +46,7 @@ import llnl.util.tty as tty from llnl.util.filesystem import install, install_tree, mkdirp from llnl.util.lang import dedupe +from llnl.util.symlink import symlink from llnl.util.tty.color import cescape, colorize from llnl.util.tty.log import MultiProcessFd @@ -373,7 +374,8 @@ def set_wrapper_variables(pkg, env): # directory. Add that to the path too. env_paths = [] compiler_specific = os.path.join( - spack.paths.build_env_path, os.path.dirname(pkg.compiler.link_paths['cc'])) + spack.paths.build_env_path, + os.path.dirname(pkg.compiler.link_paths['cc'])) for item in [spack.paths.build_env_path, compiler_specific]: env_paths.append(item) ci = os.path.join(item, 'case-insensitive') @@ -526,7 +528,9 @@ def _set_variables_for_single_module(pkg, module): m.cmake = Executable('cmake') m.ctest = MakeExecutable('ctest', jobs) - # Standard build system arguments + if sys.platform == 'win32': + m.nmake = Executable('nmake') + # Standard CMake arguments m.std_cmake_args = spack.build_systems.cmake.CMakePackage._std_args(pkg) m.std_meson_args = spack.build_systems.meson.MesonPackage._std_args(pkg) m.std_pip_args = spack.build_systems.python.PythonPackage._std_args(pkg) @@ -545,7 +549,7 @@ def _set_variables_for_single_module(pkg, module): m.makedirs = os.makedirs m.remove = os.remove m.removedirs = os.removedirs - m.symlink = os.symlink + m.symlink = symlink m.mkdirp = mkdirp m.install = install @@ -668,11 +672,11 @@ def _static_to_shared_library(arch, compiler, static_lib, shared_lib=None, shared_lib_link = os.path.basename(shared_lib) if version or compat_version: - os.symlink(shared_lib_link, shared_lib_base) + symlink(shared_lib_link, shared_lib_base) if compat_version and compat_version != version: - os.symlink(shared_lib_link, '{0}.{1}'.format(shared_lib_base, - compat_version)) + symlink(shared_lib_link, '{0}.{1}'.format(shared_lib_base, + compat_version)) return compiler(*compiler_args, output=compiler_output) @@ -1135,7 +1139,8 @@ def child_fun(): try: # Forward sys.stdin when appropriate, to allow toggling verbosity - if sys.stdin.isatty() and hasattr(sys.stdin, 'fileno'): + 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) @@ -1143,6 +1148,7 @@ def child_fun(): target=_setup_pkg_and_run, args=(serialized_pkg, function, kwargs, child_pipe, input_multiprocess_fd)) + p.start() except InstallError as e: diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index e03870d0f93610..a644c926226492 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -14,9 +14,11 @@ from llnl.util.filesystem import force_remove, working_dir from spack.build_environment import InstallError -from spack.directives import depends_on +from spack.directives import conflicts, depends_on +from spack.operating_systems.mac_os import macos_version from spack.package import PackageBase, run_after, run_before from spack.util.executable import Executable +from spack.version import Version class AutotoolsPackage(PackageBase): @@ -102,6 +104,7 @@ def patch_config_files(self): depends_on('gnuconfig', type='build', when='target=ppc64le:') depends_on('gnuconfig', type='build', when='target=aarch64:') depends_on('gnuconfig', type='build', when='target=riscv64:') + conflicts('platform=windows') @property def _removed_la_files_log(self): @@ -415,6 +418,13 @@ def configure(self, spec, prefix): with working_dir(self.build_directory, create=True): inspect.getmodule(self).configure(*options) + def setup_build_environment(self, env): + if (self.spec.platform == 'darwin' + and macos_version() >= Version('11')): + # Many configure files rely on matching '10.*' for macOS version + # detection and fail to add flags if it shows as version 11. + env.set('MACOSX_DEPLOYMENT_TARGET', '10.16') + def build(self, spec, prefix): """Makes the build targets specified by :py:attr:``~.AutotoolsPackage.build_targets`` diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index d82bb245fe6f9f..f934947604da73 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -8,13 +8,18 @@ import os import platform import re -from typing import List # novm +import sys +from typing import List +import six + +from llnl.util.compat import Sequence from llnl.util.filesystem import working_dir import spack.build_environment from spack.directives import conflicts, depends_on, variant from spack.package import InstallError, PackageBase, run_after +from spack.util.path import convert_to_posix_path # Regex to extract the primary generator from the CMake generator # string. @@ -88,7 +93,12 @@ class CMakePackage(PackageBase): #: #: See https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html #: for more information. - generator = 'Unix Makefiles' + + generator = "Unix Makefiles" + + if sys.platform == 'win32': + generator = "Ninja" + depends_on('ninja') # https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html variant('build_type', default='RelWithDebInfo', @@ -135,10 +145,11 @@ def std_cmake_args(self): @staticmethod def _std_args(pkg): """Computes the standard cmake arguments for a generic package""" + try: generator = pkg.generator except AttributeError: - generator = 'Unix Makefiles' + generator = CMakePackage.generator # Make sure a valid generator was chosen valid_primary_generators = ['Unix Makefiles', 'Ninja'] @@ -163,7 +174,7 @@ def _std_args(pkg): define = CMakePackage.define args = [ '-G', generator, - define('CMAKE_INSTALL_PREFIX', pkg.prefix), + define('CMAKE_INSTALL_PREFIX', convert_to_posix_path(pkg.prefix)), define('CMAKE_BUILD_TYPE', build_type), ] @@ -182,7 +193,7 @@ def _std_args(pkg): # Set up CMake rpath args.extend([ - define('CMAKE_INSTALL_RPATH_USE_LINK_PATH', False), + define('CMAKE_INSTALL_RPATH_USE_LINK_PATH', True), define('CMAKE_INSTALL_RPATH', spack.build_environment.get_rpaths(pkg)), define('CMAKE_PREFIX_PATH', @@ -222,7 +233,7 @@ def define(cmake_var, value): value = "ON" if value else "OFF" else: kind = 'STRING' - if isinstance(value, (list, tuple)): + if isinstance(value, Sequence) and not isinstance(value, six.string_types): value = ";".join(str(v) for v in value) else: value = str(value) diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py index 1c46086c638aab..249ca9c6edf81b 100644 --- a/lib/spack/spack/build_systems/cuda.py +++ b/lib/spack/spack/build_systems/cuda.py @@ -106,7 +106,9 @@ def cuda_flags(arch_list): # This implies that the last one in the list has to be updated at # each release of a new cuda minor version. conflicts('%gcc@10:', when='+cuda ^cuda@:11.0') + conflicts('%gcc@11:', when='+cuda ^cuda@:11.4.0') conflicts('%gcc@12:', when='+cuda ^cuda@:11.6') + conflicts('%clang@12:', when='+cuda ^cuda@:11.4.0') conflicts('%clang@13:', when='+cuda ^cuda@:11.5') conflicts('%clang@14:', when='+cuda ^cuda@:11.6') @@ -186,7 +188,3 @@ def cuda_flags(arch_list): # Darwin. # TODO: add missing conflicts for %apple-clang cuda@:10 conflicts('platform=darwin', when='+cuda ^cuda@11.0.2: ') - - # Make sure cuda_arch can not be used without +cuda - for value in cuda_arch_values: - conflicts('~cuda', when='cuda_arch=' + value) diff --git a/lib/spack/spack/build_systems/intel.py b/lib/spack/spack/build_systems/intel.py index 1cf7923fb40527..ad60456fb2ac5c 100644 --- a/lib/spack/spack/build_systems/intel.py +++ b/lib/spack/spack/build_systems/intel.py @@ -24,6 +24,7 @@ install, ) +import spack.error from spack.build_environment import dso_suffix from spack.package import InstallError, PackageBase, run_after from spack.util.environment import EnvironmentModifications @@ -685,15 +686,15 @@ def openmp_libs(self): # packages.yaml), specificially to provide the 'iomp5' libs. elif '%gcc' in self.spec: - gcc = Executable(self.compiler.cc) - omp_lib_path = gcc( - '--print-file-name', 'libgomp.%s' % dso_suffix, output=str) + with self.compiler.compiler_environment(): + omp_lib_path = Executable(self.compiler.cc)( + '--print-file-name', 'libgomp.%s' % dso_suffix, output=str) omp_libs = LibraryList(omp_lib_path.strip()) elif '%clang' in self.spec: - clang = Executable(self.compiler.cc) - omp_lib_path = clang( - '--print-file-name', 'libomp.%s' % dso_suffix, output=str) + with self.compiler.compiler_environment(): + omp_lib_path = Executable(self.compiler.cc)( + '--print-file-name', 'libomp.%s' % dso_suffix, output=str) omp_libs = LibraryList(omp_lib_path.strip()) if len(omp_libs) < 1: @@ -734,8 +735,9 @@ def tbb_libs(self): # TODO: clang(?) gcc = self._gcc_executable # must be gcc, not self.compiler.cc - cxx_lib_path = gcc( - '--print-file-name', 'libstdc++.%s' % dso_suffix, output=str) + with self.compiler.compiler_environment(): + cxx_lib_path = gcc( + '--print-file-name', 'libstdc++.%s' % dso_suffix, output=str) libs = tbb_lib + LibraryList(cxx_lib_path.rstrip()) debug_print(libs) @@ -745,8 +747,9 @@ def tbb_libs(self): def _tbb_abi(self): '''Select the ABI needed for linking TBB''' gcc = self._gcc_executable - matches = re.search(r'(gcc|LLVM).* ([0-9]+\.[0-9]+\.[0-9]+).*', - gcc('--version', output=str), re.I | re.M) + with self.compiler.compiler_environment(): + matches = re.search(r'(gcc|LLVM).* ([0-9]+\.[0-9]+\.[0-9]+).*', + gcc('--version', output=str), re.I | re.M) abi = '' if sys.platform == 'darwin': pass @@ -1333,5 +1336,42 @@ def uninstall_ism(self): debug_print(os.getcwd()) return + @property + def base_lib_dir(self): + """Provide the library directory located in the base of Intel installation. + """ + d = self.normalize_path('') + d = os.path.join(d, 'lib') + + debug_print(d) + return d + + @run_after('install') + def modify_LLVMgold_rpath(self): + """Add libimf.so and other required libraries to the RUNPATH of LLVMgold.so. + + These are needed explicitly at dependent link time when + `ld -plugin LLVMgold.so` is called by the compiler. + """ + if self._has_compilers: + LLVMgold_libs = find_libraries('LLVMgold', self.base_lib_dir, + shared=True, recursive=True) + # Ignore ia32 entries as they mostly ignore throughout the rest + # of the file. + # The first entry in rpath preserves the original, the seconds entry + # is the location of libimf.so. If this relative location is changed + # in compiler releases, then we need to search for libimf.so instead + # of this static path. + for lib in LLVMgold_libs: + if not self.spec.satisfies('^patchelf'): + raise spack.error.SpackError( + 'Attempting to patch RPATH in LLVMgold.so.' + + '`patchelf` dependency should be set in package.py' + ) + patchelf = Executable('patchelf') + rpath = ':'.join([patchelf('--print-rpath', lib, output=str).strip(), + '$ORIGIN/../compiler/lib/intel64_lin']) + patchelf('--set-rpath', rpath, lib) + # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index b3552f033704a4..fd836afe92259a 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -11,7 +11,7 @@ from llnl.util.filesystem import ( filter_file, find, - get_filetype, + is_nonsymlink_exe_with_shebang, path_contains_subdirectory, same_path, working_dir, @@ -216,7 +216,7 @@ def view_file_conflicts(self, view, merge_map): return conflicts - def add_files_to_view(self, view, merge_map): + def add_files_to_view(self, view, merge_map, skip_if_exists=True): bin_dir = self.spec.prefix.bin python_prefix = self.extendee_spec.prefix python_is_external = self.extendee_spec.external @@ -230,7 +230,7 @@ def add_files_to_view(self, view, merge_map): view.link(src, dst) elif not os.path.islink(src): shutil.copy2(src, dst) - is_script = 'script' in get_filetype(src) + is_script = is_nonsymlink_exe_with_shebang(src) if is_script and not python_is_external: filter_file( python_prefix, os.path.abspath( diff --git a/lib/spack/spack/build_systems/racket.py b/lib/spack/spack/build_systems/racket.py new file mode 100644 index 00000000000000..5bb4026cf4052d --- /dev/null +++ b/lib/spack/spack/build_systems/racket.py @@ -0,0 +1,70 @@ +# Copyright 2013-2021 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 llnl.util.tty as tty +from llnl.util.filesystem import working_dir + +from spack.build_environment import SPACK_NO_PARALLEL_MAKE, determine_number_of_jobs +from spack.directives import extends +from spack.package import PackageBase +from spack.util.environment import env_flag +from spack.util.executable import Executable, ProcessError + + +class RacketPackage(PackageBase): + """Specialized class for packages that are built using Racket's + `raco pkg install` and `raco setup` commands. + + This class provides the following phases that can be overridden: + + * install + * setup + """ + #: Package name, version, and extension on PyPI + maintainers = ['elfprince13'] + + # Default phases + phases = ['install'] + + # To be used in UI queries that require to know which + # build-system class we are using + build_system_class = 'RacketPackage' + + extends('racket') + + pkgs = False + subdirectory = None + name = None + parallel = True + + @property + def homepage(self): + if self.pkgs: + return 'https://pkgs.racket-lang.org/package/{0}'.format(self.name) + + @property + def build_directory(self): + ret = os.getcwd() + if self.subdirectory: + ret = os.path.join(ret, self.subdirectory) + return ret + + def install(self, spec, prefix): + """Install everything from build directory.""" + raco = Executable("raco") + with working_dir(self.build_directory): + allow_parallel = self.parallel and (not env_flag(SPACK_NO_PARALLEL_MAKE)) + args = ['pkg', 'install', '-t', 'dir', '-n', self.name, '--deps', 'fail', + '--ignore-implies', '--copy', '-i', '-j', + str(determine_number_of_jobs(allow_parallel)), + '--', os.getcwd()] + try: + raco(*args) + except ProcessError: + args.insert(-2, "--skip-installed") + raco(*args) + tty.warn(("Racket package {0} was already installed, uninstalling via " + "Spack may make someone unhappy!").format(self.name)) diff --git a/lib/spack/spack/build_systems/rocm.py b/lib/spack/spack/build_systems/rocm.py index 2d5b245712c3b6..65c51ff749e19f 100644 --- a/lib/spack/spack/build_systems/rocm.py +++ b/lib/spack/spack/build_systems/rocm.py @@ -112,10 +112,6 @@ class ROCmPackage(PackageBase): # need amd gpu type for rocm builds conflicts('amdgpu_target=none', when='+rocm') - # Make sure amdgpu_targets cannot be used without +rocm - for value in amdgpu_targets: - conflicts('~rocm', when='amdgpu_target=' + value) - # https://github.com/ROCm-Developer-Tools/HIP/blob/master/bin/hipcc # It seems that hip-clang does not (yet?) accept this flag, in which case # we will still need to set the HCC_AMDGPU_TARGET environment flag in the diff --git a/lib/spack/spack/caches.py b/lib/spack/spack/caches.py index 0793ba8205832e..8112a97ea3ec55 100644 --- a/lib/spack/spack/caches.py +++ b/lib/spack/spack/caches.py @@ -8,6 +8,7 @@ import llnl.util.lang from llnl.util.filesystem import mkdirp +from llnl.util.symlink import symlink import spack.config import spack.error @@ -85,7 +86,7 @@ def symlink(self, mirror_ref): # to https://github.com/spack/spack/pull/13908) os.unlink(cosmetic_path) mkdirp(os.path.dirname(cosmetic_path)) - os.symlink(relative_dst, cosmetic_path) + symlink(relative_dst, cosmetic_path) #: Spack's local cache for downloaded source archives diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index 93c6bf11b4f571..b48f6d44d266fa 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -24,7 +24,6 @@ import spack import spack.binary_distribution as bindist -import spack.cmd import spack.compilers as compilers import spack.config as cfg import spack.environment as ev @@ -514,6 +513,60 @@ def format_job_needs(phase_name, strip_compilers, dep_jobs, return needs_list +def get_change_revisions(): + """If this is a git repo get the revisions to use when checking + for changed packages and spack core modules.""" + git_dir = os.path.join(spack.paths.prefix, '.git') + if os.path.exists(git_dir) and os.path.isdir(git_dir): + # TODO: This will only find changed packages from the last + # TODO: commit. While this may work for single merge commits + # TODO: when merging the topic branch into the base, it will + # TODO: require more thought outside of that narrow case. + return 'HEAD^', 'HEAD' + return None, None + + +def compute_affected_packages(rev1='HEAD^', rev2='HEAD'): + """Determine which packages were added, removed or changed + between rev1 and rev2, and return the names as a set""" + return spack.repo.get_all_package_diffs('ARC', rev1=rev1, rev2=rev2) + + +def get_spec_filter_list(env, affected_pkgs, dependencies=True, dependents=True): + """Given a list of package names, and assuming an active and + concretized environment, return a set of concrete specs from + the environment corresponding to any of the affected pkgs (or + optionally to any of their dependencies/dependents). + + Arguments: + + env (spack.environment.Environment): Active concrete environment + affected_pkgs (List[str]): Affected package names + dependencies (bool): Include dependencies of affected packages + dependents (bool): Include dependents of affected pacakges + + Returns: + + A list of concrete specs from the active environment including + those associated with affected packages, and possible their + dependencies and dependents as well. + """ + affected_specs = set() + all_concrete_specs = env.all_specs() + tty.debug('All concrete environment specs:') + for s in all_concrete_specs: + tty.debug(' {0}/{1}'.format(s.name, s.dag_hash()[:7])) + for pkg in affected_pkgs: + env_matches = [s for s in all_concrete_specs if s.name == pkg] + for match in env_matches: + affected_specs.add(match) + if dependencies: + affected_specs.update(match.traverse(direction='children', root=False)) + if dependents: + affected_specs.update(match.traverse(direction='parents', root=False)) + return affected_specs + + def generate_gitlab_ci_yaml(env, print_summary, output_file, prune_dag=False, check_index_only=False, run_optimizer=False, use_dependencies=False, @@ -546,6 +599,24 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file, tty.verbose("Using CDash auth token from environment") cdash_auth_token = os.environ.get('SPACK_CDASH_AUTH_TOKEN') + prune_untouched_packages = os.environ.get('SPACK_PRUNE_UNTOUCHED', None) + if prune_untouched_packages: + # Requested to prune untouched packages, but assume we won't do that + # unless we're actually in a git repo. + prune_untouched_packages = False + rev1, rev2 = get_change_revisions() + tty.debug('Got following revisions: rev1={0}, rev2={1}'.format(rev1, rev2)) + if rev1 and rev2: + prune_untouched_packages = True + affected_pkgs = compute_affected_packages(rev1, rev2) + tty.debug('affected pkgs:') + for p in affected_pkgs: + tty.debug(' {0}'.format(p)) + affected_specs = get_spec_filter_list(env, affected_pkgs) + tty.debug('all affected specs:') + for s in affected_specs: + tty.debug(' {0}'.format(s.name)) + generate_job_name = os.environ.get('CI_JOB_NAME', None) parent_pipeline_id = os.environ.get('CI_PIPELINE_ID', None) @@ -742,6 +813,13 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file, release_spec_dag_hash = release_spec.dag_hash() release_spec_build_hash = release_spec.build_hash() + if prune_untouched_packages: + if release_spec not in affected_specs: + tty.debug('Pruning {0}, untouched by change.'.format( + release_spec.name)) + spec_record['needs_rebuild'] = False + continue + runner_attribs = find_matching_config( release_spec, gitlab_ci) @@ -903,7 +981,8 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file, tty.debug(debug_msg) if prune_dag and not rebuild_spec: - tty.debug('Pruning spec that does not need to be rebuilt.') + tty.debug('Pruning {0}, does not need rebuild.'.format( + release_spec.name)) continue if (broken_spec_urls is not None and @@ -1114,6 +1193,10 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file, if pr_mirror_url: output_object['variables']['SPACK_PR_MIRROR_URL'] = pr_mirror_url + 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 + sorted_output = {} for output_key, output_value in sorted(output_object.items()): sorted_output[output_key] = output_value @@ -1566,7 +1649,7 @@ def setup_spack_repro_version(repro_dir, checkout_commit, merge_commit=None): # Next attempt to clone your local spack repo into the repro dir with fs.working_dir(repro_dir): - clone_out = git("clone", spack_git_path, + clone_out = git("clone", spack_git_path, "spack", output=str, error=os.devnull, fail_on_error=False) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 96cbafac89f270..9568ccc2961488 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -154,7 +154,6 @@ def parse_specs(args, **kwargs): concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) tests = kwargs.get('tests', False) - reuse = kwargs.get('reuse', False) try: sargs = args @@ -163,7 +162,7 @@ def parse_specs(args, **kwargs): specs = spack.spec.parse(sargs) for spec in specs: if concretize: - spec.concretize(tests=tests, reuse=reuse) # implies normalize + spec.concretize(tests=tests) # implies normalize elif normalize: spec.normalize(tests=tests) diff --git a/lib/spack/spack/cmd/activate.py b/lib/spack/spack/cmd/activate.py index 27f0fc96517e38..65c0d8d0bef2e2 100644 --- a/lib/spack/spack/cmd/activate.py +++ b/lib/spack/spack/cmd/activate.py @@ -26,6 +26,10 @@ def setup_parser(subparser): def activate(parser, args): + + tty.warn("spack activate is deprecated in favor of " + "environments and will be removed in v0.19.0") + specs = spack.cmd.parse_specs(args.spec) if len(specs) != 1: tty.die("activate requires one spec. %d given." % len(specs)) diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index b47b412e6f27a1..db431c5ed93066 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -57,32 +57,32 @@ def checksum(parser, args): pkg = spack.repo.get(args.package) url_dict = {} - if args.versions: - # If the user asked for specific versions, use those - for version in args.versions: + versions = args.versions + if (not versions) and args.preferred: + versions = [preferred_version(pkg)] + + if versions: + remote_versions = None + for version in versions: version = ver(version) if not isinstance(version, Version): tty.die("Cannot generate checksums for version lists or " "version ranges. Use unambiguous versions.") - url_dict[version] = pkg.url_for_version(version) - elif args.preferred: - version = preferred_version(pkg) - url_dict = dict([(version, pkg.url_for_version(version))]) + url = pkg.find_valid_url_for_version(version) + if url is not None: + url_dict[version] = url + continue + # if we get here, it's because no valid url was provided by the package + # do expensive fallback to try to recover + if remote_versions is None: + remote_versions = pkg.fetch_remote_versions() + if version in remote_versions: + url_dict[version] = remote_versions[version] else: - # Otherwise, see what versions we can find online url_dict = pkg.fetch_remote_versions() - if not url_dict: - tty.die("Could not find any versions for {0}".format(pkg.name)) - - # And ensure the specified version URLs take precedence, if available - try: - explicit_dict = {} - for v in pkg.versions: - if not v.isdevelop(): - explicit_dict[v] = pkg.url_for_version(v) - url_dict.update(explicit_dict) - except spack.package.NoURLError: - pass + + if not url_dict: + tty.die("Could not find any versions for {0}".format(pkg.name)) version_lines = spack.stage.get_checksums_for_versions( url_dict, pkg.name, keep_stage=args.keep_stage, diff --git a/lib/spack/spack/cmd/ci.py b/lib/spack/spack/cmd/ci.py index 44e751e38f4c83..4963f63c5e009b 100644 --- a/lib/spack/spack/cmd/ci.py +++ b/lib/spack/spack/cmd/ci.py @@ -362,8 +362,10 @@ def ci_rebuild(args): # Write information about spack into an artifact in the repro dir spack_info = spack_ci.get_spack_info() spack_info_file = os.path.join(repro_dir, 'spack_info.txt') - with open(spack_info_file, 'w') as fd: - fd.write('\n{0}\n'.format(spack_info)) + with open(spack_info_file, 'wb') as fd: + fd.write(b'\n') + fd.write(spack_info.encode('utf8')) + fd.write(b'\n') # If we decided there should be a temporary storage mechanism, add that # mirror now so it's used when we check for a full hash match already diff --git a/lib/spack/spack/cmd/commands.py b/lib/spack/spack/cmd/commands.py index 5822bc06cae88f..25653b58ae4381 100644 --- a/lib/spack/spack/cmd/commands.py +++ b/lib/spack/spack/cmd/commands.py @@ -117,7 +117,7 @@ def format(self, cmd): 'virtual': '_providers', 'namespace': '_repos', 'hash': '_all_resource_hashes', - 'pytest': '_tests', + 'pytest': '_unit_tests', } diff --git a/lib/spack/spack/cmd/common/__init__.py b/lib/spack/spack/cmd/common/__init__.py index 9d35aa8f3b2504..f4d7a57dd3c210 100644 --- a/lib/spack/spack/cmd/common/__init__.py +++ b/lib/spack/spack/cmd/common/__init__.py @@ -35,6 +35,9 @@ def shell_init_instructions(cmd, equivalent): color.colorize("@*c{For fish:}"), " source %s/setup-env.fish" % spack.paths.share_path, "", + color.colorize("@*c{For Windows batch:}"), + " source %s/spack_cmd.bat" % spack.paths.share_path, + "", "Or, if you do not want to use shell support, run " + ( "one of these" if shell_specific else "this") + " instead:", "", @@ -45,6 +48,7 @@ def shell_init_instructions(cmd, equivalent): equivalent.format(sh_arg="--sh ") + " # bash/zsh/sh", equivalent.format(sh_arg="--csh ") + " # csh/tcsh", equivalent.format(sh_arg="--fish") + " # fish", + equivalent.format(sh_arg="--bat ") + " # batch" ] else: msg += [" " + equivalent] diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 9286701c187234..bcfc2866c1b272 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -322,11 +322,68 @@ def add_cdash_args(subparser, add_help): ) -@arg -def reuse(): - return Args( - '--reuse', action='store_true', default=False, - help='reuse installed dependencies' +class ConfigSetAction(argparse.Action): + """Generic action for setting spack config options from CLI. + + This works like a ``store_const`` action but you can set the + ``dest`` to some Spack configuration path (like ``concretizer:reuse``) + and the ``const`` will be stored there using ``spack.config.set()`` + """ + def __init__(self, + option_strings, + dest, + const, + default=None, + required=False, + help=None, + metavar=None): + # save the config option we're supposed to set + self.config_path = dest + + # destination is translated to a legal python identifier by + # substituting '_' for ':'. + dest = dest.replace(":", "_") + + super(ConfigSetAction, self).__init__( + option_strings=option_strings, + dest=dest, + nargs=0, + const=const, + default=default, + required=required, + help=help + ) + + def __call__(self, parser, namespace, values, option_string): + # Retrieve the name of the config option and set it to + # the const from the constructor or a value from the CLI. + # Note that this is only called if the argument is actually + # specified on the command line. + spack.config.set(self.config_path, self.const, scope="command_line") + + +def add_concretizer_args(subparser): + """Add a subgroup of arguments for controlling concretization. + + These will appear in a separate group called 'concretizer arguments'. + There's no need to handle them in your command logic -- they all use + ``ConfigSetAction``, which automatically handles setting configuration + options. + + If you *do* need to access a value passed on the command line, you can + get at, e.g., the ``concretizer:reuse`` via ``args.concretizer_reuse``. + Just substitute ``_`` for ``:``. + """ + subgroup = subparser.add_argument_group("concretizer arguments") + subgroup.add_argument( + '-U', '--fresh', action=ConfigSetAction, dest="concretizer:reuse", + const=False, default=None, + help='do not reuse installed deps; build newest configuration' + ) + subgroup.add_argument( + '--reuse', action=ConfigSetAction, dest="concretizer:reuse", + const=True, default=None, + help='reuse installed dependencies/buildcaches when possible' ) diff --git a/lib/spack/spack/cmd/concretize.py b/lib/spack/spack/cmd/concretize.py index f05febecd8fd1d..09486a3db8bae6 100644 --- a/lib/spack/spack/cmd/concretize.py +++ b/lib/spack/spack/cmd/concretize.py @@ -13,7 +13,6 @@ def setup_parser(subparser): - spack.cmd.common.arguments.add_common_arguments(subparser, ['reuse']) subparser.add_argument( '-f', '--force', action='store_true', help="Re-concretize even if already concretized.") @@ -24,6 +23,8 @@ def setup_parser(subparser): dependencies are only added for the environment's root specs. When 'all' is chosen, test dependencies are enabled for all packages in the environment.""") + spack.cmd.common.arguments.add_concretizer_args(subparser) + def concretize(parser, args): env = spack.cmd.require_active_env(cmd_name='concretize') @@ -36,8 +37,6 @@ def concretize(parser, args): tests = False with env.write_transaction(): - concretized_specs = env.concretize( - force=args.force, tests=tests, reuse=args.reuse - ) + concretized_specs = env.concretize(force=args.force, tests=tests) ev.display_specs(concretized_specs) env.write() diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 1a496a9842853b..14463127d35049 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -258,6 +258,42 @@ def install(self, spec, prefix): bazel()""" +class RacketPackageTemplate(PackageTemplate): + """Provides approriate overrides for Racket extensions""" + base_class_name = 'RacketPackage' + + url_line = """\ + # FIXME: set the proper location from which to fetch your package + git = "git@github.com:example/example.git" + """ + + dependencies = """\ + # FIXME: Add dependencies if required. Only add the racket dependency + # if you need specific versions. A generic racket dependency is + # added implicity by the RacketPackage class. + # depends_on('racket@8.3:', type=('build', 'run'))""" + + body_def = """\ + # FIXME: specify the name of the package, + # as it should appear to ``raco pkg install`` + name = '{0}' + # FIXME: set to true if published on pkgs.racket-lang.org + # pkgs = False + # FIXME: specify path to the root directory of the + # package, if not the base directory + # subdirectory = None + """ + + def __init__(self, name, url, *args, **kwargs): + # If the user provided `--name rkt-scribble`, don't rename it rkt-rkt-scribble + if not name.startswith('rkt-'): + # Make it more obvious that we are renaming the package + tty.msg("Changing package name from {0} to rkt-{0}".format(name)) + name = 'rkt-{0}'.format(name) + self.body_def = self.body_def.format(name[4:]) + super(RacketPackageTemplate, self).__init__(name, url, *args, **kwargs) + + class PythonPackageTemplate(PackageTemplate): """Provides appropriate overrides for python extensions""" base_class_name = 'PythonPackage' @@ -536,6 +572,7 @@ def __init__(self, name, *args, **kwargs): 'bazel': BazelPackageTemplate, 'python': PythonPackageTemplate, 'r': RPackageTemplate, + 'racket': RacketPackageTemplate, 'perlmake': PerlmakePackageTemplate, 'perlbuild': PerlbuildPackageTemplate, 'octave': OctavePackageTemplate, @@ -758,7 +795,15 @@ def get_versions(args, name): # Default guesser guesser = BuildSystemGuesser() - if args.url is not None and args.template != 'bundle': + valid_url = True + try: + spack.util.url.require_url_format(args.url) + if args.url.startswith('file://'): + valid_url = False # No point in spidering these + except AssertionError: + valid_url = False + + if args.url is not None and args.template != 'bundle' and valid_url: # Find available versions try: url_dict = spack.util.web.find_versions_of_archive(args.url) diff --git a/lib/spack/spack/cmd/deactivate.py b/lib/spack/spack/cmd/deactivate.py index 132ede085002e7..3d5b5494001e4b 100644 --- a/lib/spack/spack/cmd/deactivate.py +++ b/lib/spack/spack/cmd/deactivate.py @@ -8,9 +8,9 @@ import spack.cmd import spack.cmd.common.arguments as arguments import spack.environment as ev +import spack.graph import spack.store from spack.filesystem_view import YamlFilesystemView -from spack.graph import topological_sort description = "deactivate a package extension" section = "extensions" @@ -32,6 +32,10 @@ def setup_parser(subparser): def deactivate(parser, args): + + tty.warn("spack deactivate is deprecated in favor of " + "environments and will be removed in v0.19.0") + specs = spack.cmd.parse_specs(args.spec) if len(specs) != 1: tty.die("deactivate requires one spec. %d given." % len(specs)) @@ -68,11 +72,8 @@ def deactivate(parser, args): tty.msg("Deactivating %s and all dependencies." % pkg.spec.short_spec) - topo_order = topological_sort(spec) - index = spec.index() - - for name in topo_order: - espec = index[name] + nodes_in_topological_order = spack.graph.topological_sort(spec) + for espec in reversed(nodes_in_topological_order): epkg = espec.package if epkg.extends(pkg.extendee_spec): if epkg.is_activated(view) or args.force: diff --git a/lib/spack/spack/cmd/deprecate.py b/lib/spack/spack/cmd/deprecate.py index 2732273498d427..67cb24be7eaf25 100644 --- a/lib/spack/spack/cmd/deprecate.py +++ b/lib/spack/spack/cmd/deprecate.py @@ -19,6 +19,7 @@ import os import llnl.util.tty as tty +from llnl.util.symlink import symlink import spack.cmd import spack.cmd.common.arguments as arguments @@ -123,7 +124,7 @@ def deprecate(parser, args): if not answer: tty.die('Will not deprecate any packages.') - link_fn = os.link if args.link_type == 'hard' else os.symlink + link_fn = os.link if args.link_type == 'hard' else symlink for dcate, dcator in zip(all_deprecate, all_deprecators): dcate.package.do_deprecate(dcator, link_fn) diff --git a/lib/spack/spack/cmd/dev_build.py b/lib/spack/spack/cmd/dev_build.py index fba06c31e183c8..0d4a440306fd29 100644 --- a/lib/spack/spack/cmd/dev_build.py +++ b/lib/spack/spack/cmd/dev_build.py @@ -19,7 +19,7 @@ def setup_parser(subparser): - arguments.add_common_arguments(subparser, ['jobs', 'reuse']) + arguments.add_common_arguments(subparser, ['jobs']) subparser.add_argument( '-d', '--source-path', dest='source_path', default=None, help="path to source directory. defaults to the current directory") @@ -59,6 +59,8 @@ def setup_parser(subparser): cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) + spack.cmd.common.arguments.add_concretizer_args(subparser) + def dev_build(self, args): if not args.spec: @@ -86,7 +88,7 @@ def dev_build(self, args): # Forces the build to run out of the source directory. spec.constrain('dev_path=%s' % source_path) - spec.concretize(reuse=args.reuse) + spec.concretize() package = spack.repo.get(spec) if package.installed: diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index 5e2bc03d7a87a5..8583fde8cada2a 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -60,6 +60,9 @@ def env_activate_setup_parser(subparser): shells.add_argument( '--fish', action='store_const', dest='shell', const='fish', help="print fish commands to activate the environment") + shells.add_argument( + '--bat', action='store_const', dest='shell', const='bat', + help="print bat commands to activate the environment") view_options = subparser.add_mutually_exclusive_group() view_options.add_argument( @@ -173,6 +176,9 @@ def env_deactivate_setup_parser(subparser): shells.add_argument( '--fish', action='store_const', dest='shell', const='fish', help="print fish commands to activate the environment") + shells.add_argument( + '--bat', action='store_const', dest='shell', const='bat', + help="print bat commands to activate the environment") def env_deactivate(args): diff --git a/lib/spack/spack/cmd/external.py b/lib/spack/spack/cmd/external.py index 8a8dec90255456..42f033d979e443 100644 --- a/lib/spack/spack/cmd/external.py +++ b/lib/spack/spack/cmd/external.py @@ -39,8 +39,17 @@ def setup_parser(subparser): '--scope', choices=scopes, metavar=scopes_metavar, default=spack.config.default_modify_scope('packages'), help="configuration scope to modify") + find_parser.add_argument( + '--all', action='store_true', + help="search for all packages that Spack knows about" + ) spack.cmd.common.arguments.add_common_arguments(find_parser, ['tags']) find_parser.add_argument('packages', nargs=argparse.REMAINDER) + find_parser.epilog = ( + 'The search is by default on packages tagged with the "build-tools" or ' + '"core-packages" tags. Use the --all option to search for every possible ' + 'package Spack knows how to find.' + ) sp.add_parser( 'list', help='list detectable packages, by repository and name' @@ -48,6 +57,14 @@ def setup_parser(subparser): def external_find(args): + # If the user didn't specify anything, search for build tools by default + if not args.tags and not args.all and not args.packages: + args.tags = ['core-packages', 'build-tools'] + + # If the user specified both --all and --tag, then --all has precedence + if args.all and args.tags: + args.tags = [] + # Construct the list of possible packages to be detected packages_to_check = [] @@ -64,15 +81,18 @@ def external_find(args): # Since tags are cached it's much faster to construct what we need # to search directly, rather than filtering after the fact packages_to_check = [ - spack.repo.get(pkg) for pkg in - spack.repo.path.packages_with_tags(*args.tags) + spack.repo.get(pkg) for tag in args.tags for pkg in + spack.repo.path.packages_with_tags(tag) ] + packages_to_check = list(set(packages_to_check)) # If the list of packages is empty, search for every possible package if not args.tags and not packages_to_check: packages_to_check = spack.repo.path.all_packages() detected_packages = spack.detection.by_executable(packages_to_check) + detected_packages.update(spack.detection.by_library(packages_to_check)) + new_entries = spack.detection.update_configuration( detected_packages, scope=args.scope, buildable=not args.not_buildable ) diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index cabdd334994baf..87bd1649324fb0 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -202,6 +202,12 @@ def display_env(env, args, decorator): def find(parser, args): + if args.bootstrap: + tty.warn( + "`spack find --bootstrap` is deprecated and will be removed in v0.19.", + "Use `spack --bootstrap find` instead." + ) + if args.bootstrap: bootstrap_store_path = spack.bootstrap.store_path() with spack.bootstrap.ensure_bootstrap_configuration(): diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index e3ca3ea5ef5cb1..f6273c47116a66 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -5,6 +5,7 @@ from __future__ import print_function +import inspect import textwrap from six.moves import zip_longest @@ -17,7 +18,7 @@ import spack.fetch_strategy as fs import spack.repo import spack.spec -from spack.package import preferred_version +from spack.package import has_test_method, preferred_version description = 'get detailed information on a particular package' section = 'basic' @@ -39,6 +40,25 @@ def pad(string): def setup_parser(subparser): + subparser.add_argument( + '-a', '--all', action='store_true', default=False, + help="output all package information" + ) + + options = [ + ('--detectable', print_detectable.__doc__), + ('--maintainers', print_maintainers.__doc__), + ('--no-dependencies', 'do not ' + print_dependencies.__doc__), + ('--no-variants', 'do not ' + print_variants.__doc__), + ('--no-versions', 'do not ' + print_versions.__doc__), + ('--phases', print_phases.__doc__), + ('--tags', print_tags.__doc__), + ('--tests', print_tests.__doc__), + ('--virtuals', print_virtuals.__doc__), + ] + for opt, help_comment in options: + subparser.add_argument(opt, action='store_true', help=help_comment) + arguments.add_common_arguments(subparser, ['package']) @@ -145,27 +165,21 @@ def lines(self): yield " " + self.fmt % t -def print_text_info(pkg): - """Print out a plain text description of a package.""" +def print_dependencies(pkg): + """output build, link, and run package dependencies""" - header = section_title( - '{0}: ' - ).format(pkg.build_system_class) + pkg.name - color.cprint(header) - - color.cprint('') - color.cprint(section_title('Description:')) - if pkg.__doc__: - color.cprint(color.cescape(pkg.format_doc(indent=4))) - else: - color.cprint(" None") + for deptype in ('build', 'link', 'run'): + color.cprint('') + color.cprint(section_title('%s Dependencies:' % deptype.capitalize())) + deps = sorted(pkg.dependencies_of_type(deptype)) + if deps: + colify(deps, indent=4) + else: + color.cprint(' None') - color.cprint(section_title('Homepage: ') + pkg.homepage) - if len(pkg.maintainers) > 0: - mnt = " ".join(['@@' + m for m in pkg.maintainers]) - color.cprint('') - color.cprint(section_title('Maintainers: ') + mnt) +def print_detectable(pkg): + """output information on external detection""" color.cprint('') color.cprint(section_title('Externally Detectable: ')) @@ -187,6 +201,31 @@ def print_text_info(pkg): else: color.cprint(' False') + +def print_maintainers(pkg): + """output package maintainers""" + + if len(pkg.maintainers) > 0: + mnt = " ".join(['@@' + m for m in pkg.maintainers]) + color.cprint('') + color.cprint(section_title('Maintainers: ') + mnt) + + +def print_phases(pkg): + """output installation phases""" + + if hasattr(pkg, 'phases') and pkg.phases: + color.cprint('') + color.cprint(section_title('Installation Phases:')) + phase_str = '' + for phase in pkg.phases: + phase_str += " {0}".format(phase) + color.cprint(phase_str) + + +def print_tags(pkg): + """output package tags""" + color.cprint('') color.cprint(section_title("Tags: ")) if hasattr(pkg, 'tags'): @@ -195,6 +234,90 @@ def print_text_info(pkg): else: color.cprint(" None") + +def print_tests(pkg): + """output relevant build-time and stand-alone tests""" + + # Some built-in base packages (e.g., Autotools) define callback (e.g., + # check) inherited by descendant packages. These checks may not result + # in build-time testing if the package's build does not implement the + # expected functionality (e.g., a 'check' or 'test' targets). + # + # So the presence of a callback in Spack does not necessarily correspond + # to the actual presence of built-time tests for a package. + for callbacks, phase in [(pkg.build_time_test_callbacks, 'Build'), + (pkg.install_time_test_callbacks, 'Install')]: + color.cprint('') + color.cprint(section_title('Available {0} Phase Test Methods:' + .format(phase))) + names = [] + if callbacks: + for name in callbacks: + if getattr(pkg, name, False): + names.append(name) + + if names: + colify(sorted(names), indent=4) + else: + color.cprint(' None') + + # PackageBase defines an empty install/smoke test but we want to know + # if it has been overridden and, therefore, assumed to be implemented. + color.cprint('') + color.cprint(section_title('Stand-Alone/Smoke Test Methods:')) + names = [] + pkg_cls = pkg if inspect.isclass(pkg) else pkg.__class__ + if has_test_method(pkg_cls): + pkg_base = spack.package.PackageBase + test_pkgs = [str(cls.test) for cls in inspect.getmro(pkg_cls) if + issubclass(cls, pkg_base) and cls.test != pkg_base.test] + test_pkgs = list(set(test_pkgs)) + names.extend([(test.split()[1]).lower() for test in test_pkgs]) + + # TODO Refactor START + # Use code from package.py's test_process IF this functionality is + # accepted. + v_names = list(set([vspec.name for vspec in pkg.virtuals_provided])) + + # hack for compilers that are not dependencies (yet) + # TODO: this all eventually goes away + c_names = ('gcc', 'intel', 'intel-parallel-studio', 'pgi') + if pkg.name in c_names: + v_names.extend(['c', 'cxx', 'fortran']) + if pkg.spec.satisfies('llvm+clang'): + v_names.extend(['c', 'cxx']) + # TODO Refactor END + + v_specs = [spack.spec.Spec(v_name) for v_name in v_names] + for v_spec in v_specs: + try: + pkg = v_spec.package + pkg_cls = pkg if inspect.isclass(pkg) else pkg.__class__ + if has_test_method(pkg_cls): + names.append('{0}.test'.format(pkg.name.lower())) + except spack.repo.UnknownPackageError: + pass + + if names: + colify(sorted(names), indent=4) + else: + color.cprint(' None') + + +def print_variants(pkg): + """output variants""" + + color.cprint('') + color.cprint(section_title('Variants:')) + + formatter = VariantFormatter(pkg.variants) + for line in formatter.lines: + color.cprint(color.cescape(line)) + + +def print_versions(pkg): + """output versions""" + color.cprint('') color.cprint(section_title('Preferred version: ')) @@ -238,29 +361,9 @@ def print_text_info(pkg): line = version(' {0}'.format(pad(v))) + color.cescape(url) color.cprint(line) - color.cprint('') - color.cprint(section_title('Variants:')) - - formatter = VariantFormatter(pkg.variants) - for line in formatter.lines: - color.cprint(color.cescape(line)) - if hasattr(pkg, 'phases') and pkg.phases: - color.cprint('') - color.cprint(section_title('Installation Phases:')) - phase_str = '' - for phase in pkg.phases: - phase_str += " {0}".format(phase) - color.cprint(phase_str) - - for deptype in ('build', 'link', 'run'): - color.cprint('') - color.cprint(section_title('%s Dependencies:' % deptype.capitalize())) - deps = sorted(pkg.dependencies_of_type(deptype)) - if deps: - colify(deps, indent=4) - else: - color.cprint(' None') +def print_virtuals(pkg): + """output virtual packages""" color.cprint('') color.cprint(section_title('Virtual Packages: ')) @@ -280,9 +383,39 @@ def print_text_info(pkg): else: color.cprint(" None") - color.cprint('') - def info(parser, args): pkg = spack.repo.get(args.package) - print_text_info(pkg) + + # Output core package information + header = section_title( + '{0}: ' + ).format(pkg.build_system_class) + pkg.name + color.cprint(header) + + color.cprint('') + color.cprint(section_title('Description:')) + if pkg.__doc__: + color.cprint(color.cescape(pkg.format_doc(indent=4))) + else: + color.cprint(" None") + + color.cprint(section_title('Homepage: ') + pkg.homepage) + + # Now output optional information in expected order + sections = [ + (args.all or args.maintainers, print_maintainers), + (args.all or args.detectable, print_detectable), + (args.all or args.tags, print_tags), + (args.all or not args.no_versions, print_versions), + (args.all or not args.no_variants, print_variants), + (args.all or args.phases, print_phases), + (args.all or not args.no_dependencies, print_dependencies), + (args.all or args.virtuals, print_virtuals), + (args.all or args.tests, print_tests), + ] + for print_it, func in sections: + if print_it: + func(pkg) + + color.cprint('') diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index ac8bd0fdb59c3c..e95f1189564976 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -78,7 +78,7 @@ def setup_parser(subparser): subparser.add_argument( '-u', '--until', type=str, dest='until', default=None, help="phase to stop after when installing (default None)") - arguments.add_common_arguments(subparser, ['jobs', 'reuse']) + arguments.add_common_arguments(subparser, ['jobs']) subparser.add_argument( '--overwrite', action='store_true', help="reinstall an existing spec, even if it has dependents") @@ -182,6 +182,8 @@ def setup_parser(subparser): arguments.add_cdash_args(subparser, False) arguments.add_common_arguments(subparser, ['yes_to_all', 'spec']) + spack.cmd.common.arguments.add_concretizer_args(subparser) + def default_log_file(spec): """Computes the default filename for the log file and creates @@ -339,7 +341,7 @@ def get_tests(specs): if not args.only_concrete: with env.write_transaction(): - concretized_specs = env.concretize(tests=tests, reuse=args.reuse) + concretized_specs = env.concretize(tests=tests) ev.display_specs(concretized_specs) # save view regeneration for later, so that we only do it @@ -397,9 +399,7 @@ def get_tests(specs): kwargs['tests'] = tests try: - specs = spack.cmd.parse_specs( - args.spec, concretize=True, tests=tests, reuse=args.reuse - ) + specs = spack.cmd.parse_specs(args.spec, concretize=True, tests=tests) except SpackError as e: tty.debug(e) reporter.concretization_report(e.message) diff --git a/lib/spack/spack/cmd/installer/CMakeLists.txt b/lib/spack/spack/cmd/installer/CMakeLists.txt new file mode 100644 index 00000000000000..efa9f2b6df9711 --- /dev/null +++ b/lib/spack/spack/cmd/installer/CMakeLists.txt @@ -0,0 +1,116 @@ +cmake_minimum_required (VERSION 3.13) +project(spack_installer NONE) + +set(PYTHON_VERSION "3.9.0" CACHE STRING "Version of Python to build.") +set(PY_DOWNLOAD_LINK "https://www.paraview.org/files/dependencies") +set(PY_FILENAME "Python-${PYTHON_VERSION}-win64.tar.xz") +set(PYTHON_DIR "Python-${PYTHON_VERSION}") + +if (SPACK_VERSION) + set(SPACK_DL "https://github.com/spack/spack/releases/download/v${SPACK_VERSION}") + set(SPACK_FILENAME "spack-${SPACK_VERSION}.tar.gz") + set(SPACK_DIR "spack-${SPACK_VERSION}") + + # SPACK DOWLOAD AND EXTRACTION----------------------------------- + file(DOWNLOAD "${SPACK_DL}/${SPACK_FILENAME}" + "${CMAKE_CURRENT_BINARY_DIR}/${SPACK_FILENAME}" + STATUS download_status + ) + list(GET download_status 0 res) + if(res) + list(GET download_status 1 err) + message(FATAL_ERROR "Failed to download ${SPACK_FILENAME} ${err}") + endif() + message(STATUS "Successfully downloaded ${SPACK_FILENAME}") + + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xfz + "${CMAKE_CURRENT_BINARY_DIR}/${SPACK_FILENAME}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + RESULT_VARIABLE res) + if(NOT res EQUAL 0) + message(FATAL_ERROR "Extraction of ${SPACK_FILENAME} failed.") + endif() + message(STATUS "Extracted ${SPACK_DIR}") + SET(SPACK_SOURCE "${CMAKE_CURRENT_BINARY_DIR}/${SPACK_DIR}") +elseif(SPACK_SOURCE) + get_filename_component(SPACK_DIR ${SPACK_SOURCE} NAME) +else() + message(FATAL_ERROR "Must specify SPACK_VERSION or SPACK_SOURCE") +endif() + + +# GIT DOWNLOAD---------------------------------------------------- +set(GIT_FILENAME "Git-2.31.1-64-bit.exe") +file(DOWNLOAD "https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe" + "${CMAKE_CURRENT_BINARY_DIR}/${GIT_FILENAME}" + STATUS download_status + EXPECTED_HASH "SHA256=c43611eb73ad1f17f5c8cc82ae51c3041a2e7279e0197ccf5f739e9129ce426e" +) +list(GET download_status 0 res) +if(res) + list(GET download_status 1 err) + message(FATAL_ERROR "Failed to download ${GIT_FILENAME} ${err}") +endif() +message(STATUS "Successfully downloaded ${GIT_FILENAME}") + + +# PYTHON DOWLOAD AND EXTRACTION----------------------------------- +file(DOWNLOAD "${PY_DOWNLOAD_LINK}/${PY_FILENAME}" + "${CMAKE_CURRENT_BINARY_DIR}/${PY_FILENAME}" + STATUS download_status + EXPECTED_HASH "SHA256=f6aeebc6d1ff77418678ed5612b64ce61be6bc9ef3ab9c291ac557abb1783420" +) +list(GET download_status 0 res) +if(res) + list(GET download_status 1 err) + message(FATAL_ERROR "Failed to download ${PY_FILENAME} ${err}") +endif() +message(STATUS "Successfully downloaded ${PY_FILENAME}") + +execute_process(COMMAND ${CMAKE_COMMAND} -E tar xfz + "${CMAKE_CURRENT_BINARY_DIR}/${PY_FILENAME}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + RESULT_VARIABLE res) +if(NOT res EQUAL 0) + message(FATAL_ERROR "Extraction of ${PY_FILENAME} failed.") +endif() +message(STATUS "Extracted ${PY_FILENAME}.") + +# license must be a .txt or .rtf file +configure_file("${SPACK_LICENSE}" "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf" COPYONLY) + + +#INSTALLATION COMMANDS--------------------------------------------------- +install(DIRECTORY "${SPACK_SOURCE}/" + DESTINATION "${SPACK_DIR}") +install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Python-${PYTHON_VERSION}-win64/" + DESTINATION "${PYTHON_DIR}") + +# CPACK Installer Instructions +set(CPACK_PACKAGE_NAME "Spack") +set(CPACK_PACKAGE_VENDOR "Lawrence Livermore National Laboratories") +set(CPACK_PACKAGE_VERSION "0.16.0") +set(CPACK_PACKAGE_DESCRIPTION "A flexible package manager designed to support multiple versions, configurations, platforms, and compilers.") +set(CPACK_PACKAGE_HOMEPAGE_URL "https://spack.io") +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") +set(CPACK_PACKAGE_ICON "${SPACK_LOGO}") +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf") +#set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE") +# WIX options (the default) + +set(CPACK_GENERATOR "WIX") +set(CPACK_WIX_PRODUCT_ICON "${SPACK_LOGO}") +set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/banner493x58.bmp") +set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml") +set(CPACK_WIX_UPGRADE_GUID "D2C703E4-721D-44EC-8016-BCB96BB64E0B") +set(CPACK_WIX_SKIP_PROGRAM_FOLDER TRUE) + +set(SHORTCUT_GUID "099213BC-0D37-4F29-B758-60CA2A7E6DDA") +# Set full path to icon, shortcut in spack.wxs +set(SPACK_SHORTCUT "spack_cmd.bat") +configure_file("spack.wxs.in" "${CMAKE_CURRENT_BINARY_DIR}/spack.wxs") +configure_file("bundle.wxs.in" "${CMAKE_CURRENT_BINARY_DIR}/bundle.wxs") +set(CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/spack.wxs") + +include(CPack) diff --git a/lib/spack/spack/cmd/installer/README.md b/lib/spack/spack/cmd/installer/README.md new file mode 100644 index 00000000000000..602c594f093671 --- /dev/null +++ b/lib/spack/spack/cmd/installer/README.md @@ -0,0 +1,85 @@ +This README is a guide for creating a Spack installer for Windows using the +``make-installer`` command. The installer is an executable file that users +can run to install Spack like any other Windows binary. + +Before proceeding, follow the setup instructions in Steps 1 and 2 of +[Getting Started on Windows](https://spack.readthedocs.io/en/latest/getting_started.html#windows_support). + +# Step 1: Install prerequisites + +The only additional prerequisite for making the installer is Wix. Wix is a +utility used for .msi creation and can be downloaded and installed at +https://wixtoolset.org/releases/. The Visual Studio extensions are not +necessary. + +# Step 2: Make the installer + +To use Spack, run ``spack_cmd.bat``. This will provide a Windows command +prompt with an environment properly set up with Spack and its prerequisites. + +Ensure that Python and CMake are on your PATH. If needed, you may add the +CMake executable provided by Visual Studio to your path, which will look +something like: + +``C:\Program Files (x86)\Microsoft Visual Studio\\\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake`` + +**IMPORTANT**: If you use Tab to complete any part of this path, the console +will automatically add quotation marks to the start and the end since it will +see the spaces and want to parse the whole of it as a string. This is +incorrect for our purposes so before submitting the command, ensure that the +quotes are removed. You will encounter configuration errors if you fail to do +this. + +There are two ways to create the installer using Spack's ``make-installer`` +command. The recommended method is to build the installer using a local +checkout of Spack source (release or development), using the +`-s` flag to specify the directory where the local checkout is. For +example, if the local checkout is in a directory called ``spack-develop`` +and want to generate an installer with the source there, you can use: + +``spack make-installer -s spack-develop tmp`` + +Both the Spack source directory (e.g. ``spack-develop``) and installer +destination directory (e.g. ``tmp``) may be an absolute path or relative to +the current working directory. The entire contents of the specified +directory will be included in the installer (e.g. .git files or local +changes). + +Alternatively, if you would like to create an installer from a release version +of Spack, say, 0.16.0, and store it in ``tmp``, you can use the following +command: + +``spack make-installer -v 0.16.0 tmp`` + +**IMPORTANT**: Windows features are not currently supported in Spack's +official release branches, so an installer created using this method will +*not* run on Windows. + +Regardless of your method, a file called ``Spack.exe`` will be created +inside the destination directory. This executable bundles the Spack installer +(``Spack.msi`` also located in destination directory) and the git installer. + +# Step 3: Run the installer + +After accepting the terms of service, select where on your computer you would +like Spack installed, and after a few minutes Spack, Python and git will be +installed and ready for use. + +**IMPORTANT**: To avoid permissions issues, it is recommended to select an +install location other than ``C:\Program Files``. + +**IMPORTANT**: There is a specific option that must be chosen when letting Git +install. When given the option of adjusting your ``PATH``, choose the +``Git from the command line and also from 3rd-party software`` option. This will +automatically update your ``PATH`` variable to include the ``git`` command. +Certain Spack commands expect ``git`` to be part of the ``PATH``. If this step +is not performed properly, certain Spack comands will not work. + +If your Spack installation needs to be modified, repaired, or uninstalled, +you can do any of these things by rerunning ``Spack.exe``. + +Running the installer creates a shortcut on your desktop that, when +launched, will run ``spack_cmd.bat`` and launch a console with its initial +directory being wherever Spack was installed on your computer. If Python is +found on your PATH, that will be used. If not, the Python included with the +installer will be used when running Spack. diff --git a/lib/spack/spack/cmd/installer/banner493x58.bmp b/lib/spack/spack/cmd/installer/banner493x58.bmp new file mode 100644 index 00000000000000..e7ebb2d3b9556d Binary files /dev/null and b/lib/spack/spack/cmd/installer/banner493x58.bmp differ diff --git a/lib/spack/spack/cmd/installer/bundle.wxs.in b/lib/spack/spack/cmd/installer/bundle.wxs.in new file mode 100644 index 00000000000000..6818044651a3b7 --- /dev/null +++ b/lib/spack/spack/cmd/installer/bundle.wxs.in @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/lib/spack/spack/cmd/installer/patch.xml b/lib/spack/spack/cmd/installer/patch.xml new file mode 100644 index 00000000000000..1093b782b720ee --- /dev/null +++ b/lib/spack/spack/cmd/installer/patch.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/lib/spack/spack/cmd/installer/spack.wxs.in b/lib/spack/spack/cmd/installer/spack.wxs.in new file mode 100644 index 00000000000000..d8c2a15ada1964 --- /dev/null +++ b/lib/spack/spack/cmd/installer/spack.wxs.in @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index 4ecde81fb70ff6..64ae08930cdf7b 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -33,6 +33,9 @@ def setup_parser(subparser): shells.add_argument( '--fish', action='store_const', dest='shell', const='fish', help="print fish commands to load the package") + shells.add_argument( + '--bat', action='store_const', dest='shell', const='bat', + help="print bat commands to load the package") subparser.add_argument( '--first', diff --git a/lib/spack/spack/cmd/make_installer.py b/lib/spack/spack/cmd/make_installer.py new file mode 100644 index 00000000000000..761401ea3725f1 --- /dev/null +++ b/lib/spack/spack/cmd/make_installer.py @@ -0,0 +1,146 @@ +# Copyright 2013-2021 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 posixpath +import sys + +import spack.paths +import spack.util.executable +from spack.spec import Spec +from spack.util.path import convert_to_posix_path + +description = "generate Windows installer" +section = "admin" +level = "long" + + +def txt_to_rtf(file_path): + rtf_header = r"""{{\rtf1\ansi\deff0\nouicompat + {{\fonttbl{{\f0\\fnil\fcharset0 Courier New;}}}} + {{\colortbl ;\red0\green0\blue255;}} + {{\*\generator Riched20 10.0.19041}}\viewkind4\uc1 + \f0\fs22\lang1033 + {} + }} + """ + + def line_to_rtf(str): + return str.replace("\n", "\\par") + contents = "" + with open(file_path, "r+") as f: + for line in f.readlines(): + contents += line_to_rtf(line) + return rtf_header.format(contents) + + +def setup_parser(subparser): + spack_source_group = subparser.add_mutually_exclusive_group(required=True) + spack_source_group.add_argument( + '-v', '--spack-version', default="", + help='download given spack version e.g. 0.16.0') + spack_source_group.add_argument( + '-s', '--spack-source', default="", + help='full path to spack source') + + subparser.add_argument( + '-g', '--git-installer-verbosity', default="", + choices=set(['SILENT', 'VERYSILENT']), + help="Level of verbosity provided by bundled Git Installer.\ + Default is fully verbose", + required=False, action='store', dest="git_verbosity" + ) + + subparser.add_argument( + 'output_dir', help="output directory") + + +def make_installer(parser, args): + """ + Use CMake to generate WIX installer in newly created build directory + """ + if sys.platform == 'win32': + output_dir = args.output_dir + cmake_spec = Spec('cmake') + cmake_spec.concretize() + cmake_path = os.path.join(cmake_spec.prefix, "bin", "cmake.exe") + cpack_path = os.path.join(cmake_spec.prefix, "bin", "cpack.exe") + spack_source = args.spack_source + git_verbosity = "" + if args.git_verbosity: + git_verbosity = "/" + args.git_verbosity + + if spack_source: + if not os.path.exists(spack_source): + print("%s does not exist" % spack_source) + return + else: + if not os.path.isabs(spack_source): + spack_source = posixpath.abspath(spack_source) + spack_source = convert_to_posix_path(spack_source) + + spack_version = args.spack_version + + here = os.path.dirname(os.path.abspath(__file__)) + source_dir = os.path.join(here, "installer") + posix_root = convert_to_posix_path(spack.paths.spack_root) + spack_license = posixpath.join(posix_root, "LICENSE-APACHE") + rtf_spack_license = txt_to_rtf(spack_license) + spack_license = posixpath.join(source_dir, "LICENSE.rtf") + + with open(spack_license, 'w') as rtf_license: + written = rtf_license.write(rtf_spack_license) + if written == 0: + raise RuntimeError("Failed to generate properly formatted license file") + spack_logo = posixpath.join(posix_root, + "share/spack/logo/favicon.ico") + + try: + spack.util.executable.Executable(cmake_path)( + '-S', source_dir, '-B', output_dir, + '-DSPACK_VERSION=%s' % spack_version, + '-DSPACK_SOURCE=%s' % spack_source, + '-DSPACK_LICENSE=%s' % spack_license, + '-DSPACK_LOGO=%s' % spack_logo, + '-DSPACK_GIT_VERBOSITY=%s' % git_verbosity + ) + except spack.util.executable.ProcessError: + print("Failed to generate installer") + return spack.util.executable.ProcessError.returncode + + try: + spack.util.executable.Executable(cpack_path)( + "--config", + "%s/CPackConfig.cmake" % output_dir, + "-B", + "%s/" % output_dir) + except spack.util.executable.ProcessError: + print("Failed to generate installer") + return spack.util.executable.ProcessError.returncode + try: + spack.util.executable.Executable(os.environ.get('WIX') + '/bin/candle.exe')( + '-ext', + 'WixBalExtension', + '%s/bundle.wxs' % output_dir, + '-out', + '%s/bundle.wixobj' % output_dir + ) + except spack.util.executable.ProcessError: + print("Failed to generate installer chain") + return spack.util.executable.ProcessError.returncode + try: + spack.util.executable.Executable(os.environ.get('WIX') + "/bin/light.exe")( + "-sw1134", + "-ext", + "WixBalExtension", + "%s/bundle.wixobj" % output_dir, + '-out', + '%s/Spack.exe' % output_dir + ) + except spack.util.executable.ProcessError: + print("Failed to generate installer chain") + return spack.util.executable.ProcessError.returncode + print("Successfully generated Spack.exe in %s" % (output_dir)) + else: + print('The make-installer command is currently only supported on Windows.') diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 3acc9c04af809a..dec604ddf3e1bf 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -5,12 +5,9 @@ from __future__ import print_function -import os -import re import sys import llnl.util.tty as tty -from llnl.util.filesystem import working_dir from llnl.util.tty.colify import colify import spack.cmd @@ -18,7 +15,6 @@ import spack.paths import spack.repo import spack.util.package_hash as ph -from spack.util.executable import which description = "query packages associated with particular git revisions" section = "developer" @@ -82,78 +78,19 @@ def setup_parser(subparser): arguments.add_common_arguments(hash_parser, ['spec']) -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 - - -class GitExe: - # Wrapper around Executable for git to set working directory for all - # invocations. - # - # Not using -C as that is not supported for git < 1.8.5. - def __init__(self): - self._git_cmd = which('git', required=True) - - def __call__(self, *args, **kwargs): - with working_dir(packages_path()): - return self._git_cmd(*args, **kwargs) - - -_git = None - - -def get_git(): - """Get a git executable that runs *within* the packages path.""" - global _git - if _git is None: - _git = GitExe() - return _git - - -def list_packages(rev): - git = get_git() - - # git ls-tree does not support ... merge-base syntax, so do it manually - if rev.endswith('...'): - ref = rev.replace('...', '') - rev = git('merge-base', ref, 'HEAD', output=str).strip() - - output = git('ls-tree', '--name-only', rev, output=str) - return sorted(line for line in output.split('\n') - if line and not line.startswith('.')) - - def pkg_add(args): """add a package to the git stage with `git add`""" - git = get_git() - - for pkg_name in args.packages: - filename = spack.repo.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) - - git('add', filename) + spack.repo.add_package_to_git_stage(args.packages) def pkg_list(args): """list packages associated with a particular spack git revision""" - colify(list_packages(args.rev)) - - -def diff_packages(rev1, rev2): - p1 = set(list_packages(rev1)) - p2 = set(list_packages(rev2)) - return p1.difference(p2), p2.difference(p1) + colify(spack.repo.list_packages(args.rev)) def pkg_diff(args): """compare packages available in two different git revisions""" - u1, u2 = diff_packages(args.rev1, args.rev2) + u1, u2 = spack.repo.diff_packages(args.rev1, args.rev2) if u1: print("%s:" % args.rev1) @@ -168,45 +105,21 @@ def pkg_diff(args): def pkg_removed(args): """show packages removed since a commit""" - u1, u2 = diff_packages(args.rev1, args.rev2) + u1, u2 = spack.repo.diff_packages(args.rev1, args.rev2) if u1: colify(sorted(u1)) def pkg_added(args): """show packages added since a commit""" - u1, u2 = diff_packages(args.rev1, args.rev2) + u1, u2 = spack.repo.diff_packages(args.rev1, args.rev2) if u2: colify(sorted(u2)) def pkg_changed(args): """show packages changed since a commit""" - lower_type = args.type.lower() - if not re.match('^[arc]*$', lower_type): - tty.die("Invald change type: '%s'." % args.type, - "Can contain only A (added), R (removed), or C (changed)") - - removed, added = diff_packages(args.rev1, args.rev2) - - git = get_git() - out = git('diff', '--relative', '--name-only', args.rev1, args.rev2, - output=str).strip() - - lines = [] if not out else re.split(r'\s+', out) - changed = set() - for path in lines: - pkg_name, _, _ = path.partition(os.sep) - if pkg_name not in added and pkg_name not in removed: - changed.add(pkg_name) - - packages = set() - if 'a' in lower_type: - packages |= added - if 'r' in lower_type: - packages |= removed - if 'c' in lower_type: - packages |= changed + packages = spack.repo.get_all_package_diffs(args.type, args.rev1, args.rev2) if packages: colify(sorted(packages)) diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 901574c12dadc1..ac891dbfd136f7 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -118,6 +118,10 @@ def python_interpreter(args): else: # Provides readline support, allowing user to use arrow keys console.push('import readline') + # Provide tabcompletion + console.push('from rlcompleter import Completer') + console.push('readline.set_completer(Completer(locals()).complete)') + console.push('readline.parse_and_bind("tab: complete")') console.interact("Spack version %s\nPython %s, %s %s" % (spack.spack_version, platform.python_version(), diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index a2e1d84e939229..5fd6ba463e37a2 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -6,6 +6,7 @@ from __future__ import print_function import os +import sys import llnl.util.tty as tty @@ -142,9 +143,10 @@ def repo_list(args): except spack.repo.RepoError: continue - msg = "%d package repositor" % len(repos) - msg += "y." if len(repos) == 1 else "ies." - tty.msg(msg) + if sys.stdout.isatty(): + msg = "%d package repositor" % len(repos) + msg += "y." if len(repos) == 1 else "ies." + tty.msg(msg) if not repos: return diff --git a/lib/spack/spack/cmd/solve.py b/lib/spack/spack/cmd/solve.py index aaf631a1c589f7..b3b9519ea519f5 100644 --- a/lib/spack/spack/cmd/solve.py +++ b/lib/spack/spack/cmd/solve.py @@ -44,7 +44,7 @@ def setup_parser(subparser): # Below are arguments w.r.t. spec display (like spack spec) arguments.add_common_arguments( - subparser, ['long', 'very_long', 'install_status', 'reuse'] + subparser, ['long', 'very_long', 'install_status'] ) subparser.add_argument( '-y', '--yaml', action='store_const', dest='format', default=None, @@ -71,6 +71,8 @@ def setup_parser(subparser): subparser.add_argument( 'specs', nargs=argparse.REMAINDER, help="specs of packages") + spack.cmd.common.arguments.add_concretizer_args(subparser) + def solve(parser, args): # these are the same options as `spack spec` @@ -86,11 +88,11 @@ def solve(parser, args): 'hashes': args.long or args.very_long } - # process dump options - dump = re.split(r'\s*,\s*', args.show) - if 'all' in dump: - dump = show_options - for d in dump: + # process output options + show = re.split(r'\s*,\s*', args.show) + if 'all' in show: + show = show_options + for d in show: if d not in show_options: raise ValueError( "Invalid option for '--show': '%s'\nchoose from: (%s)" @@ -102,21 +104,29 @@ def solve(parser, args): specs = spack.cmd.parse_specs(args.specs) - # dump generated ASP program - result = asp.solve( - specs, dump=dump, models=models, timers=args.timers, stats=args.stats, - reuse=args.reuse, + # set up solver parameters + # Note: reuse and other concretizer prefs are passed as configuration + solver = asp.Solver() + output = sys.stdout if "asp" in show else None + result = solver.solve( + specs, + out=output, + models=models, + timers=args.timers, + stats=args.stats, + setup_only=(set(show) == {'asp'}) ) - if 'solutions' not in dump: + if 'solutions' not in show: return # die if no solution was found result.raise_if_unsat() - # dump the solutions as concretized specs - if 'solutions' in dump: + # show the solutions as concretized specs + if 'solutions' in show: opt, _, _ = min(result.answers) - if ("opt" in dump) and (not args.format): + + if ("opt" in show) and (not args.format): tty.msg("Best of %d considered solutions." % result.nmodels) tty.msg("Optimization Criteria:") diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 74961aafc4bcbd..d9089449767fed 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -5,14 +5,15 @@ from __future__ import print_function -import contextlib import sys +import llnl.util.lang as lang import llnl.util.tty as tty import spack import spack.cmd import spack.cmd.common.arguments as arguments +import spack.environment as ev import spack.hash_types as ht import spack.spec import spack.store @@ -24,11 +25,14 @@ def setup_parser(subparser): subparser.epilog = """\ +when an environment is active and no specs are provided, the environment root \ +specs are used instead + for further documentation regarding the spec syntax, see: spack help --spec """ arguments.add_common_arguments( - subparser, ['long', 'very_long', 'install_status', 'reuse'] + subparser, ['long', 'very_long', 'install_status'] ) subparser.add_argument( '-y', '--yaml', action='store_const', dest='format', default=None, @@ -52,13 +56,7 @@ def setup_parser(subparser): help='show dependency types') arguments.add_common_arguments(subparser, ['specs']) - -@contextlib.contextmanager -def nullcontext(): - """Empty context manager. - TODO: replace with contextlib.nullcontext() if we ever require python 3.7. - """ - yield + spack.cmd.common.arguments.add_concretizer_args(subparser) def spec(parser, args): @@ -75,41 +73,46 @@ def spec(parser, args): # use a read transaction if we are getting install status for every # spec in the DAG. This avoids repeatedly querying the DB. - tree_context = nullcontext + tree_context = lang.nullcontext if args.install_status: tree_context = spack.store.db.read_transaction - if not args.specs: - tty.die("spack spec requires at least one spec") - - concretize_kwargs = { - 'reuse': args.reuse - } - - for spec in spack.cmd.parse_specs(args.specs): + # Use command line specified specs, otherwise try to use environment specs. + if args.specs: + input_specs = spack.cmd.parse_specs(args.specs) + specs = [(s, s.concretized()) for s in input_specs] + else: + env = ev.active_environment() + if env: + env.concretize() + specs = env.concretized_specs() + else: + tty.die("spack spec requires at least one spec or an active environment") + + for (input, output) in specs: # With -y, just print YAML to output. if args.format: - if spec.name in spack.repo.path or spec.virtual: - spec.concretize(**concretize_kwargs) - # The user can specify the hash type to use hash_type = getattr(ht, args.hash_type) if args.format == 'yaml': # use write because to_yaml already has a newline. - sys.stdout.write(spec.to_yaml(hash=hash_type)) + sys.stdout.write(output.to_yaml(hash=hash_type)) else: - print(spec.to_json(hash=hash_type)) + print(output.to_json(hash=hash_type)) continue with tree_context(): - tree_kwargs['hashes'] = False # Always False for input spec - print("Input spec") - print("--------------------------------") - print(spec.tree(**tree_kwargs)) + # 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("Concretized") - print("--------------------------------") - spec.concretize(**concretize_kwargs) - print(spec.tree(**tree_kwargs)) + print(output.tree(**tree_kwargs)) diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index 1f74bac4d84a13..30679d438a0314 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -7,7 +7,6 @@ import argparse import fnmatch -import inspect import os import re import shutil @@ -54,6 +53,10 @@ def setup_parser(subparser): '--fail-first', action='store_true', help="Stop after the first failed package." ) + run_parser.add_argument( + '--externals', action='store_true', + help="Test packages that are externally installed." + ) run_parser.add_argument( '--keep-stage', action='store_true', @@ -204,18 +207,8 @@ def test_run(args): with reporter('test', test_suite.stage): test_suite(remove_directory=not args.keep_stage, dirty=args.dirty, - fail_first=args.fail_first) - - -def has_test_method(pkg): - if not inspect.isclass(pkg): - tty.die('{0}: is not a class, it is {1}'.format(pkg, type(pkg))) - - pkg_base = spack.package.PackageBase - return ( - (issubclass(pkg, pkg_base) and pkg.test != pkg_base.test) or - (isinstance(pkg, pkg_base) and pkg.test.__func__ != pkg_base.test) - ) + fail_first=args.fail_first, + externals=args.externals) def test_list(args): @@ -224,7 +217,7 @@ def test_list(args): else set() def has_test_and_tags(pkg_class): - return has_test_method(pkg_class) and \ + return spack.package.has_test_method(pkg_class) and \ (not args.tag or pkg_class.name in tagged) if args.list_all: @@ -344,9 +337,17 @@ def _report_suite_results(test_suite, args, constraints): pkg_id, status = line.split() results[pkg_id] = status + failed, skipped, untested = 0, 0, 0 for pkg_id in test_specs: if pkg_id in results: status = results[pkg_id] + if status == 'FAILED': + failed += 1 + elif status == 'NO-TESTS': + untested += 1 + elif status == 'SKIPPED': + skipped += 1 + if args.failed and status != 'FAILED': continue @@ -358,6 +359,9 @@ def _report_suite_results(test_suite, args, constraints): with open(log_file, 'r') as f: msg += '\n{0}'.format(''.join(f.readlines())) tty.msg(msg) + + spack.install_test.write_test_summary( + failed, skipped, untested, len(test_specs)) else: msg = "Test %s has no results.\n" % test_suite.name msg += " Check if it is running with " diff --git a/lib/spack/spack/cmd/unit_test.py b/lib/spack/spack/cmd/unit_test.py index 0faa05b834f955..eb78ad893b7da1 100644 --- a/lib/spack/spack/cmd/unit_test.py +++ b/lib/spack/spack/cmd/unit_test.py @@ -28,6 +28,7 @@ description = "run spack's unit tests (wrapper around pytest)" section = "developer" level = "long" +is_windows = sys.platform == 'win32' def setup_parser(subparser): @@ -130,7 +131,7 @@ def colorize(c, prefix): # in the future - so this manipulation might be fragile if nodetype.lower() == 'function': name_parts.append(item) - key_end = os.path.join(*[x[1] for x in key_parts]) + key_end = os.path.join(*key_parts[-1][1].split('/')) key = next(f for f in files if f.endswith(key_end)) tests[key].add(tuple(x[1] for x in name_parts)) elif nodetype.lower() == 'class': @@ -179,8 +180,11 @@ def unit_test(parser, args, unknown_args): # Ensure clingo is available before switching to the # mock configuration used by unit tests - with spack.bootstrap.ensure_bootstrap_configuration(): - spack.bootstrap.ensure_clingo_importable_or_raise() + # Note: skip on windows here because for the moment, + # clingo is wholly unsupported from bootstrap + if not is_windows: + with spack.bootstrap.ensure_bootstrap_configuration(): + spack.bootstrap.ensure_clingo_importable_or_raise() if pytest is None: vendored_pytest_dir = os.path.join( diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py index 68823b39fe0bb6..e1b926a6ea4907 100644 --- a/lib/spack/spack/cmd/unload.py +++ b/lib/spack/spack/cmd/unload.py @@ -32,6 +32,9 @@ def setup_parser(subparser): shells.add_argument( '--fish', action='store_const', dest='shell', const='fish', help="print fish commands to load the package") + shells.add_argument( + '--bat', action='store_const', dest='shell', const='bat', + help="print bat commands to load the package") subparser.add_argument('-a', '--all', action='store_true', help='unload all loaded Spack packages.') diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index bcbb32dd627229..0a502efffa5f58 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -23,6 +23,7 @@ import spack.util.module_cmd import spack.version from spack.util.environment import filter_system_paths +from spack.util.path import system_path_filter __all__ = ['Compiler'] @@ -37,8 +38,12 @@ def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()): version_arg (str): the argument used to extract version information """ compiler = spack.util.executable.Executable(compiler_path) - output = compiler( - version_arg, output=str, error=str, ignore_errors=ignore_errors) + if version_arg: + output = compiler( + version_arg, output=str, error=str, ignore_errors=ignore_errors) + else: + output = compiler( + output=str, error=str, ignore_errors=ignore_errors) return output @@ -153,6 +158,7 @@ def _parse_link_paths(string): return implicit_link_dirs +@system_path_filter def _parse_non_system_link_dirs(string): """Parses link paths out of compiler debug output. @@ -325,7 +331,7 @@ def accessible_exe(exe): # setup environment before verifying in case we have executable names # instead of absolute paths - with self._compiler_environment(): + with self.compiler_environment(): missing = [cmp for cmp in (self.cc, self.cxx, self.f77, self.fc) if cmp and not accessible_exe(cmp)] if missing: @@ -407,7 +413,7 @@ def _get_compiler_link_paths(self, paths): compiler_exe.add_default_arg(flag) output = '' - with self._compiler_environment(): + with self.compiler_environment(): output = str(compiler_exe( self.verbose_flag, fin, '-o', fout, output=str, error=str)) # str for py2 @@ -523,7 +529,7 @@ 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(): + with self.compiler_environment(): output = cc(self.version_argument, output=str, error=str, ignore_errors=tuple(self.ignore_version_errors)) @@ -597,7 +603,12 @@ def __str__(self): str(self.operating_system))))) @contextlib.contextmanager - def _compiler_environment(self): + def compiler_environment(self): + # yield immediately if no modules + if not self.modules: + yield + return + # store environment to replace later backup_env = os.environ.copy() diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index f56222d24fe865..5aad6b2b9889db 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -42,7 +42,8 @@ _compiler_to_pkg = { 'clang': 'llvm+clang', - 'oneapi': 'intel-oneapi-compilers' + 'oneapi': 'intel-oneapi-compilers', + 'rocmcc': 'llvm-amdgpu' } diff --git a/lib/spack/spack/compilers/aocc.py b/lib/spack/spack/compilers/aocc.py index d4bafe279558eb..345161bdeb9f45 100644 --- a/lib/spack/spack/compilers/aocc.py +++ b/lib/spack/spack/compilers/aocc.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import re import sys @@ -42,10 +43,10 @@ def opt_flags(self): @property def link_paths(self): - link_paths = {'cc': 'aocc/clang', - 'cxx': 'aocc/clang++', - 'f77': 'aocc/flang', - 'fc': 'aocc/flang'} + link_paths = {'cc': os.path.join('aocc', 'clang'), + 'cxx': os.path.join('aocc', 'clang++'), + 'f77': os.path.join('aocc', 'flang'), + 'fc': os.path.join('aocc', 'flang')} return link_paths diff --git a/lib/spack/spack/compilers/apple_clang.py b/lib/spack/spack/compilers/apple_clang.py index a60105dccb060a..e9efd89c495271 100644 --- a/lib/spack/spack/compilers/apple_clang.py +++ b/lib/spack/spack/compilers/apple_clang.py @@ -8,6 +8,7 @@ import llnl.util.lang import llnl.util.tty as tty +from llnl.util.symlink import symlink import spack.compiler import spack.compilers.clang @@ -162,10 +163,10 @@ def setup_custom_environment(self, pkg, env): for fname in os.listdir(dev_dir): if fname in bins: os.unlink(os.path.join(dev_dir, fname)) - os.symlink( + symlink( os.path.join(spack.paths.build_env_path, 'cc'), os.path.join(dev_dir, fname)) - os.symlink(developer_root, xcode_link) + symlink(developer_root, xcode_link) env.set('DEVELOPER_DIR', xcode_link) diff --git a/lib/spack/spack/compilers/arm.py b/lib/spack/spack/compilers/arm.py index 6b8229d498836d..bcafe2ae8cd816 100644 --- a/lib/spack/spack/compilers/arm.py +++ b/lib/spack/spack/compilers/arm.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import re import spack.compiler @@ -22,10 +23,10 @@ class Arm(spack.compiler.Compiler): fc_names = ['armflang'] # Named wrapper links within lib/spack/env - link_paths = {'cc': 'arm/armclang', - 'cxx': 'arm/armclang++', - 'f77': 'arm/armflang', - 'fc': 'arm/armflang'} + link_paths = {'cc': os.path.join('arm', 'armclang'), + 'cxx': os.path.join('arm', 'armclang++'), + 'f77': os.path.join('arm', 'armflang'), + 'fc': os.path.join('arm', 'armflang')} # The ``--version`` option seems to be the most consistent one for # arm compilers. Output looks like this: diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py index 191023e8316c5a..b0a4fa1613bcd5 100644 --- a/lib/spack/spack/compilers/cce.py +++ b/lib/spack/spack/compilers/cce.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.compiler import Compiler, UnsupportedCompilerFlag from spack.version import ver @@ -27,10 +29,10 @@ class Cce(Compiler): PrgEnv = 'PrgEnv-cray' PrgEnv_compiler = 'cce' - link_paths = {'cc': 'cce/cc', - 'cxx': 'cce/case-insensitive/CC', - 'f77': 'cce/ftn', - 'fc': 'cce/ftn'} + link_paths = {'cc': os.path.join('cce', 'cc'), + 'cxx': os.path.join('cce', 'case-insensitive', 'CC'), + 'f77': os.path.join('cce', 'ftn'), + 'fc': os.path.join('cce', 'ftn')} @property def is_clang_based(self): diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index e2d423d9c8b9b7..c9982d14400067 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import re import sys @@ -13,20 +14,20 @@ #: compiler symlink mappings for mixed f77 compilers f77_mapping = [ - ('gfortran', 'clang/gfortran'), - ('xlf_r', 'xl_r/xlf_r'), - ('xlf', 'xl/xlf'), - ('pgfortran', 'pgi/pgfortran'), - ('ifort', 'intel/ifort') + ('gfortran', os.path.join('clang', 'gfortran')), + ('xlf_r', os.path.join('xl_r', 'xlf_r')), + ('xlf', os.path.join('xl', 'xlf')), + ('pgfortran', os.path.join('pgi', 'pgfortran')), + ('ifort', os.path.join('intel', 'ifort')) ] #: compiler symlink mappings for mixed f90/fc compilers fc_mapping = [ - ('gfortran', 'clang/gfortran'), - ('xlf90_r', 'xl_r/xlf90_r'), - ('xlf90', 'xl/xlf90'), - ('pgfortran', 'pgi/pgfortran'), - ('ifort', 'intel/ifort') + ('gfortran', os.path.join('clang', 'gfortran')), + ('xlf90_r', os.path.join('xl_r', 'xlf90_r')), + ('xlf90', os.path.join('xl', 'xlf90')), + ('pgfortran', os.path.join('pgi', 'pgfortran')), + ('ifort', os.path.join('intel', 'ifort')) ] @@ -60,8 +61,8 @@ def opt_flags(self): @property def link_paths(self): # clang links are always the same - link_paths = {'cc': 'clang/clang', - 'cxx': 'clang/clang++'} + link_paths = {'cc': os.path.join('clang', 'clang'), + 'cxx': os.path.join('clang', 'clang++')} # fortran links need to look at the actual compiler names from # compilers.yaml to figure out which named symlink to use @@ -70,14 +71,14 @@ def link_paths(self): link_paths['f77'] = link_path break else: - link_paths['f77'] = 'clang/flang' + link_paths['f77'] = os.path.join('clang', 'flang') for compiler_name, link_path in fc_mapping: if self.fc and compiler_name in self.fc: link_paths['fc'] = link_path break else: - link_paths['fc'] = 'clang/flang' + link_paths['fc'] = os.path.join('clang', 'flang') return link_paths diff --git a/lib/spack/spack/compilers/dpcpp.py b/lib/spack/spack/compilers/dpcpp.py index 787b8f357c6214..1458e8f019a968 100644 --- a/lib/spack/spack/compilers/dpcpp.py +++ b/lib/spack/spack/compilers/dpcpp.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + import spack.compilers.oneapi @@ -23,7 +25,7 @@ class Dpcpp(spack.compilers.oneapi.Oneapi): cxx_names = ['dpcpp'] # Named wrapper links within build_env_path - link_paths = {'cc': 'oneapi/icx', - 'cxx': 'oneapi/dpcpp', - 'f77': 'oneapi/ifx', - 'fc': 'oneapi/ifx'} + link_paths = {'cc': os.path.join('oneapi', 'icx'), + 'cxx': os.path.join('oneapi', 'dpcpp'), + 'f77': os.path.join('oneapi', 'ifx'), + 'fc': os.path.join('oneapi', 'ifx')} diff --git a/lib/spack/spack/compilers/fj.py b/lib/spack/spack/compilers/fj.py index 4dc75ac70107a1..a12efd220844ba 100644 --- a/lib/spack/spack/compilers/fj.py +++ b/lib/spack/spack/compilers/fj.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + import spack.compiler @@ -20,10 +22,10 @@ class Fj(spack.compiler.Compiler): fc_names = ['frt'] # Named wrapper links within build_env_path - link_paths = {'cc': 'fj/fcc', - 'cxx': 'fj/case-insensitive/FCC', - 'f77': 'fj/frt', - 'fc': 'fj/frt'} + link_paths = {'cc': os.path.join('fj', 'fcc'), + 'cxx': os.path.join('fj', 'case-insensitive', 'FCC'), + 'f77': os.path.join('fj', 'frt'), + 'fc': os.path.join('fj', 'frt')} version_argument = '--version' version_regex = r'\((?:FCC|FRT)\) ([a-z\d.]+)' diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py index abbce721e895d3..60c4a75978210e 100644 --- a/lib/spack/spack/compilers/gcc.py +++ b/lib/spack/spack/compilers/gcc.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import re import spack.compiler @@ -29,10 +30,10 @@ class Gcc(spack.compiler.Compiler): suffixes = [r'-mp-\d+(?:\.\d+)?', r'-\d+(?:\.\d+)?', r'\d\d'] # Named wrapper links within build_env_path - link_paths = {'cc': 'gcc/gcc', - 'cxx': 'gcc/g++', - 'f77': 'gcc/gfortran', - 'fc': 'gcc/gfortran'} + link_paths = {'cc': os.path.join('gcc', 'gcc'), + 'cxx': os.path.join('gcc', 'g++'), + 'f77': os.path.join('gcc', 'gfortran'), + 'fc': os.path.join('gcc', 'gfortran')} PrgEnv = 'PrgEnv-gnu' PrgEnv_compiler = 'gcc' diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index 83ea87ccd7463f..2101c75bd4d823 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -3,6 +3,9 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os +import sys + from spack.compiler import Compiler, UnsupportedCompilerFlag from spack.version import ver @@ -21,16 +24,23 @@ class Intel(Compiler): fc_names = ['ifort'] # Named wrapper links within build_env_path - link_paths = {'cc': 'intel/icc', - 'cxx': 'intel/icpc', - 'f77': 'intel/ifort', - 'fc': 'intel/ifort'} + link_paths = {'cc': os.path.join('intel', 'icc'), + 'cxx': os.path.join('intel', 'icpc'), + 'f77': os.path.join('intel', 'ifort'), + 'fc': os.path.join('intel', 'ifort')} PrgEnv = 'PrgEnv-intel' PrgEnv_compiler = 'intel' - version_argument = '--version' - version_regex = r'\((?:IFORT|ICC)\) ([^ ]+)' + if sys.platform == 'win32': + version_argument = '/QV' + else: + version_argument = '--version' + + if sys.platform == 'win32': + version_regex = r'([1-9][0-9]*\.[0-9]*\.[0-9]*)' + else: + version_regex = r'\((?:IFORT|ICC)\) ([^ ]+)' @property def verbose_flag(self): diff --git a/lib/spack/spack/compilers/msvc.py b/lib/spack/spack/compilers/msvc.py new file mode 100644 index 00000000000000..a3c5a7c7521132 --- /dev/null +++ b/lib/spack/spack/compilers/msvc.py @@ -0,0 +1,157 @@ +# Copyright 2013-2022 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 subprocess +import sys +from distutils.version import StrictVersion +from typing import Dict, List, Set # novm + +import spack.operating_systems.windows_os +import spack.util.executable +from spack.compiler import Compiler +from spack.error import SpackError + +avail_fc_version = set() # type: Set[str] +fc_path = dict() # type: Dict[str, str] + +fortran_mapping = { + '2021.3.0': '19.29.30133', + '2021.2.1': '19.28.29913', + '2021.2.0': '19.28.29334', + '2021.1.0': '19.28.29333', +} + + +def get_valid_fortran_pth(comp_ver): + cl_ver = str(comp_ver).split('@')[1] + sort_fn = lambda fc_ver: StrictVersion(fc_ver) + sort_fc_ver = sorted(list(avail_fc_version), key=sort_fn) + for ver in sort_fc_ver: + if ver in fortran_mapping: + if StrictVersion(cl_ver) <= StrictVersion(fortran_mapping[ver]): + return fc_path[ver] + return None + + +class Msvc(Compiler): + # Subclasses use possible names of C compiler + cc_names = ['cl.exe'] + + # Subclasses use possible names of C++ compiler + cxx_names = ['cl.exe'] + + # Subclasses use possible names of Fortran 77 compiler + f77_names = ['ifx.exe'] # type: List[str] + + # Subclasses use possible names of Fortran 90 compiler + fc_names = ['ifx.exe'] # type: List[str] + + # Named wrapper links within build_env_path + # Due to the challenges of supporting compiler wrappers + # in Windows, we leave these blank, and dynamically compute + # based on proper versions of MSVC from there + # pending acceptance of #28117 for full support using + # compiler wrappers + link_paths = {'cc': '', + 'cxx': '', + 'f77': '', + 'fc': ''} + + #: Compiler argument that produces version information + version_argument = '' + + # For getting ifx's version, call it with version_argument + # and ignore the error code + ignore_version_errors = [1] + + #: Regex used to extract version from compiler's output + version_regex = r'([1-9][0-9]*\.[0-9]*\.[0-9]*)' + + # Initialize, deferring to base class but then adding the vcvarsallfile + # file based on compiler executable path. + + def __init__(self, *args, **kwargs): + new_pth = [pth if pth else get_valid_fortran_pth(args[0]) for pth in args[3]] + args[3][:] = new_pth + super(Msvc, self).__init__(*args, **kwargs) + if os.getenv("ONEAPI_ROOT"): + # If this found, it sets all the vars + self.setvarsfile = os.path.join( + os.getenv("ONEAPI_ROOT"), "setvars.bat") + else: + # To use the MSVC compilers, VCVARS must be invoked + # VCVARS is located at a fixed location, referencable + # idiomatically by the following relative path from the + # compiler. + # Spack first finds the compilers via VSWHERE + # and stores their path, but their respective VCVARS + # file must be invoked before useage. + self.setvarsfile = os.path.abspath( + os.path.join(self.cc, '../../../../../../..')) + self.setvarsfile = os.path.join( + self.setvarsfile, 'Auxiliary', 'Build', 'vcvars64.bat') + + @property + def msvc_version(self): + ver = re.search(Msvc.version_regex, self.cc).group(1) + ver = "".join(ver.split('.')[:2])[:-1] + return "MSVC" + ver + + def setup_custom_environment(self, pkg, env): + """Set environment variables for MSVC using the + Microsoft-provided script.""" + if sys.version_info[:2] > (2, 6): + # Set the build environment variables for spack. Just using + # subprocess.call() doesn't work since that operates in its own + # environment which is destroyed (along with the adjusted variables) + # once the process terminates. So go the long way around: examine + # output, sort into dictionary, use that to make the build + # environment. + out = subprocess.check_output( # novermin + 'cmd /u /c "{}" {} && set'.format(self.setvarsfile, 'amd64'), + stderr=subprocess.STDOUT) + if sys.version_info[0] >= 3: + out = out.decode('utf-16le', errors='replace') # novermin + + int_env = dict((key.lower(), value) for key, _, value in + (line.partition('=') for line in out.splitlines()) + if key and value) + + if 'path' in int_env: + env.set_path('PATH', int_env['path'].split(';')) + env.set_path('INCLUDE', int_env.get('include', '').split(';')) + env.set_path('LIB', int_env.get('lib', '').split(';')) + + env.set('CC', self.cc) + env.set('CXX', self.cxx) + env.set('FC', self.fc) + env.set('F77', self.f77) + else: + # Should not this be an exception? + print("Cannot pull msvc compiler information in Python 2.6 or below") + + @classmethod + def fc_version(cls, fc): + # We're using intel for the Fortran compilers, which exist if + # ONEAPI_ROOT is a meaningful variable + fc_ver = cls.default_version(fc) + avail_fc_version.add(fc_ver) + fc_path[fc_ver] = fc + if os.getenv("ONEAPI_ROOT"): + try: + sps = spack.operating_systems.windows_os.WindowsOs.compiler_search_paths + except AttributeError: + raise SpackError("Windows compiler search paths not established") + clp = spack.util.executable.which_string("cl", path=sps) + ver = cls.default_version(clp) + else: + ver = fc_ver + return ver + + @classmethod + def f77_version(cls, f77): + return cls.fc_version(f77) diff --git a/lib/spack/spack/compilers/nag.py b/lib/spack/spack/compilers/nag.py index f960bf874a8a86..2e0fccab8e8b5c 100644 --- a/lib/spack/spack/compilers/nag.py +++ b/lib/spack/spack/compilers/nag.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os from typing import List # novm import spack.compiler @@ -26,8 +27,8 @@ class Nag(spack.compiler.Compiler): link_paths = { 'cc': 'cc', 'cxx': 'c++', - 'f77': 'nag/nagfor', - 'fc': 'nag/nagfor'} + 'f77': os.path.join('nag', 'nagfor'), + 'fc': os.path.join('nag', 'nagfor')} version_argument = '-V' version_regex = r'NAG Fortran Compiler Release ([0-9.]+)' diff --git a/lib/spack/spack/compilers/nvhpc.py b/lib/spack/spack/compilers/nvhpc.py index 4c8c31c6625e26..bb4c28c6951dd3 100644 --- a/lib/spack/spack/compilers/nvhpc.py +++ b/lib/spack/spack/compilers/nvhpc.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.compiler import Compiler @@ -20,10 +22,10 @@ class Nvhpc(Compiler): fc_names = ['nvfortran'] # Named wrapper links within build_env_path - link_paths = {'cc': 'nvhpc/nvc', - 'cxx': 'nvhpc/nvc++', - 'f77': 'nvhpc/nvfortran', - 'fc': 'nvhpc/nvfortran'} + link_paths = {'cc': os.path.join('nvhpc', 'nvc'), + 'cxx': os.path.join('nvhpc', 'nvc++'), + 'f77': os.path.join('nvhpc', 'nvfortran'), + 'fc': os.path.join('nvhpc', 'nvfortran')} PrgEnv = 'PrgEnv-nvhpc' PrgEnv_compiler = 'nvhpc' diff --git a/lib/spack/spack/compilers/oneapi.py b/lib/spack/spack/compilers/oneapi.py index d26ab026969bee..fbc4d1cc81f28f 100644 --- a/lib/spack/spack/compilers/oneapi.py +++ b/lib/spack/spack/compilers/oneapi.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os from os.path import dirname from spack.compiler import Compiler @@ -22,10 +23,10 @@ class Oneapi(Compiler): fc_names = ['ifx'] # Named wrapper links within build_env_path - link_paths = {'cc': 'oneapi/icx', - 'cxx': 'oneapi/icpx', - 'f77': 'oneapi/ifx', - 'fc': 'oneapi/ifx'} + link_paths = {'cc': os.path.join('oneapi', 'icx'), + 'cxx': os.path.join('oneapi', 'icpx'), + 'f77': os.path.join('oneapi', 'ifx'), + 'fc': os.path.join('oneapi', 'ifx')} PrgEnv = 'PrgEnv-oneapi' PrgEnv_compiler = 'oneapi' diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py index 670d98e9c584ca..36fcaf539894b0 100644 --- a/lib/spack/spack/compilers/pgi.py +++ b/lib/spack/spack/compilers/pgi.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.compiler import Compiler, UnsupportedCompilerFlag from spack.version import ver @@ -21,10 +23,10 @@ class Pgi(Compiler): fc_names = ['pgfortran', 'pgf95', 'pgf90'] # Named wrapper links within build_env_path - link_paths = {'cc': 'pgi/pgcc', - 'cxx': 'pgi/pgc++', - 'f77': 'pgi/pgfortran', - 'fc': 'pgi/pgfortran'} + link_paths = {'cc': os.path.join('pgi', 'pgcc'), + 'cxx': os.path.join('pgi', 'pgc++'), + 'f77': os.path.join('pgi', 'pgfortran'), + 'fc': os.path.join('pgi', 'pgfortran')} PrgEnv = 'PrgEnv-pgi' PrgEnv_compiler = 'pgi' diff --git a/lib/spack/spack/compilers/rocmcc.py b/lib/spack/spack/compilers/rocmcc.py new file mode 100644 index 00000000000000..9cb11be8691c19 --- /dev/null +++ b/lib/spack/spack/compilers/rocmcc.py @@ -0,0 +1,78 @@ +# Copyright 2013-2022 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 + +import llnl.util.lang + +import spack.compilers.clang + + +class Rocmcc(spack.compilers.clang.Clang): + # Subclasses use possible names of C compiler + cc_names = ['amdclang'] + + # Subclasses use possible names of C++ compiler + cxx_names = ['amdclang++'] + + # Subclasses use possible names of Fortran 77 compiler + f77_names = ['amdflang'] + + # Subclasses use possible names of Fortran 90 compiler + fc_names = ['amdflang'] + + PrgEnv = 'PrgEnv-amd' + PrgEnv_compiler = 'amd' + + @property + def link_paths(self): + link_paths = {'cc': 'rocmcc/amdclang', + 'cxx': 'rocmcc/amdclang++', + 'f77': 'rocmcc/amdflang', + 'fc': 'rocmcc/amdflang'} + + return link_paths + + @property + def cxx11_flag(self): + return "-std=c++11" + + @property + def cxx14_flag(self): + return "-std=c++14" + + @property + def cxx17_flag(self): + return "-std=c++17" + + @property + def c99_flag(self): + return '-std=c99' + + @property + def c11_flag(self): + return "-std=c11" + + @classmethod + @llnl.util.lang.memoized + def extract_version_from_output(cls, output): + match = re.search( + r'llvm-project roc-(\d+)[._](\d+)[._](\d+)', + output + ) + if match: + return '.'.join(match.groups()) + + @classmethod + def fc_version(cls, fortran_compiler): + return cls.default_version(fortran_compiler) + + @classmethod + def f77_version(cls, f77): + return cls.fc_version(f77) + + @property + def stdcxx_libs(self): + return ('-lstdc++', ) diff --git a/lib/spack/spack/compilers/xl.py b/lib/spack/spack/compilers/xl.py index 45674020138ff9..2d5d307ef66767 100644 --- a/lib/spack/spack/compilers/xl.py +++ b/lib/spack/spack/compilers/xl.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.compiler import Compiler, UnsupportedCompilerFlag from spack.version import ver @@ -21,10 +23,10 @@ class Xl(Compiler): fc_names = ['xlf90', 'xlf95', 'xlf2003', 'xlf2008'] # Named wrapper links within build_env_path - link_paths = {'cc': 'xl/xlc', - 'cxx': 'xl/xlc++', - 'f77': 'xl/xlf', - 'fc': 'xl/xlf90'} + link_paths = {'cc': os.path.join('xl', 'xlc'), + 'cxx': os.path.join('xl', 'xlc++'), + 'f77': os.path.join('xl', 'xlf'), + 'fc': os.path.join('xl', 'xlf90')} version_argument = '-qversion' version_regex = r'([0-9]?[0-9]\.[0-9])' diff --git a/lib/spack/spack/compilers/xl_r.py b/lib/spack/spack/compilers/xl_r.py index d0d63a88b798d5..cf3e482729155a 100644 --- a/lib/spack/spack/compilers/xl_r.py +++ b/lib/spack/spack/compilers/xl_r.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + import spack.compilers.xl @@ -20,7 +22,7 @@ class XlR(spack.compilers.xl.Xl): fc_names = ['xlf90_r', 'xlf95_r', 'xlf2003_r', 'xlf2008_r'] # Named wrapper links within build_env_path - link_paths = {'cc': 'xl_r/xlc_r', - 'cxx': 'xl_r/xlc++_r', - 'f77': 'xl_r/xlf_r', - 'fc': 'xl_r/xlf90_r'} + link_paths = {'cc': os.path.join('xl_r', 'xlc_r'), + 'cxx': os.path.join('xl_r', 'xlc++_r'), + 'f77': os.path.join('xl_r', 'xlf_r'), + 'fc': os.path.join('xl_r', 'xlf90_r')} diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 35b4e82f3024b0..520b003f7489cc 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -701,7 +701,7 @@ def find_spec(spec, condition, default=None): visited.add(id(relative)) # Then search all other relatives in the DAG *except* spec - for relative in spec.root.traverse(deptypes=all): + for relative in spec.root.traverse(deptype='all'): if relative is spec: continue if id(relative) in visited: @@ -748,11 +748,11 @@ def concretize_specs_together(*abstract_specs, **kwargs): def _concretize_specs_together_new(*abstract_specs, **kwargs): import spack.solver.asp - concretization_kwargs = { - 'tests': kwargs.get('tests', False), - 'reuse': kwargs.get('reuse', False) - } - result = spack.solver.asp.solve(abstract_specs, **concretization_kwargs) + + solver = spack.solver.asp.Solver() + solver.tests = kwargs.get('tests', False) + + result = solver.solve(abstract_specs) result.raise_if_unsat() return [s.copy() for s in result.specs] @@ -788,15 +788,10 @@ def make_concretization_repository(abstract_specs): abstract_specs = [spack.spec.Spec(s) for s in abstract_specs] concretization_repository = make_concretization_repository(abstract_specs) - concretization_kwargs = { - 'tests': kwargs.get('tests', False), - 'reuse': kwargs.get('reuse', False) - } - with spack.repo.additional_repository(concretization_repository): # Spec from a helper package that depends on all the abstract_specs concretization_root = spack.spec.Spec('concretizationroot') - concretization_root.concretize(**concretization_kwargs) + concretization_root.concretize(tests=kwargs.get("tests", False)) # Retrieve the direct dependencies concrete_specs = [ concretization_root[spec.name].copy() for spec in abstract_specs diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index 6062634ca53ac4..2761be01ed4e6d 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -45,7 +45,7 @@ import llnl.util.lang import llnl.util.tty as tty -from llnl.util.filesystem import mkdirp +from llnl.util.filesystem import mkdirp, rename import spack.compilers import spack.paths @@ -53,6 +53,7 @@ import spack.schema import spack.schema.bootstrap import spack.schema.compilers +import spack.schema.concretizer import spack.schema.config import spack.schema.env import spack.schema.mirrors @@ -69,6 +70,7 @@ #: Dict from section names -> schema for that section section_schemas = { 'compilers': spack.schema.compilers.schema, + 'concretizer': spack.schema.concretizer.schema, 'mirrors': spack.schema.mirrors.schema, 'repos': spack.schema.repos.schema, 'packages': spack.schema.packages.schema, @@ -101,7 +103,7 @@ 'dirty': False, 'build_jobs': min(16, cpus_available()), 'build_stage': '$tempdir/spack-stage', - 'concretizer': 'original', + 'concretizer': 'clingo', } } @@ -135,7 +137,7 @@ def __init__(self, name, path): @property def is_platform_dependent(self): - return '/' in self.name + return os.sep in self.name def get_section_filename(self, section): _validate_section_name(section) @@ -290,7 +292,8 @@ def _write_section(self, section): with open(tmp, 'w') as f: syaml.dump_config(data_to_write, stream=f, default_flow_style=False) - os.rename(tmp, self.path) + rename(tmp, self.path) + except (yaml.YAMLError, IOError) as e: raise ConfigFileError( "Error writing to config file: '%s'" % str(e)) @@ -752,7 +755,7 @@ def override(path_or_scope, value=None): def _add_platform_scope(cfg, scope_type, name, path): """Add a platform-specific subdirectory for the current platform.""" platform = spack.platforms.host().name - plat_name = '%s/%s' % (name, platform) + plat_name = os.path.join(name, platform) plat_path = os.path.join(path, platform) cfg.push_scope(scope_type(plat_name, plat_path)) @@ -931,6 +934,12 @@ def set(path, value, scope=None): return config.set(path, value, scope) +def add_default_platform_scope(platform): + plat_name = os.path.join('defaults', platform) + plat_path = os.path.join(configuration_defaults_path[1], platform) + config.push_scope(ConfigScope(plat_name, plat_path)) + + def scopes(): """Convenience function to get list of configuration scopes.""" return config.scopes @@ -1090,11 +1099,11 @@ def get_valid_type(path): jsonschema_error = e.validation_error if jsonschema_error.validator == 'type': return types[jsonschema_error.validator_value]() - elif jsonschema_error.validator == 'anyOf': + elif jsonschema_error.validator in ('anyOf', 'oneOf'): for subschema in jsonschema_error.validator_value: - anyof_type = subschema.get('type') - if anyof_type is not None: - return types[anyof_type]() + schema_type = subschema.get('type') + if schema_type is not None: + return types[schema_type]() else: return type(None) raise ConfigError("Cannot determine valid type for path '%s'." % path) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 152b2e2c0edf53..3c7258728f9629 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -38,6 +38,7 @@ pass import llnl.util.filesystem as fs +import llnl.util.lang as lang import llnl.util.tty as tty import spack.hash_types as ht @@ -52,12 +53,6 @@ from spack.util.crypto import bit_length from spack.version import Version - -@contextlib.contextmanager -def nullcontext(*args, **kwargs): - yield - - # TODO: Provide an API automatically retyring a build after detecting and # TODO: clearing a failure. @@ -363,6 +358,14 @@ def __init__(self, root, db_dir=None, upstream_dbs=None, self.is_upstream = is_upstream self.last_seen_verifier = '' + # Failed write transactions (interrupted by exceptions) will alert + # _write. When that happens, we set this flag to indicate that + # future read/write transactions should re-read the DB. Normally it + # would make more sense to resolve this at the end of the transaction + # but typically a failed transaction will terminate the running + # instance of Spack and we don't want to incur an extra read in that + # case, so we defer the cleanup to when we begin the next transaction + self._state_is_inconsistent = False # initialize rest of state. self.db_lock_timeout = ( @@ -404,8 +407,8 @@ def __init__(self, root, db_dir=None, upstream_dbs=None, self._write_transaction_impl = lk.WriteTransaction self._read_transaction_impl = lk.ReadTransaction else: - self._write_transaction_impl = nullcontext - self._read_transaction_impl = nullcontext + self._write_transaction_impl = lang.nullcontext + self._read_transaction_impl = lang.nullcontext self._record_fields = record_fields @@ -966,7 +969,7 @@ def _check_ref_counts(self): counts = {} for key, rec in self._data.items(): counts.setdefault(key, 0) - for dep in rec.spec.dependencies(_tracked_deps): + for dep in rec.spec.dependencies(deptype=_tracked_deps): dep_key = dep.dag_hash() counts.setdefault(dep_key, 0) counts[dep_key] += 1 @@ -997,6 +1000,10 @@ def _write(self, type, value, traceback): """ # Do not write if exceptions were raised if type is not None: + # A failure interrupted a transaction, so we should record that + # the Database is now in an inconsistent state: we should + # restore it in the next transaction + self._state_is_inconsistent = True return temp_file = self._index_path + ( @@ -1006,7 +1013,8 @@ def _write(self, type, value, traceback): try: with open(temp_file, 'w') as f: self._write_to_file(f) - os.rename(temp_file, self._index_path) + fs.rename(temp_file, self._index_path) + if _use_uuid: with open(self._verifier_path, 'w') as f: new_verifier = str(uuid.uuid4()) @@ -1034,6 +1042,9 @@ def _read(self): self.last_seen_verifier = current_verifier # Read from file if a database exists self._read_from_file(self._index_path) + elif self._state_is_inconsistent: + self._read_from_file(self._index_path) + self._state_is_inconsistent = False return elif self.is_upstream: raise UpstreamDatabaseLockingError( @@ -1083,7 +1094,7 @@ def _add( # Retrieve optional arguments installation_time = installation_time or _now() - for dep in spec.dependencies(_tracked_deps): + for dep in spec.dependencies(deptype=_tracked_deps): dkey = dep.dag_hash() if dkey not in self._data: extra_args = { @@ -1125,9 +1136,7 @@ def _add( ) # Connect dependencies from the DB to the new copy. - for name, dep in six.iteritems( - spec.dependencies_dict(_tracked_deps) - ): + for dep in spec.edges_to_dependencies(deptype=_tracked_deps): dkey = dep.spec.dag_hash() upstream, record = self.query_by_spec_hash(dkey) new_spec._add_dependency(record.spec, dep.deptypes) @@ -1190,7 +1199,7 @@ def _decrement_ref_count(self, spec): if rec.ref_count == 0 and not rec.installed: del self._data[key] - for dep in spec.dependencies(_tracked_deps): + for dep in spec.dependencies(deptype=_tracked_deps): self._decrement_ref_count(dep) def _increment_ref_count(self, spec): @@ -1218,13 +1227,10 @@ def _remove(self, spec): del self._data[key] - for dep in rec.spec.dependencies(_tracked_deps): - # FIXME: the two lines below needs to be updated once #11983 is - # FIXME: fixed. The "if" statement should be deleted and specs are - # FIXME: to be removed from dependents by hash and not by name. - # FIXME: See https://github.com/spack/spack/pull/15777#issuecomment-607818955 - if dep._dependents.get(spec.name): - del dep._dependents[spec.name] + # Remove any reference to this node from dependencies and + # decrement the reference count + rec.spec.detach(deptype=_tracked_deps) + for dep in rec.spec.dependencies(deptype=_tracked_deps): self._decrement_ref_count(dep) if rec.deprecated_for: diff --git a/lib/spack/spack/dependency.py b/lib/spack/spack/dependency.py index 0eaf0fbff01146..ca0da06665a576 100644 --- a/lib/spack/spack/dependency.py +++ b/lib/spack/spack/dependency.py @@ -58,7 +58,7 @@ def canonical_deptype(deptype): if bad: raise ValueError( 'Invalid dependency types: %s' % ','.join(str(t) for t in bad)) - return tuple(sorted(deptype)) + return tuple(sorted(set(deptype))) raise ValueError('Invalid dependency type: %s' % repr(deptype)) @@ -124,7 +124,10 @@ def merge(self, other): # concatenate patch lists, or just copy them in for cond, p in other.patches.items(): if cond in self.patches: - self.patches[cond].extend(other.patches[cond]) + current_list = self.patches[cond] + current_list.extend( + p for p in other.patches[cond] if p not in current_list + ) else: self.patches[cond] = other.patches[cond] diff --git a/lib/spack/spack/detection/__init__.py b/lib/spack/spack/detection/__init__.py index e2976dacddb765..586f39fd92a0de 100644 --- a/lib/spack/spack/detection/__init__.py +++ b/lib/spack/spack/detection/__init__.py @@ -3,10 +3,11 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from .common import DetectedPackage, executable_prefix, update_configuration -from .path import by_executable, executables_in_path +from .path import by_executable, by_library, executables_in_path __all__ = [ 'DetectedPackage', + 'by_library', 'by_executable', 'executables_in_path', 'executable_prefix', diff --git a/lib/spack/spack/detection/common.py b/lib/spack/spack/detection/common.py index f5950f746712ce..a8f0e82a87918c 100644 --- a/lib/spack/spack/detection/common.py +++ b/lib/spack/spack/detection/common.py @@ -14,8 +14,11 @@ detection mechanisms. """ import collections +import itertools import os import os.path +import re +import sys import six @@ -25,6 +28,7 @@ import spack.spec import spack.util.spack_yaml +is_windows = sys.platform == 'win32' #: Information on a package that has been detected DetectedPackage = collections.namedtuple( 'DetectedPackage', ['spec', 'prefix'] @@ -141,11 +145,34 @@ def executable_prefix(executable_dir): components = executable_dir.split(os.sep) if 'bin' not in components: - return None + return executable_dir idx = components.index('bin') return os.sep.join(components[:idx]) +def library_prefix(library_dir): + """Given a directory where an library is found, guess the prefix + (i.e. the "root" directory of that installation) and return it. + + Args: + library_dir: directory where an library is found + """ + # Given a prefix where an library is found, assuming that prefix + # contains /lib/ or /lib64/, strip off the 'lib' or 'lib64' directory + # to get a Spack-compatible prefix + assert os.path.isdir(library_dir) + + components = library_dir.split(os.sep) + if 'lib64' in components: + idx = components.index('lib64') + return os.sep.join(components[:idx]) + elif 'lib' in components: + idx = components.index('lib') + return os.sep.join(components[:idx]) + else: + return library_dir + + def update_configuration(detected_packages, scope=None, buildable=True): """Add the packages passed as arguments to packages.yaml @@ -175,3 +202,53 @@ def update_configuration(detected_packages, scope=None, buildable=True): spack.config.set('packages', pkgs_cfg, scope=scope) return all_new_specs + + +def find_win32_additional_install_paths(): + """Not all programs on Windows live on the PATH + Return a list of other potential install locations. + """ + windows_search_ext = [] + cuda_re = r'CUDA_PATH[a-zA-Z1-9_]*' + # The list below should be expanded with other + # common Windows install locations as neccesary + path_ext_keys = ['I_MPI_ONEAPI_ROOT', + 'MSMPI_BIN', + 'MLAB_ROOT', + 'NUGET_PACKAGES'] + user = os.environ["USERPROFILE"] + add_path = lambda key: re.search(cuda_re, key) or key in path_ext_keys + windows_search_ext.extend([os.environ[key] for key + in os.environ.keys() if + add_path(key)]) + # note windows paths are fine here as this method should only ever be invoked + # to interact with Windows + # Add search path for default Chocolatey (https://github.com/chocolatey/choco) + # install directory + windows_search_ext.append("C:\\ProgramData\\chocolatey\\bin") + # Add search path for NuGet package manager default install location + windows_search_ext.append(os.path.join(user, ".nuget", "packages")) + windows_search_ext.extend( + spack.config.get("config:additional_external_search_paths", default=[]) + ) + windows_search_ext.extend(spack.util.environment.get_path('PATH')) + return windows_search_ext + + +def compute_windows_program_path_for_package(pkg): + """Given a package, attempt to compute its Windows + program files location, return list of best guesses + + Args: + pkg (spack.package.Package): package for which + Program Files location is to be computed + """ + if not is_windows: + return [] + # note windows paths are fine here as this method should only ever be invoked + # to interact with Windows + program_files = 'C:\\Program Files{}\\{}' + + return[program_files.format(arch, name) for + arch, name in itertools.product(("", " (x86)"), + (pkg.name, pkg.name.capitalize()))] diff --git a/lib/spack/spack/detection/path.py b/lib/spack/spack/detection/path.py index e0b0b136ecd715..793311482724b7 100644 --- a/lib/spack/spack/detection/path.py +++ b/lib/spack/spack/detection/path.py @@ -9,18 +9,23 @@ import os import os.path import re +import sys import warnings import llnl.util.filesystem import llnl.util.tty +import spack.operating_systems.windows_os as winOs import spack.util.environment from .common import ( DetectedPackage, _convert_to_iterable, + compute_windows_program_path_for_package, executable_prefix, + find_win32_additional_install_paths, is_executable, + library_prefix, ) @@ -38,7 +43,23 @@ def executables_in_path(path_hints=None): path_hints (list): list of paths to be searched. If None the list will be constructed based on the PATH environment variable. """ + # If we're on a Windows box, run vswhere, + # steal the installationPath using windows_os.py logic, + # construct paths to CMake and Ninja, add to PATH path_hints = path_hints or spack.util.environment.get_path('PATH') + if sys.platform == 'win32': + msvc_paths = list(winOs.WindowsOs.vs_install_paths) + msvc_cmake_paths = [ + os.path.join(path, "Common7", "IDE", "CommonExtensions", "Microsoft", + "CMake", "CMake", "bin") + for path in msvc_paths] + path_hints = msvc_cmake_paths + path_hints + msvc_ninja_paths = [ + os.path.join(path, "Common7", "IDE", "CommonExtensions", "Microsoft", + "CMake", "Ninja") + for path in msvc_paths] + path_hints = msvc_ninja_paths + path_hints + path_hints.extend(find_win32_additional_install_paths()) search_paths = llnl.util.filesystem.search_paths_for_executables(*path_hints) path_to_exe = {} @@ -52,6 +73,34 @@ def executables_in_path(path_hints=None): return path_to_exe +def libraries_in_ld_library_path(path_hints=None): + """Get the paths of all libraries available from LD_LIBRARY_PATH. + + For convenience, this is constructed as a dictionary where the keys are + the library paths and the values are the names of the libraries + (i.e. the basename of the library path). + + There may be multiple paths with the same basename. In this case it is + assumed there are two different instances of the library. + + Args: + path_hints (list): list of paths to be searched. If None the list will be + constructed based on the LD_LIBRARY_PATH environment variable. + """ + path_hints = path_hints or spack.util.environment.get_path('LD_LIBRARY_PATH') + search_paths = llnl.util.filesystem.search_paths_for_libraries(*path_hints) + + path_to_lib = {} + # Reverse order of search directories so that a lib in the first + # LD_LIBRARY_PATH entry overrides later entries + for search_path in reversed(search_paths): + for lib in os.listdir(search_path): + lib_path = os.path.join(search_path, lib) + if llnl.util.filesystem.is_readable_file(lib_path): + path_to_lib[lib_path] = lib + return path_to_lib + + def _group_by_prefix(paths): groups = collections.defaultdict(set) for p in paths: @@ -59,6 +108,106 @@ def _group_by_prefix(paths): return groups.items() +# TODO consolidate this with by_executable +# Packages should be able to define both .libraries and .executables in the future +# determine_spec_details should get all relevant libraries and executables in one call +def by_library(packages_to_check, path_hints=None): + # Techniques for finding libraries is determined on a per recipe basis in + # the determine_version class method. Some packages will extract the + # version number from a shared libraries filename. + # Other libraries could use the strings function to extract it as described + # in https://unix.stackexchange.com/questions/58846/viewing-linux-library-executable-version-info + """Return the list of packages that have been detected on the system, + searching by LD_LIBRARY_PATH. + + Args: + packages_to_check (list): list of packages to be detected + path_hints (list): list of paths to be searched. If None the list will be + constructed based on the LD_LIBRARY_PATH environment variable. + """ + path_to_lib_name = libraries_in_ld_library_path(path_hints=path_hints) + lib_pattern_to_pkgs = collections.defaultdict(list) + for pkg in packages_to_check: + if hasattr(pkg, 'libraries'): + for lib in pkg.libraries: + lib_pattern_to_pkgs[lib].append(pkg) + + pkg_to_found_libs = collections.defaultdict(set) + for lib_pattern, pkgs in lib_pattern_to_pkgs.items(): + compiled_re = re.compile(lib_pattern) + for path, lib in path_to_lib_name.items(): + if compiled_re.search(lib): + for pkg in pkgs: + pkg_to_found_libs[pkg].add(path) + + pkg_to_entries = collections.defaultdict(list) + resolved_specs = {} # spec -> lib found for the spec + + for pkg, libs in pkg_to_found_libs.items(): + if not hasattr(pkg, 'determine_spec_details'): + llnl.util.tty.warn( + "{0} must define 'determine_spec_details' in order" + " for Spack to detect externally-provided instances" + " of the package.".format(pkg.name)) + continue + + for prefix, libs_in_prefix in sorted(_group_by_prefix(libs)): + try: + specs = _convert_to_iterable( + pkg.determine_spec_details(prefix, libs_in_prefix) + ) + except Exception as e: + specs = [] + msg = 'error detecting "{0}" from prefix {1} [{2}]' + warnings.warn(msg.format(pkg.name, prefix, str(e))) + + if not specs: + llnl.util.tty.debug( + 'The following libraries in {0} were decidedly not ' + 'part of the package {1}: {2}' + .format(prefix, pkg.name, ', '.join( + _convert_to_iterable(libs_in_prefix))) + ) + + for spec in specs: + pkg_prefix = library_prefix(prefix) + + if not pkg_prefix: + msg = "no lib/ or lib64/ dir found in {0}. Cannot " + "add it as a Spack package" + llnl.util.tty.debug(msg.format(prefix)) + continue + + if spec in resolved_specs: + prior_prefix = ', '.join( + _convert_to_iterable(resolved_specs[spec])) + + llnl.util.tty.debug( + "Libraries in {0} and {1} are both associated" + " with the same spec {2}" + .format(prefix, prior_prefix, str(spec))) + continue + else: + resolved_specs[spec] = prefix + + try: + spec.validate_detection() + except Exception as e: + msg = ('"{0}" has been detected on the system but will ' + 'not be added to packages.yaml [reason={1}]') + llnl.util.tty.warn(msg.format(spec, str(e))) + continue + + if spec.external_path: + pkg_prefix = spec.external_path + + pkg_to_entries[pkg.name].append( + DetectedPackage(spec=spec, prefix=pkg_prefix) + ) + + return pkg_to_entries + + def by_executable(packages_to_check, path_hints=None): """Return the list of packages that have been detected on the system, searching by path. @@ -68,13 +217,16 @@ def by_executable(packages_to_check, path_hints=None): path_hints (list): list of paths to be searched. If None the list will be constructed based on the PATH environment variable. """ - path_to_exe_name = executables_in_path(path_hints=path_hints) + path_hints = [] if path_hints is None else path_hints exe_pattern_to_pkgs = collections.defaultdict(list) for pkg in packages_to_check: if hasattr(pkg, 'executables'): - for exe in pkg.executables: + for exe in pkg.platform_executables: exe_pattern_to_pkgs[exe].append(pkg) + # Add Windows specific, package related paths to the search paths + path_hints.extend(compute_windows_program_path_for_package(pkg)) + path_to_exe_name = executables_in_path(path_hints=path_hints) pkg_to_found_exes = collections.defaultdict(set) for exe_pattern, pkgs in exe_pattern_to_pkgs.items(): compiled_re = re.compile(exe_pattern) diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 1351863f687e0e..a33eff045a2161 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -6,6 +6,7 @@ import errno import glob import os +import posixpath import re import shutil import tempfile @@ -23,9 +24,12 @@ import spack.util.spack_json as sjson from spack.error import SpackError -default_projections = {'all': ('{architecture}/' - '{compiler.name}-{compiler.version}/' - '{name}-{version}-{hash}')} +# Note: Posixpath is used here as opposed to +# os.path.join due to spack.spec.Spec.format +# requiring forward slash path seperators at this stage +default_projections = {'all': posixpath.join( + '{architecture}', '{compiler.name}-{compiler.version}', + '{name}-{version}-{hash}')} def _check_concrete(spec): @@ -283,7 +287,7 @@ def all_specs(self): specs = [] for _, path_scheme in self.projections.items(): - path_elems = ["*"] * len(path_scheme.split(os.sep)) + path_elems = ["*"] * len(path_scheme.split(posixpath.sep)) # NOTE: Does not validate filename extension; should happen later path_elems += [self.metadata_dir, 'spec.json'] pattern = os.path.join(self.root, *path_elems) @@ -301,7 +305,7 @@ def all_deprecated_specs(self): deprecated_specs = set() for _, path_scheme in self.projections.items(): - path_elems = ["*"] * len(path_scheme.split(os.sep)) + path_elems = ["*"] * len(path_scheme.split(posixpath.sep)) # NOTE: Does not validate filename extension; should happen later path_elems += [self.metadata_dir, self.deprecated_dir, '*_spec.*'] # + self.spec_file_name] @@ -565,7 +569,7 @@ def _write_extensions(self, spec, extensions): }, tmp, default_flow_style=False, encoding='utf-8') # Atomic update by moving tmpfile on top of old one. - os.rename(tmp.name, path) + fs.rename(tmp.name, path) class DirectoryLayoutError(SpackError): diff --git a/lib/spack/spack/environment/__init__.py b/lib/spack/spack/environment/__init__.py index 4b475cab080eb9..b71097901336e7 100644 --- a/lib/spack/spack/environment/__init__.py +++ b/lib/spack/spack/environment/__init__.py @@ -5,6 +5,7 @@ from .environment import ( Environment, SpackEnvironmentError, + SpackEnvironmentViewError, activate, active, active_environment, @@ -33,6 +34,7 @@ __all__ = [ 'Environment', 'SpackEnvironmentError', + 'SpackEnvironmentViewError', 'activate', 'active', 'active_environment', diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 2364dd6ad979c7..72df9cbfe37ac5 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -8,6 +8,7 @@ import os import re import shutil +import stat import sys import time @@ -16,6 +17,9 @@ import llnl.util.filesystem as fs import llnl.util.tty as tty +from llnl.util.filesystem import rename +from llnl.util.lang import dedupe +from llnl.util.symlink import symlink import spack.bootstrap import spack.compilers @@ -41,7 +45,7 @@ import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml from spack.filesystem_view import ( - YamlFilesystemView, + SimpleFilesystemView, inverse_view_func_parser, view_func_parser, ) @@ -143,10 +147,12 @@ def activate(env, use_env_repo=False): # Check if we need to reinitialize the store due to pushing the configuration # below. - store_before_pushing = spack.config.get('config:install_tree') + install_tree_before = spack.config.get('config:install_tree') + upstreams_before = spack.config.get('upstreams') prepare_config_scope(env) - store_after_pushing = spack.config.get('config:install_tree') - if store_before_pushing != store_after_pushing: + install_tree_after = spack.config.get('config:install_tree') + upstreams_after = spack.config.get('upstreams') + if install_tree_before != install_tree_after or upstreams_before != upstreams_after: # Hack to store the state of the store before activation env.store_token = spack.store.reinitialize() @@ -331,6 +337,29 @@ def _spec_needs_overwrite(spec, changed_dev_specs): return True +def _error_on_nonempty_view_dir(new_root): + """Defensively error when the target view path already exists and is not an + empty directory. This usually happens when the view symlink was removed, but + not the directory it points to. In those cases, it's better to just error when + the new view dir is non-empty, since it indicates the user removed part but not + all of the view, and it likely in an inconsistent state.""" + # Check if the target path lexists + try: + st = os.lstat(new_root) + except (IOError, OSError): + return + + # Empty directories are fine + if stat.S_ISDIR(st.st_mode) and len(os.listdir(new_root)) == 0: + return + + # Anything else is an error + raise SpackEnvironmentViewError( + "Failed to generate environment view, because the target {} already " + "exists or is not empty. To update the view, remove this path, and run " + "`spack env view regenerate`".format(new_root)) + + class ViewDescriptor(object): def __init__(self, base_path, root, projections={}, select=[], exclude=[], link=default_view_link, link_type='symlink'): @@ -441,18 +470,16 @@ def view(self, new=None): rooted at that path. Default None. This should only be used to regenerate the view, and cannot be used to access specs. """ - root = self._current_root - if new: - root = new + root = new if new else self._current_root if not root: # This can only be hit if we write a future bug msg = ("Attempting to get nonexistent view from environment. " "View root is at %s" % self.root) raise SpackEnvironmentViewError(msg) - return YamlFilesystemView(root, spack.store.layout, - ignore_conflicts=True, - projections=self.projections, - link=self.link_type) + return SimpleFilesystemView(root, spack.store.layout, + ignore_conflicts=True, + projections=self.projections, + link=self.link_type) def __contains__(self, spec): """Is the spec described by the view descriptor @@ -471,80 +498,97 @@ def __contains__(self, spec): return True - def specs_for_view(self, all_specs, roots): - specs_for_view = [] - specs = all_specs if self.link == 'all' else roots - - for spec in specs: - # The view does not store build deps, so if we want it to - # recognize environment specs (which do store build deps), - # then they need to be stripped. - if spec.concrete: # Do not link unconcretized roots - # We preserve _hash _normal to avoid recomputing DAG - # hashes (DAG hashes don't consider build deps) - spec_copy = spec.copy(deps=('link', 'run')) - spec_copy._hash = spec._hash - spec_copy._normal = spec._normal - specs_for_view.append(spec_copy) - return specs_for_view - - def regenerate(self, all_specs, roots): - specs_for_view = self.specs_for_view(all_specs, roots) - - # regeneration queries the database quite a bit; this read - # transaction ensures that we don't repeatedly lock/unlock. + def specs_for_view(self, concretized_root_specs): + """ + From the list of concretized user specs in the environment, flatten + the dags, and filter selected, installed specs, remove duplicates on dag hash. + """ + specs = [] + + for s in concretized_root_specs: + if self.link == 'all': + specs.extend(s.traverse(deptype=('link', 'run'))) + elif self.link == 'run': + specs.extend(s.traverse(deptype=('run'))) + else: + specs.append(s) + + # De-dupe by dag hash + specs = dedupe(specs, key=lambda s: s.dag_hash()) + + # Filter selected, installed specs with spack.store.db.read_transaction(): - installed_specs_for_view = set( - s for s in specs_for_view if s in self and s.package.installed) - - # To ensure there are no conflicts with packages being installed - # that cannot be resolved or have repos that have been removed - # we always regenerate the view from scratch. - # We will do this by hashing the view contents and putting the view - # in a directory by hash, and then having a symlink to the real - # view in the root. The real root for a view at /dirname/basename - # will be /dirname/._basename_. - # This allows for atomic swaps when we update the view - - # cache the roots because the way we determine which is which does - # not work while we are updating - new_root = self._next_root(installed_specs_for_view) - old_root = self._current_root - - if new_root == old_root: - tty.debug("View at %s does not need regeneration." % self.root) - return - - # construct view at new_root + specs = [s for s in specs if s in self and s.package.installed] + + return specs + + def regenerate(self, concretized_root_specs): + specs = self.specs_for_view(concretized_root_specs) + + # To ensure there are no conflicts with packages being installed + # that cannot be resolved or have repos that have been removed + # we always regenerate the view from scratch. + # We will do this by hashing the view contents and putting the view + # in a directory by hash, and then having a symlink to the real + # view in the root. The real root for a view at /dirname/basename + # will be /dirname/._basename_. + # This allows for atomic swaps when we update the view + + # cache the roots because the way we determine which is which does + # not work while we are updating + new_root = self._next_root(specs) + old_root = self._current_root + + if new_root == old_root: + tty.debug("View at %s does not need regeneration." % self.root) + return + + _error_on_nonempty_view_dir(new_root) + + # construct view at new_root + if specs: tty.msg("Updating view at {0}".format(self.root)) - view = self.view(new=new_root) + view = self.view(new=new_root) + + root_dirname = os.path.dirname(self.root) + tmp_symlink_name = os.path.join(root_dirname, '._view_link') + + # Create a new view + try: fs.mkdirp(new_root) - view.add_specs(*installed_specs_for_view, - with_dependencies=False) + view.add_specs(*specs, with_dependencies=False) - # create symlink from tmpname to new_root - root_dirname = os.path.dirname(self.root) - tmp_symlink_name = os.path.join(root_dirname, '._view_link') + # create symlink from tmp_symlink_name to new_root if os.path.exists(tmp_symlink_name): os.unlink(tmp_symlink_name) - os.symlink(new_root, tmp_symlink_name) + symlink(new_root, tmp_symlink_name) # mv symlink atomically over root symlink to old_root - if os.path.exists(self.root) and not os.path.islink(self.root): - msg = "Cannot create view: " - msg += "file already exists and is not a link: %s" % self.root - raise SpackEnvironmentViewError(msg) - os.rename(tmp_symlink_name, self.root) - - # remove old_root - if old_root and os.path.exists(old_root): - try: - shutil.rmtree(old_root) - except (IOError, OSError) as e: - msg = "Failed to remove old view at %s\n" % old_root - msg += str(e) - tty.warn(msg) + rename(tmp_symlink_name, self.root) + except Exception as e: + # Clean up new view and temporary symlink on any failure. + try: + shutil.rmtree(new_root, ignore_errors=True) + os.unlink(tmp_symlink_name) + except (IOError, OSError): + pass + raise e + + # Remove the old root when it's in the same folder as the new root. This guards + # against removal of an arbitrary path when the original symlink in self.root + # was not created by the environment, but by the user. + if ( + old_root and + os.path.exists(old_root) and + os.path.samefile(os.path.dirname(new_root), os.path.dirname(old_root)) + ): + try: + shutil.rmtree(old_root) + except (IOError, OSError) as e: + msg = "Failed to remove old view at %s\n" % old_root + msg += str(e) + tty.warn(msg) def _create_environment(*args, **kwargs): @@ -1083,7 +1127,7 @@ def is_develop(self, spec): """Returns true when the spec is built from local sources""" return spec.name in self.dev_specs - def concretize(self, force=False, tests=False, reuse=False): + def concretize(self, force=False, tests=False): """Concretize user_specs in this environment. Only concretizes specs that haven't been concretized yet unless @@ -1097,8 +1141,6 @@ def concretize(self, force=False, tests=False, reuse=False): already concretized 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 - reuse (bool): if True try to maximize reuse of already installed - specs, if False don't account for installation status. Returns: List of specs that have been concretized. Each entry is a tuple of @@ -1112,15 +1154,15 @@ def concretize(self, force=False, tests=False, reuse=False): # Pick the right concretization strategy if self.concretization == 'together': - return self._concretize_together(tests=tests, reuse=reuse) + return self._concretize_together(tests=tests) if self.concretization == 'separately': - return self._concretize_separately(tests=tests, reuse=reuse) + return self._concretize_separately(tests=tests) msg = 'concretization strategy not implemented [{0}]' raise SpackEnvironmentError(msg.format(self.concretization)) - def _concretize_together(self, tests=False, reuse=False): + def _concretize_together(self, tests=False): """Concretization strategy that concretizes all the specs in the same DAG. """ @@ -1153,14 +1195,14 @@ def _concretize_together(self, tests=False, reuse=False): self.specs_by_hash = {} concrete_specs = spack.concretize.concretize_specs_together( - *self.user_specs, tests=tests, reuse=reuse + *self.user_specs, tests=tests ) concretized_specs = [x for x in zip(self.user_specs, concrete_specs)] for abstract, concrete in concretized_specs: self._add_concrete_spec(abstract, concrete) return concretized_specs - def _concretize_separately(self, tests=False, reuse=False): + def _concretize_separately(self, tests=False): """Concretization strategy that concretizes separately one user spec after the other. """ @@ -1185,7 +1227,7 @@ def _concretize_separately(self, tests=False, reuse=False): ): if uspec not in old_concretized_user_specs: root_specs.append(uspec) - arguments.append((uspec_constraints, tests, reuse)) + arguments.append((uspec_constraints, tests)) # Ensure we don't try to bootstrap clingo in parallel if spack.config.get('config:concretizer') == 'clingo': @@ -1305,9 +1347,9 @@ def regenerate_views(self): " maintain a view") return - specs = self._get_environment_specs() + concretized_root_specs = [s for _, s in self.concretized_specs()] for view in self.views.values(): - view.regenerate(specs, self.roots()) + view.regenerate(concretized_root_specs) def check_views(self): """Checks if the environments default view can be activated.""" @@ -1463,7 +1505,7 @@ def _install_log_links(self, spec): log_path, '%s-%s.log' % (spec.name, spec.dag_hash(7))) if os.path.lexists(build_log_link): os.remove(build_log_link) - os.symlink(spec.package.build_log_path, build_log_link) + symlink(spec.package.build_log_path, build_log_link) def uninstalled_specs(self): """Return a list of all uninstalled (and non-dev) specs.""" @@ -2009,7 +2051,7 @@ def _tree_to_display(spec): print('') -def _concretize_from_constraints(spec_constraints, tests=False, reuse=False): +def _concretize_from_constraints(spec_constraints, tests=False): # Accept only valid constraints from list and concretize spec # Get the named spec even if out of order root_spec = [s for s in spec_constraints if s.name] @@ -2028,7 +2070,7 @@ def _concretize_from_constraints(spec_constraints, tests=False, reuse=False): if c not in invalid_constraints: s.constrain(c) try: - return s.concretized(tests=tests, reuse=reuse) + return s.concretized(tests=tests) except spack.spec.InvalidDependencyError as e: invalid_deps_string = ['^' + d for d in e.invalid_deps] invalid_deps = [c for c in spec_constraints @@ -2048,9 +2090,9 @@ def _concretize_from_constraints(spec_constraints, tests=False, reuse=False): def _concretize_task(packed_arguments): - spec_constraints, tests, reuse = packed_arguments + spec_constraints, tests = packed_arguments with tty.SuppressOutput(msg_enabled=False): - return _concretize_from_constraints(spec_constraints, tests, reuse) + return _concretize_from_constraints(spec_constraints, tests) def make_repo_path(root): diff --git a/lib/spack/spack/environment/shell.py b/lib/spack/spack/environment/shell.py index 41b2834e478e25..377c760930451b 100644 --- a/lib/spack/spack/environment/shell.py +++ b/lib/spack/spack/environment/shell.py @@ -37,6 +37,11 @@ def activate_header(env, shell, prompt=None): # solution to the PS1 variable) here. This is a bit fiddly, and easy to # screw up => spend time reasearching a solution. Feedback welcome. # + elif shell == 'bat': + # TODO: Color + cmds += 'set "SPACK_ENV=%s"\n' % env.path + # TODO: despacktivate + # TODO: prompt else: if 'color' in os.getenv('TERM', '') and prompt: prompt = colorize('@G{%s}' % prompt, color=True) @@ -69,11 +74,16 @@ def deactivate_header(shell): # # NOTE: Not changing fish_prompt (above) => no need to restore it here. # + elif shell == 'bat': + # TODO: Color + cmds += 'set "SPACK_ENV="\n' + # TODO: despacktivate + # TODO: prompt else: cmds += 'if [ ! -z ${SPACK_ENV+x} ]; then\n' cmds += 'unset SPACK_ENV; export SPACK_ENV;\n' cmds += 'fi;\n' - cmds += 'unalias despacktivate;\n' + cmds += 'alias despacktivate > /dev/null 2>&1 && unalias despacktivate;\n' cmds += 'if [ ! -z ${SPACK_OLD_PS1+x} ]; then\n' cmds += ' if [ "$SPACK_OLD_PS1" = \'$$$$\' ]; then\n' cmds += ' unset PS1; export PS1;\n' diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index f85f04efb217e7..44933f62a22d2a 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -34,6 +34,7 @@ import six import six.moves.urllib.parse as urllib_parse +import llnl.util import llnl.util.tty as tty from llnl.util.filesystem import ( get_single_file, @@ -42,6 +43,7 @@ temp_rename, working_dir, ) +from llnl.util.symlink import symlink import spack.config import spack.error @@ -56,6 +58,7 @@ #: List of all fetch strategies, created by FetchStrategy metaclass. all_strategies = [] +is_windows = sys.platform == 'win32' CONTENT_TYPE_MISMATCH_WARNING_TEMPLATE = ( "The contents of {subject} look like {content_type}. Either the URL" @@ -302,7 +305,9 @@ def candidate_urls(self): urls = [] for url in [self.url] + (self.mirrors or []): - if url.startswith('file://'): + # This must be skipped on Windows due to URL encoding + # of ':' characters on filepaths on Windows + if sys.platform != "win32" and url.startswith('file://'): path = urllib_parse.quote(url[len('file://'):]) url = 'file://' + path urls.append(url) @@ -324,7 +329,7 @@ def fetch(self): try: partial_file, save_file = self._fetch_from_url(url) if save_file and (partial_file is not None): - os.rename(partial_file, save_file) + llnl.util.filesystem.rename(partial_file, save_file) break except FailedDownloadError as e: errors.append(str(e)) @@ -351,8 +356,9 @@ def _existing_url(self, url): # Telling urllib to check if url is accessible try: url, headers, response = spack.util.web.read_from_url(url) - except spack.util.web.SpackWebError: - msg = "Urllib fetch failed to verify url {0}".format(url) + except spack.util.web.SpackWebError as werr: + msg = "Urllib fetch failed to verify url\ + {0}\n with error {1}".format(url, werr) raise FailedDownloadError(url, msg) return (response.getcode() is None or response.getcode() == 200) @@ -627,7 +633,8 @@ class CacheURLFetchStrategy(URLFetchStrategy): @_needs_stage def fetch(self): - path = re.sub('^file://', '', self.url) + reg_str = r'^file://' + path = re.sub(reg_str, '', self.url) # check whether the cache file exists. if not os.path.isfile(path): @@ -639,7 +646,7 @@ def fetch(self): os.remove(filename) # Symlink to local cached archive. - os.symlink(path, filename) + symlink(path, filename) # Remove link if checksum fails, or subsequent fetchers # will assume they don't need to download. @@ -1399,7 +1406,7 @@ def fetch(self): warn_content_type_mismatch(self.archive_file or "the archive") if self.stage.save_filename: - os.rename( + llnl.util.filesystem.rename( os.path.join(self.stage.path, basename), self.stage.save_filename) @@ -1437,13 +1444,7 @@ def fetch(self): basename = os.path.basename(parsed_url.path) with working_dir(self.stage.path): - import spack.util.s3 as s3_util - s3 = s3_util.create_s3_session(self.url, - connection=s3_util.get_mirror_connection(parsed_url), url_type="fetch") # noqa: E501 - - headers = s3.get_object(Bucket=parsed_url.netloc, - Key=parsed_url.path.lstrip("/")) - stream = headers["Body"] + _, headers, stream = web_util.read_from_url(self.url) with open(basename, 'wb') as f: shutil.copyfileobj(stream, f) @@ -1559,11 +1560,9 @@ def _extrapolate(pkg, version): def _from_merged_attrs(fetcher, pkg, version): """Create a fetcher from merged package and version attributes.""" if fetcher.url_attr == 'url': - url = pkg.url_for_version(version) - # TODO: refactor this logic into its own method or function - # TODO: to avoid duplication - mirrors = [spack.url.substitute_version(u, version) - for u in getattr(pkg, 'urls', [])[1:]] + mirrors = pkg.all_urls_for_version(version) + url = mirrors[0] + mirrors = mirrors[1:] attrs = {fetcher.url_attr: url, 'mirrors': mirrors} else: url = getattr(pkg, fetcher.url_attr) @@ -1721,7 +1720,7 @@ def destroy(self): class FetchError(spack.error.SpackError): - """Superclass fo fetcher errors.""" + """Superclass for fetcher errors.""" class NoCacheError(FetchError): diff --git a/lib/spack/spack/filesystem_view.py b/lib/spack/spack/filesystem_view.py index a95f9f9f6d28c3..1a4a492d2fbe24 100644 --- a/lib/spack/spack/filesystem_view.py +++ b/lib/spack/spack/filesystem_view.py @@ -5,6 +5,7 @@ import collections import functools as ft +import itertools import os import re import shutil @@ -12,9 +13,21 @@ from llnl.util import tty from llnl.util.compat import filter, map, zip -from llnl.util.filesystem import mkdirp, remove_dead_links, remove_empty_directories +from llnl.util.filesystem import ( + mkdirp, + remove_dead_links, + remove_empty_directories, + visit_directory_tree, +) from llnl.util.lang import index_by, match_predicate -from llnl.util.link_tree import LinkTree, MergeConflictError +from llnl.util.link_tree import ( + DestinationMergeVisitor, + LinkTree, + MergeConflictSummary, + SingleMergeConflictError, + SourceMergeVisitor, +) +from llnl.util.symlink import symlink from llnl.util.tty.color import colorize import spack.config @@ -39,7 +52,7 @@ def view_symlink(src, dst, **kwargs): # keyword arguments are irrelevant # here to fit required call signature - os.symlink(src, dst) + symlink(src, dst) def view_hardlink(src, dst, **kwargs): @@ -141,7 +154,7 @@ def __init__(self, root, layout, **kwargs): Initialize a filesystem view under the given `root` directory with corresponding directory `layout`. - Files are linked by method `link` (os.symlink by default). + Files are linked by method `link` (llnl.util.symlink by default). """ self._root = root self.layout = layout @@ -412,7 +425,7 @@ def merge(self, spec, ignore=None): conflicts.extend(pkg.view_file_conflicts(self, merge_map)) if conflicts: - raise MergeConflictError(conflicts[0]) + raise SingleMergeConflictError(conflicts[0]) # merge directories with the tree tree.merge_directories(view_dst, ignore_file) @@ -729,6 +742,137 @@ def _check_no_ext_conflicts(self, spec): 'Skipping already activated package: %s' % spec.name) +class SimpleFilesystemView(FilesystemView): + """A simple and partial implementation of FilesystemView focused on + performance and immutable views, where specs cannot be removed after they + were added.""" + + def __init__(self, root, layout, **kwargs): + super(SimpleFilesystemView, self).__init__(root, layout, **kwargs) + + def add_specs(self, *specs, **kwargs): + assert all((s.concrete for s in specs)) + if len(specs) == 0: + return + + # Drop externals + for s in specs: + if s.external: + tty.warn('Skipping external package: ' + s.short_spec) + specs = [s for s in specs if not s.external] + + if kwargs.get("exclude", None): + specs = set(filter_exclude(specs, kwargs["exclude"])) + + # Ignore spack meta data folder. + def skip_list(file): + return os.path.basename(file) == spack.store.layout.metadata_dir + + visitor = SourceMergeVisitor(ignore=skip_list) + + # Gather all the directories to be made and files to be linked + for spec in specs: + src_prefix = spec.package.view_source() + visitor.set_projection(self.get_relative_projection_for_spec(spec)) + visit_directory_tree(src_prefix, visitor) + + # Check for conflicts in destination dir. + visit_directory_tree(self._root, DestinationMergeVisitor(visitor)) + + # Throw on fatal dir-file conflicts. + if visitor.fatal_conflicts: + raise MergeConflictSummary(visitor.fatal_conflicts) + + # Inform about file-file conflicts. + if visitor.file_conflicts: + if self.ignore_conflicts: + tty.debug("{0} file conflicts".format(len(visitor.file_conflicts))) + else: + raise MergeConflictSummary(visitor.file_conflicts) + + tty.debug("Creating {0} dirs and {1} links".format( + len(visitor.directories), + len(visitor.files))) + + # Make the directory structure + for dst in visitor.directories: + os.mkdir(os.path.join(self._root, dst)) + + # Then group the files to be linked by spec... + # For compatibility, we have to create a merge_map dict mapping + # full_src => full_dst + files_per_spec = itertools.groupby( + visitor.files.items(), key=lambda item: item[1][0]) + + for (spec, (src_root, rel_paths)) in zip(specs, files_per_spec): + merge_map = dict() + for dst_rel, (_, src_rel) in rel_paths: + full_src = os.path.join(src_root, src_rel) + full_dst = os.path.join(self._root, dst_rel) + merge_map[full_src] = full_dst + spec.package.add_files_to_view(self, merge_map, skip_if_exists=False) + + # Finally create the metadata dirs. + self.link_metadata(specs) + + def link_metadata(self, specs): + metadata_visitor = SourceMergeVisitor() + + for spec in specs: + src_prefix = os.path.join( + spec.package.view_source(), + spack.store.layout.metadata_dir) + proj = os.path.join( + self.get_relative_projection_for_spec(spec), + spack.store.layout.metadata_dir, + spec.name) + metadata_visitor.set_projection(proj) + visit_directory_tree(src_prefix, metadata_visitor) + + # Check for conflicts in destination dir. + visit_directory_tree(self._root, DestinationMergeVisitor(metadata_visitor)) + + # Throw on dir-file conflicts -- unlikely, but who knows. + if metadata_visitor.fatal_conflicts: + raise MergeConflictSummary(metadata_visitor.fatal_conflicts) + + # We are strict here for historical reasons + if metadata_visitor.file_conflicts: + raise MergeConflictSummary(metadata_visitor.file_conflicts) + + for dst in metadata_visitor.directories: + os.mkdir(os.path.join(self._root, dst)) + + for dst_relpath, (src_root, src_relpath) in metadata_visitor.files.items(): + self.link(os.path.join(src_root, src_relpath), + os.path.join(self._root, dst_relpath)) + + def get_relative_projection_for_spec(self, spec): + # Extensions are placed by their extendee, not by their own spec + if spec.package.extendee_spec: + spec = spec.package.extendee_spec + + p = spack.projections.get_projection(self.projections, spec) + return spec.format(p) if p else '' + + def get_projection_for_spec(self, spec): + """ + Return the projection for a spec in this view. + + Relies on the ordering of projections to avoid ambiguity. + """ + spec = spack.spec.Spec(spec) + # Extensions are placed by their extendee, not by their own spec + locator_spec = spec + if spec.package.extendee_spec: + locator_spec = spec.package.extendee_spec + + proj = spack.projections.get_projection(self.projections, locator_spec) + if proj: + return os.path.join(self._root, locator_spec.format(proj)) + return self._root + + ##################### # utility functions # ##################### diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 38d8580ba066b8..8be490a74d516a 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -42,54 +42,84 @@ can take a number of specs as input. """ +import heapq +import itertools import sys -from heapq import heapify, heappop, heappush -from llnl.util.tty.color import ColorStream +import llnl.util.tty.color -from spack.dependency import all_deptypes, canonical_deptype +import spack.dependency -__all__ = ['topological_sort', 'graph_ascii', 'AsciiGraph', 'graph_dot'] +__all__ = ['graph_ascii', 'AsciiGraph', 'graph_dot'] -def topological_sort(spec, reverse=False, deptype='all'): - """Topological sort for specs. +def node_label(spec): + return spec.format('{name}{@version}{/hash:7}') - Return a list of dependency specs sorted topologically. The spec - argument is not modified in the process. - """ - deptype = canonical_deptype(deptype) - - # Work on a copy so this is nondestructive. - spec = spec.copy(deps=deptype) - nodes = spec.index(deptype=deptype) +def topological_sort(spec, deptype='all'): + """Return a list of dependency specs in topological sorting order. - parents = lambda s: [p for p in s.dependents() if p.name in nodes] - children = lambda s: s.dependencies() + The spec argument is not modified in by the function. - if reverse: - parents, children = children, parents + This function assumes specs don't have cycles, i.e. that we are really + operating with a DAG. - topo_order = [] - par = dict((name, parents(nodes[name])) for name in nodes.keys()) - remaining = [name for name in nodes.keys() if not parents(nodes[name])] - heapify(remaining) + Args: + spec (spack.spec.Spec): the spec to be analyzed + deptype (str or tuple): dependency types to account for when + constructing the list + """ + deptype = spack.dependency.canonical_deptype(deptype) - while remaining: - name = heappop(remaining) - topo_order.append(name) + # Work on a copy so this is nondestructive + spec = spec.copy(deps=True) + nodes = spec.index(deptype=deptype) - node = nodes[name] - for dep in children(node): - par[dep.name].remove(node) - if not par[dep.name]: - heappush(remaining, dep.name) + def dependencies(specs): + """Return all the dependencies (including transitive) for a spec.""" + return list(set(itertools.chain.from_iterable( + s.dependencies(deptype=deptype) for s in specs + ))) - if any(par.get(s.name, []) for s in spec.traverse()): - raise ValueError("Spec has cycles!") - else: - return topo_order + def dependents(specs): + """Return all the dependents (including those of transitive dependencies) + for a spec. + """ + candidates = list(set(itertools.chain.from_iterable( + s.dependents(deptype=deptype) for s in specs + ))) + return [x for x in candidates if x.name in nodes] + + topological_order, children = [], {} + + # Map a spec encoded as (id, name) to a list of its transitive dependencies + for spec in itertools.chain.from_iterable(nodes.values()): + children[(id(spec), spec.name)] = [ + x for x in dependencies([spec]) if x.name in nodes + ] + + # To return a result that is topologically ordered we need to add nodes + # only after their dependencies. The first nodes we can add are leaf nodes, + # i.e. nodes that have no dependencies. + ready = [ + spec for spec in itertools.chain.from_iterable(nodes.values()) + if not dependencies([spec]) + ] + heapq.heapify(ready) + + while ready: + # Pop a "ready" node and add it to the topologically ordered list + s = heapq.heappop(ready) + topological_order.append(s) + + # Check if adding the last node made other nodes "ready" + for dep in dependents([s]): + children[(id(dep), dep.name)].remove(s) + if not children[(id(dep), dep.name)]: + heapq.heappush(ready, dep) + + return topological_order def find(seq, predicate): @@ -120,7 +150,7 @@ def __init__(self): self.node_character = 'o' self.debug = False self.indent = 0 - self.deptype = all_deptypes + self.deptype = spack.dependency.all_deptypes # These are colors in the order they'll be used for edges. # See llnl.util.tty.color for details on color characters. @@ -131,7 +161,6 @@ def __init__(self): self._name_to_color = None # Node name to color self._out = None # Output stream self._frontier = None # frontier - self._nodes = None # dict from name -> node self._prev_state = None # State of previous line self._prev_index = None # Index of expansion point of prev line @@ -290,7 +319,10 @@ def advance(to_pos, edges): self._set_state(BACK_EDGE, end, label) self._out.write("\n") - def _node_line(self, index, name): + def _node_label(self, node): + return node.format('{name}@@{version}{/hash:7}') + + def _node_line(self, index, node): """Writes a line with a node at index.""" self._indent() for c in range(index): @@ -301,7 +333,7 @@ def _node_line(self, index, name): for c in range(index + 1, len(self._frontier)): self._write_edge("| ", c) - self._out.write(" %s" % name) + self._out.write(self._node_label(node)) self._set_state(NODE, index) self._out.write("\n") @@ -363,29 +395,29 @@ def write(self, spec, color=None, out=None): if color is None: color = out.isatty() - self._out = ColorStream(out, color=color) + self._out = llnl.util.tty.color.ColorStream(out, color=color) - # We'll traverse the spec in topo order as we graph it. - topo_order = topological_sort(spec, reverse=True, deptype=self.deptype) + # We'll traverse the spec in topological order as we graph it. + nodes_in_topological_order = topological_sort(spec, deptype=self.deptype) # Work on a copy to be nondestructive spec = spec.copy() - self._nodes = spec.index() # Colors associated with each node in the DAG. # Edges are colored by the node they point to. - self._name_to_color = dict((name, self.colors[i % len(self.colors)]) - for i, name in enumerate(topo_order)) + self._name_to_color = { + spec.full_hash(): self.colors[i % len(self.colors)] + for i, spec in enumerate(nodes_in_topological_order) + } # Frontier tracks open edges of the graph as it's written out. - self._frontier = [[spec.name]] + self._frontier = [[spec.full_hash()]] while self._frontier: # Find an unexpanded part of frontier i = find(self._frontier, lambda f: len(f) > 1) if i >= 0: - # Expand frontier until there are enough columns for all - # children. + # Expand frontier until there are enough columns for all children. # Figure out how many back connections there are and # sort them so we do them in order @@ -436,8 +468,8 @@ def write(self, spec, color=None, out=None): else: # Just allow the expansion here. - name = self._frontier[i].pop(0) - deps = [name] + dep_hash = self._frontier[i].pop(0) + deps = [dep_hash] self._frontier.insert(i, deps) self._expand_right_line(i) @@ -453,18 +485,17 @@ def write(self, spec, color=None, out=None): else: # Nothing to expand; add dependencies for a node. - name = topo_order.pop() - node = self._nodes[name] + node = nodes_in_topological_order.pop() # Find the named node in the frontier and draw it. - i = find(self._frontier, lambda f: name in f) - self._node_line(i, name) + i = find(self._frontier, lambda f: node.full_hash() in f) + self._node_line(i, node) # Replace node with its dependencies self._frontier.pop(i) - deps = node.dependencies(self.deptype) + deps = node.dependencies(deptype=self.deptype) if deps: - deps = sorted((d.name for d in deps), reverse=True) + deps = sorted((d.full_hash() for d in deps), reverse=True) self._connect_deps(i, deps, "new-deps") # anywhere. elif self._frontier: @@ -478,7 +509,7 @@ def graph_ascii(spec, node='o', out=None, debug=False, graph.indent = indent graph.node_character = node if deptype: - graph.deptype = canonical_deptype(deptype) + graph.deptype = spack.dependency.canonical_deptype(deptype) graph.write(spec, color=color, out=out) @@ -499,7 +530,7 @@ def graph_dot(specs, deptype='all', static=False, out=None): if out is None: out = sys.stdout - deptype = canonical_deptype(deptype) + deptype = spack.dependency.canonical_deptype(deptype) def static_graph(spec, deptype): pkg = spec.package @@ -517,7 +548,7 @@ def dynamic_graph(spec, deptypes): nodes = set() # elements are (node key, node label) edges = set() # elements are (src key, dest key) for s in spec.traverse(deptype=deptype): - nodes.add((s.dag_hash(), s.name)) + nodes.add((s.dag_hash(), node_label(s))) for d in s.dependencies(deptype=deptype): edge = (s.dag_hash(), d.dag_hash()) edges.add(edge) diff --git a/lib/spack/spack/hooks/licensing.py b/lib/spack/spack/hooks/licensing.py index 01eacdeec04c2c..2312811afe98ac 100644 --- a/lib/spack/spack/hooks/licensing.py +++ b/lib/spack/spack/hooks/licensing.py @@ -7,6 +7,7 @@ import llnl.util.tty as tty from llnl.util.filesystem import mkdirp +from llnl.util.symlink import symlink from spack.util.editor import editor from spack.util.executable import Executable, which @@ -179,6 +180,6 @@ def symlink_license(pkg): os.remove(link_name) if os.path.exists(target): - os.symlink(target, link_name) + symlink(target, link_name) tty.msg("Added local symlink %s to global license file" % link_name) diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index 75eff662814b42..b25ca796a1abf1 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import filecmp -import grp import os import re import shutil @@ -15,6 +14,7 @@ import llnl.util.filesystem as fs import llnl.util.tty as tty +import spack.error import spack.package_prefs import spack.paths import spack.spec @@ -28,6 +28,12 @@ else: system_shebang_limit = 127 +#: Groupdb does not exist on Windows, prevent imports +#: on supported systems +is_windows = sys.platform == 'win32' +if not is_windows: + import grp + #: Spack itself also limits the shebang line to at most 4KB, which should be plenty. spack_shebang_limit = 4096 @@ -154,24 +160,22 @@ def filter_shebang(path): def filter_shebangs_in_directory(directory, filenames=None): if filenames is None: filenames = os.listdir(directory) + + is_exe = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + for file in filenames: path = os.path.join(directory, file) - # only handle files - if not os.path.isfile(path): + # Only look at executable, non-symlink files. + try: + st = os.lstat(path) + except (IOError, OSError): continue - # only handle executable files - st = os.stat(path) - if not st.st_mode & (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH): + if (stat.S_ISLNK(st.st_mode) or stat.S_ISDIR(st.st_mode) or + not st.st_mode & is_exe): continue - # only handle links that resolve within THIS package's prefix. - if os.path.islink(path): - real_path = os.path.realpath(path) - if not real_path.startswith(directory + os.sep): - continue - # test the file for a long shebang, and filter if filter_shebang(path): tty.debug("Patched overlong shebang in %s" % path) diff --git a/lib/spack/spack/install_test.py b/lib/spack/spack/install_test.py index 660135422d476d..71561d28a69887 100644 --- a/lib/spack/spack/install_test.py +++ b/lib/spack/spack/install_test.py @@ -94,6 +94,16 @@ def write_test_suite_file(suite): sjson.dump(suite.to_dict(), stream=f) +def write_test_summary(num_failed, num_skipped, num_untested, num_specs): + failed = "{0} failed, ".format(num_failed) if num_failed else '' + skipped = "{0} skipped, ".format(num_skipped) if num_skipped else '' + no_tests = "{0} no-tests, ".format(num_untested) if num_untested else '' + num_passed = num_specs - num_failed - num_untested - num_skipped + + print("{:=^80}".format(" {0}{1}{2}{3} passed of {4} specs " + .format(failed, no_tests, skipped, num_passed, num_specs))) + + class TestSuite(object): def __init__(self, specs, alias=None): # copy so that different test suites have different package objects @@ -128,7 +138,9 @@ def __call__(self, *args, **kwargs): remove_directory = kwargs.get('remove_directory', True) dirty = kwargs.get('dirty', False) fail_first = kwargs.get('fail_first', False) + externals = kwargs.get('externals', False) + skipped, untested = 0, 0 for spec in self.specs: try: if spec.package.test_suite: @@ -149,9 +161,7 @@ def __call__(self, *args, **kwargs): fs.mkdirp(test_dir) # run the package tests - spec.package.do_test( - dirty=dirty - ) + spec.package.do_test(dirty=dirty, externals=externals) # Clean up on success if remove_directory: @@ -160,7 +170,17 @@ def __call__(self, *args, **kwargs): # Log test status based on whether any non-pass-only test # functions were called tested = os.path.exists(self.tested_file_for_spec(spec)) - status = 'PASSED' if tested else 'NO-TESTS' + if tested: + status = 'PASSED' + else: + self.ensure_stage() + if spec.external and not externals: + status = 'SKIPPED' + skipped += 1 + else: + status = 'NO-TESTS' + untested += 1 + self.write_test_result(spec, status) except BaseException as exc: self.fails += 1 @@ -179,6 +199,8 @@ def __call__(self, *args, **kwargs): self.current_test_spec = None self.current_base_spec = None + write_test_summary(self.fails, skipped, untested, len(self.specs)) + if self.fails: raise TestSuiteFailure(self.fails) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index d08e828c80592b..4cc1eedbe6097d 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -165,12 +165,13 @@ def _do_fake_install(pkg): library = 'lib' + library dso_suffix = '.dylib' if sys.platform == 'darwin' else '.so' - chmod = which('chmod') # Install fake command fs.mkdirp(pkg.prefix.bin) fs.touch(os.path.join(pkg.prefix.bin, command)) - chmod('+x', os.path.join(pkg.prefix.bin, command)) + if sys.platform != 'win32': + chmod = which('chmod') + chmod('+x', os.path.join(pkg.prefix.bin, command)) # Install fake header file fs.mkdirp(pkg.prefix.include) @@ -227,8 +228,9 @@ def _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs): dep.concretize() # mark compiler as depended-on by the packages that use it for pkg in pkgs: - dep._dependents[pkg.name] = spack.spec.DependencySpec( - pkg.spec, dep, ('build',)) + dep._dependents.add( + spack.spec.DependencySpec(pkg.spec, dep, ('build',)) + ) packages = [(s.package, False) for s in dep.traverse(order='post', root=False)] packages.append((dep.package, True)) @@ -632,9 +634,14 @@ def __init__(self, pkg_count): # Counters used for showing status information in the terminal title self.pkg_num = 0 self.pkg_count = pkg_count + self.pkg_ids = set() + + def next_pkg(self, pkg): + pkg_id = package_id(pkg) - def next_pkg(self): - self.pkg_num += 1 + if pkg_id not in self.pkg_ids: + self.pkg_num += 1 + self.pkg_ids.add(pkg_id) def set(self, text): if not spack.config.get('config:terminal_title', False): @@ -1548,8 +1555,6 @@ def install(self): term_status = TermStatusLine(enabled=sys.stdout.isatty() and not tty.is_debug()) while self.build_pq: - term_title.next_pkg() - task = self._pop_task() if task is None: continue @@ -1559,6 +1564,7 @@ def install(self): keep_prefix = install_args.get('keep_prefix') pkg, pkg_id, spec = task.pkg, task.pkg_id, task.pkg.spec + term_title.next_pkg(pkg) term_title.set('Processing {0}'.format(pkg.name)) tty.debug('Processing {0}: task={1}'.format(pkg_id, task)) # Ensure that the current spec has NO uninstalled dependencies, diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 34ba3c3349ed23..6e72b6a55702b5 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -26,12 +26,11 @@ import archspec.cpu -import llnl.util.filesystem as fs import llnl.util.lang import llnl.util.tty as tty import llnl.util.tty.colify import llnl.util.tty.color as color -from llnl.util.tty.log import log_output +from llnl.util.tty.log import log_output, winlog import spack import spack.cmd @@ -123,30 +122,25 @@ def add_all_commands(parser): def get_version(): """Get a descriptive version of this instance of Spack. - If this is a git repository, and if it is not on a release tag, - return a string like: - - release_version-commits_since_release-commit - - If we *are* at a release tag, or if this is not a git repo, return - the real spack release number (e.g., 0.13.3). + Outputs ' ()'. + The commit sha is only added when available. """ + version = spack.spack_version git_path = os.path.join(spack.paths.prefix, ".git") if os.path.exists(git_path): git = exe.which("git") - if git: - with fs.working_dir(spack.paths.prefix): - desc = git("describe", "--tags", "--match", "v*", - output=str, error=os.devnull, fail_on_error=False) - - if git.returncode == 0: - match = re.match(r"v([^-]+)-([^-]+)-g([a-f\d]+)", desc) - if match: - v, n, commit = match.groups() - return "%s-%s-%s" % (v, n, commit) + if not git: + return version + rev = git('-C', spack.paths.prefix, 'rev-parse', 'HEAD', + output=str, error=os.devnull, fail_on_error=False) + if git.returncode != 0: + return version + match = re.match(r"[a-f\d]{7,}$", rev) + if match: + version += " ({0})".format(match.group(0)) - return spack.spack_version + return version def index_commands(): @@ -447,6 +441,9 @@ def make_argument_parser(**kwargs): parser.add_argument( '-m', '--mock', action='store_true', help="use mock packages instead of real ones") + parser.add_argument( + '-b', '--bootstrap', action='store_true', + help="use bootstrap configuration (bootstrap store, config, externals)") parser.add_argument( '-p', '--profile', action='store_true', dest='spack_profile', help="profile execution using cProfile") @@ -491,6 +488,7 @@ def setup_main_options(args): # debug must be set first so that it can even affect behavior of # errors raised by spack.config. + if args.debug: spack.error.debug = True spack.util.debug.register_interrupt_handler() @@ -608,9 +606,14 @@ def __call__(self, *argv, **kwargs): out = StringIO() try: - with log_output(out): - self.returncode = _invoke_command( - self.command, self.parser, args, unknown) + if sys.platform == 'win32': + with winlog(out): + self.returncode = _invoke_command( + self.command, self.parser, args, unknown) + else: + with log_output(out): + self.returncode = _invoke_command( + self.command, self.parser, args, unknown) except SystemExit as e: self.returncode = e.code @@ -856,9 +859,22 @@ def _main(argv=None): cmd_name = args.command[0] cmd_name = aliases.get(cmd_name, cmd_name) - command = parser.add_command(cmd_name) + # set up a bootstrap context, if asked. + # bootstrap context needs to include parsing the command, b/c things + # like `ConstraintAction` and `ConfigSetAction` happen at parse time. + bootstrap_context = llnl.util.lang.nullcontext() + if args.bootstrap: + import spack.bootstrap as bootstrap # avoid circular imports + bootstrap_context = bootstrap.ensure_bootstrap_configuration() + + with bootstrap_context: + return finish_parse_and_run(parser, cmd_name, env_format_error) - # Re-parse with the proper sub-parser added. + +def finish_parse_and_run(parser, cmd_name, env_format_error): + """Finish parsing after we know the command to run.""" + # add the found command to the parser and re-run then re-parse + command = parser.add_command(cmd_name) args, unknown = parser.parse_known_args() # Now that we know what command this is and what its args are, determine diff --git a/lib/spack/spack/modules/lmod.py b/lib/spack/spack/modules/lmod.py index b8b9a1a533735c..850210487afa88 100644 --- a/lib/spack/spack/modules/lmod.py +++ b/lib/spack/spack/modules/lmod.py @@ -6,6 +6,7 @@ import collections import itertools import os.path +import posixpath from typing import Any, Dict # novm import llnl.util.lang as lang @@ -103,7 +104,10 @@ def guess_core_compilers(name, store=False): class LmodConfiguration(BaseConfiguration): """Configuration class for lmod module files.""" - default_projections = {'all': os.path.join('{name}', '{version}')} + # Note: Posixpath is used here as well as below as opposed to + # os.path.join due to spack.spec.Spec.format + # requiring forward slash path seperators at this stage + default_projections = {'all': posixpath.join('{name}', '{version}')} @property def core_compilers(self): @@ -192,6 +196,10 @@ def provides(self): if self.spec.name == 'llvm': provides['compiler'] = spack.spec.CompilerSpec(str(self.spec)) provides['compiler'].name = 'clang' + # Special case for llvm-amdgpu + if self.spec.name == 'llvm-amdgpu': + provides['compiler'] = spack.spec.CompilerSpec(str(self.spec)) + provides['compiler'].name = 'rocmcc' # All the other tokens in the hierarchy must be virtual dependencies for x in self.hierarchy_tokens: @@ -460,7 +468,7 @@ def manipulate_path(token): class LmodModulefileWriter(BaseModuleFileWriter): """Writer class for lmod module files.""" - default_template = os.path.join('modules', 'modulefile.lua') + default_template = posixpath.join('modules', 'modulefile.lua') class CoreCompilersNotFoundError(spack.error.SpackError, KeyError): diff --git a/lib/spack/spack/modules/tcl.py b/lib/spack/spack/modules/tcl.py index b224fef699ae7f..6762616337263e 100644 --- a/lib/spack/spack/modules/tcl.py +++ b/lib/spack/spack/modules/tcl.py @@ -6,7 +6,7 @@ """This module implements the classes necessary to generate TCL non-hierarchical modules. """ -import os.path +import posixpath import string from typing import Any, Dict # novm @@ -106,4 +106,7 @@ def conflicts(self): class TclModulefileWriter(BaseModuleFileWriter): """Writer class for tcl module files.""" - default_template = os.path.join('modules', 'modulefile.tcl') + # Note: Posixpath is used here as opposed to + # os.path.join due to spack.spec.Spec.format + # requiring forward slash path seperators at this stage + default_template = posixpath.join('modules', 'modulefile.tcl') diff --git a/lib/spack/spack/operating_systems/__init__.py b/lib/spack/spack/operating_systems/__init__.py index bd2377d80ca366..5a029ae5a8b66f 100644 --- a/lib/spack/spack/operating_systems/__init__.py +++ b/lib/spack/spack/operating_systems/__init__.py @@ -7,14 +7,16 @@ from .cray_frontend import CrayFrontend from .linux_distro import LinuxDistro from .mac_os import MacOs +from .windows_os import WindowsOs __all__ = [ 'OperatingSystem', 'LinuxDistro', 'MacOs', 'CrayFrontend', - 'CrayBackend' + 'CrayBackend', + 'WindowsOs' ] #: List of all the Operating Systems known to Spack -operating_systems = [LinuxDistro, MacOs, CrayFrontend, CrayBackend] +operating_systems = [LinuxDistro, MacOs, CrayFrontend, CrayBackend, WindowsOs] diff --git a/lib/spack/spack/operating_systems/mac_os.py b/lib/spack/spack/operating_systems/mac_os.py index 226bfccca53529..a150134618b2d3 100644 --- a/lib/spack/spack/operating_systems/mac_os.py +++ b/lib/spack/spack/operating_systems/mac_os.py @@ -3,7 +3,9 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import platform as py_platform +import re from spack.util.executable import Executable from spack.version import Version @@ -11,18 +13,95 @@ from ._operating_system import OperatingSystem -# FIXME: store versions inside OperatingSystem as a Version instead of string def macos_version(): - """temporary workaround to return a macOS version as a Version object + """Get the current macOS version as a version object. + + This has three mechanisms for determining the macOS version, which is used + for spack identification (the ``os`` in the spec's ``arch``) and indirectly + for setting the value of ``MACOSX_DEPLOYMENT_TARGET``, which affects the + ``minos`` value of the ``LC_BUILD_VERSION`` macho header. Mixing ``minos`` + values can lead to lots of linker warnings, and using a consistent version + (pinned to the major OS version) allows distribution across clients that + might be slightly behind. + + The version determination is made with three mechanisms in decreasing + priority: + + 1. The ``MACOSX_DEPLOYMENT_TARGET`` variable overrides the actual operating + system version, just like the value can be used to build for older macOS + targets on newer systems. Spack currently will truncate this value when + building packages, but at least the major version will be the same. + + 2. The system ``sw_vers`` command reports the actual operating system + version. + + 3. The Python ``platform.mac_ver`` function is a fallback if the operating + system identification fails, because some Python versions and/or + installations report the OS + on which Python was *built* rather than the one on which it is running. """ + env_ver = os.environ.get('MACOSX_DEPLOYMENT_TARGET', None) + if env_ver: + return Version(env_ver) + + try: + output = Executable('sw_vers')(output=str, fail_on_error=False) + except Exception: + # FileNotFoundError, or spack.util.executable.ProcessError + pass + else: + match = re.search(r'ProductVersion:\s*([0-9.]+)', output) + if match: + return Version(match.group(1)) + + # Fall back to python-reported version, which can be inaccurate around + # macOS 11 (e.g. showing 10.16 for macOS 12) return Version(py_platform.mac_ver()[0]) +def macos_cltools_version(): + """Find the last installed version of the CommandLineTools. + + The CLT version might only affect the build if it's selected as the macOS + SDK path. + """ + pkgutil = Executable('pkgutil') + output = pkgutil('--pkg-info=com.apple.pkg.cltools_executables', + output=str, fail_on_error=False) + match = re.search(r'version:\s*([0-9.]+)', output) + if match: + return Version(match.group(1)) + + # No CLTools installed by package manager: try Xcode + output = pkgutil('--pkg-info=com.apple.pkg.Xcode', + output=str, fail_on_error=False) + match = re.search(r'version:\s*([0-9.]+)', output) + if match: + return Version(match.group(1)) + + return None + + def macos_sdk_path(): - """Return SDK path + """Return path to the active macOS SDK. + """ + xcrun = Executable('xcrun') + return xcrun('--show-sdk-path', output=str).rstrip() + + +def macos_sdk_version(): + """Return the version of the active macOS SDK. + + The SDK version usually corresponds to the installed Xcode version and can + affect how some packages (especially those that use the GUI) can fail. This + information should somehow be embedded into the future "compilers are + dependencies" feature. + + The macOS deployment target cannot be greater than the SDK version, but + usually it can be at least a few versions less. """ xcrun = Executable('xcrun') - return xcrun('--show-sdk-path', output=str, error=str).rstrip() + return Version(xcrun('--show-sdk-version', output=str).rstrip()) class MacOs(OperatingSystem): @@ -60,11 +139,13 @@ def __init__(self): '12': 'monterey', } + version = macos_version() + # Big Sur versions go 11.0, 11.0.1, 11.1 (vs. prior versions that # only used the minor component) - part = 1 if macos_version() >= Version('11') else 2 + part = 1 if version >= Version('11') else 2 - mac_ver = str(macos_version().up_to(part)) + mac_ver = str(version.up_to(part)) name = mac_releases.get(mac_ver, "macos") super(MacOs, self).__init__(name, mac_ver) diff --git a/lib/spack/spack/operating_systems/windows_os.py b/lib/spack/spack/operating_systems/windows_os.py new file mode 100755 index 00000000000000..61525df8874d75 --- /dev/null +++ b/lib/spack/spack/operating_systems/windows_os.py @@ -0,0 +1,74 @@ +# Copyright 2013-2021 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 glob +import os +import platform +import subprocess +import sys + +from spack.error import SpackError +from spack.version import Version + +from ._operating_system import OperatingSystem + + +def windows_version(): + """temporary workaround to return a Windows version as a Version object + """ + return Version(platform.release()) + + +class WindowsOs(OperatingSystem): + """This class represents the Windows operating system. This will be + auto detected using the python platform.win32_ver() once we have a + python setup that runs natively. The Windows platform will be + represented using the major version operating system number, e.g. + 10. + """ + + # Find MSVC directories using vswhere + comp_search_paths = [] + vs_install_paths = [] + root = os.environ.get('ProgramFiles(x86)') or os.environ.get('ProgramFiles') + if root: + try: + extra_args = {} + if sys.version_info[:3] >= (3, 6, 0): + extra_args = {'encoding': 'mbcs', 'errors': 'strict'} + paths = subprocess.check_output([ # type: ignore[call-overload] # novermin + os.path.join(root, "Microsoft Visual Studio", + "Installer", "vswhere.exe"), + "-prerelease", + "-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "-property", "installationPath", + "-products", "*", + ], **extra_args).strip() + if (3, 0) <= sys.version_info[:2] <= (3, 5): + paths = paths.decode() + vs_install_paths = paths.split('\n') + msvc_paths = [os.path.join(path, "VC", "Tools", "MSVC") + for path in vs_install_paths] + for p in msvc_paths: + comp_search_paths.extend( + glob.glob(os.path.join(p, '*', 'bin', 'Hostx64', 'x64'))) + if os.getenv("ONEAPI_ROOT"): + comp_search_paths.extend(glob.glob(os.path.join( + str(os.getenv("ONEAPI_ROOT")), + 'compiler', '*', + 'windows', 'bin'))) + except (subprocess.CalledProcessError, OSError, UnicodeDecodeError): + pass + if comp_search_paths: + compiler_search_paths = comp_search_paths + + def __init__(self): + plat_ver = platform.release() + if Version(plat_ver) < Version('10'): + raise SpackError("Spack is not supported on Windows versions older than 10") + super(WindowsOs, self).__init__('windows{}'.format(plat_ver), plat_ver) + + def __str__(self): + return self.name diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 5df80f1e03c804..96ad5cab8c1f5b 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -59,6 +59,7 @@ from spack.stage import ResourceStage, Stage, StageComposite, stage_prefix from spack.util.executable import ProcessError, which from spack.util.package_hash import package_hash +from spack.util.path import win_exe_ext from spack.util.prefix import Prefix from spack.version import Version @@ -176,39 +177,69 @@ class DetectablePackageMeta(object): for the detection function. """ def __init__(cls, name, bases, attr_dict): - # If a package has the executables attribute then it's + if hasattr(cls, 'executables') and hasattr(cls, 'libraries'): + msg = "a package can have either an 'executables' or 'libraries' attribute" + msg += " [package '{0.name}' defines both]" + raise spack.error.SpackError(msg.format(cls)) + + # On windows, extend the list of regular expressions to look for + # filenames ending with ".exe" + # (in some cases these regular expressions include "$" to avoid + # pulling in filenames with unexpected suffixes, but this allows + # for example detecting "foo.exe" when the package writer specified + # that "foo" was a possible executable. + + # If a package has the executables or libraries attribute then it's # assumed to be detectable - if hasattr(cls, 'executables'): + if hasattr(cls, 'executables') or hasattr(cls, 'libraries'): + @property + def platform_executables(self): + def to_windows_exe(exe): + if exe.endswith('$'): + exe = exe.replace('$', '%s$' % win_exe_ext()) + else: + exe += win_exe_ext() + return exe + plat_exe = [] + if hasattr(self, 'executables'): + for exe in self.executables: + if sys.platform == 'win32': + exe = to_windows_exe(exe) + plat_exe.append(exe) + return plat_exe + @classmethod - def determine_spec_details(cls, prefix, exes_in_prefix): + def determine_spec_details(cls, prefix, objs_in_prefix): """Allow ``spack external find ...`` to locate installations. Args: prefix (str): the directory containing the executables - exes_in_prefix (set): the executables that match the regex + or libraries + objs_in_prefix (set): the executables or libraries that + match the regex Returns: The list of detected specs for this package """ - exes_by_version = collections.defaultdict(list) + objs_by_version = collections.defaultdict(list) # The default filter function is the identity function for the # list of executables filter_fn = getattr(cls, 'filter_detected_exes', lambda x, exes: exes) - exes_in_prefix = filter_fn(prefix, exes_in_prefix) - for exe in exes_in_prefix: + objs_in_prefix = filter_fn(prefix, objs_in_prefix) + for obj in objs_in_prefix: try: - version_str = cls.determine_version(exe) + version_str = cls.determine_version(obj) if version_str: - exes_by_version[version_str].append(exe) + objs_by_version[version_str].append(obj) except Exception as e: msg = ('An error occurred when trying to detect ' 'the version of "{0}" [{1}]') - tty.debug(msg.format(exe, str(e))) + tty.debug(msg.format(obj, str(e))) specs = [] - for version_str, exes in exes_by_version.items(): - variants = cls.determine_variants(exes, version_str) + for version_str, objs in objs_by_version.items(): + variants = cls.determine_variants(objs, version_str) # Normalize output to list if not isinstance(variants, list): variants = [variants] @@ -244,7 +275,7 @@ def determine_spec_details(cls, prefix, exes_in_prefix): return sorted(specs) @classmethod - def determine_variants(cls, exes, version_str): + def determine_variants(cls, objs, version_str): return '' # Register the class as a detectable package @@ -264,6 +295,13 @@ def determine_variants(cls, exes, version_str): if default and not hasattr(cls, 'determine_variants'): cls.determine_variants = determine_variants + # This function should not be overridden by subclasses, + # as it is not designed for bespoke pkg detection but rather + # on a per-platform basis + if 'platform_executables' in cls.__dict__.keys(): + raise PackageError("Packages should not override platform_executables") + cls.platform_executables = platform_executables + super(DetectablePackageMeta, cls).__init__(name, bases, attr_dict) @@ -372,6 +410,21 @@ def fullname(self): """Name of this package, including the namespace""" return '%s.%s' % (self.namespace, self.name) + @property + def fullnames(self): + """ + Fullnames for this package and any packages from which it inherits. + """ + fullnames = [] + for cls in inspect.getmro(self): + namespace = getattr(cls, 'namespace', None) + if namespace: + fullnames.append('%s.%s' % (namespace, self.name)) + if namespace == 'builtin': + # builtin packages cannot inherit from other repos + break + return fullnames + @property def name(self): """The name of this package. @@ -449,16 +502,28 @@ def view_file_conflicts(self, view, merge_map): Alternative implementations may allow some of the files to exist in the view (in this case they would be omitted from the results). """ - return set(dst for dst in merge_map.values() if os.path.exists(dst)) + return set(dst for dst in merge_map.values() if os.path.lexists(dst)) - def add_files_to_view(self, view, merge_map): + def add_files_to_view(self, view, merge_map, skip_if_exists=True): """Given a map of package files to destination paths in the view, add the files to the view. By default this adds all files. Alternative implementations may skip some files, for example if other packages linked into the view already include the file. - """ - for src, dst in merge_map.items(): - if not os.path.exists(dst): + + Args: + view (spack.filesystem_view.FilesystemView): the view that's updated + merge_map (dict): maps absolute source paths to absolute dest paths for + all files in from this package. + skip_if_exists (bool): when True, don't link files in view when they + already exist. When False, always link files, without checking + if they already exist. + """ + if skip_if_exists: + for src, dst in merge_map.items(): + if not os.path.lexists(dst): + view.link(src, dst, spec=self.spec) + else: + for src, dst in merge_map.items(): view.link(src, dst, spec=self.spec) def remove_files_from_view(self, view, merge_map): @@ -871,6 +936,10 @@ def fullname(self): """Name of this package, including namespace: namespace.name.""" return type(self).fullname + @property + def fullnames(self): + return type(self).fullnames + @property def name(self): """Name of this package (the module without parent modules).""" @@ -949,29 +1018,93 @@ def url_for_version(self, version): See Class Version (version.py) """ + return self._implement_all_urls_for_version(version)[0] + + def all_urls_for_version(self, version, custom_url_for_version=None): + """Returns all URLs derived from version_urls(), url, urls, and + list_url (if it contains a version) in a package in that order. + + version: class Version + The version for which a URL is sought. + + See Class Version (version.py) + """ + uf = None + if type(self).url_for_version != Package.url_for_version: + uf = self.url_for_version + return self._implement_all_urls_for_version(version, uf) + + def _implement_all_urls_for_version(self, version, custom_url_for_version=None): if not isinstance(version, Version): version = Version(version) + urls = [] + # If we have a specific URL for this version, don't extrapolate. version_urls = self.version_urls() if version in version_urls: - return version_urls[version] + urls.append(version_urls[version]) + + # if there is a custom url_for_version, use it + if custom_url_for_version is not None: + u = custom_url_for_version(version) + if u not in urls and u is not None: + urls.append(u) + def sub_and_add(u): + if u is None: + return + # skip the url if there is no version to replace + try: + spack.url.parse_version(u) + except spack.url.UndetectableVersionError: + return + nu = spack.url.substitute_version(u, self.url_version(version)) + + urls.append(nu) # If no specific URL, use the default, class-level URL - url = getattr(self, 'url', None) - urls = getattr(self, 'urls', [None]) - default_url = url or urls[0] + sub_and_add(getattr(self, 'url', None)) + for u in getattr(self, 'urls', []): + sub_and_add(u) + + sub_and_add(getattr(self, 'list_url', None)) - # if no exact match AND no class-level default, use the nearest URL - if not default_url: - default_url = self.nearest_url(version) + # if no version-bearing URLs can be found, try them raw + if not urls: + default_url = getattr(self, "url", getattr(self, "urls", [None])[0]) - # if there are NO URLs to go by, then we can't do anything + # if no exact match AND no class-level default, use the nearest URL if not default_url: - raise NoURLError(self.__class__) + default_url = self.nearest_url(version) + + # if there are NO URLs to go by, then we can't do anything + if not default_url: + raise NoURLError(self.__class__) + urls.append( + spack.url.substitute_version( + default_url, self.url_version(version) + ) + ) - return spack.url.substitute_version( - default_url, self.url_version(version)) + return urls + + def find_valid_url_for_version(self, version): + """Returns a URL from which the specified version of this package + may be downloaded after testing whether the url is valid. Will try + url, urls, and list_url before failing. + + version: class Version + The version for which a URL is sought. + + See Class Version (version.py) + """ + urls = self.all_urls_for_version(version) + + for u in urls: + if spack.util.web.url_exists(u): + return u + + return None def _make_resource_stage(self, root_stage, fetcher, resource): resource_stage_folder = self._resource_stage(resource) @@ -1186,22 +1319,27 @@ def extendee_spec(self): if not self.extendees: return None - # TODO: allow more than one extendee. - name = next(iter(self.extendees)) + deps = [] # If the extendee is in the spec's deps already, return that. - for dep in self.spec.traverse(deptypes=('link', 'run')): - if name == dep.name: - return dep + for dep in self.spec.traverse(deptype=('link', 'run')): + if dep.name in self.extendees: + deps.append(dep) + + # TODO: allow more than one active extendee. + if deps: + assert len(deps) == 1 + return deps[0] # if the spec is concrete already, then it extends something # that is an *optional* dependency, and the dep isn't there. if self.spec._concrete: return None else: + # TODO: do something sane here with more than one extendee # If it's not concrete, then return the spec from the # extends() directive since that is all we know so far. - spec, kwargs = self.extendees[name] + spec, kwargs = next(iter(self.extendees.items())) return spec @property @@ -1346,7 +1484,8 @@ def do_fetch(self, mirror_only=False): checksum = spack.config.get('config:checksum') fetch = self.stage.managed_by_spack - if checksum and fetch and self.version not in self.versions: + if checksum and fetch and (self.version not in self.versions) \ + and (not self.version.is_commit): tty.warn("There is no checksum on file to fetch %s safely." % self.spec.cformat('{name}{@version}')) @@ -1791,7 +1930,7 @@ def cache_extra_test_sources(self, srcs): fsys.mkdirp(os.path.dirname(dest_path)) fsys.copy(src_path, dest_path) - def do_test(self, dirty=False): + def do_test(self, dirty=False, externals=False): if self.test_requires_compiler: compilers = spack.compilers.compilers_for_spec( self.spec.compiler, arch_spec=self.spec.architecture) @@ -1808,7 +1947,12 @@ def do_test(self, dirty=False): self.tested_file = self.test_suite.tested_file_for_spec(self.spec) fsys.touch(self.test_log_file) # Otherwise log_parse complains - kwargs = {'dirty': dirty, 'fake': False, 'context': 'test'} + kwargs = { + 'dirty': dirty, 'fake': False, 'context': 'test', + 'externals': externals + } + if tty.is_verbose(): + kwargs['verbose'] = True spack.build_environment.start_build_process(self, test_process, kwargs) def test(self): @@ -2030,17 +2174,6 @@ def build_system_flags(cls, name, flags): """ return (None, None, flags) - def _get_legacy_environment_method(self, method_name): - legacy_fn = getattr(self, method_name, None) - name_prefix = method_name.split('_environment')[0] - if legacy_fn: - msg = '[DEPRECATED METHOD]\n"{0}" ' \ - 'still defines the deprecated method "{1}" ' \ - '[should be split into "{2}_build_environment" and ' \ - '"{2}_run_environment"]' - tty.debug(msg.format(self.name, method_name, name_prefix)) - return legacy_fn - def setup_build_environment(self, env): """Sets up the build environment for a package. @@ -2052,10 +2185,7 @@ def setup_build_environment(self, env): modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment. """ - legacy_fn = self._get_legacy_environment_method('setup_environment') - if legacy_fn: - _ = spack.util.environment.EnvironmentModifications() - legacy_fn(env, _) + pass def setup_run_environment(self, env): """Sets up the run environment for a package. @@ -2065,10 +2195,7 @@ def setup_run_environment(self, env): modifications to be applied when the package is run. Package authors can call methods on it to alter the run environment. """ - legacy_fn = self._get_legacy_environment_method('setup_environment') - if legacy_fn: - _ = spack.util.environment.EnvironmentModifications() - legacy_fn(_, env) + pass def setup_dependent_build_environment(self, env, dependent_spec): """Sets up the build environment of packages that depend on this one. @@ -2099,12 +2226,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): the dependent's state. Note that *this* package's spec is available as ``self.spec`` """ - legacy_fn = self._get_legacy_environment_method( - 'setup_dependent_environment' - ) - if legacy_fn: - _ = spack.util.environment.EnvironmentModifications() - legacy_fn(env, _, dependent_spec) + pass def setup_dependent_run_environment(self, env, dependent_spec): """Sets up the run environment of packages that depend on this one. @@ -2126,12 +2248,7 @@ def setup_dependent_run_environment(self, env, dependent_spec): the dependent's state. Note that *this* package's spec is available as ``self.spec`` """ - legacy_fn = self._get_legacy_environment_method( - 'setup_dependent_environment' - ) - if legacy_fn: - _ = spack.util.environment.EnvironmentModifications() - legacy_fn(_, env, dependent_spec) + pass def setup_dependent_package(self, module, dependent_spec): """Set up Python module-scope variables for dependent packages. @@ -2553,7 +2670,11 @@ def fetch_remote_versions(self, concurrency=128): try: return spack.util.web.find_versions_of_archive( - self.all_urls, self.list_url, self.list_depth, concurrency + self.all_urls, + self.list_url, + self.list_depth, + concurrency, + reference_package=self, ) except spack.util.web.NoNetworkConnectionError as e: tty.die("Package.fetch_versions couldn't connect to:", e.url, @@ -2618,12 +2739,45 @@ def _run_default_install_time_test_callbacks(self): fn() +def has_test_method(pkg): + """Determine if the package defines its own stand-alone test method. + + Args: + pkg (str): the package being checked + + Returns: + (bool): ``True`` if the package overrides the default method; else + ``False`` + """ + if not inspect.isclass(pkg): + tty.die('{0}: is not a class, it is {1}'.format(pkg, type(pkg))) + + return ( + (issubclass(pkg, PackageBase) and pkg.test != PackageBase.test) or + (isinstance(pkg, PackageBase) and pkg.test.__func__ != PackageBase.test) + ) + + +def print_test_message(logger, msg, verbose): + if verbose: + with logger.force_echo(): + print(msg) + else: + print(msg) + + def test_process(pkg, kwargs): - with tty.log.log_output(pkg.test_log_file) as logger: + verbose = kwargs.get('verbose', False) + externals = kwargs.get('externals', False) + with tty.log.log_output(pkg.test_log_file, verbose) as logger: with logger.force_echo(): tty.msg('Testing package {0}' .format(pkg.test_suite.test_pkg_id(pkg.spec))) + if pkg.spec.external and not externals: + print_test_message(logger, 'Skipped external package', verbose) + return + # use debug print levels for log file to record commands old_debug = tty.is_debug() tty.set_debug(True) @@ -2704,6 +2858,8 @@ def test_process(pkg, kwargs): # non-pass-only methods if ran_actual_test_function: fsys.touch(pkg.tested_file) + else: + print_test_message(logger, 'No tests to run', verbose) inject_flags = PackageBase.inject_flags diff --git a/lib/spack/spack/parse.py b/lib/spack/spack/parse.py index 52dec5a5fef22b..603848a3a0b702 100644 --- a/lib/spack/spack/parse.py +++ b/lib/spack/spack/parse.py @@ -11,6 +11,7 @@ from six import string_types import spack.error +import spack.util.path as sp class Token(object): @@ -144,6 +145,9 @@ def expect(self, id): def setup(self, text): if isinstance(text, string_types): + # shlex does not handle Windows path + # separators, so we must normalize to posix + text = sp.convert_to_posix_path(text) text = shlex.split(str(text)) self.text = text self.push_tokens(self.lexer.lex(text)) diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index 14b00b3d3f6173..33f9fa57ebfe82 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -7,6 +7,7 @@ import inspect import os import os.path +import sys import llnl.util.filesystem import llnl.util.lang @@ -19,7 +20,7 @@ import spack.util.spack_json as sjson from spack.util.compression import allowed_archive from spack.util.crypto import Checker, checksum -from spack.util.executable import which +from spack.util.executable import which, which_string def apply_patch(stage, patch_path, level=1, working_dir='.'): @@ -32,7 +33,20 @@ def apply_patch(stage, patch_path, level=1, working_dir='.'): working_dir (str): relative path *within* the stage to change to (default '.') """ - patch = which("patch", required=True) + git_utils_path = os.environ.get('PATH', '') + if sys.platform == 'win32': + git = which_string('git', required=True) + git_root = git.split('\\')[:-2] + git_root.extend(['usr', 'bin']) + git_utils_path = os.sep.join(git_root) + + # TODO: Decouple Spack's patch support on Windows from Git + # for Windows, and instead have Spack directly fetch, install, and + # utilize that patch. + # Note for future developers: The GNU port of patch to windows + # has issues handling CRLF line endings unless the --binary + # flag is passed. + patch = which("patch", required=True, path=git_utils_path) with llnl.util.filesystem.working_dir(stage.source_path): patch('-s', '-p', str(level), @@ -97,6 +111,12 @@ def to_dict(self): 'working_dir': self.working_dir, } + def __eq__(self, other): + return self.sha256 == other.sha256 + + def __hash__(self): + return hash(self.sha256) + class FilePatch(Patch): """Describes a patch that is retrieved from a file in the repository. @@ -348,8 +368,12 @@ def patch_for_package(self, sha256, pkg): "Couldn't find patch for package %s with sha256: %s" % (pkg.fullname, sha256)) - patch_dict = sha_index.get(pkg.fullname) - if not patch_dict: + # Find patches for this class or any class it inherits from + for fullname in pkg.fullnames: + patch_dict = sha_index.get(fullname) + if patch_dict: + break + else: raise NoSuchPatchError( "Couldn't find patch for package %s with sha256: %s" % (pkg.fullname, sha256)) diff --git a/lib/spack/spack/paths.py b/lib/spack/spack/paths.py index 4d8747d741eeeb..b423e9e6c53e01 100644 --- a/lib/spack/spack/paths.py +++ b/lib/spack/spack/paths.py @@ -81,7 +81,8 @@ # setting `SPACK_USER_CACHE_PATH`. Otherwise it defaults to ~/.spack. # def _get_user_cache_path(): - return os.path.expanduser(os.getenv('SPACK_USER_CACHE_PATH') or "~/.spack") + return os.path.expanduser(os.getenv('SPACK_USER_CACHE_PATH') + or "~%s.spack" % os.sep) user_cache_path = _get_user_cache_path() @@ -116,12 +117,14 @@ def _get_user_cache_path(): # User configuration and caches in $HOME/.spack def _get_user_config_path(): - return os.path.expanduser(os.getenv('SPACK_USER_CONFIG_PATH') or "~/.spack") + return os.path.expanduser(os.getenv('SPACK_USER_CONFIG_PATH') or + "~%s.spack" % os.sep) # Configuration in /etc/spack on the system def _get_system_config_path(): - return os.path.expanduser(os.getenv('SPACK_SYSTEM_CONFIG_PATH') or "/etc/spack") + return os.path.expanduser(os.getenv('SPACK_SYSTEM_CONFIG_PATH') or + os.sep + os.path.join('etc', 'spack')) #: User configuration location diff --git a/lib/spack/spack/pkgkit.py b/lib/spack/spack/pkgkit.py index ba1f5f377bc77b..f4dd3dbe61e025 100644 --- a/lib/spack/spack/pkgkit.py +++ b/lib/spack/spack/pkgkit.py @@ -38,6 +38,7 @@ from spack.build_systems.python import PythonPackage from spack.build_systems.qmake import QMakePackage from spack.build_systems.r import RPackage +from spack.build_systems.racket import RacketPackage from spack.build_systems.rocm import ROCmPackage from spack.build_systems.ruby import RubyPackage from spack.build_systems.scons import SConsPackage diff --git a/lib/spack/spack/platforms/__init__.py b/lib/spack/spack/platforms/__init__.py index 83de03de12130c..50acc3ec423407 100644 --- a/lib/spack/spack/platforms/__init__.py +++ b/lib/spack/spack/platforms/__init__.py @@ -10,6 +10,7 @@ from .darwin import Darwin from .linux import Linux from .test import Test +from .windows import Windows __all__ = [ 'Platform', @@ -17,6 +18,7 @@ 'Darwin', 'Linux', 'Test', + 'Windows', 'platforms', 'host', 'by_name', diff --git a/lib/spack/spack/platforms/_functions.py b/lib/spack/spack/platforms/_functions.py index 7d3a440a3a1035..503be5afcb93a9 100644 --- a/lib/spack/spack/platforms/_functions.py +++ b/lib/spack/spack/platforms/_functions.py @@ -12,9 +12,10 @@ from .darwin import Darwin from .linux import Linux from .test import Test +from .windows import Windows #: List of all the platform classes known to Spack -platforms = [Cray, Darwin, Linux, Test] +platforms = [Cray, Darwin, Linux, Windows, Test] @llnl.util.lang.memoized diff --git a/lib/spack/spack/platforms/_platform.py b/lib/spack/spack/platforms/_platform.py index 61845eb4309262..b68b7f1299378c 100644 --- a/lib/spack/spack/platforms/_platform.py +++ b/lib/spack/spack/platforms/_platform.py @@ -104,11 +104,11 @@ def operating_system(self, name): return self.operating_sys.get(name, None) - @classmethod - def setup_platform_environment(cls, pkg, env): + def setup_platform_environment(self, pkg, env): """Subclass can override this method if it requires any platform-specific build environment modifications. """ + pass @classmethod def detect(cls): diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index 133c29940eac86..23724dffbe9020 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -84,8 +84,7 @@ def __init__(self): if self.front_os != self.back_os: self.add_operating_system(self.front_os, front_distro) - @classmethod - def setup_platform_environment(cls, pkg, env): + def setup_platform_environment(self, pkg, env): """ Change the linker to default dynamic to be more similar to linux/standard linker behavior """ diff --git a/lib/spack/spack/platforms/darwin.py b/lib/spack/spack/platforms/darwin.py index 7f38cad42eb7b6..c2d6bbb281a240 100644 --- a/lib/spack/spack/platforms/darwin.py +++ b/lib/spack/spack/platforms/darwin.py @@ -3,7 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import platform +import platform as py_platform import archspec.cpu @@ -38,4 +38,35 @@ def __init__(self): @classmethod def detect(cls): - return 'darwin' in platform.system().lower() + return 'darwin' in py_platform.system().lower() + + def setup_platform_environment(self, pkg, env): + """Specify deployment target based on target OS version. + + The ``MACOSX_DEPLOYMENT_TARGET`` environment variable provides a + default ``-mmacosx-version-min`` argument for GCC and Clang compilers, + as well as the default value of ``CMAKE_OSX_DEPLOYMENT_TARGET`` for + CMake-based build systems. The default value for the deployment target + is usually the major version (11, 10.16, ...) for CMake and Clang, but + some versions of GCC specify a minor component as well (11.3), leading + to numerous link warnings about inconsistent or incompatible target + versions. Setting the environment variable ensures consistent versions + for an install toolchain target, even when the host macOS version + changes. + + TODO: it may be necessary to add SYSTEM_VERSION_COMPAT for older + versions of the macosx developer tools; see + https://github.com/spack/spack/pull/26290 for discussion. + """ + + os = self.operating_sys[pkg.spec.os] + version = os.version + if len(version) == 1: + # Version has only one component: add a minor version to prevent + # potential errors with `ld`, + # which fails with `-macosx_version_min 11` + # but succeeds with `-macosx_version_min 11.0`. + # Most compilers seem to perform this translation automatically, + # but older GCC does not. + version = str(version) + '.0' + env.set('MACOSX_DEPLOYMENT_TARGET', str(version)) diff --git a/lib/spack/spack/platforms/windows.py b/lib/spack/spack/platforms/windows.py new file mode 100755 index 00000000000000..9626b29cc816e6 --- /dev/null +++ b/lib/spack/spack/platforms/windows.py @@ -0,0 +1,40 @@ +# Copyright 2013-2021 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 platform + +import archspec.cpu + +import spack.target +from spack.operating_systems.windows_os import WindowsOs + +from ._platform import Platform + + +class Windows(Platform): + priority = 101 + + def __init__(self): + super(Windows, self).__init__('windows') + + for name in archspec.cpu.TARGETS: + self.add_target(name, spack.target.Target(name)) + + self.default = archspec.cpu.host().name + self.front_end = self.default + self.back_end = self.default + + windows_os = WindowsOs() + + self.default_os = str(windows_os) + self.front_os = str(windows_os) + self.back_os = str(windows_os) + + self.add_operating_system(str(windows_os), windows_os) + + @classmethod + def detect(cls): + plat = platform.system().lower() + return 'cygwin' in plat or 'win32' in plat or 'windows' in plat diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index 02bd0edf1f5a64..bbb5e8025a24e9 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -13,6 +13,7 @@ import llnl.util.lang import llnl.util.tty as tty +from llnl.util.symlink import symlink import spack.bootstrap import spack.platforms @@ -683,7 +684,7 @@ def make_link_relative(new_links, orig_links): target = os.readlink(orig_link) relative_target = os.path.relpath(target, os.path.dirname(orig_link)) os.unlink(new_link) - os.symlink(relative_target, new_link) + symlink(relative_target, new_link) def make_macho_binaries_relative(cur_path_names, orig_path_names, @@ -764,7 +765,7 @@ def relocate_links(links, orig_layout_root, orig_install_prefix, new_install_prefix, link_target ) os.unlink(abs_link) - os.symlink(link_target, abs_link) + symlink(link_target, abs_link) # If the link is absolute and has not been relocated then # warn the user about that diff --git a/lib/spack/spack/repo.py b/lib/spack/spack/repo.py index 42a7aab5b62ab1..65773100480c2c 100644 --- a/lib/spack/spack/repo.py +++ b/lib/spack/spack/repo.py @@ -7,9 +7,11 @@ import contextlib import errno import functools +import importlib import inspect import itertools import os +import os.path import re import shutil import stat @@ -25,6 +27,7 @@ import llnl.util.lang import llnl.util.tty as tty from llnl.util.compat import Mapping +from llnl.util.filesystem import working_dir import spack.caches import spack.config @@ -36,6 +39,7 @@ import spack.util.imp as simp import spack.util.naming as nm import spack.util.path +from spack.util.executable import which #: Super-namespace for all packages. #: Package modules are imported as spack.pkg... @@ -75,6 +79,117 @@ def get_full_namespace(namespace): _package_prepend = 'from __future__ import absolute_import; from spack.pkgkit import *' +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 + + +class GitExe: + # Wrapper around Executable for git to set working directory for all + # invocations. + # + # Not using -C as that is not supported for git < 1.8.5. + def __init__(self): + self._git_cmd = which('git', required=True) + + def __call__(self, *args, **kwargs): + with working_dir(packages_path()): + return self._git_cmd(*args, **kwargs) + + +_git = None + + +def get_git(): + """Get a git executable that runs *within* the packages path.""" + global _git + if _git is None: + _git = GitExe() + return _git + + +def list_packages(rev): + """List all packages associated with the given revision""" + git = get_git() + + # git ls-tree does not support ... merge-base syntax, so do it manually + if rev.endswith('...'): + ref = rev.replace('...', '') + rev = git('merge-base', ref, 'HEAD', output=str).strip() + + output = git('ls-tree', '--name-only', rev, output=str) + return sorted(line for line in output.split('\n') + if line and not line.startswith('.')) + + +def diff_packages(rev1, rev2): + """Compute packages lists for the two revisions and return a tuple + containing all the packages in rev1 but not in rev2 and all the + packages in rev2 but not in rev1.""" + p1 = set(list_packages(rev1)) + p2 = set(list_packages(rev2)) + return p1.difference(p2), p2.difference(p1) + + +def get_all_package_diffs(type, rev1='HEAD^1', rev2='HEAD'): + """Show packages changed, added, or removed (or any combination of those) + since a commit. + + Arguments: + + type (str): String containing one or more of 'A', 'B', 'C' + rev1 (str): Revision to compare against, default is 'HEAD^' + rev2 (str): Revision to compare to rev1, default is 'HEAD' + + Returns: + + A set contain names of affected packages. + """ + lower_type = type.lower() + if not re.match('^[arc]*$', lower_type): + tty.die("Invald change type: '%s'." % type, + "Can contain only A (added), R (removed), or C (changed)") + + removed, added = diff_packages(rev1, rev2) + + git = get_git() + out = git('diff', '--relative', '--name-only', rev1, rev2, + output=str).strip() + + lines = [] if not out else re.split(r'\s+', out) + changed = set() + for path in lines: + pkg_name, _, _ = path.partition(os.sep) + if pkg_name not in added and pkg_name not in removed: + changed.add(pkg_name) + + packages = set() + if 'a' in lower_type: + packages |= added + if 'r' in lower_type: + packages |= removed + if 'c' in lower_type: + packages |= changed + + return packages + + +def add_package_to_git_stage(packages): + """add a package to the git stage with `git add`""" + git = get_git() + + for pkg_name in packages: + filename = spack.repo.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) + + git('add', filename) + + def autospec(function): """Decorator that automatically converts the first argument of a function to a Spec. @@ -327,6 +442,9 @@ class RepoIndex(object): def __init__(self, package_checker, namespace): self.checker = package_checker self.packages_path = self.checker.packages_path + if sys.platform == 'win32': + self.packages_path = \ + spack.util.path.convert_to_posix_path(self.packages_path) self.namespace = namespace self.indexers = {} @@ -1099,7 +1217,12 @@ def get_pkg_class(self, pkg_name): % (self.namespace, namespace)) class_name = nm.mod_to_class(pkg_name) - module = self._get_pkg_module(pkg_name) + + fullname = "{0}.{1}".format(self.full_namespace, pkg_name) + try: + module = importlib.import_module(fullname) + except ImportError: + raise UnknownPackageError(pkg_name) cls = getattr(module, class_name) if not inspect.isclass(cls): diff --git a/lib/spack/spack/report.py b/lib/spack/spack/report.py index 084a9d3883bf8d..a31c011fc4ac7c 100644 --- a/lib/spack/spack/report.py +++ b/lib/spack/spack/report.py @@ -171,7 +171,13 @@ def wrapper(instance, *args, **kwargs): value = None try: value = do_fn(instance, *args, **kwargs) - package['result'] = 'success' + + externals = kwargs.get('externals', False) + skip_externals = pkg.spec.external and not externals + if do_fn.__name__ == 'do_test' and skip_externals: + package['result'] = 'skipped' + else: + package['result'] = 'success' package['stdout'] = fetch_log(pkg, do_fn, self.dir) package['installed_from_binary_cache'] = \ pkg.installed_from_binary_cache diff --git a/lib/spack/spack/reporters/cdash.py b/lib/spack/spack/reporters/cdash.py index 212283f39e2912..d947becde83ef7 100644 --- a/lib/spack/spack/reporters/cdash.py +++ b/lib/spack/spack/reporters/cdash.py @@ -7,6 +7,7 @@ import hashlib import os.path import platform +import posixpath import re import socket import time @@ -61,7 +62,9 @@ class CDash(Reporter): def __init__(self, args): Reporter.__init__(self, args) self.success = True - self.template_dir = os.path.join('reports', 'cdash') + # Posixpath is used here to support the underlying template enginge + # Jinja2, which expects `/` path separators + self.template_dir = posixpath.join('reports', 'cdash') self.cdash_upload_url = args.cdash_upload_url if self.cdash_upload_url: @@ -219,11 +222,11 @@ def clean_log_event(event): if phase != 'update': # Update.xml stores site information differently # than the rest of the CTest XML files. - site_template = os.path.join(self.template_dir, 'Site.xml') + site_template = posixpath.join(self.template_dir, 'Site.xml') t = env.get_template(site_template) f.write(t.render(report_data)) - phase_template = os.path.join(self.template_dir, report_name) + phase_template = posixpath.join(self.template_dir, report_name) t = env.get_template(phase_template) f.write(t.render(report_data)) self.upload(phase_report) @@ -346,11 +349,11 @@ def clean_log_event(event): if phase != 'update': # Update.xml stores site information differently # than the rest of the CTest XML files. - site_template = os.path.join(self.template_dir, 'Site.xml') + site_template = posixpath.join(self.template_dir, 'Site.xml') t = env.get_template(site_template) f.write(t.render(report_data)) - phase_template = os.path.join(self.template_dir, report_name) + phase_template = posixpath.join(self.template_dir, report_name) t = env.get_template(phase_template) f.write(t.render(report_data)) self.upload(phase_report) @@ -376,7 +379,7 @@ def concretization_report(self, directory_name, msg): report_data['update']['log'] = msg env = spack.tengine.make_environment() - update_template = os.path.join(self.template_dir, 'Update.xml') + update_template = posixpath.join(self.template_dir, 'Update.xml') t = env.get_template(update_template) output_filename = os.path.join(directory_name, 'Update.xml') with open(output_filename, 'w') as f: diff --git a/lib/spack/spack/reporters/junit.py b/lib/spack/spack/reporters/junit.py index 323010c46f5377..8ed299fe23c82b 100644 --- a/lib/spack/spack/reporters/junit.py +++ b/lib/spack/spack/reporters/junit.py @@ -3,8 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import os -import os.path +import posixpath import spack.build_environment import spack.fetch_strategy @@ -19,7 +18,9 @@ class JUnit(Reporter): def __init__(self, args): Reporter.__init__(self, args) - self.template_file = os.path.join('reports', 'junit.xml') + # Posixpath is used here to support the underlying template enginge + # Jinja2, which expects `/` path separators + self.template_file = posixpath.join('reports', 'junit.xml') def build_report(self, filename, report_data): # Write the report diff --git a/lib/spack/spack/rewiring.py b/lib/spack/spack/rewiring.py new file mode 100644 index 00000000000000..de7114dd974c4d --- /dev/null +++ b/lib/spack/spack/rewiring.py @@ -0,0 +1,128 @@ +# Copyright 2013-2021 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 shutil +import tempfile +from collections import OrderedDict + +from llnl.util.symlink import symlink + +import spack.binary_distribution as bindist +import spack.error +import spack.hooks +import spack.paths +import spack.relocate as relocate +import spack.stage +import spack.store + + +def _relocate_spliced_links(links, orig_prefix, new_prefix): + """Re-linking function which differs from `relocate.relocate_links` by + reading the old link rather than the new link, since the latter wasn't moved + in our case. This still needs to be called after the copy to destination + because it expects the new directory structure to be in place.""" + for link in links: + link_target = os.readlink(os.path.join(orig_prefix, link)) + link_target = re.sub('^' + orig_prefix, new_prefix, link_target) + new_link_path = os.path.join(new_prefix, link) + os.unlink(new_link_path) + symlink(link_target, new_link_path) + + +def rewire(spliced_spec): + """Given a spliced spec, this function conducts all the rewiring on all + nodes in the DAG of that spec.""" + assert spliced_spec.spliced + for spec in spliced_spec.traverse(order='post', root=True): + if not spec.build_spec.package.installed: + # TODO: May want to change this at least for the root spec... + # spec.build_spec.package.do_install(force=True) + raise PackageNotInstalledError(spliced_spec, + spec.build_spec, + spec) + if spec.build_spec is not spec and not spec.package.installed: + explicit = spec is spliced_spec + rewire_node(spec, explicit) + + +def rewire_node(spec, explicit): + """This function rewires a single node, worrying only about references to + its subgraph. Binaries, text, and links are all changed in accordance with + the splice. The resulting package is then 'installed.'""" + tempdir = tempfile.mkdtemp() + # copy anything installed to a temporary directory + shutil.copytree(spec.build_spec.prefix, + os.path.join(tempdir, spec.dag_hash())) + + spack.hooks.pre_install(spec) + # compute prefix-to-prefix for every node from the build spec to the spliced + # spec + prefix_to_prefix = OrderedDict({spec.build_spec.prefix: spec.prefix}) + for build_dep in spec.build_spec.traverse(root=False): + prefix_to_prefix[build_dep.prefix] = spec[build_dep.name].prefix + + manifest = bindist.get_buildfile_manifest(spec.build_spec) + platform = spack.platforms.by_name(spec.platform) + + text_to_relocate = [os.path.join(tempdir, spec.dag_hash(), rel_path) + for rel_path in manifest.get('text_to_relocate', [])] + if text_to_relocate: + relocate.relocate_text(files=text_to_relocate, + prefixes=prefix_to_prefix) + + bins_to_relocate = [os.path.join(tempdir, spec.dag_hash(), rel_path) + for rel_path in manifest.get('binary_to_relocate', [])] + if bins_to_relocate: + if 'macho' in platform.binary_formats: + relocate.relocate_macho_binaries(bins_to_relocate, + str(spack.store.layout.root), + str(spack.store.layout.root), + prefix_to_prefix, + False, + spec.build_spec.prefix, + spec.prefix) + if 'elf' in platform.binary_formats: + relocate.relocate_elf_binaries(bins_to_relocate, + str(spack.store.layout.root), + str(spack.store.layout.root), + prefix_to_prefix, + False, + spec.build_spec.prefix, + spec.prefix) + relocate.relocate_text_bin(binaries=bins_to_relocate, + prefixes=prefix_to_prefix) + # copy package into place (shutil.copytree) + shutil.copytree(os.path.join(tempdir, spec.dag_hash()), spec.prefix, + ignore=shutil.ignore_patterns('spec.json', + 'install_manifest.json')) + if manifest.get('link_to_relocate'): + _relocate_spliced_links(manifest.get('link_to_relocate'), + spec.build_spec.prefix, + spec.prefix) + shutil.rmtree(tempdir) + # handle all metadata changes; don't copy over spec.json file in .spack/ + spack.store.layout.write_spec(spec, spack.store.layout.spec_file_path(spec)) + # add to database, not sure about explicit + spack.store.db.add(spec, spack.store.layout, explicit=explicit) + + # run post install hooks + spack.hooks.post_install(spec) + + +class RewireError(spack.error.SpackError): + """Raised when something goes wrong with rewiring.""" + def __init__(self, message, long_msg=None): + super(RewireError, self).__init__(message, long_msg) + + +class PackageNotInstalledError(RewireError): + """Raised when the build_spec for a splice was not installed.""" + def __init__(self, spliced_spec, build_spec, dep): + super(PackageNotInstalledError, self).__init__( + """Rewire of {0} + failed due to missing install of build spec {1} + for spec {2}""".format(spliced_spec, build_spec, dep)) diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py new file mode 100644 index 00000000000000..e3bdde4adfe100 --- /dev/null +++ b/lib/spack/spack/schema/concretizer.py @@ -0,0 +1,30 @@ +# Copyright 2013-2022 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 concretizer.yaml configuration file. + +.. literalinclude:: _spack_root/lib/spack/spack/schema/concretizer.py + :lines: 13- +""" + +properties = { + 'concretizer': { + 'type': 'object', + 'additionalProperties': False, + 'properties': { + 'reuse': {'type': 'boolean'}, + } + } +} + + +#: Full schema with metadata +schema = { + '$schema': 'http://json-schema.org/draft-07/schema#', + 'title': 'Spack concretizer configuration file schema', + 'type': 'object', + 'additionalProperties': False, + 'properties': properties, +} diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py index 99eecd67e6d0b7..06dadc802c5b12 100644 --- a/lib/spack/spack/schema/config.py +++ b/lib/spack/spack/schema/config.py @@ -103,6 +103,10 @@ 'type': 'string', 'enum': ['urllib', 'curl'] }, + 'additional_external_search_paths': { + 'type': 'array', + 'items': {'type': 'string'} + } }, }, } diff --git a/lib/spack/spack/schema/env.py b/lib/spack/spack/schema/env.py index d2ef1bc69147bc..65ef1a76a85e84 100644 --- a/lib/spack/spack/schema/env.py +++ b/lib/spack/spack/schema/env.py @@ -124,7 +124,7 @@ }, 'link': { 'type': 'string', - 'pattern': '(roots|all)', + 'pattern': '(roots|all|run)', }, 'link_type': { 'type': 'string' diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index ea603fd92f45ef..89c9108fc16ed9 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -9,7 +9,6 @@ import itertools import os import pprint -import sys import types import warnings @@ -25,7 +24,7 @@ # There may be a better way to detect this clingo_cffi = hasattr(clingo.Symbol, '_rep') except ImportError: - clingo = None + clingo = None # type: ignore clingo_cffi = False import llnl.util.lang @@ -474,18 +473,16 @@ def bootstrap_clingo(): class PyclingoDriver(object): - def __init__(self, cores=True, asp=None): + def __init__(self, cores=True): """Driver for the Python clingo interface. Arguments: cores (bool): whether to generate unsatisfiable cores for better error reporting. - asp (file-like): optional stream to write a text-based ASP program - for debugging or verification. """ bootstrap_clingo() - self.out = asp or llnl.util.lang.Devnull() + self.out = llnl.util.lang.Devnull() self.cores = cores def title(self, name, char): @@ -528,17 +525,37 @@ def fact(self, head, assumption=False): self.assumptions.append(atom) def solve( - self, solver_setup, specs, dump=None, nmodels=0, - timers=False, stats=False, tests=False, reuse=False, + self, + setup, + specs, + nmodels=0, + timers=False, + stats=False, + out=None, + setup_only=False ): + """Set up the input and solve for dependencies of ``specs``. + + Arguments: + setup (SpackSolverSetup): An object to set up the ASP problem. + specs (list): List of ``Spec`` objects to solve for. + nmodels (list): Number of models to consider (default 0 for unlimited). + timers (bool): Print out coarse timers for different solve phases. + stats (bool): Whether to output Clingo's internal solver statistics. + out: Optional output stream for the generated ASP program. + setup_only (bool): if True, stop after setup and don't solve (default False). + """ + # allow solve method to override the output stream + if out is not None: + self.out = out + timer = spack.util.timer.Timer() # Initialize the control object for the solver self.control = clingo.Control() - self.control.configuration.solve.models = nmodels - self.control.configuration.asp.trans_ext = 'all' - self.control.configuration.asp.eq = '5' self.control.configuration.configuration = 'tweety' + self.control.configuration.solve.models = nmodels + self.control.configuration.solver.heuristic = 'Domain' self.control.configuration.solve.parallel_mode = '1' self.control.configuration.solver.opt_strategy = "usc,one" @@ -546,7 +563,7 @@ def solve( self.assumptions = [] with self.control.backend() as backend: self.backend = backend - solver_setup.setup(self, specs, tests=tests, reuse=reuse) + setup.setup(self, specs) timer.phase("setup") # read in the main ASP program and display logic -- these are @@ -567,6 +584,10 @@ def visit(node): path = os.path.join(parent_dir, 'concretize.lp') parse_files([path], visit) + # If we're only doing setup, just return an empty solve result + if setup_only: + return Result(specs) + # Load the file itself self.control.load(os.path.join(parent_dir, 'concretize.lp')) self.control.load(os.path.join(parent_dir, "display.lp")) @@ -641,7 +662,7 @@ def stringify(x): class SpackSolverSetup(object): """Class to set up and run a Spack concretization solve.""" - def __init__(self): + def __init__(self, reuse=False, tests=False): self.gen = None # set by setup() self.declared_versions = {} @@ -666,6 +687,12 @@ def __init__(self): # Caches to optimize the setup phase of the solver self.target_specs_cache = None + # whether to add installed/binary hashes to the solve + self.reuse = reuse + + # whether to add installed/binary hashes to the solve + self.tests = tests + def pkg_version_rules(self, pkg): """Output declared versions of a package. @@ -717,7 +744,7 @@ def target_ranges(self, spec, single_target_fn): if str(target) in archspec.cpu.TARGETS: return [single_target_fn(spec.name, target)] - self.target_constraints.add((spec.name, target)) + self.target_constraints.add(target) return [fn.node_target_satisfies(spec.name, target)] def conflict_rules(self, pkg): @@ -867,7 +894,7 @@ def pkg_rules(self, pkg, tests): self.package_provider_rules(pkg) # dependencies - self.package_dependencies_rules(pkg, tests) + self.package_dependencies_rules(pkg) # virtual preferences self.virtual_preferences( @@ -933,17 +960,17 @@ def package_provider_rules(self, pkg): )) self.gen.newline() - def package_dependencies_rules(self, pkg, tests): + def package_dependencies_rules(self, pkg): """Translate 'depends_on' directives into ASP logic.""" for _, conditions in sorted(pkg.dependencies.items()): for cond, dep in sorted(conditions.items()): deptypes = dep.type.copy() # Skip test dependencies if they're not requested - if not tests: + if not self.tests: deptypes.discard("test") # ... or if they are requested only for certain packages - if not isinstance(tests, bool) and pkg.name not in tests: + if not isinstance(self.tests, bool) and pkg.name not in self.tests: deptypes.discard("test") # if there are no dependency types to be considered @@ -1218,8 +1245,7 @@ class Body(object): clauses.append( fn.node_compiler_version_satisfies( spec.name, spec.compiler.name, spec.compiler.versions)) - self.compiler_version_constraints.add( - (spec.name, spec.compiler)) + self.compiler_version_constraints.add(spec.compiler) # compiler flags for flag_type, flags in spec.compiler_flags.items(): @@ -1233,9 +1259,10 @@ class Body(object): # add all clauses from dependencies if transitive: if spec.concrete: - for dep_name, dep in spec.dependencies_dict().items(): - for dtype in dep.deptypes: - clauses.append(fn.depends_on(spec.name, dep_name, dtype)) + # TODO: We need to distinguish 2 specs from the same package later + for edge in spec.edges_to_dependencies(): + for dtype in edge.deptypes: + clauses.append(fn.depends_on(spec.name, edge.spec.name, dtype)) for dep in spec.traverse(root=False): if spec.concrete: @@ -1290,16 +1317,26 @@ def key_fn(item): for spec in specs: for dep in spec.traverse(): - if dep.versions.concrete: - # Concrete versions used in abstract specs from cli. They - # all have idx equal to 0, which is the best possible. In - # any case they will be used due to being set from the cli. - self.declared_versions[dep.name].append(DeclaredVersion( - version=dep.version, - idx=0, - origin=version_provenance.spec - )) - self.possible_versions[dep.name].add(dep.version) + if not dep.versions.concrete: + continue + + known_versions = self.possible_versions[dep.name] + if (not dep.version.is_commit and + any(v.satisfies(dep.version) for v in known_versions)): + # some version we know about satisfies this constraint, so we + # should use that one. e.g, if the user asks for qt@5 and we + # know about qt@5.5. + continue + + # if there is a concrete version on the CLI *that we know nothing + # about*, add it to the known versions. Use idx=0, which is the + # best possible, so they're guaranteed to be used preferentially. + self.declared_versions[dep.name].append(DeclaredVersion( + version=dep.version, + idx=0, + origin=version_provenance.spec + )) + self.possible_versions[dep.name].add(dep.version) def _supported_targets(self, compiler_name, compiler_version, targets): """Get a list of which targets are supported by the compiler. @@ -1405,9 +1442,12 @@ def target_defaults(self, specs): for target in supported: best_targets.add(target.name) self.gen.fact(fn.compiler_supports_target( - compiler.name, compiler.version, target.name)) - self.gen.fact(fn.compiler_supports_target( - compiler.name, compiler.version, uarch.family.name)) + compiler.name, compiler.version, target.name + )) + + self.gen.fact(fn.compiler_supports_target( + compiler.name, compiler.version, uarch.family.name + )) # add any targets explicitly mentioned in specs for spec in specs: @@ -1536,18 +1576,12 @@ def versions_for(v): def define_compiler_version_constraints(self): compiler_list = spack.compilers.all_compiler_specs() compiler_list = list(sorted(set(compiler_list))) - - for pkg_name, cspec in self.compiler_version_constraints: + for constraint in sorted(self.compiler_version_constraints): for compiler in compiler_list: - if compiler.satisfies(cspec): - self.gen.fact( - fn.node_compiler_version_satisfies( - pkg_name, - cspec.name, - cspec.versions, - compiler.version - ) - ) + if compiler.satisfies(constraint): + self.gen.fact(fn.compiler_version_satisfies( + constraint.name, constraint.versions, compiler.version + )) self.gen.newline() def define_target_constraints(self): @@ -1572,8 +1606,7 @@ def _all_targets_satisfiying(single_constraint): return allowed_targets cache = {} - for spec_name, target_constraint in sorted(self.target_constraints): - + for target_constraint in sorted(self.target_constraints): # Construct the list of allowed targets for this constraint allowed_targets = [] for single_constraint in str(target_constraint).split(','): @@ -1584,11 +1617,7 @@ def _all_targets_satisfiying(single_constraint): allowed_targets.extend(cache[single_constraint]) for target in allowed_targets: - self.gen.fact( - fn.node_target_satisfies( - spec_name, target_constraint, target - ) - ) + self.gen.fact(fn.target_satisfies(target_constraint, target)) self.gen.newline() def define_variant_values(self): @@ -1599,8 +1628,9 @@ def define_variant_values(self): """ # Tell the concretizer about possible values from specs we saw in - # spec_clauses() - for pkg, variant, value in sorted(self.variant_values_from_specs): + # spec_clauses(). We might want to order these facts by pkg and name + # if we are debugging. + for pkg, variant, value in self.variant_values_from_specs: self.gen.fact(fn.variant_possible_value(pkg, variant, value)) def _facts_from_concrete_spec(self, spec, possible): @@ -1652,7 +1682,7 @@ def define_installed_packages(self, specs, possible): # TODO: (or any mirror really) doesn't have binaries. pass - def setup(self, driver, specs, tests=False, reuse=False): + def setup(self, driver, specs): """Generate an ASP program with relevant constraints for specs. This calls methods on the solve driver to set up the problem with @@ -1699,7 +1729,7 @@ def setup(self, driver, specs, tests=False, reuse=False): self.gen.h1("Concrete input spec definitions") self.define_concrete_input_specs(specs, possible) - if reuse: + if self.reuse: self.gen.h1("Installed packages") self.gen.fact(fn.optimize_for_reuse()) self.gen.newline() @@ -1723,7 +1753,7 @@ def setup(self, driver, specs, tests=False, reuse=False): self.gen.h1('Package Constraints') for pkg in sorted(pkgs): self.gen.h2('Package rules: %s' % pkg) - self.pkg_rules(pkg, tests=tests) + self.pkg_rules(pkg, tests=self.tests) self.gen.h2('Package preferences: %s' % pkg) self.preferred_variants(pkg) self.preferred_targets(pkg) @@ -1878,12 +1908,18 @@ def external_spec_selected(self, pkg, idx): ) def depends_on(self, pkg, dep, type): - dependency = self._specs[pkg]._dependencies.get(dep) - if not dependency: - self._specs[pkg]._add_dependency( - self._specs[dep], (type,)) + dependencies = self._specs[pkg].edges_to_dependencies(name=dep) + + # TODO: assertion to be removed when cross-compilation is handled correctly + msg = ("Current solver does not handle multiple dependency edges " + "of the same name") + assert len(dependencies) < 2, msg + + if not dependencies: + self._specs[pkg].add_dependency_edge(self._specs[dep], (type,)) else: - dependency.add_type(type) + # TODO: This assumes that each solve unifies dependencies + dependencies[0].add_type(type) def reorder_flags(self): """Order compiler flags on specs in predefined order. @@ -2026,33 +2062,64 @@ def _develop_specs_from_env(spec, env): spec.constrain(dev_info['spec']) -# -# These are handwritten parts for the Spack ASP model. -# -def solve(specs, dump=(), models=0, timers=False, stats=False, tests=False, - reuse=False): - """Solve for a stable model of specs. - - Arguments: - specs (list): list of Specs to solve. - dump (tuple): what to dump - models (int): number of models to search (default: 0) +class Solver(object): + """This is the main external interface class for solving. + + It manages solver configuration and preferences in once place. It sets up the solve + and passes the setup method to the driver, as well. + + Properties of interest: + + ``reuse (bool)`` + Whether to try to reuse existing installs/binaries + """ - driver = PyclingoDriver() - if "asp" in dump: - driver.out = sys.stdout - - # Check upfront that the variants are admissible - for root in specs: - for s in root.traverse(): - if s.virtual: - continue - spack.spec.Spec.ensure_valid_variants(s) + def __init__(self): + self.driver = PyclingoDriver() - setup = SpackSolverSetup() - return driver.solve( - setup, specs, dump, models, timers, stats, tests, reuse - ) + # These properties are settable via spack configuration, and overridable + # by setting them directly as properties. + self.reuse = spack.config.get("concretizer:reuse", False) + + def solve( + self, + specs, + out=None, + models=0, + timers=False, + stats=False, + tests=False, + setup_only=False, + ): + """ + Arguments: + specs (list): List of ``Spec`` objects to solve for. + out: Optionally write the generate ASP program to a file-like object. + models (int): Number of models to search (default: 0 for unlimited). + timers (bool): Print out coarse fimers for different solve phases. + stats (bool): Print out detailed stats from clingo. + tests (bool or tuple): If True, concretize test dependencies for all packages. + If a tuple of package names, concretize test dependencies for named + packages (defaults to False: do not concretize test dependencies). + setup_only (bool): if True, stop after setup and don't solve (default False). + """ + # Check upfront that the variants are admissible + for root in specs: + for s in root.traverse(): + if s.virtual: + continue + spack.spec.Spec.ensure_valid_variants(s) + + setup = SpackSolverSetup(reuse=self.reuse, tests=tests) + return self.driver.solve( + setup, + specs, + nmodels=models, + timers=timers, + stats=stats, + out=out, + setup_only=setup_only, + ) class UnsatisfiableSpecError(spack.error.UnsatisfiableSpecError): diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index f4c15397e2be04..13902d08927c44 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -15,7 +15,7 @@ :- not 1 { version(Package, _) } 1, node(Package). % each node must have a single platform, os and target -:- not 1 { node_platform(Package, _) } 1, node(Package). +:- not 1 { node_platform(Package, _) } 1, node(Package), error("A node must have exactly one platform"). :- not 1 { node_os(Package, _) } 1, node(Package). :- not 1 { node_target(Package, _) } 1, node(Package). @@ -34,7 +34,7 @@ version_declared(Package, Version, Weight) :- version_declared(Package, Version, % We can't emit the same version **with the same weight** from two different sources :- version_declared(Package, Version, Weight, Origin1), version_declared(Package, Version, Weight, Origin2), - Origin1 != Origin2, + Origin1 < Origin2, error("Internal error: two versions with identical weights"). % versions are declared w/priority -- declared with priority implies declared @@ -450,7 +450,7 @@ variant_set(Package, Variant) :- variant_set(Package, Variant, _). variant_value(Package, Variant, Value2), variant_value_from_disjoint_sets(Package, Variant, Value1, Set1), variant_value_from_disjoint_sets(Package, Variant, Value2, Set2), - Set1 != Set2, + Set1 < Set2, build(Package), error("Variant values selected from multiple disjoint sets"). @@ -546,9 +546,6 @@ variant_single_value(Package, "dev_path") % Platform semantics %----------------------------------------------------------------------------- -% one platform per node -:- M = #count { Platform : node_platform(Package, Platform) }, M !=1, node(Package), error("A node must have exactly one platform"). - % if no platform is set, fall back to the default node_platform(Package, Platform) :- node(Package), @@ -614,15 +611,21 @@ node_os(Package, OS) :- node_os_set(Package, OS), node(Package). %----------------------------------------------------------------------------- % Target semantics %----------------------------------------------------------------------------- -% one target per node -- optimization will pick the "best" one + +% Each node has only one target chosen among the known targets 1 { node_target(Package, Target) : target(Target) } 1 :- node(Package), error("Each node must have exactly one target"). -% node_target_satisfies semantics -1 { node_target(Package, Target) : node_target_satisfies(Package, Constraint, Target) } 1 +% If a node must satisfy a target constraint the choice is reduced among the targets +% that satisfy that constraint +1 { node_target(Package, Target) : target_satisfies(Constraint, Target) } 1 :- node_target_satisfies(Package, Constraint), error("Each node must have exactly one target"). + +% If a node has a target and the target satisfies a constraint, then the target +% associated with the node satisfies the same constraint node_target_satisfies(Package, Constraint) - :- node_target(Package, Target), node_target_satisfies(Package, Constraint, Target). -#defined node_target_satisfies/3. + :- node_target(Package, Target), target_satisfies(Constraint, Target). + +#defined target_satisfies/2. % The target weight is either the default target weight % or a more specific per-package weight if set @@ -702,20 +705,21 @@ node_compiler(Package, Compiler) :- node_compiler_version(Package, Compiler, _). Compiler1 != Compiler2, error("Internal error: mismatch between selected compiler and compiler version"). -% define node_compiler_version_satisfies/3 from node_compiler_version_satisfies/4 -% version_satisfies implies that exactly one of the satisfying versions -% is the package's version, and vice versa. +% If the compiler of a node must satisfy a constraint, then its version +% must be chosen among the ones that satisfy said constraint 1 { node_compiler_version(Package, Compiler, Version) - : node_compiler_version_satisfies(Package, Compiler, Constraint, Version) } 1 :- + : compiler_version_satisfies(Compiler, Constraint, Version) } 1 :- node_compiler_version_satisfies(Package, Compiler, Constraint), error("Internal error: node compiler version mismatch"). +% If the node is associated with a compiler and the compiler satisfy a constraint, then +% the compiler associated with the node satisfy the same constraint node_compiler_version_satisfies(Package, Compiler, Constraint) :- node_compiler_version(Package, Compiler, Version), - node_compiler_version_satisfies(Package, Compiler, Constraint, Version), + compiler_version_satisfies(Compiler, Constraint, Version), build(Package). -#defined node_compiler_version_satisfies/4. +#defined compiler_version_satisfies/3. % If the compiler version was set from the command line, % respect it verbatim @@ -1017,3 +1021,14 @@ opt_criterion(1, "non-preferred targets"). : node_target_weight(Package, Weight), build_priority(Package, Priority) }. + +%----------------- +% Domain heuristic +%----------------- +#heuristic version(Package, Version) : version_declared(Package, Version, 0), node(Package). [10, true] +#heuristic version_weight(Package, 0) : version_declared(Package, Version, 0), node(Package). [10, true] +#heuristic node_target(Package, Target) : default_target_weight(Target, 0), node(Package). [10, true] +#heuristic node_target_weight(Package, 0) : node(Package). [10, true] +#heuristic variant_value(Package, Variant, Value) : variant_default_value(Package, Variant, Value), node(Package). [10, true] +#heuristic provider(Package, Virtual) : possible_provider_weight(Package, Virtual, 0, _), virtual_node(Virtual). [10, true] +#heuristic node(Package) : possible_provider_weight(Package, Virtual, 0, _), virtual_node(Virtual). [10, true] diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 8b50b1fca38d4b..b4c778ee763ae6 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -81,6 +81,7 @@ import operator import os import re +import sys import warnings import ruamel.yaml as yaml @@ -110,6 +111,7 @@ import spack.util.executable import spack.util.hash import spack.util.module_cmd as md +import spack.util.path as pth import spack.util.prefix import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml @@ -145,6 +147,7 @@ 'SpecDeprecatedError', ] +is_windows = sys.platform == 'win32' #: Valid pattern for an identifier in Spack identifier_re = r'\w[\w-]*' @@ -667,7 +670,7 @@ class DependencySpec(object): def __init__(self, parent, spec, deptypes): self.parent = parent self.spec = spec - self.deptypes = tuple(sorted(set(deptypes))) + self.deptypes = dp.canonical_deptype(deptypes) def update_deptypes(self, deptypes): deptypes = set(deptypes) @@ -696,6 +699,9 @@ def __str__(self): self.deptypes, self.spec.name if self.spec else None) + def canonical(self): + return self.parent.dag_hash(), self.spec.dag_hash(), self.deptypes + _valid_compiler_flags = [ 'cflags', 'cxxflags', 'fflags', 'ldflags', 'ldlibs', 'cppflags'] @@ -766,13 +772,119 @@ def __str__(self): for key in sorted_keys) + cond_symbol -class DependencyMap(lang.HashableMap): - """Each spec has a DependencyMap containing specs for its dependencies. - The DependencyMap is keyed by name. """ +def _sort_by_dep_types(dspec): + # Use negation since False < True for sorting + return tuple(t not in dspec.deptypes for t in ("link", "run", "build", "test")) + + +#: Enum for edge directions +EdgeDirection = lang.enum(parent=0, child=1) + + +@lang.lazy_lexicographic_ordering +class _EdgeMap(Mapping): + """Represent a collection of edges (DependencySpec objects) in the DAG. + + Objects of this class are used in Specs to track edges that are + outgoing towards direct dependencies, or edges that are incoming + from direct dependents. + + Edges are stored in a dictionary and keyed by package name. + """ + 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 + + #: 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): + return self.edges[key] + + def __iter__(self): + return iter(self.edges) + + def __len__(self): + return len(self.edges) + + def add(self, edge): + """Adds a new edge to this object. + + Args: + edge (DependencySpec): edge to be added + """ + key = edge.spec.name if self.store_by_child else edge.parent.name + current_list = self.edges.setdefault(key, []) + current_list.append(edge) + current_list.sort(key=_sort_by_dep_types) def __str__(self): return "{deps: %s}" % ', '.join(str(d) for d in sorted(self.values())) + def _cmp_iter(self): + for item in sorted(itertools.chain.from_iterable(self.edges.values())): + yield item + + def copy(self): + """Copies this object and returns a clone""" + clone = type(self)() + clone.store_by_child = self.store_by_child + + # Copy everything from this dict into it. + for dspec in itertools.chain.from_iterable(self.values()): + clone.add(dspec.copy()) + + return clone + + def select(self, parent=None, child=None, deptypes=dp.all_deptypes): + """Select a list of edges and return them. + + If an edge: + - Has *any* of the dependency types passed as argument, + - Matches the parent and/or child name, if passed + then it is selected. + + The deptypes argument needs to be canonical, 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 + deptypes (tuple): allowed dependency types in canonical form + + Returns: + List of DependencySpec objects + """ + if not deptypes: + return [] + + # Start from all the edges we store + selected = (d for d in itertools.chain.from_iterable(self.values())) + + # Filter by parent name + if parent: + selected = (d for d in selected if d.parent.name == parent) + + # Filter by child name + if child: + selected = (d for d in selected if d.spec.name == child) + + # Filter by allowed dependency types + if deptypes: + selected = ( + dep for dep in selected + if not dep.deptypes or + any(d in deptypes for d in dep.deptypes) + ) + + return list(selected) + + def clear(self): + self.edges.clear() + def _command_default_handler(descriptor, spec, cls): """Default handler when looking for the 'command' attribute. @@ -1016,7 +1128,9 @@ def __init__(self, spec, name, query_parameters): super(SpecBuildInterface, self).__init__(spec) # Adding new attributes goes after super() call since the ObjectWrapper # resets __dict__ to behave like the passed object - self.token = spec, name, query_parameters + original_spec = getattr(spec, 'wrapped_obj', spec) + self.wrapped_obj = original_spec + self.token = original_spec, name, query_parameters is_virtual = spack.repo.path.is_virtual(name) self.last_query = QueryState( name=name, @@ -1027,6 +1141,9 @@ def __init__(self, spec, name, query_parameters): def __reduce__(self): return SpecBuildInterface, self.token + def copy(self, *args, **kwargs): + return self.wrapped_obj.copy(*args, **kwargs) + @lang.lazy_lexicographic_ordering(set_hash=False) class Spec(object): @@ -1070,8 +1187,8 @@ def __init__(self, spec_like=None, normal=False, self.architecture = None self.compiler = None self.compiler_flags = FlagMap(self) - self._dependents = DependencyMap() - self._dependencies = DependencyMap() + self._dependents = _EdgeMap(store_by=EdgeDirection.parent) + self._dependencies = _EdgeMap(store_by=EdgeDirection.child) self.namespace = None self._hash = None @@ -1143,34 +1260,112 @@ def _format_module_list(modules): def external(self): return bool(self.external_path) or bool(self.external_modules) - def get_dependency(self, name): - dep = self._dependencies.get(name) - if dep is not None: - return dep - raise InvalidDependencyError(self.name, name) + def clear_dependencies(self): + """Trim the dependencies of this spec.""" + self._dependencies.clear() + + def clear_edges(self): + """Trim the dependencies and dependents of this spec.""" + self._dependencies.clear() + self._dependents.clear() + + def detach(self, deptype='all'): + """Remove any reference that dependencies have of this node. - def _find_deps(self, where, deptype): + Args: + deptype (str or tuple): dependency types tracked by the + current spec + """ + key = self.dag_hash() + # Go through the dependencies + for dep in self.dependencies(deptype=deptype): + # Remove the spec from dependents + if self.name in dep._dependents: + dependents_copy = dep._dependents.edges[self.name] + del dep._dependents.edges[self.name] + for edge in dependents_copy: + if edge.parent.dag_hash() == key: + continue + dep._dependents.add(edge) + + def _get_dependency(self, name): + # WARNING: This function is an implementation detail of the + # WARNING: original concretizer. Since with that greedy + # WARNING: algorithm we don't allow multiple nodes from + # WARNING: the same package in a DAG, here we hard-code + # WARNING: using index 0 i.e. we assume that we have only + # WARNING: one edge from package "name" + deps = self.edges_to_dependencies(name=name) + if len(deps) != 1: + err_msg = 'expected only 1 "{0}" dependency, but got {1}' + raise spack.error.SpecError(err_msg.format(name, len(deps))) + return deps[0] + + def edges_from_dependents(self, name=None, deptype='all'): + """Return a list of edges connecting this node in the DAG + to parents. + + Args: + name (str): filter dependents by package name + deptype (str or tuple): allowed dependency types + """ + deptype = dp.canonical_deptype(deptype) + return [ + d for d in + self._dependents.select(parent=name, deptypes=deptype) + ] + + def edges_to_dependencies(self, name=None, deptype='all'): + """Return a list of edges connecting this node in the DAG + to children. + + Args: + name (str): filter dependencies by package name + deptype (str or tuple): allowed dependency types + """ deptype = dp.canonical_deptype(deptype) + return [ + d for d in + self._dependencies.select(child=name, deptypes=deptype) + ] - return [dep for dep in where.values() - if deptype and (not dep.deptypes or - any(d in deptype for d in dep.deptypes))] + def dependencies(self, name=None, deptype='all'): + """Return a list of direct dependencies (nodes in the DAG). - def dependencies(self, deptype='all'): - return [d.spec - for d in self._find_deps(self._dependencies, deptype)] + Args: + name (str): filter dependencies by package name + deptype (str or tuple): allowed dependency types + """ + return [d.spec for d in self.edges_to_dependencies(name, deptype=deptype)] + + def dependents(self, name=None, deptype='all'): + """Return a list of direct dependents (nodes in the DAG). - def dependents(self, deptype='all'): - return [d.parent - for d in self._find_deps(self._dependents, deptype)] + Args: + name (str): filter dependents by package name + deptype (str or tuple): allowed dependency types + """ + return [d.parent for d in self.edges_from_dependents(name, deptype=deptype)] - def dependencies_dict(self, deptype='all'): - return dict((d.spec.name, d) - for d in self._find_deps(self._dependencies, deptype)) + def _dependencies_dict(self, deptype='all'): + """Return a dictionary, keyed by package name, of the direct + dependencies. - def dependents_dict(self, deptype='all'): - return dict((d.parent.name, d) - for d in self._find_deps(self._dependents, deptype)) + Each value in the dictionary is a list of edges. + + Args: + deptype: allowed dependency types + """ + _sort_fn = lambda x: (x.spec.name,) + _sort_by_dep_types(x) + _group_fn = lambda x: x.spec.name + deptype = dp.canonical_deptype(deptype) + selected_edges = self._dependencies.select(deptypes=deptype) + result = {} + for key, group in itertools.groupby( + sorted(selected_edges, key=_sort_fn), key=_group_fn + ): + result[key] = list(group) + return result # # Private routines here are called by the parser when building a spec. @@ -1248,18 +1443,43 @@ def _add_dependency(self, spec, deptypes): raise DuplicateDependencyError( "Cannot depend on '%s' twice" % spec) - # create an edge and add to parent and child - dspec = DependencySpec(self, spec, deptypes) - self._dependencies[spec.name] = dspec - spec._dependents[self.name] = dspec + self.add_dependency_edge(spec, deptypes) + + def add_dependency_edge(self, dependency_spec, deptype): + """Add a dependency edge to this spec. + + Args: + dependency_spec (Spec): spec of the dependency + deptype (str or tuple): dependency types + """ + deptype = dp.canonical_deptype(deptype) + + # Check if we need to update edges that are already present + selected = self._dependencies.select(child=dependency_spec.name) + for edge in selected: + if any(d in edge.deptypes for d in deptype): + msg = ('cannot add a dependency on "{0.spec}" of {1} type ' + 'when the "{0.parent}" has the edge {0!s} already') + raise spack.error.SpecError(msg.format(edge, deptype)) + + for edge in selected: + if id(dependency_spec) == id(edge.spec): + # If we are here, it means the edge object was previously added to + # both the parent and the child. When we update this object they'll + # both see the deptype modification. + edge.add_type(deptype) + return + + edge = DependencySpec(self, dependency_spec, deptype) + self._dependencies.add(edge) + dependency_spec._dependents.add(edge) def _add_default_platform(self): """If a spec has an os or a target and no platform, give it - the default platform. - - This is private because it is used by the parser -- it's not - expected to be used outside of ``spec.py``. + the default platform. + This is private because it is used by the parser -- it's not + expected to be used outside of ``spec.py``. """ arch = self.architecture if arch and not arch.platform and (arch.os or arch.target): @@ -1280,10 +1500,12 @@ def root(self): Spack specs have a single root (the package being installed). """ + # FIXME: In the case of multiple parents this property does not + # FIXME: make sense. Should we revisit the semantics? if not self._dependents: return self - - return next(iter(self._dependents.values())).parent.root + edges_by_package = next(iter(self._dependents.values())) + return edges_by_package[0].parent.root @property def package(self): @@ -1448,21 +1670,24 @@ def return_val(dspec): # This code determines direction and yields the children/parents if direction == 'children': - where = self._dependencies + edges = self.edges_to_dependencies + key_fn = lambda dspec: dspec.spec.name succ = lambda dspec: dspec.spec elif direction == 'parents': - where = self._dependents + edges = self.edges_from_dependents + key_fn = lambda dspec: dspec.parent.name succ = lambda dspec: dspec.parent else: raise ValueError('Invalid traversal direction: %s' % direction) - for name, dspec in sorted(where.items()): + for dspec in sorted(edges(), key=key_fn): dt = dspec.deptypes if dt and not any(d in deptype for d in dt): continue for child in succ(dspec).traverse_edges( - visited, d + 1, deptype, dspec, **kwargs): + visited, d + 1, deptype, dspec, **kwargs + ): yield child # Postorder traversal yields after successors @@ -1500,7 +1725,7 @@ def prefix(self): @prefix.setter def prefix(self, value): - self._prefix = spack.util.prefix.Prefix(value) + self._prefix = spack.util.prefix.Prefix(pth.convert_to_platform_path(value)) def _spec_hash(self, hash): """Utility method for computing different types of Spec hashes. @@ -1684,17 +1909,17 @@ def to_node_dict(self, hash=ht.dag_hash): d['package_hash'] = package_hash # Note: Relies on sorting dict by keys later in algorithm. - deps = self.dependencies_dict(deptype=hash.deptype) - + deps = self._dependencies_dict(deptype=hash.deptype) if deps: deps_list = [] - for name, dspec in sorted(deps.items()): + for name, edges_for_name in sorted(deps.items()): name_tuple = ('name', name) - hash_tuple = (hash.name, dspec.spec._cached_hash(hash)) - type_tuple = ('type', sorted(str(s) for s in dspec.deptypes)) - deps_list.append(syaml.syaml_dict([name_tuple, - hash_tuple, - type_tuple])) + for dspec in edges_for_name: + hash_tuple = (hash.name, dspec.spec._cached_hash(hash)) + type_tuple = ('type', sorted(str(s) for s in dspec.deptypes)) + deps_list.append(syaml.syaml_dict( + [name_tuple, hash_tuple, type_tuple] + )) d['dependencies'] = deps_list # Name is included in case this is replacing a virtual. @@ -2257,8 +2482,14 @@ def _concretize_helper(self, concretizer, presets=None, visited=None): changed = False # Concretize deps first -- this is a bottom-up process. - for name in sorted(self._dependencies.keys()): - changed |= self._dependencies[name].spec._concretize_helper( + for name in sorted(self._dependencies): + # WARNING: This function is an implementation detail of the + # WARNING: original concretizer. Since with that greedy + # WARNING: algorithm we don't allow multiple nodes from + # WARNING: the same package in a DAG, here we hard-code + # WARNING: using index 0 i.e. we assume that we have only + # WARNING: one edge from package "name" + changed |= self._dependencies[name][0].spec._concretize_helper( concretizer, presets, visited ) @@ -2285,14 +2516,14 @@ def _concretize_helper(self, concretizer, presets=None, visited=None): def _replace_with(self, concrete): """Replace this virtual spec with a concrete spec.""" - assert(self.virtual) - for name, dep_spec in self._dependents.items(): + assert self.virtual + for dep_spec in itertools.chain.from_iterable(self._dependents.values()): dependent = dep_spec.parent deptypes = dep_spec.deptypes # remove self from all dependents, unless it is already removed if self.name in dependent._dependencies: - del dependent._dependencies[self.name] + del dependent._dependencies.edges[self.name] # add the replacement, unless it is already a dep of dependent. if concrete.name not in dependent._dependencies: @@ -2363,12 +2594,12 @@ def _expand_virtual_packages(self, concretizer): # If replacement is external then trim the dependencies if replacement.external: - if (spec._dependencies): + if spec._dependencies: for dep in spec.dependencies(): - del dep._dependents[spec.name] + del dep._dependents.edges[spec.name] changed = True - spec._dependencies = DependencyMap() - replacement._dependencies = DependencyMap() + spec.clear_dependencies() + replacement.clear_dependencies() replacement.architecture = self.architecture # TODO: could this and the stuff in _dup be cleaned up? @@ -2605,7 +2836,7 @@ def ensure_no_deprecated(root): msg += " For each package listed, choose another spec\n" raise SpecDeprecatedError(msg) - def _new_concretize(self, tests=False, reuse=False): + def _new_concretize(self, tests=False): import spack.solver.asp if not self.name: @@ -2615,7 +2846,8 @@ def _new_concretize(self, tests=False, reuse=False): if self._concrete: return - result = spack.solver.asp.solve([self], tests=tests, reuse=reuse) + solver = spack.solver.asp.Solver() + result = solver.solve([self], tests=tests) result.raise_if_unsat() # take the best answer @@ -2633,23 +2865,17 @@ def _new_concretize(self, tests=False, reuse=False): self._dup(concretized) self._mark_concrete() - def concretize(self, tests=False, reuse=False): + def concretize(self, tests=False): """Concretize the current spec. Args: tests (bool or list): if False disregard 'test' dependencies, if a list of names activate them for the packages in the list, if True activate 'test' dependencies for all packages. - reuse (bool): if True try to maximize reuse of already installed - specs, if False don't account for installation status. """ if spack.config.get('config:concretizer') == "clingo": - self._new_concretize(tests, reuse=reuse) + self._new_concretize(tests) else: - if reuse: - msg = ('maximizing reuse of installed specs is not ' - 'possible with the original concretizer') - raise spack.error.SpecError(msg) self._old_concretize(tests) def _mark_root_concrete(self, value=True): @@ -2674,7 +2900,7 @@ def _mark_concrete(self, value=True): s.clear_cached_hashes() s._mark_root_concrete(value) - def concretized(self, tests=False, reuse=False): + def concretized(self, tests=False): """This is a non-destructive version of concretize(). First clones, then returns a concrete version of this package @@ -2684,11 +2910,9 @@ def concretized(self, tests=False, reuse=False): tests (bool or list): if False disregard 'test' dependencies, if a list of names activate them for the packages in the list, if True activate 'test' dependencies for all packages. - reuse (bool): if True try to maximize reuse of already installed - specs, if False don't account for installation status. """ clone = self.copy(caches=True) - clone.concretize(tests=tests, reuse=reuse) + clone.concretize(tests=tests) return clone def flat_dependencies(self, **kwargs): @@ -2722,9 +2946,8 @@ def flat_dependencies(self, **kwargs): if not copy: for spec in flat_deps.values(): if not spec.concrete: - spec._dependencies.clear() - spec._dependents.clear() - self._dependencies.clear() + spec.clear_edges() + self.clear_dependencies() return flat_deps @@ -2739,11 +2962,12 @@ def flat_dependencies(self, **kwargs): ) def index(self, deptype='all'): - """Return DependencyMap that points to all the dependencies in this - spec.""" - dm = DependencyMap() + """Return a dictionary that points to all the dependencies in this + spec. + """ + dm = collections.defaultdict(list) for spec in self.traverse(deptype=deptype): - dm[spec.name] = spec + dm[spec.name].append(spec) return dm def _evaluate_dependency_conditions(self, name): @@ -3229,12 +3453,19 @@ def _constrain_dependencies(self, other): for name in self.common_dependencies(other): changed |= self[name].constrain(other[name], deps=False) if name in self._dependencies: - changed |= self._dependencies[name].update_deptypes( - other._dependencies[name].deptypes) + # WARNING: This function is an implementation detail of the + # WARNING: original concretizer. Since with that greedy + # WARNING: algorithm we don't allow multiple nodes from + # WARNING: the same package in a DAG, here we hard-code + # WARNING: using index 0 i.e. we assume that we have only + # WARNING: one edge from package "name" + edges_from_name = self._dependencies[name] + changed |= edges_from_name[0].update_deptypes( + other._dependencies[name][0].deptypes) # Update with additional constraints from other spec for name in other.dep_difference(self): - dep_spec_copy = other.get_dependency(name) + dep_spec_copy = other._get_dependency(name) dep_copy = dep_spec_copy.spec deptypes = dep_spec_copy.deptypes self._add_dependency(dep_copy.copy(), deptypes) @@ -3497,8 +3728,8 @@ def _dup(self, other, deps=True, cleardeps=True, caches=None): else None self.compiler = other.compiler.copy() if other.compiler else None if cleardeps: - self._dependents = DependencyMap() - self._dependencies = DependencyMap() + self._dependents = _EdgeMap(store_by=EdgeDirection.parent) + self._dependencies = _EdgeMap(store_by=EdgeDirection.child) self.compiler_flags = other.compiler_flags.copy() self.compiler_flags.spec = self self.variants = other.variants.copy() @@ -3554,22 +3785,25 @@ def _dup(self, other, deps=True, cleardeps=True, caches=None): return changed def _dup_deps(self, other, deptypes, caches): - new_specs = {self.name: self} - for dspec in other.traverse_edges(cover='edges', - root=False): - if (dspec.deptypes and - not any(d in deptypes for d in dspec.deptypes)): + def spid(spec): + return id(spec) + + new_specs = {spid(other): self} + for edge in other.traverse_edges(cover='edges', root=False): + if edge.deptypes and not any(d in deptypes for d in edge.deptypes): continue - if dspec.parent.name not in new_specs: - new_specs[dspec.parent.name] = dspec.parent.copy( - deps=False, caches=caches) - if dspec.spec.name not in new_specs: - new_specs[dspec.spec.name] = dspec.spec.copy( - deps=False, caches=caches) + if spid(edge.parent) not in new_specs: + new_specs[spid(edge.parent)] = edge.parent.copy( + deps=False, caches=caches + ) + + if spid(edge.spec) not in new_specs: + new_specs[spid(edge.spec)] = edge.spec.copy(deps=False, caches=caches) - new_specs[dspec.parent.name]._add_dependency( - new_specs[dspec.spec.name], dspec.deptypes) + new_specs[spid(edge.parent)].add_dependency_edge( + new_specs[spid(edge.spec)], edge.deptypes + ) def copy(self, deps=True, **kwargs): """Make a copy of this spec. @@ -3686,8 +3920,10 @@ def eq_dag(self, other, deptypes=True, vs=None, vo=None): for name in sorted(self._dependencies)] osorted = [other._dependencies[name] for name in sorted(other._dependencies)] - - for s_dspec, o_dspec in zip(ssorted, osorted): + for s_dspec, o_dspec in zip( + itertools.chain.from_iterable(ssorted), + itertools.chain.from_iterable(osorted) + ): if deptypes and s_dspec.deptypes != o_dspec.deptypes: return False @@ -3731,7 +3967,9 @@ def _cmp_iter(self): yield item def deps(): - for _, dep in sorted(self._dependencies.items()): + for dep in sorted( + itertools.chain.from_iterable(self._dependencies.values()) + ): yield dep.spec.name yield tuple(sorted(dep.deptypes)) yield hash(dep.spec) @@ -4279,7 +4517,7 @@ def tree(self, **kwargs): out = "" for d, dep_spec in self.traverse_edges( - order='pre', cover=cover, depth=True, deptypes=deptypes): + order='pre', cover=cover, depth=True, deptype=deptypes): node = dep_spec.spec if prefix is not None: @@ -4309,7 +4547,8 @@ def tree(self, **kwargs): # when only covering nodes, we merge dependency types # from all dependents before showing them. types = [ - ds.deptypes for ds in node.dependents_dict().values()] + ds.deptypes for ds in node.edges_from_dependents() + ] else: # when covering edges or paths, we show dependency # types only for the edge through which we visited @@ -4380,6 +4619,18 @@ def splice(self, other, transitive): assert other.concrete assert other.name in self + # Check, for the time being, that we don't have DAG with multiple + # specs from the same package + def multiple_specs(root): + counter = collections.Counter([node.name for node in root.traverse()]) + _, max_number = counter.most_common()[0] + return max_number > 1 + + if multiple_specs(self) or multiple_specs(other): + msg = ('Either "{0}" or "{1}" contain multiple specs from the same ' + 'package, which cannot be handled by splicing at the moment') + raise ValueError(msg.format(self, other)) + # Multiple unique specs with the same name will collide, so the # _dependents of these specs should not be trusted. # Variants may also be ignored here for now... @@ -4405,19 +4656,22 @@ def splice(self, other, transitive): nodes.update(self_nodes) for name in nodes: + # TODO: check if splice semantics is respected if name in self_nodes: - dependencies = self[name]._dependencies - for dep in dependencies: - nodes[name]._add_dependency(nodes[dep], - dependencies[dep].deptypes) - if any(dep not in self_nodes for dep in dependencies): + for edge in self[name].edges_to_dependencies(): + nodes[name].add_dependency_edge( + nodes[edge.spec.name], edge.deptypes + ) + if any(dep not in self_nodes + for dep in self[name]._dependencies): nodes[name].build_spec = self[name].build_spec else: - dependencies = other[name]._dependencies - for dep in dependencies: - nodes[name]._add_dependency(nodes[dep], - dependencies[dep].deptypes) - if any(dep not in other_nodes for dep in dependencies): + for edge in other[name].edges_to_dependencies(): + nodes[name].add_dependency_edge( + nodes[edge.spec.name], edge.deptypes + ) + if any(dep not in other_nodes + for dep in other[name]._dependencies): nodes[name].build_spec = other[name].build_spec ret = nodes[self.name] @@ -4498,7 +4752,7 @@ def merge_abstract_anonymous_specs(*abstract_specs): # Update with additional constraints from other spec for name in current_spec_constraint.dep_difference(merged_spec): - edge = current_spec_constraint.get_dependency(name) + edge = next(iter(current_spec_constraint.edges_to_dependencies(name))) merged_spec._add_dependency(edge.spec.copy(), edge.deptypes) return merged_spec @@ -4623,6 +4877,10 @@ class SpecLexer(spack.parse.Lexer): """Parses tokens that make up spack specs.""" def __init__(self): + # Spec strings require posix-style paths on Windows + # because the result is later passed to shlex + filename_reg = r'[/\w.-]*/[/\w/-]+\.(yaml|json)[^\b]*' if not is_windows\ + else r'([A-Za-z]:)*?[/\w.-]*/[/\w/-]+\.(yaml|json)[^\b]*' super(SpecLexer, self).__init__([ (r'\^', lambda scanner, val: self.token(DEP, val)), (r'\@', lambda scanner, val: self.token(AT, val)), @@ -4636,7 +4894,7 @@ def __init__(self): # Filenames match before identifiers, so no initial filename # component is parsed as a spec (e.g., in subdir/spec.yaml/json) - (r'[/\w.-]*/[/\w/-]+\.(yaml|json)[^\b]*', + (filename_reg, lambda scanner, v: self.token(FILE, v)), # Hash match after filename. No valid filename can be a hash diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 2db705f8fac5ac..f28930539224e8 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -22,6 +22,8 @@ import llnl.util.tty as tty from llnl.util.filesystem import ( can_access, + get_owner_uid, + getuid, install, install_tree, mkdirp, @@ -50,12 +52,13 @@ def create_stage_root(path): # type: (str) -> None + """Create the stage root directory and ensure appropriate access perms.""" - assert path.startswith(os.path.sep) and len(path.strip()) > 1 + assert os.path.isabs(path) and len(path.strip()) > 1 err_msg = 'Cannot create stage root {0}: Access to {1} is denied' - user_uid = os.getuid() + user_uid = getuid() # Obtain lists of ancestor and descendant paths of the $user node, if any. group_paths, user_node, user_paths = partition_path(path, @@ -88,21 +91,10 @@ def create_stage_root(path): for p in user_paths: # Ensure access controls of subdirs from `$user` on down are # restricted to the user. - if not os.path.exists(p): - mkdirp(p, mode=stat.S_IRWXU) - - p_stat = os.stat(p) - if p_stat.st_mode & stat.S_IRWXU != stat.S_IRWXU: - tty.error("Expected {0} to support mode {1}, but it is {2}" - .format(p, stat.S_IRWXU, p_stat.st_mode)) - - raise OSError(errno.EACCES, err_msg.format(path, p)) - else: - p_stat = os.stat(p) - - if user_uid != p_stat.st_uid: + owner_uid = get_owner_uid(p) + if user_uid != owner_uid: tty.warn("Expected user {0} to own {1}, but it is owned by {2}" - .format(user_uid, p, p_stat.st_uid)) + .format(user_uid, p, owner_uid)) spack_src_subdir = os.path.join(path, _source_path_subdir) # When staging into a user-specified directory with `spack stage -p `, we need @@ -831,7 +823,10 @@ def purge(): for stage_dir in os.listdir(root): if stage_dir.startswith(stage_prefix) or stage_dir == '.lock': stage_path = os.path.join(root, stage_dir) - remove_linked_tree(stage_path) + if os.path.isdir(stage_path): + remove_linked_tree(stage_path) + else: + os.remove(stage_path) def get_checksums_for_versions(url_dict, name, **kwargs): diff --git a/lib/spack/spack/subprocess_context.py b/lib/spack/spack/subprocess_context.py index af197b4a3cfd9d..4251516f82d3d6 100644 --- a/lib/spack/spack/subprocess_context.py +++ b/lib/spack/spack/subprocess_context.py @@ -27,7 +27,8 @@ import spack.repo import spack.store -_serialize = sys.version_info >= (3, 8) and sys.platform == 'darwin' +_serialize = sys.platform == 'win32' or (sys.version_info >= (3, 8) + and sys.platform == 'darwin') patches = None diff --git a/lib/spack/spack/target.py b/lib/spack/spack/target.py index e4e8217a368296..c7a166b9f8c897 100644 --- a/lib/spack/spack/target.py +++ b/lib/spack/spack/target.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import functools -import warnings import six @@ -134,7 +133,7 @@ def optimization_flags(self, compiler): msg = ('microarchitecture specific optimizations are not ' 'supported yet on mixed compiler toolchains [check' ' {0.name}@{0.version} for further details]') - warnings.warn(msg.format(compiler)) + tty.debug(msg.format(compiler)) return '' # Try to check if the current compiler comes with a version number or diff --git a/lib/spack/spack/test/architecture.py b/lib/spack/spack/test/architecture.py index cc70bb2fb9118b..18a8dbe1b65991 100644 --- a/lib/spack/spack/test/architecture.py +++ b/lib/spack/spack/test/architecture.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os import platform +import sys import pytest @@ -25,6 +26,8 @@ def current_host_platform(): current_platform = spack.platforms.Linux() elif 'Darwin' in platform.system(): current_platform = spack.platforms.Darwin() + elif 'Windows' in platform.system(): + current_platform = spack.platforms.Windows() return current_platform @@ -56,6 +59,8 @@ def test_platform(current_host_platform): assert str(detected_platform) == str(current_host_platform) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_user_input_combination(config, target_str, os_str): """Test for all the valid user input combinations that both the target and the operating system match. diff --git a/lib/spack/spack/test/audit.py b/lib/spack/spack/test/audit.py index 207e98a7e88a1b..6ad986643e1b74 100644 --- a/lib/spack/spack/test/audit.py +++ b/lib/spack/spack/test/audit.py @@ -8,27 +8,30 @@ import spack.config -@pytest.mark.parametrize('packages,failing_check', [ +@pytest.mark.parametrize('packages,expected_error', [ # A non existing variant is used in a conflict directive (['wrong-variant-in-conflicts'], 'PKG-DIRECTIVES'), # The package declares a non-existing dependency (['missing-dependency'], 'PKG-DIRECTIVES'), # The package use a non existing variant in a depends_on directive (['wrong-variant-in-depends-on'], 'PKG-DIRECTIVES'), + # This package has a GitHub patch URL without full_index=1 + (['invalid-github-patch-url'], 'PKG-DIRECTIVES'), # This package has no issues - (['mpileaks'], None) + (['mpileaks'], None), + # This package has a conflict with a trigger which cannot constrain the constraint + # Should not raise an error + (['unconstrainable-conflict'], None), ]) -def test_package_audits(packages, failing_check, mock_packages): +def test_package_audits(packages, expected_error, mock_packages): reports = spack.audit.run_group('packages', pkgs=packages) - for check, errors in reports: - # Check that we have errors only if there is an expected failure - # and that the tag matches our expectations - if bool(failing_check): - assert check == failing_check - assert errors - else: - assert not errors + # Check that errors were reported only for the expected failure + actual_errors = [check for check, errors in reports if errors] + if expected_error: + assert [expected_error] == actual_errors + else: + assert not actual_errors # Data used in the test below to audit the double definition of a compiler diff --git a/lib/spack/spack/test/bindist.py b/lib/spack/spack/test/bindist.py index e45d2eb07d2b20..b7d970c02a5749 100644 --- a/lib/spack/spack/test/bindist.py +++ b/lib/spack/spack/test/bindist.py @@ -27,6 +27,9 @@ from spack.paths import test_path from spack.spec import Spec +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + mirror_cmd = spack.main.SpackCommand('mirror') install_cmd = spack.main.SpackCommand('install') uninstall_cmd = spack.main.SpackCommand('uninstall') diff --git a/lib/spack/spack/test/bootstrap.py b/lib/spack/spack/test/bootstrap.py index 719b1a6a5f4912..8c56cd1cf5d6ee 100644 --- a/lib/spack/spack/test/bootstrap.py +++ b/lib/spack/spack/test/bootstrap.py @@ -2,6 +2,9 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os +import sys + import pytest import spack.bootstrap @@ -103,16 +106,8 @@ def test_bootstrap_search_for_compilers_with_environment_active( @pytest.mark.regression('26189') def test_config_yaml_is_preserved_during_bootstrap(mutable_config): - # Mock the command line scope expected_dir = '/tmp/test' - internal_scope = spack.config.InternalConfigScope( - name='command_line', data={ - 'config': { - 'test_stage': expected_dir - } - } - ) - spack.config.config.push_scope(internal_scope) + spack.config.set("config:test_stage", expected_dir, scope="command_line") assert spack.config.get('config:test_stage') == expected_dir with spack.bootstrap.ensure_bootstrap_configuration(): @@ -139,7 +134,7 @@ def test_custom_store_in_environment(mutable_config, tmpdir): # Don't trigger evaluation here with spack.bootstrap.ensure_bootstrap_configuration(): pass - assert str(spack.store.root) == '/tmp/store' + assert str(spack.store.root) == os.sep + os.path.join('tmp', 'store') def test_nested_use_of_context_manager(mutable_config): @@ -152,6 +147,8 @@ def test_nested_use_of_context_manager(mutable_config): assert spack.config.config == user_config +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('expected_missing', [False, True]) def test_status_function_find_files( mutable_config, mock_executable, tmpdir, monkeypatch, expected_missing diff --git a/lib/spack/spack/test/build_distribution.py b/lib/spack/spack/test/build_distribution.py index 765063258abcdd..c5132a95588eb7 100644 --- a/lib/spack/spack/test/build_distribution.py +++ b/lib/spack/spack/test/build_distribution.py @@ -5,6 +5,7 @@ import os import os.path +import sys import pytest @@ -13,6 +14,18 @@ install = spack.main.SpackCommand('install') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + + +def _validate_url(url): + return + + +@pytest.fixture(autouse=True) +def url_check(monkeypatch): + monkeypatch.setattr(spack.util.url, 'require_url_format', _validate_url) + def test_build_tarball_overwrite( install_mockery, mock_fetch, monkeypatch, tmpdir): diff --git a/lib/spack/spack/test/build_environment.py b/lib/spack/spack/test/build_environment.py index 7cc63a42c01c25..a816ac4ba9575e 100644 --- a/lib/spack/spack/test/build_environment.py +++ b/lib/spack/spack/test/build_environment.py @@ -5,6 +5,8 @@ import os import platform +import posixpath +import sys import pytest @@ -22,6 +24,18 @@ from spack.paths import build_env_path from spack.util.environment import EnvironmentModifications from spack.util.executable import Executable +from spack.util.path import Path, convert_to_platform_path + + +def os_pathsep_join(path, *pths): + out_pth = path + for pth in pths: + out_pth = os.pathsep.join([out_pth, pth]) + return out_pth + + +def prep_and_join(path, *pths): + return os.path.sep + os.path.join(path, *pths) @pytest.fixture @@ -81,6 +95,8 @@ def _ensure(env_mods): return _ensure +@pytest.mark.skipif(sys.platform == 'win32', + reason="Static to Shared not supported on Win (yet)") def test_static_to_shared_library(build_environment): os.environ['SPACK_TEST_COMMAND'] = 'dump-args' @@ -147,25 +163,32 @@ def _set_wrong_cc(x): {'set': {'SOME_VAR_STR': 'SOME_STR'}}, {'SOME_VAR_STR': 'SOME_STR'}), # Append and prepend to the same variable - ({'EMPTY_PATH_LIST': '/path/middle'}, - {'prepend_path': {'EMPTY_PATH_LIST': '/path/first'}, - 'append_path': {'EMPTY_PATH_LIST': '/path/last'}}, - {'EMPTY_PATH_LIST': '/path/first:/path/middle:/path/last'}), + ({'EMPTY_PATH_LIST': prep_and_join('path', 'middle')}, + {'prepend_path': {'EMPTY_PATH_LIST': prep_and_join('path', 'first')}, + 'append_path': {'EMPTY_PATH_LIST': prep_and_join('path', 'last')}}, + {'EMPTY_PATH_LIST': os_pathsep_join(prep_and_join('path', 'first'), + prep_and_join('path', 'middle'), + prep_and_join('path', 'last'))}), # Append and prepend from empty variables ({'EMPTY_PATH_LIST': '', 'SOME_VAR_STR': ''}, - {'prepend_path': {'EMPTY_PATH_LIST': '/path/first'}, - 'append_path': {'SOME_VAR_STR': '/path/last'}}, - {'EMPTY_PATH_LIST': '/path/first', 'SOME_VAR_STR': '/path/last'}), + {'prepend_path': {'EMPTY_PATH_LIST': prep_and_join('path', 'first')}, + 'append_path': {'SOME_VAR_STR': prep_and_join('path', 'last')}}, + {'EMPTY_PATH_LIST': prep_and_join('path', 'first'), + 'SOME_VAR_STR': prep_and_join('path', 'last')}), ({}, # Same as before but on variables that were not defined - {'prepend_path': {'EMPTY_PATH_LIST': '/path/first'}, - 'append_path': {'SOME_VAR_STR': '/path/last'}}, - {'EMPTY_PATH_LIST': '/path/first', 'SOME_VAR_STR': '/path/last'}), + {'prepend_path': {'EMPTY_PATH_LIST': prep_and_join('path', 'first')}, + 'append_path': {'SOME_VAR_STR': prep_and_join('path', 'last')}}, + {'EMPTY_PATH_LIST': prep_and_join('path', 'first'), + 'SOME_VAR_STR': prep_and_join('path', 'last')}), # Remove a path from a list - ({'EMPTY_PATH_LIST': '/path/first:/path/middle:/path/last'}, - {'remove_path': {'EMPTY_PATH_LIST': '/path/middle'}}, - {'EMPTY_PATH_LIST': '/path/first:/path/last'}), - ({'EMPTY_PATH_LIST': '/only/path'}, - {'remove_path': {'EMPTY_PATH_LIST': '/only/path'}}, + ({'EMPTY_PATH_LIST': os_pathsep_join(prep_and_join('path', 'first'), + prep_and_join('path', 'middle'), + prep_and_join('path', 'last'))}, + {'remove_path': {'EMPTY_PATH_LIST': prep_and_join('path', 'middle')}}, + {'EMPTY_PATH_LIST': os_pathsep_join(prep_and_join('path', 'first'), + prep_and_join('path', 'last'))}), + ({'EMPTY_PATH_LIST': prep_and_join('only', 'path')}, + {'remove_path': {'EMPTY_PATH_LIST': prep_and_join('only', 'path')}}, {'EMPTY_PATH_LIST': ''}), ]) def test_compiler_config_modifications( @@ -174,16 +197,22 @@ def test_compiler_config_modifications( # Set the environment as per prerequisites ensure_env_variables(initial) + def platform_pathsep(pathlist): + if Path.platform_path == Path.windows: + pathlist = pathlist.replace(':', ';') + + return convert_to_platform_path(pathlist) + # Monkeypatch a pkg.compiler.environment with the required modifications pkg = spack.spec.Spec('cmake').concretized().package monkeypatch.setattr(pkg.compiler, 'environment', modifications) - # Trigger the modifications spack.build_environment.setup_package(pkg, False) # Check they were applied for name, value in expected.items(): if value is not None: + value = platform_pathsep(value) assert os.environ[name] == value continue assert name not in os.environ @@ -196,10 +225,10 @@ def test_spack_paths_before_module_paths( s.concretize() pkg = s.package - module_path = '/path/to/module' + module_path = os.path.join('path', 'to', 'module') def _set_wrong_cc(x): - os.environ['PATH'] = module_path + ':' + os.environ['PATH'] + os.environ['PATH'] = module_path + os.pathsep + os.environ['PATH'] monkeypatch.setattr( spack.build_environment, 'load_module', _set_wrong_cc @@ -210,8 +239,9 @@ def _set_wrong_cc(x): spack.build_environment.setup_package(pkg, False) - spack_path = os.path.join(spack.paths.prefix, 'lib/spack/env') - paths = os.environ['PATH'].split(':') + spack_path = os.path.join(spack.paths.prefix, os.path.join('lib', 'spack', 'env')) + + paths = os.environ['PATH'].split(os.pathsep) assert paths.index(spack_path) < paths.index(module_path) @@ -244,10 +274,10 @@ def test_wrapper_variables( 'prefix/include/cuda/atomic', 'prefix/include/cuda/std/detail/libcxx/include/ctype.h']) cuda_include_dirs = cuda_headers.directories - assert(os.path.join('prefix', 'include') + assert(posixpath.join('prefix', 'include') in cuda_include_dirs) - assert(os.path.join('prefix', 'include', 'cuda', 'std', 'detail', - 'libcxx', 'include') + assert(posixpath.join('prefix', 'include', 'cuda', 'std', 'detail', + 'libcxx', 'include') not in cuda_include_dirs) root = spack.spec.Spec('dt-diamond') @@ -293,7 +323,7 @@ def normpaths(paths): # The default implementation looks for header files only # in /include and subdirectories prefix = str(installation_dir_with_headers) - include_dirs = normpaths(header_dir_var.split(':')) + include_dirs = normpaths(header_dir_var.split(os.pathsep)) assert os.path.join(prefix, 'include') in include_dirs assert os.path.join(prefix, 'include', 'boost') not in include_dirs @@ -334,7 +364,8 @@ def _trust_me_its_a_dir(path): env_mods.apply_modifications() link_dir_var = os.environ['SPACK_LINK_DIRS'] link_dirs = link_dir_var.split(':') - external_lib_paths = set(['/fake/path1/lib', '/fake/path1/lib64']) + external_lib_paths = set([os.path.normpath('/fake/path1/lib'), + os.path.normpath('/fake/path1/lib64')]) # The external lib paths should be the last two entries of the list and # should not appear anywhere before the last two entries assert (set(os.path.normpath(x) for x in link_dirs[-2:]) == diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index 7eac51c8d8a724..9e97dfbfb257ee 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys import pytest @@ -10,6 +11,9 @@ import spack.stage import spack.util.executable +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture( scope='function', diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py index da8021db681b8b..5c1f3c293ca38f 100644 --- a/lib/spack/spack/test/build_systems.py +++ b/lib/spack/spack/test/build_systems.py @@ -5,12 +5,14 @@ import glob import os +import sys import pytest import llnl.util.filesystem as fs import spack.environment +import spack.platforms import spack.repo from spack.build_environment import ChildError, get_std_cmake_args, setup_package from spack.spec import Spec @@ -18,6 +20,9 @@ DATA_PATH = os.path.join(spack.paths.test_path, 'data') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.parametrize( 'directory', @@ -313,6 +318,9 @@ def test_define(self): arg = pkg.define('MULTI', cls(['right', 'up'])) assert arg == '-DMULTI:STRING=right;up' + arg = pkg.define('MULTI', fs.FileList(['/foo', '/bar'])) + assert arg == '-DMULTI:STRING=/foo;/bar' + arg = pkg.define('ENABLE_TRUTH', False) assert arg == '-DENABLE_TRUTH:BOOL=OFF' arg = pkg.define('ENABLE_TRUTH', True) diff --git a/lib/spack/spack/test/buildrequest.py b/lib/spack/spack/test/buildrequest.py index 13fbfba231c75d..a4ae76086aaafd 100644 --- a/lib/spack/spack/test/buildrequest.py +++ b/lib/spack/spack/test/buildrequest.py @@ -3,12 +3,21 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.installer as inst import spack.repo import spack.spec +# Spack functionality tested here should work on Windows, +# however, tests are currently failing because support +# for Spack on Windows has not been extended to this +# module yet. +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_build_request_errors(install_mockery): with pytest.raises(ValueError, match='must be a package'): diff --git a/lib/spack/spack/test/cache_fetch.py b/lib/spack/spack/test/cache_fetch.py index 44a527586811b1..828dd81791bf86 100644 --- a/lib/spack/spack/test/cache_fetch.py +++ b/lib/spack/spack/test/cache_fetch.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -13,13 +14,17 @@ from spack.fetch_strategy import CacheURLFetchStrategy, NoCacheError from spack.stage import Stage +is_windows = sys.platform == 'win32' + @pytest.mark.parametrize('_fetch_method', ['curl', 'urllib']) def test_fetch_missing_cache(tmpdir, _fetch_method): """Ensure raise a missing cache file.""" testpath = str(tmpdir) with spack.config.override('config:url_fetch_method', _fetch_method): - fetcher = CacheURLFetchStrategy(url='file:///not-a-real-cache-file') + abs_pref = '' if is_windows else '/' + url = 'file://' + abs_pref + 'not-a-real-cache-file' + fetcher = CacheURLFetchStrategy(url=url) with Stage(fetcher, path=testpath): with pytest.raises(NoCacheError, match=r'No cache'): fetcher.fetch() @@ -31,7 +36,11 @@ def test_fetch(tmpdir, _fetch_method): testpath = str(tmpdir) cache = os.path.join(testpath, 'cache.tar.gz') touch(cache) - url = 'file:///{0}'.format(cache) + if is_windows: + url_stub = '{0}' + else: + url_stub = '/{0}' + url = 'file://' + url_stub.format(cache) with spack.config.override('config:url_fetch_method', _fetch_method): fetcher = CacheURLFetchStrategy(url=url) with Stage(fetcher, path=testpath) as stage: diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 0663e5c58e0af7..36890c2eb26723 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -8,6 +8,7 @@ arguments correctly. """ import os +import sys import pytest @@ -101,6 +102,9 @@ test_args_without_paths ) +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture(scope='function') def wrapper_environment(): diff --git a/lib/spack/spack/test/ci.py b/lib/spack/spack/test/ci.py index 7bff8f8447a3e3..cd87c2dc6086be 100644 --- a/lib/spack/spack/test/ci.py +++ b/lib/spack/spack/test/ci.py @@ -6,6 +6,7 @@ import itertools as it import json import os +import sys import pytest @@ -50,6 +51,8 @@ def test_urlencode_string(): assert(s_enc == 'Spack+Test+Project') +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_import_signing_key(mock_gnupghome): signing_key_dir = spack_paths.mock_gpg_keys_path signing_key_path = os.path.join(signing_key_dir, 'package-signing-key') @@ -83,6 +86,8 @@ def assert_present(config): assert_present(last_config) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_get_concrete_specs(config, mutable_mock_env_path, mock_packages): e = ev.create('test1') e.add('dyninst') @@ -172,6 +177,8 @@ def test_register_cdash_build(monkeypatch): assert(build_id == 42) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_relate_cdash_builds(config, mutable_mock_env_path, mock_packages, monkeypatch, capfd): e = ev.create('test1') @@ -236,6 +243,8 @@ def test_relate_cdash_builds(config, mutable_mock_env_path, mock_packages, [cdashids_mirror_url]) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_read_write_cdash_ids(config, tmp_scope, tmpdir, mock_packages): working_dir = tmpdir.join('working_dir') mirror_dir = working_dir.join('mirror') @@ -531,3 +540,40 @@ def make_yaml_obj(use_artifact_buildcache, optimize, use_dependencies): ci_opt.sort_yaml_obj(actual), default_flow_style=True) assert(predicted == actual) + + +def test_get_spec_filter_list(mutable_mock_env_path, config, mutable_mock_repo): + """Test that given an active environment and list of touched pkgs, + we get the right list of possibly-changed env specs""" + e1 = ev.create('test') + e1.add('mpileaks') + e1.add('hypre') + e1.concretize() + + """ + Concretizing the above environment results in the following graphs: + + mpileaks -> mpich (provides mpi virtual dep of mpileaks) + -> callpath -> dyninst -> libelf + -> libdwarf -> libelf + -> mpich (provides mpi dep of callpath) + + hypre -> openblas-with-lapack (provides lapack and blas virtual deps of hypre) + """ + + touched = ['libdwarf'] + + # traversing both directions from libdwarf in the graphs depicted + # above results in the following possibly affected env specs: + # mpileaks, callpath, dyninst, libdwarf, and libelf. Unaffected + # specs are mpich, plus hypre and it's dependencies. + + affected_specs = ci.get_spec_filter_list(e1, touched) + affected_pkg_names = set([s.name for s in affected_specs]) + expected_affected_pkg_names = set(['mpileaks', + 'callpath', + 'dyninst', + 'libdwarf', + 'libelf']) + + assert affected_pkg_names == expected_affected_pkg_names diff --git a/lib/spack/spack/test/cmd/activate.py b/lib/spack/spack/test/cmd/activate.py index cf2bdbbbf8be71..edb126be83ce45 100644 --- a/lib/spack/spack/test/cmd/activate.py +++ b/lib/spack/spack/test/cmd/activate.py @@ -2,6 +2,9 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + +import pytest from spack.main import SpackCommand @@ -10,6 +13,9 @@ install = SpackCommand('install') extensions = SpackCommand('extensions') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_activate( mock_packages, mock_archive, mock_fetch, config, diff --git a/lib/spack/spack/test/cmd/analyze.py b/lib/spack/spack/test/cmd/analyze.py index 278204317847a0..77f26ccb23c849 100644 --- a/lib/spack/spack/test/cmd/analyze.py +++ b/lib/spack/spack/test/cmd/analyze.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -17,6 +18,9 @@ install = SpackCommand('install') analyze = SpackCommand('analyze') +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Test is unsupported on Windows") + def test_test_package_not_installed(mock_fetch, install_mockery_mutable_config): # We cannot run an analysis for a package not installed diff --git a/lib/spack/spack/test/cmd/blame.py b/lib/spack/spack/test/cmd/blame.py index 18ca4803e6794f..f6ca34b4b1f169 100644 --- a/lib/spack/spack/test/cmd/blame.py +++ b/lib/spack/spack/test/cmd/blame.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest from llnl.util.filesystem import working_dir @@ -36,6 +38,8 @@ def test_blame_by_percent(mock_packages): assert 'EMAIL' in out +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_blame_file(mock_packages): """Sanity check the blame command to make sure it works.""" with working_dir(spack.paths.prefix): @@ -68,6 +72,7 @@ def test_blame_json(mock_packages): assert key in loaded['authors'][0] +@pytest.mark.skipif(sys.platform == 'win32', reason="git hangs") def test_blame_by_git(mock_packages, capfd): """Sanity check the blame command to make sure it works.""" with capfd.disabled(): diff --git a/lib/spack/spack/test/cmd/bootstrap.py b/lib/spack/spack/test/cmd/bootstrap.py index b39a950c95b8ba..6419829f691985 100644 --- a/lib/spack/spack/test/cmd/bootstrap.py +++ b/lib/spack/spack/test/cmd/bootstrap.py @@ -3,12 +3,14 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os.path +import sys import pytest import spack.config import spack.environment as ev import spack.main +from spack.util.path import convert_to_posix_path _bootstrap = spack.main.SpackCommand('bootstrap') @@ -38,6 +40,8 @@ def test_root_get_and_set(mutable_config, scope): _bootstrap('root', path, *scope_args) out = _bootstrap('root', *scope_args, output=str) + if sys.platform == 'win32': + out = convert_to_posix_path(out) assert out.strip() == path diff --git a/lib/spack/spack/test/cmd/buildcache.py b/lib/spack/spack/test/cmd/buildcache.py index 5bda617d5a867a..958f5c3777d29d 100644 --- a/lib/spack/spack/test/cmd/buildcache.py +++ b/lib/spack/spack/test/cmd/buildcache.py @@ -7,6 +7,7 @@ import os import platform import shutil +import sys import pytest @@ -24,6 +25,9 @@ mirror = spack.main.SpackCommand('mirror') uninstall = spack.main.SpackCommand('uninstall') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture() def mock_get_specs(database, monkeypatch): diff --git a/lib/spack/spack/test/cmd/checksum.py b/lib/spack/spack/test/cmd/checksum.py index 18c4d59eb4d6cc..3c47f69d4869b6 100644 --- a/lib/spack/spack/test/cmd/checksum.py +++ b/lib/spack/spack/test/cmd/checksum.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import argparse +import sys import pytest @@ -29,6 +30,8 @@ def test_checksum_args(arguments, expected): assert check == expected +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('arguments,expected', [ (['--batch', 'preferred-test'], 'version of preferred-test'), (['--latest', 'preferred-test'], 'Found 1 version'), @@ -40,6 +43,8 @@ def test_checksum(arguments, expected, mock_packages, mock_stage): assert 'version(' in output +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_checksum_interactive( mock_packages, mock_fetch, mock_stage, monkeypatch): def _get_number(*args, **kwargs): diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index aad64d9e1a5a80..41761a7e815091 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -7,6 +7,7 @@ import json import os import shutil +import sys import pytest from jsonschema import ValidationError, validate @@ -39,8 +40,9 @@ uninstall_cmd = spack.main.SpackCommand('uninstall') buildcache_cmd = spack.main.SpackCommand('buildcache') - -pytestmark = pytest.mark.maybeslow +pytestmark = [pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows"), + pytest.mark.maybeslow] @pytest.fixture() @@ -1460,6 +1462,56 @@ def fake_get_mirrors_for_spec(spec=None, full_hash_match=False, _validate_needs_graph(new_yaml_contents, needs_graph, False) +def test_ci_generate_prune_untouched(tmpdir, mutable_mock_env_path, + install_mockery, mock_packages, + project_dir_env, monkeypatch): + """Test pipeline generation with pruning works to eliminate + specs that were not affected by a change""" + project_dir_env(tmpdir.strpath) + mirror_url = 'https://my.fake.mirror' + filename = str(tmpdir.join('spack.yaml')) + with open(filename, 'w') as f: + f.write("""\ +spack: + specs: + - archive-files + - callpath + mirrors: + some-mirror: {0} + gitlab-ci: + mappings: + - match: + - arch=test-debian6-core2 + runner-attributes: + tags: + - donotcare + image: donotcare +""".format(mirror_url)) + with tmpdir.as_cwd(): + env_cmd('create', 'test', './spack.yaml') + outputfile = str(tmpdir.join('.gitlab-ci.yml')) + + def fake_compute_affected(r1=None, r2=None): + return ['libdwarf'] + + with ev.read('test'): + # This kind of pruning is enabled with the following env var + os.environ['SPACK_PRUNE_UNTOUCHED'] = 'TRUE' + monkeypatch.setattr( + ci, 'compute_affected_packages', fake_compute_affected) + ci_cmd('generate', '--output-file', outputfile) + os.environ.pop('SPACK_PRUNE_UNTOUCHED') + + with open(outputfile) as f: + contents = f.read() + yaml_contents = syaml.load(contents) + + for ci_key in yaml_contents.keys(): + if 'archive-files' in ci_key or 'mpich' in ci_key: + print('Error: archive-files and mpich should have been pruned') + assert(False) + + def test_ci_subcommands_without_mirror(tmpdir, mutable_mock_env_path, mock_packages, install_mockery, project_dir_env, diff --git a/lib/spack/spack/test/cmd/clean.py b/lib/spack/spack/test/cmd/clean.py index 1fad6a22b9373a..fb0bb87ed0c916 100644 --- a/lib/spack/spack/test/cmd/clean.py +++ b/lib/spack/spack/test/cmd/clean.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.caches @@ -12,6 +14,9 @@ clean = spack.main.SpackCommand('clean') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture() def mock_calls_for_clean(monkeypatch): diff --git a/lib/spack/spack/test/cmd/commands.py b/lib/spack/spack/test/cmd/commands.py index 21a719717ba054..bec6cba7296976 100644 --- a/lib/spack/spack/test/cmd/commands.py +++ b/lib/spack/spack/test/cmd/commands.py @@ -7,6 +7,7 @@ import os import shutil import subprocess +import sys import pytest @@ -215,6 +216,9 @@ def test_update_completion_arg(tmpdir, monkeypatch): assert "--update-completion" in mock_bashfile.read() +# Note: this test is never expected to be supported on Windows +@pytest.mark.skipif(sys.platform == 'win32', + reason="bash completion script generator fails on windows") def test_updated_completion_scripts(tmpdir): """Make sure our shell tab completion scripts remain up-to-date.""" diff --git a/lib/spack/spack/test/cmd/common/arguments.py b/lib/spack/spack/test/cmd/common/arguments.py index fe587fdfdbc951..5f1299a94a9c5b 100644 --- a/lib/spack/spack/test/cmd/common/arguments.py +++ b/lib/spack/spack/test/cmd/common/arguments.py @@ -11,6 +11,7 @@ import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev +import spack.main @pytest.fixture() @@ -112,3 +113,18 @@ def test_root_and_dep_match_returns_root(mock_packages, mutable_mock_env_path): env_spec2 = spack.cmd.matching_spec_from_env( spack.cmd.parse_specs(['b@1.0'])[0]) assert env_spec2 + + +def test_concretizer_arguments(mutable_config, mock_packages): + """Ensure that ConfigSetAction is doing the right thing.""" + spec = spack.main.SpackCommand("spec") + + assert spack.config.get("concretizer:reuse", None) is None + + spec("--reuse", "zlib") + + assert spack.config.get("concretizer:reuse", None) is True + + spec("--fresh", "zlib") + + assert spack.config.get("concretizer:reuse", None) is False diff --git a/lib/spack/spack/test/cmd/compiler.py b/lib/spack/spack/test/cmd/compiler.py index 02286104783140..f799d96b0f6f4c 100644 --- a/lib/spack/spack/test/cmd/compiler.py +++ b/lib/spack/spack/test/cmd/compiler.py @@ -51,6 +51,8 @@ def mock_compiler_dir(tmpdir, mock_compiler_version): return str(tmpdir) +@pytest.mark.skipif(sys.platform == 'win32', reason="Cannot execute bash \ + script on Windows") @pytest.mark.regression('11678,13138') def test_compiler_find_without_paths(no_compilers_yaml, working_env, tmpdir): with tmpdir.as_cwd(): @@ -103,6 +105,8 @@ def test_compiler_remove(mutable_config, mock_packages): assert spack.spec.CompilerSpec("gcc@4.5.0") not in compilers +@pytest.mark.skipif(sys.platform == 'win32', reason="Cannot execute bash \ + script on Windows") def test_compiler_add( mutable_config, mock_packages, mock_compiler_dir, mock_compiler_version ): @@ -182,6 +186,8 @@ def clangdir(tmpdir): yield tmpdir +@pytest.mark.skipif(sys.platform == 'win32', reason="Cannot execute bash \ + script on Windows") @pytest.mark.regression('17590') def test_compiler_find_mixed_suffixes( no_compilers_yaml, working_env, clangdir): @@ -217,6 +223,8 @@ def test_compiler_find_mixed_suffixes( } +@pytest.mark.skipif(sys.platform == 'win32', reason="Cannot execute bash \ + script on Windows") @pytest.mark.regression('17590') def test_compiler_find_prefer_no_suffix( no_compilers_yaml, working_env, clangdir): @@ -242,6 +250,8 @@ def test_compiler_find_prefer_no_suffix( assert clang['paths']['cxx'] == str(clangdir.join('clang++')) +@pytest.mark.skipif(sys.platform == 'win32', reason="Cannot execute bash \ + script on Windows") def test_compiler_find_path_order( no_compilers_yaml, working_env, clangdir): """Ensure that we find compilers that come first in the PATH first diff --git a/lib/spack/spack/test/cmd/config.py b/lib/spack/spack/test/cmd/config.py index 175fd1c26f840e..4b63994618e6c9 100644 --- a/lib/spack/spack/test/cmd/config.py +++ b/lib/spack/spack/test/cmd/config.py @@ -239,6 +239,12 @@ def test_config_add_ordered_dict(mutable_empty_config): """ +def test_config_add_interpret_oneof(mutable_empty_config): + # Regression test for a bug that would raise a validation error + config('add', 'packages:all:target:[x86_64]') + config('add', 'packages:all:variants:~shared') + + def test_config_add_invalid_fails(mutable_empty_config): config('add', 'packages:all:variants:+debug') with pytest.raises( @@ -426,7 +432,7 @@ def test_remove_list(mutable_empty_config): def test_config_add_to_env(mutable_empty_config, mutable_mock_env_path): - ev.create('test') + env('create', 'test') with ev.read('test'): config('add', 'config:dirty:true') output = config('get') diff --git a/lib/spack/spack/test/cmd/debug.py b/lib/spack/spack/test/cmd/debug.py index 3aace2077da5d4..ef00e28f486536 100644 --- a/lib/spack/spack/test/cmd/debug.py +++ b/lib/spack/spack/test/cmd/debug.py @@ -6,6 +6,7 @@ import os import os.path import platform +import sys import pytest @@ -16,6 +17,9 @@ debug = SpackCommand('debug') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.db def test_create_db_tarball(tmpdir, database): diff --git a/lib/spack/spack/test/cmd/dependencies.py b/lib/spack/spack/test/cmd/dependencies.py index 29d55e0269a2d5..50ce7b8dde8112 100644 --- a/lib/spack/spack/test/cmd/dependencies.py +++ b/lib/spack/spack/test/cmd/dependencies.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import re +import sys import pytest @@ -19,6 +20,9 @@ ] mpi_deps = ['fake'] +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_direct_dependencies(mock_packages): out = dependencies('mpileaks') diff --git a/lib/spack/spack/test/cmd/dependents.py b/lib/spack/spack/test/cmd/dependents.py index 93c11aff9dd2e8..d9b6d8a2f6e133 100644 --- a/lib/spack/spack/test/cmd/dependents.py +++ b/lib/spack/spack/test/cmd/dependents.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import re +import sys import pytest @@ -14,6 +15,9 @@ dependents = SpackCommand('dependents') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_immediate_dependents(mock_packages): out = dependents('libelf') diff --git a/lib/spack/spack/test/cmd/deprecate.py b/lib/spack/spack/test/cmd/deprecate.py index 4c369f9633d02b..0abe0024d7720f 100644 --- a/lib/spack/spack/test/cmd/deprecate.py +++ b/lib/spack/spack/test/cmd/deprecate.py @@ -2,6 +2,9 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import sys + import pytest import spack.store @@ -14,6 +17,9 @@ find = SpackCommand('find') activate = SpackCommand('activate') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_deprecate(mock_packages, mock_archive, mock_fetch, install_mockery): install('libelf@0.8.13') diff --git a/lib/spack/spack/test/cmd/dev_build.py b/lib/spack/spack/test/cmd/dev_build.py index 051d068d047199..7aa3b58d65df08 100644 --- a/lib/spack/spack/test/cmd/dev_build.py +++ b/lib/spack/spack/test/cmd/dev_build.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -17,6 +18,9 @@ install = SpackCommand('install') env = SpackCommand('env') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_dev_build_basics(tmpdir, mock_packages, install_mockery): spec = spack.spec.Spec('dev-build-test-install@0.0.0 dev_path=%s' % tmpdir) diff --git a/lib/spack/spack/test/cmd/develop.py b/lib/spack/spack/test/cmd/develop.py index 5e9bdd381e8721..5d101e53f80d8d 100644 --- a/lib/spack/spack/test/cmd/develop.py +++ b/lib/spack/spack/test/cmd/develop.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os import shutil +import sys import pytest @@ -16,6 +17,9 @@ develop = SpackCommand('develop') env = SpackCommand('env') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.usefixtures( 'mutable_mock_env_path', 'mock_packages', 'mock_fetch') diff --git a/lib/spack/spack/test/cmd/diff.py b/lib/spack/spack/test/cmd/diff.py index 039b3dc8310ae6..1568f391c40e12 100644 --- a/lib/spack/spack/test/cmd/diff.py +++ b/lib/spack/spack/test/cmd/diff.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.cmd.diff @@ -43,6 +45,8 @@ def test_diff_cmd(install_mockery, mock_fetch, mock_archive, mock_packages): assert ['hash', 'mpileaks %s' % specB.dag_hash()] in c['b_not_a'] +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_load_first(install_mockery, mock_fetch, mock_archive, mock_packages): """Test with and without the --first option""" install_cmd('mpileaks') diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 67aef94bb844e8..7f05e22545e51c 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -4,6 +4,8 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import glob import os +import shutil +import sys from argparse import Namespace import pytest @@ -26,10 +28,12 @@ from spack.util.mock_package import MockPackageMultiRepo from spack.util.path import substitute_path_variables +# TODO-27021 # everything here uses the mock_env_path pytestmark = [ pytest.mark.usefixtures('mutable_mock_env_path', 'config', 'mutable_mock_repo'), - pytest.mark.maybeslow + pytest.mark.maybeslow, + pytest.mark.skipif(sys.platform == 'win32', reason='Envs unsupported on Window') ] env = SpackCommand('env') @@ -41,6 +45,8 @@ uninstall = SpackCommand('uninstall') find = SpackCommand('find') +sep = os.sep + def check_mpileaks_and_deps_in_view(viewdir): """Check that the expected install directories exist.""" @@ -291,11 +297,11 @@ def test_env_install_two_specs_same_dep( assert 'depb: Executing phase:' in out assert 'a: Executing phase:' in out - depb = spack.repo.path.get_pkg_class('depb') - assert depb.installed, 'Expected depb to be installed' + depb = spack.store.db.query_one('depb', installed=True) + assert depb, 'Expected depb to be installed' - a = spack.repo.path.get_pkg_class('a') - assert a.installed, 'Expected a to be installed' + a = spack.store.db.query_one('a', installed=True) + assert a, 'Expected a to be installed' def test_remove_after_concretize(): @@ -386,23 +392,23 @@ def test_environment_status(capsys, tmpdir): def test_env_status_broken_view( mutable_mock_env_path, mock_archive, mock_fetch, mock_packages, - install_mockery + install_mockery, tmpdir ): - with ev.create('test'): + env_dir = str(tmpdir) + with ev.Environment(env_dir): install('trivial-install-test-package') - # switch to a new repo that doesn't include the installed package - # test that Spack detects the missing package and warns the user - new_repo = MockPackageMultiRepo() - with spack.repo.use_repositories(new_repo): + # switch to a new repo that doesn't include the installed package + # test that Spack detects the missing package and warns the user + with spack.repo.use_repositories(MockPackageMultiRepo()): + with ev.Environment(env_dir): output = env('status') - assert 'In environment test' in output - assert 'Environment test includes out of date' in output + assert 'includes out of date packages or repos' in output - # Test that the warning goes away when it's fixed + # Test that the warning goes away when it's fixed + with ev.Environment(env_dir): output = env('status') - assert 'In environment test' in output - assert 'Environment test includes out of date' not in output + assert 'includes out of date packages or repos' not in output def test_env_activate_broken_view( @@ -641,7 +647,7 @@ def test_with_config_bad_include(capfd): assert 'missing include' in err assert '/no/such/directory' in err - assert 'no/such/file.yaml' in err + assert os.path.join('no', 'such', 'file.yaml') in err assert ev.active_environment() is None @@ -1018,6 +1024,7 @@ def test_read_old_lock_creates_backup(tmpdir): """When reading a version-1 lockfile, make sure that a backup of that file is created. """ + mock_repo = MockPackageMultiRepo() y = mock_repo.add_package('y', [], []) @@ -1141,16 +1148,49 @@ def test_env_updates_view_install( def test_env_view_fails( tmpdir, mock_packages, mock_stage, mock_fetch, install_mockery): + # We currently ignore file-file conflicts for the prefix merge, + # so in principle there will be no errors in this test. But + # the .spack metadata dir is handled separately and is more strict. + # It also throws on file-file conflicts. That's what we're checking here + # by adding the same package twice to a view. view_dir = tmpdir.join('view') env('create', '--with-view=%s' % view_dir, 'test') with ev.read('test'): add('libelf') add('libelf cflags=-g') - with pytest.raises(llnl.util.link_tree.MergeConflictError, - match='merge blocked by file'): + with pytest.raises(llnl.util.link_tree.MergeConflictSummary, + match=spack.store.layout.metadata_dir): install('--fake') +def test_env_view_fails_dir_file( + tmpdir, mock_packages, mock_stage, mock_fetch, install_mockery): + # This environment view fails to be created because a file + # and a dir are in the same path. Test that it mentions the problematic path. + view_dir = tmpdir.join('view') + env('create', '--with-view=%s' % view_dir, 'test') + with ev.read('test'): + add('view-dir-file') + add('view-dir-dir') + with pytest.raises(llnl.util.link_tree.MergeConflictSummary, + match=os.path.join('bin', 'x')): + install() + + +def test_env_view_succeeds_symlinked_dir_file( + tmpdir, mock_packages, mock_stage, mock_fetch, install_mockery): + # A symlinked dir and an ordinary dir merge happily + view_dir = tmpdir.join('view') + env('create', '--with-view=%s' % view_dir, 'test') + with ev.read('test'): + add('view-dir-symlinked-dir') + add('view-dir-dir') + install() + x_dir = os.path.join(str(view_dir), 'bin', 'x') + assert os.path.exists(os.path.join(x_dir, 'file_in_dir')) + assert os.path.exists(os.path.join(x_dir, 'file_in_symlinked_dir')) + + def test_env_without_view_install( tmpdir, mock_stage, mock_fetch, install_mockery): # Test enabling a view after installing specs @@ -1181,16 +1221,16 @@ def test_env_config_view_default( specs: - mpileaks """ - _env_create('test', StringIO(test_config)) with ev.read('test'): install('--fake') e = ev.read('test') - # Try retrieving the view object - view = e.default_view.view() - assert view.get_spec('mpileaks') + + # Check that metadata folder for this spec exists + assert os.path.isdir(os.path.join(e.default_view.view()._root, + '.spack', 'mpileaks')) def test_env_updates_view_install_package( @@ -1962,6 +2002,37 @@ def test_view_link_roots(tmpdir, mock_fetch, mock_packages, mock_archive, (spec.version, spec.compiler.name))) +def test_view_link_run(tmpdir, mock_fetch, mock_packages, mock_archive, + install_mockery): + yaml = str(tmpdir.join('spack.yaml')) + viewdir = str(tmpdir.join('view')) + envdir = str(tmpdir) + with open(yaml, 'w') as f: + f.write(""" +spack: + specs: + - dttop + + view: + combinatorial: + root: %s + link: run + projections: + all: '{name}'""" % viewdir) + + with ev.Environment(envdir): + install() + + # make sure transitive run type deps are in the view + for pkg in ('dtrun1', 'dtrun3'): + assert os.path.exists(os.path.join(viewdir, pkg)) + + # and non-run-type deps are not. + for pkg in ('dtlink1', 'dtlink2', 'dtlink3', 'dtlink4', 'dtlink5' + 'dtbuild1', 'dtbuild2', 'dtbuild3'): + assert not os.path.exists(os.path.join(viewdir, pkg)) + + @pytest.mark.parametrize('link_type', ['hardlink', 'copy', 'symlink']) def test_view_link_type(link_type, tmpdir, mock_fetch, mock_packages, mock_archive, install_mockery): @@ -2485,7 +2556,8 @@ def test_rewrite_rel_dev_path_new_dir(tmpdir): env('create', '-d', str(dest_env), str(spack_yaml)) with ev.Environment(str(dest_env)) as e: assert e.dev_specs['mypkg1']['path'] == str(build_folder) - assert e.dev_specs['mypkg2']['path'] == '/some/other/path' + assert e.dev_specs['mypkg2']['path'] == sep + os.path.join('some', + 'other', 'path') def test_rewrite_rel_dev_path_named_env(tmpdir): @@ -2495,7 +2567,8 @@ def test_rewrite_rel_dev_path_named_env(tmpdir): env('create', 'named_env', str(spack_yaml)) with ev.read('named_env') as e: assert e.dev_specs['mypkg1']['path'] == str(build_folder) - assert e.dev_specs['mypkg2']['path'] == '/some/other/path' + assert e.dev_specs['mypkg2']['path'] == sep + os.path.join('some', + 'other', 'path') def test_rewrite_rel_dev_path_original_dir(tmpdir): @@ -2676,10 +2749,14 @@ def test_custom_store_in_environment(mutable_config, tmpdir): install_tree: root: /tmp/store """) + if sys.platform == 'win32': + sep = '\\' + else: + sep = '/' current_store_root = str(spack.store.root) - assert str(current_store_root) != '/tmp/store' + assert str(current_store_root) != sep + os.path.join('tmp', 'store') with spack.environment.Environment(str(tmpdir)): - assert str(spack.store.root) == '/tmp/store' + assert str(spack.store.root) == sep + os.path.join('tmp', 'store') assert str(spack.store.root) == current_store_root @@ -2693,3 +2770,76 @@ def test_activate_temp(monkeypatch, tmpdir): if ev.spack_env_var in line) assert str(tmpdir) in active_env_var assert ev.is_env_dir(str(tmpdir)) + + +def test_env_view_fail_if_symlink_points_elsewhere(tmpdir, install_mockery, mock_fetch): + view = str(tmpdir.join('view')) + # Put a symlink to an actual directory in view + non_view_dir = str(tmpdir.mkdir('dont-delete-me')) + os.symlink(non_view_dir, view) + with ev.create('env', with_view=view): + add('libelf') + install('--fake') + assert os.path.isdir(non_view_dir) + + +def test_failed_view_cleanup(tmpdir, mock_stage, mock_fetch, install_mockery): + """Tests whether Spack cleans up after itself when a view fails to create""" + view = str(tmpdir.join('view')) + with ev.create('env', with_view=view): + add('libelf') + install('--fake') + + # Save the current view directory. + resolved_view = os.path.realpath(view) + all_views = os.path.dirname(resolved_view) + views_before = os.listdir(all_views) + + # Add a spec that results in MergeConflictError's when creating a view + with ev.read('env'): + add('libelf cflags=-O3') + with pytest.raises(llnl.util.link_tree.MergeConflictError): + install('--fake') + + # Make sure there is no broken view in the views directory, and the current + # view is the original view from before the failed regenerate attempt. + views_after = os.listdir(all_views) + assert views_before == views_after + assert os.path.samefile(resolved_view, view) + + +def test_environment_view_target_already_exists( + tmpdir, mock_stage, mock_fetch, install_mockery +): + """When creating a new view, Spack should check whether + the new view dir already exists. If so, it should not be + removed or modified.""" + + # Create a new environment + view = str(tmpdir.join('view')) + env('create', '--with-view={0}'.format(view), 'test') + with ev.read('test'): + add('libelf') + install('--fake') + + # Empty the underlying view + real_view = os.path.realpath(view) + assert os.listdir(real_view) # make sure it had *some* contents + shutil.rmtree(real_view) + + # Replace it with something new. + os.mkdir(real_view) + fs.touch(os.path.join(real_view, 'file')) + + # Remove the symlink so Spack can't know about the "previous root" + os.unlink(view) + + # Regenerate the view, which should realize it can't write into the same dir. + msg = 'Failed to generate environment view' + with ev.read('test'): + with pytest.raises(ev.SpackEnvironmentViewError, match=msg): + env('view', 'regenerate') + + # Make sure the dir was left untouched. + assert not os.path.lexists(view) + assert os.listdir(real_view) == ['file'] diff --git a/lib/spack/spack/test/cmd/extensions.py b/lib/spack/spack/test/cmd/extensions.py index 52f78446ac20b0..14747d04392129 100644 --- a/lib/spack/spack/test/cmd/extensions.py +++ b/lib/spack/spack/test/cmd/extensions.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest from spack.main import SpackCommand, SpackCommandError @@ -25,6 +27,7 @@ def python_database(mock_packages, mutable_database): yield +@pytest.mark.skipif(sys.platform == 'win32', reason="All Fetchers Failed") @pytest.mark.db def test_extensions(mock_packages, python_database, config, capsys): ext2 = Spec("py-extension2").concretized() diff --git a/lib/spack/spack/test/cmd/external.py b/lib/spack/spack/test/cmd/external.py index d8928798aba161..3a3c4face3ba8d 100644 --- a/lib/spack/spack/test/cmd/external.py +++ b/lib/spack/spack/test/cmd/external.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os import os.path +import sys import pytest @@ -13,6 +14,8 @@ from spack.main import SpackCommand from spack.spec import Spec +is_windows = sys.platform == 'win32' + @pytest.fixture def executables_found(monkeypatch): @@ -24,10 +27,26 @@ def _mock_search(path_hints=None): return _factory -def test_find_external_single_package(mock_executable, executables_found): +@pytest.fixture +def _platform_executables(monkeypatch): + def _win_exe_ext(): + return '.bat' + + monkeypatch.setattr(spack.package, 'win_exe_ext', _win_exe_ext) + + +def define_plat_exe(exe): + if is_windows: + exe += '.bat' + return exe + + +def test_find_external_single_package(mock_executable, executables_found, + _platform_executables): pkgs_to_check = [spack.repo.get('cmake')] executables_found({ - mock_executable("cmake", output='echo "cmake version 1.foo"'): 'cmake' + mock_executable("cmake", output='echo cmake version 1.foo'): + define_plat_exe('cmake') }) pkg_to_entries = spack.detection.by_executable(pkgs_to_check) @@ -38,19 +57,23 @@ def test_find_external_single_package(mock_executable, executables_found): assert single_entry.spec == Spec('cmake@1.foo') -def test_find_external_two_instances_same_package(mock_executable, executables_found): +def test_find_external_two_instances_same_package(mock_executable, executables_found, + _platform_executables): pkgs_to_check = [spack.repo.get('cmake')] # Each of these cmake instances is created in a different prefix + # In Windows, quoted strings are echo'd with quotes includes + # we need to avoid that for proper regex. cmake_path1 = mock_executable( - "cmake", output='echo "cmake version 1.foo"', subdir=('base1', 'bin') + "cmake", output='echo cmake version 1.foo', subdir=('base1', 'bin') ) cmake_path2 = mock_executable( - "cmake", output='echo "cmake version 3.17.2"', subdir=('base2', 'bin') + "cmake", output='echo cmake version 3.17.2', subdir=('base2', 'bin') ) + cmake_exe = define_plat_exe('cmake') executables_found({ - cmake_path1: 'cmake', - cmake_path2: 'cmake' + cmake_path1: cmake_exe, + cmake_path2: cmake_exe }) pkg_to_entries = spack.detection.by_executable(pkgs_to_check) @@ -84,22 +107,24 @@ def test_find_external_update_config(mutable_config): def test_get_executables(working_env, mock_executable): cmake_path1 = mock_executable("cmake", output="echo cmake version 1.foo") - os.environ['PATH'] = ':'.join([os.path.dirname(cmake_path1)]) + os.environ['PATH'] = os.pathsep.join([os.path.dirname(cmake_path1)]) path_to_exe = spack.detection.executables_in_path() - assert path_to_exe[cmake_path1] == 'cmake' + cmake_exe = define_plat_exe('cmake') + assert path_to_exe[cmake_path1] == cmake_exe external = SpackCommand('external') -def test_find_external_cmd(mutable_config, working_env, mock_executable): +def test_find_external_cmd(mutable_config, working_env, mock_executable, + _platform_executables): """Test invoking 'spack external find' with additional package arguments, which restricts the set of packages that Spack looks for. """ cmake_path1 = mock_executable("cmake", output="echo cmake version 1.foo") prefix = os.path.dirname(os.path.dirname(cmake_path1)) - os.environ['PATH'] = ':'.join([os.path.dirname(cmake_path1)]) + os.environ['PATH'] = os.pathsep.join([os.path.dirname(cmake_path1)]) external('find', 'cmake') pkgs_cfg = spack.config.get('packages') @@ -116,25 +141,24 @@ def test_find_external_cmd_not_buildable( not buildable. """ cmake_path1 = mock_executable("cmake", output="echo cmake version 1.foo") - os.environ['PATH'] = ':'.join([os.path.dirname(cmake_path1)]) + os.environ['PATH'] = os.pathsep.join([os.path.dirname(cmake_path1)]) external('find', '--not-buildable', 'cmake') pkgs_cfg = spack.config.get('packages') assert not pkgs_cfg['cmake']['buildable'] def test_find_external_cmd_full_repo( - mutable_config, working_env, mock_executable, mutable_mock_repo): + mutable_config, working_env, mock_executable, mutable_mock_repo, + _platform_executables): """Test invoking 'spack external find' with no additional arguments, which iterates through each package in the repository. """ - exe_path1 = mock_executable( "find-externals1-exe", output="echo find-externals1 version 1.foo" ) prefix = os.path.dirname(os.path.dirname(exe_path1)) - - os.environ['PATH'] = ':'.join([os.path.dirname(exe_path1)]) - external('find') + os.environ['PATH'] = os.pathsep.join([os.path.dirname(exe_path1)]) + external('find', '--all') pkgs_cfg = spack.config.get('packages') pkg_cfg = pkgs_cfg['find-externals1'] @@ -185,7 +209,8 @@ def test_list_detectable_packages(mutable_config, mutable_mock_repo): assert external.returncode == 0 -def test_packages_yaml_format(mock_executable, mutable_config, monkeypatch): +def test_packages_yaml_format( + mock_executable, mutable_config, monkeypatch, _platform_executables): # Prepare an environment to detect a fake gcc gcc_exe = mock_executable('gcc', output="echo 4.2.1") prefix = os.path.dirname(gcc_exe) @@ -209,7 +234,8 @@ def test_packages_yaml_format(mock_executable, mutable_config, monkeypatch): assert extra_attributes['compilers']['c'] == gcc_exe -def test_overriding_prefix(mock_executable, mutable_config, monkeypatch): +def test_overriding_prefix( + mock_executable, mutable_config, monkeypatch, _platform_executables): # Prepare an environment to detect a fake gcc that # override its external prefix gcc_exe = mock_executable('gcc', output="echo 4.2.1") @@ -239,7 +265,7 @@ def _determine_variants(cls, exes, version_str): def test_new_entries_are_reported_correctly( - mock_executable, mutable_config, monkeypatch + mock_executable, mutable_config, monkeypatch, _platform_executables ): # Prepare an environment to detect a fake gcc gcc_exe = mock_executable('gcc', output="echo 4.2.1") diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index 8b8bf7a273c667..7760ef49a41cb0 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -6,6 +6,7 @@ import argparse import json import os +import sys import pytest @@ -23,6 +24,9 @@ base32_alphabet = 'abcdefghijklmnopqrstuvwxyz234567' +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture(scope='module') def parser(): @@ -333,3 +337,8 @@ def test_find_loaded(database, working_env): output = find('--loaded') expected = find() assert output == expected + + +def test_bootstrap_deprecated(): + output = find('--bootstrap') + assert "`spack find --bootstrap` is deprecated" in output diff --git a/lib/spack/spack/test/cmd/gc.py b/lib/spack/spack/test/cmd/gc.py index 0b170c2b0373b6..822564f0a4b86b 100644 --- a/lib/spack/spack/test/cmd/gc.py +++ b/lib/spack/spack/test/cmd/gc.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.environment as ev @@ -11,6 +13,9 @@ gc = spack.main.SpackCommand('gc') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.db def test_no_packages_to_remove(config, mutable_database, capsys): diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index 85aea2d5c8ba1f..63d68b93d8fd2a 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -20,6 +21,9 @@ gpg = SpackCommand('gpg') bootstrap = SpackCommand('bootstrap') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + # test gpg command detection @pytest.mark.parametrize('cmd_name,version', [ diff --git a/lib/spack/spack/test/cmd/graph.py b/lib/spack/spack/test/cmd/graph.py index e66403f54887de..06900cb0aca8c3 100644 --- a/lib/spack/spack/test/cmd/graph.py +++ b/lib/spack/spack/test/cmd/graph.py @@ -3,12 +3,17 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest from spack.main import SpackCommand, SpackCommandError graph = SpackCommand('graph') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.db @pytest.mark.usefixtures('mock_packages', 'database') diff --git a/lib/spack/spack/test/cmd/info.py b/lib/spack/spack/test/cmd/info.py index 9dbe7950d33404..a5e8ae0bd8086a 100644 --- a/lib/spack/spack/test/cmd/info.py +++ b/lib/spack/spack/test/cmd/info.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import argparse +import sys import pytest @@ -12,6 +13,9 @@ info = SpackCommand('info') +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Not yet implemented on Windows") + @pytest.fixture(scope='module') def parser(): @@ -70,7 +74,7 @@ def test_info_noversion(mock_packages, info_lines, mock_print): ]) @pytest.mark.usefixtures('mock_print') def test_is_externally_detectable(pkg_query, expected, parser, info_lines): - args = parser.parse_args([pkg_query]) + args = parser.parse_args(['--detectable', pkg_query]) spack.cmd.info.info(parser, args) line_iter = info_lines.__iter__() @@ -83,7 +87,8 @@ def test_is_externally_detectable(pkg_query, expected, parser, info_lines): @pytest.mark.parametrize('pkg_query', [ 'hdf5', 'cloverleaf3d', - 'trilinos' + 'trilinos', + 'gcc' # This should ensure --test's c_names processing loop covered ]) @pytest.mark.usefixtures('mock_print') def test_info_fields(pkg_query, parser, info_lines): @@ -99,7 +104,7 @@ def test_info_fields(pkg_query, parser, info_lines): 'Tags:' ) - args = parser.parse_args([pkg_query]) + args = parser.parse_args(['--all', pkg_query]) spack.cmd.info.info(parser, args) for text in expected_fields: diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 006cace1851369..cc99c7d6a349b2 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -8,6 +8,7 @@ import os import re import shutil +import sys import time import pytest @@ -34,6 +35,9 @@ buildcache = SpackCommand('buildcache') find = SpackCommand('find') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture() def noop_install(monkeypatch): @@ -248,11 +252,11 @@ def test_install_overwrite_not_installed( def test_install_commit( mock_git_version_info, install_mockery, mock_packages, monkeypatch): - """ - Test installing a git package from a commit. + """Test installing a git package from a commit. + + This ensures Spack associates commit versions with their packages in time to do + version lookups. Details of version lookup tested elsewhere. - This ensures Spack appropriately associates commit versions with their - packages in time to do version lookups. Details of version lookup tested elsewhere """ repo_path, filename, commits = mock_git_version_info monkeypatch.setattr(spack.package.PackageBase, @@ -262,6 +266,7 @@ def test_install_commit( commit = commits[-1] spec = spack.spec.Spec('git-test-commit@%s' % commit) spec.concretize() + print(spec) spec.package.do_install() # Ensure first commit file contents were written diff --git a/lib/spack/spack/test/cmd/is_git_repo.py b/lib/spack/spack/test/cmd/is_git_repo.py index 9b0d29a75e3821..025d04fff0f069 100644 --- a/lib/spack/spack/test/cmd/is_git_repo.py +++ b/lib/spack/spack/test/cmd/is_git_repo.py @@ -5,6 +5,9 @@ from __future__ import print_function +import os +import sys + import pytest from llnl.util.filesystem import mkdirp @@ -42,7 +45,17 @@ def git_tmp_worktree(tmpdir): """Create new worktree in a temporary folder and monkeypatch spack.paths.prefix to point to it. """ - worktree_root = str(tmpdir.join("tmp_worktree")) + # TODO: This is fragile and should be high priority for + # follow up fixes. 27021 + # Path length is occasionally too long on Windows + # the following reduces the path length to acceptable levels + if sys.platform == 'win32': + long_pth = str(tmpdir).split(os.path.sep) + tmp_worktree = os.path.sep.join(long_pth[:-1]) + else: + tmp_worktree = str(tmpdir) + worktree_root = os.path.sep.join([tmp_worktree, "wrktree"]) + mkdirp(worktree_root) git("worktree", "add", "--detach", worktree_root, "HEAD") diff --git a/lib/spack/spack/test/cmd/license.py b/lib/spack/spack/test/cmd/license.py index d296741e021ee1..85014346596f66 100644 --- a/lib/spack/spack/test/cmd/license.py +++ b/lib/spack/spack/test/cmd/license.py @@ -5,6 +5,9 @@ import os.path import re +import sys + +import pytest from llnl.util.filesystem import mkdirp, touch @@ -14,6 +17,9 @@ license = SpackCommand('license') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_list_files(): files = license('list-files').strip().split('\n') diff --git a/lib/spack/spack/test/cmd/load.py b/lib/spack/spack/test/cmd/load.py index 0049bb7b5346f2..01902c3143ee20 100644 --- a/lib/spack/spack/test/cmd/load.py +++ b/lib/spack/spack/test/cmd/load.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os import re +import sys import pytest @@ -16,6 +17,9 @@ install = SpackCommand('install') location = SpackCommand('location') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_manpath_trailing_colon(install_mockery, mock_fetch, mock_archive, mock_packages, working_env): diff --git a/lib/spack/spack/test/cmd/location.py b/lib/spack/spack/test/cmd/location.py index 954e19e3c426bc..fe73607a180277 100644 --- a/lib/spack/spack/test/cmd/location.py +++ b/lib/spack/spack/test/cmd/location.py @@ -5,6 +5,7 @@ import os import shutil +import sys import pytest @@ -16,8 +17,9 @@ from spack.main import SpackCommand, SpackCommandError # Everything here uses (or can use) the mock config and database. -pytestmark = pytest.mark.usefixtures('config', 'database') - +pytestmark = [pytest.mark.usefixtures('config', 'database'), + pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows")] # location prints out "locations of packages and spack directories" location = SpackCommand('location') env = SpackCommand('env') diff --git a/lib/spack/spack/test/cmd/mark.py b/lib/spack/spack/test/cmd/mark.py index 84ed6579986cee..d74c5df783995a 100644 --- a/lib/spack/spack/test/cmd/mark.py +++ b/lib/spack/spack/test/cmd/mark.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.store @@ -13,6 +15,9 @@ install = SpackCommand('install') uninstall = SpackCommand('uninstall') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.db def test_mark_mode_required(mutable_database): diff --git a/lib/spack/spack/test/cmd/mirror.py b/lib/spack/spack/test/cmd/mirror.py index 96c8085b747f42..e2d936c0a3ac62 100644 --- a/lib/spack/spack/test/cmd/mirror.py +++ b/lib/spack/spack/test/cmd/mirror.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -19,6 +20,9 @@ buildcache = SpackCommand('buildcache') uninstall = SpackCommand('uninstall') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture def tmp_scope(): @@ -39,6 +43,15 @@ def tmp_scope(): yield scope_name +def _validate_url(url): + return + + +@pytest.fixture(autouse=True) +def url_check(monkeypatch): + monkeypatch.setattr(spack.util.url, 'require_url_format', _validate_url) + + @pytest.mark.disable_clean_stage_check @pytest.mark.regression('8083') def test_regression_8083(tmpdir, capfd, mock_packages, mock_fetch, config): @@ -197,6 +210,13 @@ def test_mirror_crud(tmp_scope, capsys): output = mirror('list', '--scope', tmp_scope) assert 'No mirrors configured' in output + # Test GCS Mirror + mirror('add', '--scope', tmp_scope, + 'mirror', 'gs://spack-test') + + output = mirror('remove', '--scope', tmp_scope, 'mirror') + assert 'Removed mirror' in output + def test_mirror_nonexisting(tmp_scope): with pytest.raises(SpackCommandError): diff --git a/lib/spack/spack/test/cmd/module.py b/lib/spack/spack/test/cmd/module.py index 7a2604ead1ba18..ec11ed2d651dcc 100644 --- a/lib/spack/spack/test/cmd/module.py +++ b/lib/spack/spack/test/cmd/module.py @@ -5,6 +5,7 @@ import os.path import re +import sys import pytest @@ -15,6 +16,9 @@ module = spack.main.SpackCommand('module') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + #: make sure module files are generated for all the tests here @pytest.fixture(scope='module', autouse=True) diff --git a/lib/spack/spack/test/cmd/pkg.py b/lib/spack/spack/test/cmd/pkg.py index a297893d8ebb65..352ffca4ac882b 100644 --- a/lib/spack/spack/test/cmd/pkg.py +++ b/lib/spack/spack/test/cmd/pkg.py @@ -7,13 +7,14 @@ import re import shutil +import sys import pytest from llnl.util.filesystem import mkdirp, working_dir -import spack.cmd.pkg import spack.main +import spack.repo from spack.util.executable import which pytestmark = pytest.mark.skipif(not which('git'), @@ -105,12 +106,12 @@ def split(output): def test_packages_path(): - assert (spack.cmd.pkg.packages_path() == + assert (spack.repo.packages_path() == spack.repo.path.get_repo('builtin').packages_path) def test_mock_packages_path(mock_packages): - assert (spack.cmd.pkg.packages_path() == + assert (spack.repo.packages_path() == spack.repo.path.get_repo('builtin.mock').packages_path) @@ -137,6 +138,7 @@ def test_pkg_add(mock_pkg_git_repo): pkg('add', 'does-not-exist') +@pytest.mark.skipif(sys.platform == 'win32', reason="stdout format conflict") def test_pkg_list(mock_pkg_git_repo, mock_pkg_names): out = split(pkg('list', 'HEAD^^')) assert sorted(mock_pkg_names) == sorted(out) @@ -154,6 +156,7 @@ def test_pkg_list(mock_pkg_git_repo, mock_pkg_names): assert sorted(mock_pkg_names) == sorted(out) +@pytest.mark.skipif(sys.platform == 'win32', reason="stdout format conflict") def test_pkg_diff(mock_pkg_git_repo, mock_pkg_names): out = split(pkg('diff', 'HEAD^^', 'HEAD^')) assert out == ['HEAD^:', 'pkg-a', 'pkg-b', 'pkg-c'] @@ -165,20 +168,22 @@ def test_pkg_diff(mock_pkg_git_repo, mock_pkg_names): assert out == ['HEAD^:', 'pkg-c', 'HEAD:', 'pkg-d'] +@pytest.mark.skipif(sys.platform == 'win32', reason="stdout format conflict") def test_pkg_added(mock_pkg_git_repo): out = split(pkg('added', 'HEAD^^', 'HEAD^')) - assert out == ['pkg-a', 'pkg-b', 'pkg-c'] + assert ['pkg-a', 'pkg-b', 'pkg-c'] == out out = split(pkg('added', 'HEAD^^', 'HEAD')) - assert out == ['pkg-a', 'pkg-b', 'pkg-d'] + assert ['pkg-a', 'pkg-b', 'pkg-d'] == out out = split(pkg('added', 'HEAD^', 'HEAD')) - assert out == ['pkg-d'] + assert ['pkg-d'] == out out = split(pkg('added', 'HEAD', 'HEAD')) assert out == [] +@pytest.mark.skipif(sys.platform == 'win32', reason="stdout format conflict") def test_pkg_removed(mock_pkg_git_repo): out = split(pkg('removed', 'HEAD^^', 'HEAD^')) assert out == [] @@ -190,6 +195,7 @@ def test_pkg_removed(mock_pkg_git_repo): assert out == ['pkg-c'] +@pytest.mark.skipif(sys.platform == 'win32', reason="stdout format conflict") def test_pkg_changed(mock_pkg_git_repo): out = split(pkg('changed', 'HEAD^^', 'HEAD^')) assert out == [] diff --git a/lib/spack/spack/test/cmd/providers.py b/lib/spack/spack/test/cmd/providers.py index 190af0451acaa1..44d56ca1a135bd 100644 --- a/lib/spack/spack/test/cmd/providers.py +++ b/lib/spack/spack/test/cmd/providers.py @@ -4,12 +4,17 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest from spack.main import SpackCommand providers = SpackCommand('providers') +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Providers not currently supported on Windows") + @pytest.mark.parametrize('pkg', [ ('mpi',), diff --git a/lib/spack/spack/test/cmd/reindex.py b/lib/spack/spack/test/cmd/reindex.py index e24cd086069cc2..361b6bb1528f24 100644 --- a/lib/spack/spack/test/cmd/reindex.py +++ b/lib/spack/spack/test/cmd/reindex.py @@ -3,6 +3,9 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys + +import pytest import spack.store from spack.main import SpackCommand @@ -11,6 +14,9 @@ deprecate = SpackCommand('deprecate') reindex = SpackCommand('reindex') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_reindex_basic(mock_packages, mock_archive, mock_fetch, install_mockery): diff --git a/lib/spack/spack/test/cmd/resource.py b/lib/spack/spack/test/cmd/resource.py index c4633593a10239..64a79fd6017c36 100644 --- a/lib/spack/spack/test/cmd/resource.py +++ b/lib/spack/spack/test/cmd/resource.py @@ -2,9 +2,12 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os +import sys from spack.main import SpackCommand +is_windows = sys.platform == 'win32' resource = SpackCommand('resource') #: these are hashes used in mock packages @@ -19,6 +22,15 @@ '208fcfb50e5a965d5757d151b675ca4af4ce2dfd56401721b6168fae60ab798f', 'bf07a7fbb825fc0aae7bf4a1177b2b31fcf8a3feeaf7092761e18c859ee52a9c', '7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730', +] if not is_windows else [ + 'abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234', + '1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd', + 'd0df7988457ec999c148a4a2af25ce831bfaad13954ba18a4446374cb0aef55e', + 'aeb16c4dec1087e39f2330542d59d9b456dd26d791338ae6d80b6ffd10c89dfa', + 'mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234', + 'ff34cb21271d16dbf928374f610bb5dd593d293d311036ddae86c4846ff79070', + 'bf874c7dd3a83cf370fdc17e496e341de06cd596b5c66dbf3c9bb7f6c139e3ee', + '3c5b65abcd6a3b2c714dbf7c31ff65fe3748a1adc371f030c283007ca5534f11' ] @@ -34,7 +46,8 @@ def test_resource_list(mock_packages, capfd): assert 'patched by:' in out assert 'path:' in out - assert 'repos/builtin.mock/packages/patch-a-dependency/libelf.patch' in out + assert os.path.join('repos', 'builtin.mock', 'packages', + 'patch-a-dependency', 'libelf.patch') in out assert 'applies to: builtin.mock.libelf' in out assert 'patched by: builtin.mock.patch-a-dependency' in out @@ -48,11 +61,19 @@ def test_resource_list_only_hashes(mock_packages, capfd): def test_resource_show(mock_packages, capfd): + test_hash = 'c45c1564f70def3fc1a6e22139f62cb21cd190cc3a7dbe6f4120fa59ce33dcb8' \ + if not is_windows \ + else '3c5b65abcd6a3b2c714dbf7c31ff65fe3748a1adc371f030c283007ca5534f11' with capfd.disabled(): - out = resource('show', 'c45c1564f70def3fc1a6e22139f62cb21cd190cc3a7dbe6f4120fa59ce33dcb8') + out = resource('show', test_hash) - assert out.startswith('c45c1564f70def3fc1a6e22139f62cb21cd190cc3a7dbe6f4120fa59ce33dcb8') - assert 'repos/builtin.mock/packages/patch-a-dependency/libelf.patch' in out + assert out.startswith(test_hash) + assert os.path.join( + 'repos', + 'builtin.mock', + 'packages', + 'patch-a-dependency', + 'libelf.patch') in out assert 'applies to: builtin.mock.libelf' in out assert 'patched by: builtin.mock.patch-a-dependency' in out diff --git a/lib/spack/spack/test/cmd/spec.py b/lib/spack/spack/test/cmd/spec.py index 12064e3e8e5dbd..74be6f4ca06181 100644 --- a/lib/spack/spack/test/cmd/spec.py +++ b/lib/spack/spack/test/cmd/spec.py @@ -7,8 +7,10 @@ import pytest +import spack.environment as ev import spack.spec -from spack.main import SpackCommand +import spack.store +from spack.main import SpackCommand, SpackCommandError pytestmark = pytest.mark.usefixtures('config', 'mutable_mock_repo') @@ -26,6 +28,33 @@ def test_spec(): assert 'mpich@3.0.4' in output +def test_spec_concretizer_args(mutable_config, mutable_database): + """End-to-end test of CLI concretizer prefs. + + It's here to make sure that everything works from CLI + options to `solver.py`, and that config options are not + lost along the way. + """ + if spack.config.get('config:concretizer') == 'original': + pytest.xfail('Known failure of the original concretizer') + + # remove two non-preferred mpileaks installations + # so that reuse will pick up the zmpi one + uninstall = SpackCommand("uninstall") + uninstall("-y", "mpileaks^mpich") + uninstall("-y", "mpileaks^mpich2") + + # get the hash of mpileaks^zmpi + mpileaks_zmpi = spack.store.db.query_one("mpileaks^zmpi") + h = mpileaks_zmpi.dag_hash()[:7] + + output = spec("--fresh", "-l", "mpileaks") + assert h not in output + + output = spec("--reuse", "-l", "mpileaks") + assert h in output + + def test_spec_yaml(): output = spec('--yaml', 'mpileaks') @@ -85,6 +114,20 @@ def test_spec_deptypes_edges(): def test_spec_returncode(): - with pytest.raises(spack.main.SpackCommandError): + with pytest.raises(SpackCommandError): spec() assert spec.returncode == 1 + + +def test_env_aware_spec(mutable_mock_env_path): + env = ev.create('test') + env.add('mpileaks') + + with env: + output = spec() + assert 'mpileaks@2.3' in output + assert 'callpath@1.0' in output + assert 'dyninst@8.2' in output + assert 'libdwarf@20130729' in output + assert 'libelf@0.8.1' in output + assert 'mpich@3.0.4' in output diff --git a/lib/spack/spack/test/cmd/stage.py b/lib/spack/spack/test/cmd/stage.py index 3119fb393c3a24..74a6881f6a7171 100644 --- a/lib/spack/spack/test/cmd/stage.py +++ b/lib/spack/spack/test/cmd/stage.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -18,6 +19,7 @@ pytestmark = pytest.mark.usefixtures('install_mockery', 'mock_packages') +@pytest.mark.skipif(sys.platform == 'win32', reason="not implemented on windows") def test_stage_spec(monkeypatch): """Verify that staging specs works.""" @@ -46,6 +48,7 @@ def fake_stage(pkg, mirror_only=False): return expected_path +@pytest.mark.skipif(sys.platform == 'win32', reason="PermissionError") def test_stage_path(check_stage_path): """Verify that --path only works with single specs.""" stage('--path={0}'.format(check_stage_path), 'trivial-install-test-package') @@ -59,6 +62,7 @@ def test_stage_path_errors_multiple_specs(check_stage_path): 'mpileaks') +@pytest.mark.skipif(sys.platform == 'win32', reason="not implemented on windows") def test_stage_with_env_outside_env(mutable_mock_env_path, monkeypatch): """Verify that stage concretizes specs not in environment instead of erroring.""" @@ -76,6 +80,7 @@ def fake_stage(pkg, mirror_only=False): stage('trivial-install-test-package') +@pytest.mark.skipif(sys.platform == 'win32', reason="not implemented on windows") def test_stage_with_env_inside_env(mutable_mock_env_path, monkeypatch): """Verify that stage filters specs in environment instead of reconcretizing.""" @@ -93,6 +98,7 @@ def fake_stage(pkg, mirror_only=False): stage('mpileaks') +@pytest.mark.skipif(sys.platform == 'win32', reason="not implemented on windows") def test_stage_full_env(mutable_mock_env_path, monkeypatch): """Verify that stage filters specs in environment.""" diff --git a/lib/spack/spack/test/cmd/style.py b/lib/spack/spack/test/cmd/style.py index 49fb169a4df37a..4269f0bd287326 100644 --- a/lib/spack/spack/test/cmd/style.py +++ b/lib/spack/spack/test/cmd/style.py @@ -86,7 +86,10 @@ def flake8_package_with_errors(scope="function"): def test_changed_files(flake8_package): # changed_files returns file paths relative to the root # directory of Spack. Convert to absolute file paths. - files = [os.path.join(spack.paths.prefix, path) for path in changed_files()] + files = [ + os.path.join(spack.paths.prefix, os.path.normpath(path)) + for path in changed_files() + ] # There will likely be other files that have changed # when these tests are run @@ -114,7 +117,7 @@ def test_changed_no_base(tmpdir, capfd): def test_changed_files_all_files(flake8_package): # it's hard to guarantee "all files", so do some sanity checks. files = set([ - os.path.join(spack.paths.prefix, path) + os.path.join(spack.paths.prefix, os.path.normpath(path)) for path in changed_files(all_files=True) ]) diff --git a/lib/spack/spack/test/cmd/test.py b/lib/spack/spack/test/cmd/test.py index 9661e8e551aada..0f8e707376fe9f 100644 --- a/lib/spack/spack/test/cmd/test.py +++ b/lib/spack/spack/test/cmd/test.py @@ -5,6 +5,7 @@ import argparse import os +import sys import pytest @@ -12,12 +13,14 @@ import spack.config import spack.package import spack.store -from spack.cmd.test import has_test_method from spack.main import SpackCommand install = SpackCommand('install') spack_test = SpackCommand('test') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_test_package_not_installed( tmpdir, mock_packages, mock_archive, mock_fetch, config, @@ -212,6 +215,7 @@ def test_test_list_all(mock_packages): "printing-package", "py-extension1", "py-extension2", + "simple-standalone-test", "test-error", "test-fail", ]) @@ -226,9 +230,11 @@ def test_test_list( assert pkg_with_tests in output +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_has_test_method_fails(capsys): with pytest.raises(SystemExit): - has_test_method('printing-package') + spack.package.has_test_method('printing-package') captured = capsys.readouterr()[1] assert 'is not a class' in captured @@ -260,3 +266,41 @@ def test_hash_change(mock_test_stage, mock_packages, mock_archive, mock_fetch, # The results should be obtainable results_output = spack_test('results') assert 'PASSED' in results_output + + +def test_test_results_none(mock_packages, mock_test_stage): + name = 'trivial' + spec = spack.spec.Spec('trivial-smoke-test').concretized() + suite = spack.install_test.TestSuite([spec], name) + suite.ensure_stage() + spack.install_test.write_test_suite_file(suite) + results = spack_test('results', name) + assert 'has no results' in results + assert 'if it is running' in results + + +@pytest.mark.parametrize('status,expected', [ + ('FAILED', '1 failed'), + ('NO-TESTS', '1 no-tests'), + ('SKIPPED', '1 skipped'), + ('PASSED', '1 passed'), +]) +def test_test_results_status(mock_packages, mock_test_stage, status, expected): + name = 'trivial' + spec = spack.spec.Spec('trivial-smoke-test').concretized() + suite = spack.install_test.TestSuite([spec], name) + suite.ensure_stage() + spack.install_test.write_test_suite_file(suite) + suite.write_test_result(spec, status) + + for opt in ['', '--failed', '--log']: + args = ['results', name] + if opt: + args.insert(1, opt) + + results = spack_test(*args) + if opt == '--failed' and status != 'FAILED': + assert status not in results + else: + assert status in results + assert expected in results diff --git a/lib/spack/spack/test/cmd/undevelop.py b/lib/spack/spack/test/cmd/undevelop.py index d4fdfa5375ceef..43a7f45ac37e07 100644 --- a/lib/spack/spack/test/cmd/undevelop.py +++ b/lib/spack/spack/test/cmd/undevelop.py @@ -3,6 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + +import pytest + import spack.environment as ev import spack.spec from spack.main import SpackCommand @@ -11,6 +15,9 @@ env = SpackCommand('env') concretize = SpackCommand('concretize') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_undevelop(tmpdir, config, mock_packages, mutable_mock_env_path): # setup environment diff --git a/lib/spack/spack/test/cmd/unit_test.py b/lib/spack/spack/test/cmd/unit_test.py index 276996501b0dfc..aa31282fdb47e9 100644 --- a/lib/spack/spack/test/cmd/unit_test.py +++ b/lib/spack/spack/test/cmd/unit_test.py @@ -3,10 +3,12 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.main import SpackCommand spack_test = SpackCommand('unit-test') -cmd_test_py = 'lib/spack/spack/test/cmd/unit_test.py' +cmd_test_py = os.path.join('lib', 'spack', 'spack', 'test', 'cmd', 'unit_test.py') def test_list(): diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py index 204f3a81b1af22..301185a6f70e9b 100644 --- a/lib/spack/spack/test/cmd/url.py +++ b/lib/spack/spack/test/cmd/url.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import re +import sys import pytest @@ -123,6 +124,10 @@ def test_url_summary(mock_packages): assert out_correct_versions == correct_versions +@pytest.mark.skipif( + sys.platform.startswith("win"), + reason="Unsupported on Windows for now" +) def test_url_stats(capfd, mock_packages): with capfd.disabled(): output = url('stats') diff --git a/lib/spack/spack/test/cmd/verify.py b/lib/spack/spack/test/cmd/verify.py index 80838c21e8463d..357f3751c00391 100644 --- a/lib/spack/spack/test/cmd/verify.py +++ b/lib/spack/spack/test/cmd/verify.py @@ -5,6 +5,9 @@ """Tests for the `spack verify` command""" import os +import sys + +import pytest import llnl.util.filesystem as fs @@ -17,6 +20,9 @@ verify = SpackCommand('verify') install = SpackCommand('install') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_single_file_verify_cmd(tmpdir): # Test the verify command interface to verifying a single file. diff --git a/lib/spack/spack/test/cmd/versions.py b/lib/spack/spack/test/cmd/versions.py index d931a3fe9b8fbd..f3be1ed3fe8c9d 100644 --- a/lib/spack/spack/test/cmd/versions.py +++ b/lib/spack/spack/test/cmd/versions.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest from spack.main import SpackCommand @@ -10,6 +12,9 @@ versions = SpackCommand('versions') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_safe_only_versions(): """Only test the safe versions of a package. diff --git a/lib/spack/spack/test/cmd/view.py b/lib/spack/spack/test/cmd/view.py index bdc44ffa2ce3ba..d1d265bade583f 100644 --- a/lib/spack/spack/test/cmd/view.py +++ b/lib/spack/spack/test/cmd/view.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os.path +import sys import pytest @@ -15,6 +16,9 @@ install = SpackCommand('install') view = SpackCommand('view') +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def create_projection_file(tmpdir, projection): if 'projections' not in projection: diff --git a/lib/spack/spack/test/cmd_extensions.py b/lib/spack/spack/test/cmd_extensions.py index d7e0538ce13878..dbe79e603acb7b 100644 --- a/lib/spack/spack/test/cmd_extensions.py +++ b/lib/spack/spack/test/cmd_extensions.py @@ -14,6 +14,8 @@ import spack.extensions import spack.main +is_windows = sys.platform == 'win32' + class Extension: """Helper class to simplify the creation of simple command extension @@ -259,12 +261,14 @@ def test_get_command_paths(config): def test_variable_in_extension_path(config, working_env): """Test variables in extension paths.""" - os.environ['_MY_VAR'] = "my/var" + os.environ['_MY_VAR'] = os.path.join('my', 'var') ext_paths = [ os.path.join("~", "${_MY_VAR}", "spack-extension-1") ] + # Home env variable is USERPROFILE on Windows + home_env = 'USERPROFILE' if is_windows else 'HOME' expected_ext_paths = [ - os.path.join(os.environ['HOME'], os.environ['_MY_VAR'], "spack-extension-1") + os.path.join(os.environ[home_env], os.environ['_MY_VAR'], "spack-extension-1") ] with spack.config.override('config:extensions', ext_paths): assert spack.extensions.get_extension_paths() == expected_ext_paths diff --git a/lib/spack/spack/test/compilers/basics.py b/lib/spack/spack/test/compilers/basics.py index bb46f009747751..76102801237f1b 100644 --- a/lib/spack/spack/test/compilers/basics.py +++ b/lib/spack/spack/test/compilers/basics.py @@ -212,6 +212,8 @@ def call_compiler(exe, *args, **kwargs): return no_flag_output +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('exe,flagname', [ ('cxx', ''), ('cxx', 'cxxflags'), @@ -265,6 +267,8 @@ def test_get_compiler_link_paths_no_verbose_flag(): assert dirs == [] +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.enable_compiler_link_paths def test_get_compiler_link_paths_load_env(working_env, monkeypatch, tmpdir): gcc = str(tmpdir.join('gcc')) @@ -697,6 +701,8 @@ def test_raising_if_compiler_target_is_over_specific(config): spack.compilers.get_compilers(cfg, 'gcc@9.0.1', arch_spec) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_compiler_get_real_version(working_env, monkeypatch, tmpdir): # Test variables test_version = '2.2.2' @@ -806,6 +812,8 @@ def _call(*args, **kwargs): assert 'SPACK_TEST_CMP_ON' not in os.environ +@pytest.mark.skipif(sys.platform == 'win32', + reason="Bash scripting unsupported on Windows (for now)") def test_compiler_flags_use_real_version(working_env, monkeypatch, tmpdir): # Create compiler gcc = str(tmpdir.join('gcc')) @@ -841,6 +849,8 @@ def test_compiler_flags_use_real_version(working_env, monkeypatch, tmpdir): assert flag == '-std=c++0x' +@pytest.mark.skipif(sys.platform == 'win32', + reason="Apple Clang and XCode unsupported on Windows") def test_apple_clang_setup_environment(mock_executable, monkeypatch): """Test a code path that is taken only if the package uses Xcode on MacOS. @@ -902,6 +912,8 @@ def _listdir(path): assert env.env_modifications[2].name == 'DEVELOPER_DIR' +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('xcode_select_output', [ '', '/Library/Developer/CommandLineTools' ]) diff --git a/lib/spack/spack/test/compilers/detection.py b/lib/spack/spack/test/compilers/detection.py index 6915b894c3a346..9f79ed1cb695ce 100644 --- a/lib/spack/spack/test/compilers/detection.py +++ b/lib/spack/spack/test/compilers/detection.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) """Test detection of compiler version""" import os +import sys import pytest @@ -320,6 +321,8 @@ def test_xl_version_detection(version_str, expected_version): assert version == expected_version +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('compiler,version', [ ('gcc', '8.1.0'), ('gcc', '1.0.0-foo'), diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index fae852edf8fb44..f47dc580734239 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.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 import sys import jinja2 @@ -22,6 +23,8 @@ from spack.util.mock_package import MockPackageMultiRepo from spack.version import ver +is_windows = sys.platform == 'win32' + def check_spec(abstract, concrete): if abstract.versions.concrete: @@ -176,13 +179,17 @@ def test_concretize(self, spec): def test_concretize_mention_build_dep(self): spec = check_concretize('cmake-client ^cmake@3.4.3') + # Check parent's perspective of child - dependency = spec.dependencies_dict()['cmake'] - assert set(dependency.deptypes) == set(['build']) + to_dependencies = spec.edges_to_dependencies(name='cmake') + assert len(to_dependencies) == 1 + assert set(to_dependencies[0].deptypes) == set(['build']) + # Check child's perspective of parent cmake = spec['cmake'] - dependent = cmake.dependents_dict()['cmake-client'] - assert set(dependent.deptypes) == set(['build']) + from_dependents = cmake.edges_from_dependents(name='cmake-client') + assert len(from_dependents) == 1 + assert set(from_dependents[0].deptypes) == set(['build']) def test_concretize_preferred_version(self): spec = check_concretize('python') @@ -363,6 +370,7 @@ def test_concretize_two_virtuals_with_dual_provider_and_a_conflict( with pytest.raises(spack.error.SpackError): s.concretize() + @pytest.mark.skipif(sys.platform == 'win32', reason='No Compiler for Arch on Win') 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(): @@ -379,30 +387,37 @@ def test_no_compilers_for_arch(self): def test_virtual_is_fully_expanded_for_callpath(self): # force dependence on fake "zmpi" by asking for MPI 10.0 spec = Spec('callpath ^mpi@10.0') - assert 'mpi' in spec._dependencies + assert len(spec.dependencies(name='mpi')) == 1 assert 'fake' not in spec + spec.concretize() - assert 'zmpi' in spec._dependencies - assert all('mpi' not in d._dependencies for d in spec.traverse()) - assert 'zmpi' in spec - assert 'mpi' in spec - assert 'fake' in spec._dependencies['zmpi'].spec + assert len(spec.dependencies(name='zmpi')) == 1 + assert all(not d.dependencies(name='mpi') for d in spec.traverse()) + assert all(x in spec for x in ('zmpi', 'mpi')) + + edges_to_zmpi = spec.edges_to_dependencies(name='zmpi') + assert len(edges_to_zmpi) == 1 + assert 'fake' in edges_to_zmpi[0].spec def test_virtual_is_fully_expanded_for_mpileaks( self ): spec = Spec('mpileaks ^mpi@10.0') - assert 'mpi' in spec._dependencies + assert len(spec.dependencies(name='mpi')) == 1 assert 'fake' not in spec + spec.concretize() - assert 'zmpi' in spec._dependencies - assert 'callpath' in spec._dependencies - assert 'zmpi' in spec._dependencies['callpath'].spec._dependencies - assert 'fake' in spec._dependencies['callpath'].spec._dependencies[ - 'zmpi'].spec._dependencies # NOQA: ignore=E501 - assert all('mpi' not in d._dependencies for d in spec.traverse()) - assert 'zmpi' in spec - assert 'mpi' in spec + assert len(spec.dependencies(name='zmpi')) == 1 + assert len(spec.dependencies(name='callpath')) == 1 + + callpath = spec.dependencies(name='callpath')[0] + assert len(callpath.dependencies(name='zmpi')) == 1 + + zmpi = callpath.dependencies(name='zmpi')[0] + assert len(zmpi.dependencies(name='fake')) == 1 + + assert all(not d.dependencies(name='mpi') for d in spec.traverse()) + assert all(x in spec for x in ('zmpi', 'mpi')) def test_my_dep_depends_on_provider_of_my_virtual_dep(self): spec = Spec('indirect-mpich') @@ -421,15 +436,17 @@ def test_compiler_inheritance(self, compiler_str): def test_external_package(self): spec = Spec('externaltool%gcc') spec.concretize() - assert spec['externaltool'].external_path == '/path/to/external_tool' + assert spec['externaltool'].external_path == \ + os.path.sep + os.path.join('path', 'to', 'external_tool') assert 'externalprereq' not in spec assert spec['externaltool'].compiler.satisfies('gcc') def test_external_package_module(self): # No tcl modules on darwin/linux machines + # and Windows does not (currently) allow for bash calls # TODO: improved way to check for this. platform = spack.platforms.real_host().name - if platform == 'darwin' or platform == 'linux': + if platform == 'darwin' or platform == 'linux' or platform == 'windows': return spec = Spec('externalmodule') @@ -449,8 +466,10 @@ def test_nobuild_package(self): def test_external_and_virtual(self): spec = Spec('externaltest') spec.concretize() - assert spec['externaltool'].external_path == '/path/to/external_tool' - assert spec['stuff'].external_path == '/path/to/external_virtual_gcc' + assert spec['externaltool'].external_path == \ + os.path.sep + os.path.join('path', 'to', 'external_tool') + assert spec['stuff'].external_path == \ + os.path.sep + os.path.join('path', 'to', 'external_virtual_gcc') assert spec['externaltool'].compiler.satisfies('gcc') assert spec['stuff'].compiler.satisfies('gcc') @@ -604,7 +623,7 @@ def test_regression_issue_4492(self): assert s.concrete # Remove the dependencies and reset caches - s._dependencies.clear() + s.clear_dependencies() s._concrete = False assert not s.concrete @@ -693,6 +712,8 @@ def test_noversion_pkg(self, spec): with pytest.raises(spack.error.SpackError): Spec(spec).concretized() + @pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") # Include targets to prevent regression on 20537 @pytest.mark.parametrize('spec, best_achievable', [ ('mpileaks%gcc@4.4.7 ^dyninst@10.2.1 target=x86_64:', 'core2'), @@ -1102,7 +1123,7 @@ def test_custom_compiler_version(self): assert '%gcc@foo' in s def test_all_patches_applied(self): - uuidpatch = 'a60a42b73e03f207433c5579de207c6ed61d58e4d12dd3b5142eb525728d89ea' + uuidpatch = 'a60a42b73e03f207433c5579de207c6ed61d58e4d12dd3b5142eb525728d89ea' if not is_windows else 'd0df7988457ec999c148a4a2af25ce831bfaad13954ba18a4446374cb0aef55e' localpatch = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' spec = spack.spec.Spec('conditionally-patch-dependency+jasper') spec.concretize() @@ -1345,7 +1366,7 @@ def test_non_default_provider_of_multiple_virtuals(self): ('mpich~debug', True) ]) def test_concrete_specs_are_not_modified_on_reuse( - self, mutable_database, spec_str, expect_installed + self, mutable_database, spec_str, expect_installed, config ): if spack.config.get('config:concretizer') == 'original': pytest.skip('Original concretizer cannot reuse specs') @@ -1354,7 +1375,8 @@ def test_concrete_specs_are_not_modified_on_reuse( # when reused specs are added to the mix. This prevents things # like additional constraints being added to concrete specs in # the answer set produced by clingo. - s = spack.spec.Spec(spec_str).concretized(reuse=True) + with spack.config.override("concretizer:reuse", True): + s = spack.spec.Spec(spec_str).concretized() assert s.package.installed is expect_installed assert s.satisfies(spec_str, strict=True) @@ -1375,3 +1397,16 @@ def test_sticky_variant_in_package(self): s = spack.spec.Spec('sticky-variant %clang').concretized() assert s.satisfies('%clang') and s.satisfies('~allow-gcc') + + def test_do_not_invent_new_concrete_versions_unless_necessary(self): + if spack.config.get('config:concretizer') == 'original': + pytest.skip( + "Original concretizer doesn't resolve concrete versions to known ones" + ) + + # ensure we select a known satisfying version rather than creating + # a new '2.7' version. + assert ver("2.7.11") == Spec("python@2.7").concretized().version + + # Here there is no known satisfying version - use the one on the spec. + assert ver("2.7.21") == Spec("python@2.7.21").concretized().version diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index 7bcfc75f7d3226..525bd0701f0eb8 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import stat import pytest @@ -230,7 +231,7 @@ def test_external_mpi(self): # ensure that once config is in place, external is used spec = Spec('mpi') spec.concretize() - assert spec['mpich'].external_path == '/dummy/path' + assert spec['mpich'].external_path == os.sep + os.path.join('dummy', 'path') def test_external_module(self, monkeypatch): """Test that packages can find externals specified by module diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py index e7a21fe1dda906..a765582a2b506c 100644 --- a/lib/spack/spack/test/config.py +++ b/lib/spack/spack/test/config.py @@ -6,12 +6,13 @@ import collections import getpass import os +import sys import tempfile import pytest from six import StringIO -from llnl.util.filesystem import mkdirp, touch +from llnl.util.filesystem import getuid, mkdirp, touch import spack.config import spack.environment as ev @@ -91,6 +92,13 @@ def env_yaml(tmpdir): return env_yaml +def cross_plat_join(*pths): + """os.path.join does not prepend paths to other paths + beginning with a Windows drive label i.e. D:\\ + """ + return os.sep.join([pth for pth in pths]) + + def check_compiler_config(comps, *compiler_names): """Check that named compilers in comps match Spack's config.""" config = spack.config.get('compilers') @@ -335,61 +343,64 @@ def __init__(self, path): def test_substitute_config_variables(mock_low_high_config, monkeypatch): prefix = spack.paths.prefix.lstrip('/') - - assert os.path.join( - '/foo/bar/baz', prefix + assert cross_plat_join( + os.sep + os.path.join('foo', 'bar', 'baz'), prefix ) == spack_path.canonicalize_path('/foo/bar/baz/$spack') - assert os.path.join( - spack.paths.prefix, 'foo/bar/baz' + assert cross_plat_join( + spack.paths.prefix, os.path.join('foo', 'bar', 'baz') ) == spack_path.canonicalize_path('$spack/foo/bar/baz/') - assert os.path.join( - '/foo/bar/baz', prefix, 'foo/bar/baz' + assert cross_plat_join( + os.sep + os.path.join('foo', 'bar', 'baz'), + prefix, os.path.join('foo', 'bar', 'baz') ) == spack_path.canonicalize_path('/foo/bar/baz/$spack/foo/bar/baz/') - assert os.path.join( - '/foo/bar/baz', prefix + assert cross_plat_join( + os.sep + os.path.join('foo', 'bar', 'baz'), prefix ) == spack_path.canonicalize_path('/foo/bar/baz/${spack}') - assert os.path.join( - spack.paths.prefix, 'foo/bar/baz' + assert cross_plat_join( + spack.paths.prefix, os.path.join('foo', 'bar', 'baz') ) == spack_path.canonicalize_path('${spack}/foo/bar/baz/') - assert os.path.join( - '/foo/bar/baz', prefix, 'foo/bar/baz' + assert cross_plat_join( + os.sep + os.path.join('foo', 'bar', 'baz'), + prefix, os.path.join('foo', 'bar', 'baz') ) == spack_path.canonicalize_path('/foo/bar/baz/${spack}/foo/bar/baz/') - assert os.path.join( - '/foo/bar/baz', prefix, 'foo/bar/baz' + assert cross_plat_join( + os.sep + os.path.join('foo', 'bar', 'baz'), + prefix, os.path.join('foo', 'bar', 'baz') ) != spack_path.canonicalize_path('/foo/bar/baz/${spack/foo/bar/baz/') # $env replacement is a no-op when no environment is active assert spack_path.canonicalize_path( - '/foo/bar/baz/$env' - ) == '/foo/bar/baz/$env' + os.sep + os.path.join('foo', 'bar', 'baz', '$env') + ) == os.sep + os.path.join('foo', 'bar', 'baz', '$env') # Fake an active environment and $env is replaced properly - fake_env_path = '/quux/quuux' + fake_env_path = os.sep + os.path.join('quux', 'quuux') monkeypatch.setattr(ev, 'active_environment', lambda: MockEnv(fake_env_path)) assert spack_path.canonicalize_path( '$env/foo/bar/baz' - ) == os.path.join(fake_env_path, 'foo/bar/baz') + ) == os.path.join(fake_env_path, os.path.join('foo', 'bar', 'baz')) # relative paths without source information are relative to cwd assert spack_path.canonicalize_path( - 'foo/bar/baz' - ) == os.path.abspath('foo/bar/baz') + os.path.join('foo', 'bar', 'baz') + ) == os.path.abspath(os.path.join('foo', 'bar', 'baz')) # relative paths with source information are relative to the file spack.config.set( - 'modules:default', {'roots': {'lmod': 'foo/bar/baz'}}, scope='low') + 'modules:default', + {'roots': {'lmod': os.path.join('foo', 'bar', 'baz')}}, scope='low') spack.config.config.clear_caches() path = spack.config.get('modules:default:roots:lmod') assert spack_path.canonicalize_path(path) == os.path.normpath( os.path.join(mock_low_high_config.scopes['low'].path, - 'foo/bar/baz')) + os.path.join('foo', 'bar', 'baz'))) packages_merge_low = { @@ -438,24 +449,27 @@ def test_merge_with_defaults(mock_low_high_config, write_config_file): def test_substitute_user(mock_low_high_config): user = getpass.getuser() - assert '/foo/bar/' + user + '/baz' == spack_path.canonicalize_path( - '/foo/bar/$user/baz' + assert os.sep + os.path.join('foo', 'bar') + os.sep \ + + user + os.sep \ + + 'baz' == spack_path.canonicalize_path( + os.sep + os.path.join('foo', 'bar', '$user', 'baz') ) def test_substitute_user_cache(mock_low_high_config): user_cache_path = spack.paths.user_cache_path - assert user_cache_path + '/baz' == spack_path.canonicalize_path( - '$user_cache_path/baz' + assert user_cache_path + os.sep + 'baz' == spack_path.canonicalize_path( + os.path.join('$user_cache_path', 'baz') ) def test_substitute_tempdir(mock_low_high_config): tempdir = tempfile.gettempdir() assert tempdir == spack_path.canonicalize_path('$tempdir') - assert tempdir + '/foo/bar/baz' == spack_path.canonicalize_path( - '$tempdir/foo/bar/baz' - ) + assert tempdir + os.sep + \ + os.path.join('foo', 'bar', 'baz') == spack_path.canonicalize_path( + os.path.join('$tempdir', 'foo', 'bar', 'baz') + ) PAD_STRING = spack.util.path.SPACK_PATH_PADDING_CHARS @@ -463,34 +477,57 @@ def test_substitute_tempdir(mock_low_high_config): MAX_PADDED_LEN = MAX_PATH_LEN - spack.util.path.SPACK_MAX_INSTALL_PATH_LENGTH reps = [PAD_STRING for _ in range((MAX_PADDED_LEN // len(PAD_STRING) + 1) + 2)] full_padded_string = os.path.join( - '/path', os.path.sep.join(reps))[:MAX_PADDED_LEN] + os.sep + 'path', os.sep.join(reps))[:MAX_PADDED_LEN] @pytest.mark.parametrize('config_settings,expected', [ ([], [None, None, None]), - ([['config:install_tree:root', '/path']], ['/path', None, None]), - ([['config:install_tree', '/path']], ['/path', None, None]), + ([['config:install_tree:root', os.sep + 'path']], [os.sep + 'path', None, None]), + ([['config:install_tree', os.sep + 'path']], [os.sep + 'path', None, None]), ([['config:install_tree:projections', {'all': '{name}'}]], [None, None, {'all': '{name}'}]), ([['config:install_path_scheme', '{name}']], [None, None, {'all': '{name}'}]), - ([['config:install_tree:root', '/path'], +]) +def test_parse_install_tree(config_settings, expected, mutable_config): + expected_root = expected[0] or spack.store.default_install_tree_root + expected_unpadded_root = expected[1] or expected_root + expected_proj = expected[2] or spack.directory_layout.default_projections + + # config settings is a list of 2-element lists, [path, value] + # where path is a config path and value is the value to set at that path + # these can be "splatted" in as the arguments to config.set + for config_setting in config_settings: + mutable_config.set(*config_setting) + + config_dict = mutable_config.get('config') + root, unpadded_root, projections = spack.store.parse_install_tree( + config_dict) + assert root == expected_root + assert unpadded_root == expected_unpadded_root + assert projections == expected_proj + + +@pytest.mark.skipif(sys.platform == 'win32', + reason='Padding unsupported on Windows') +@pytest.mark.parametrize('config_settings,expected', [ + ([['config:install_tree:root', os.sep + 'path'], ['config:install_tree:padded_length', 11]], - [os.path.join('/path', PAD_STRING[:5]), '/path', None]), + [os.path.join(os.sep + 'path', PAD_STRING[:5]), os.sep + 'path', None]), ([['config:install_tree:root', '/path/$padding:11']], - [os.path.join('/path', PAD_STRING[:5]), '/path', None]), + [os.path.join(os.sep + 'path', PAD_STRING[:5]), os.sep + 'path', None]), ([['config:install_tree', '/path/${padding:11}']], - [os.path.join('/path', PAD_STRING[:5]), '/path', None]), + [os.path.join(os.sep + 'path', PAD_STRING[:5]), os.sep + 'path', None]), ([['config:install_tree:padded_length', False]], [None, None, None]), ([['config:install_tree:padded_length', True], - ['config:install_tree:root', '/path']], - [full_padded_string, '/path', None]), - ([['config:install_tree:', '/path$padding']], - [full_padded_string, '/path', None]), - ([['config:install_tree:', '/path/${padding}']], - [full_padded_string, '/path', None]), + ['config:install_tree:root', os.sep + 'path']], + [full_padded_string, os.sep + 'path', None]), + ([['config:install_tree:', os.sep + 'path$padding']], + [full_padded_string, os.sep + 'path', None]), + ([['config:install_tree:', os.sep + 'path' + os.sep + '${padding}']], + [full_padded_string, os.sep + 'path', None]), ]) -def test_parse_install_tree(config_settings, expected, mutable_config): +def test_parse_install_tree_padded(config_settings, expected, mutable_config): expected_root = expected[0] or spack.store.default_install_tree_root expected_unpadded_root = expected[1] or expected_root expected_proj = expected[2] or spack.directory_layout.default_projections @@ -504,7 +541,6 @@ def test_parse_install_tree(config_settings, expected, mutable_config): config_dict = mutable_config.get('config') root, unpadded_root, projections = spack.store.parse_install_tree( config_dict) - assert root == expected_root assert unpadded_root == expected_unpadded_root assert projections == expected_proj @@ -816,7 +852,9 @@ def test_bad_config_section(mock_low_high_config): spack.config.get('foobar') -@pytest.mark.skipif(os.getuid() == 0, reason='user is root') +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") +@pytest.mark.skipif(getuid() == 0, reason='user is root') def test_bad_command_line_scopes(tmpdir, mock_low_high_config): cfg = spack.config.Configuration() @@ -1195,7 +1233,8 @@ def test_system_config_path_is_overridable(working_env): def test_system_config_path_is_default_when_env_var_is_empty(working_env): os.environ['SPACK_SYSTEM_CONFIG_PATH'] = '' - assert "/etc/spack" == spack.paths._get_system_config_path() + assert os.sep + os.path.join('etc', 'spack') == \ + spack.paths._get_system_config_path() def test_user_config_path_is_overridable(working_env): @@ -1206,7 +1245,8 @@ def test_user_config_path_is_overridable(working_env): def test_user_config_path_is_default_when_env_var_is_empty(working_env): os.environ['SPACK_USER_CONFIG_PATH'] = '' - assert os.path.expanduser("~/.spack") == spack.paths._get_user_config_path() + assert os.path.expanduser("~%s.spack" % os.sep) == \ + spack.paths._get_user_config_path() def test_local_config_can_be_disabled(working_env): @@ -1240,4 +1280,5 @@ def test_user_cache_path_is_overridable(working_env): def test_user_cache_path_is_default_when_env_var_is_empty(working_env): os.environ['SPACK_USER_CACHE_PATH'] = '' - assert os.path.expanduser("~/.spack") == spack.paths._get_user_cache_path() + assert os.path.expanduser("~%s.spack" % os.sep) == \ + spack.paths._get_user_cache_path() diff --git a/lib/spack/spack/test/config_values.py b/lib/spack/spack/test/config_values.py index 7df17173a5b3af..66005456103260 100644 --- a/lib/spack/spack/test/config_values.py +++ b/lib/spack/spack/test/config_values.py @@ -2,11 +2,16 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.spec import spack.store +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.parametrize('hash_length', [1, 2, 3, 4, 5, 9]) @pytest.mark.usefixtures('mock_packages') @@ -24,7 +29,7 @@ def test_set_install_hash_length(hash_length, mutable_config, tmpdir): assert len(hash_str) == hash_length -@pytest.mark.usefixtures('mock_packages') +@pytest.mark.use_fixtures('mock_packages') def test_set_install_hash_length_upper_case(mutable_config, tmpdir): mutable_config.set('config:install_hash_length', 5) mutable_config.set( diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index cedc9d4f22965e..32c73af18c6f6e 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -13,6 +13,8 @@ import os.path import re import shutil +import stat +import sys import tempfile import xml.etree.ElementTree from typing import Dict # novm @@ -47,6 +49,8 @@ from spack.fetch_strategy import FetchError, FetchStrategyComposite, URLFetchStrategy from spack.util.pattern import Bunch +is_windows = sys.platform == 'win32' + # # Return list of shas for latest two git commits in local spack repo @@ -294,6 +298,14 @@ def reset_compiler_cache(): spack.compilers._compiler_cache = {} +def onerror(func, path, error_info): + # Python on Windows is unable to remvove paths without + # write (IWUSR) permissions (such as those generated by Git on Windows) + # This method changes file permissions to allow removal by Python + os.chmod(path, stat.S_IWUSR) + func(path) + + @pytest.fixture(scope='function', autouse=True) def mock_stage(tmpdir_factory, monkeypatch, request): """Establish the temporary build_stage for the mock archive.""" @@ -317,7 +329,7 @@ def mock_stage(tmpdir_factory, monkeypatch, request): # Clean up the test stage directory if os.path.isdir(new_stage_path): - shutil.rmtree(new_stage_path) + shutil.rmtree(new_stage_path, onerror=onerror) else: # Must yield a path to avoid a TypeError on test teardown yield str(tmpdir_factory) @@ -340,7 +352,7 @@ def remove_whatever_it_is(path): elif os.path.islink(path): remove_linked_tree(path) else: - shutil.rmtree(path) + shutil.rmtree(path, onerror=onerror) @pytest.fixture @@ -375,7 +387,7 @@ def check_for_leftover_stage_files(request, mock_stage, ignore_stage_files): stage_files = os.listdir(stage_path) files_in_stage = set(stage_files) - ignore_stage_files except OSError as err: - if err.errno == errno.ENOENT: + if err.errno == errno.ENOENT or err.errno == errno.EINVAL: pass else: raise @@ -531,6 +543,11 @@ def linux_os(): return LinuxOS(name=name, version=version) +@pytest.fixture(autouse=is_windows, scope='session') +def platform_config(): + spack.config.add_default_platform_scope(spack.platforms.real_host().name) + + @pytest.fixture(scope='session') def default_config(): """Isolates the default configuration from the user configs. @@ -538,6 +555,8 @@ def default_config(): This ensures we can test the real default configuration without having tests fail when the user overrides the defaults that we test against.""" defaults_path = os.path.join(spack.paths.etc_path, 'spack', 'defaults') + if is_windows: + defaults_path = os.path.join(defaults_path, "windows") with spack.config.use_configuration(defaults_path) as defaults_config: yield defaults_config @@ -591,13 +610,19 @@ def configuration_dir(tmpdir_factory, linux_os): tmpdir.ensure('user', dir=True) # Slightly modify config.yaml and compilers.yaml - solver = os.environ.get('SPACK_TEST_SOLVER', 'clingo') + if is_windows: + solver = 'original' + locks = False + else: + solver = os.environ.get('SPACK_TEST_SOLVER', 'clingo') + locks = True + config_yaml = test_config.join('config.yaml') modules_root = tmpdir_factory.mktemp('share') tcl_root = modules_root.ensure('modules', dir=True) lmod_root = modules_root.ensure('lmod', dir=True) content = ''.join(config_yaml.read()).format( - solver, str(tcl_root), str(lmod_root) + solver, locks, str(tcl_root), str(lmod_root) ) t = tmpdir.join('site', 'config.yaml') t.write(content) @@ -612,19 +637,23 @@ def configuration_dir(tmpdir_factory, linux_os): shutil.rmtree(str(tmpdir)) +def _create_mock_configuration_scopes(configuration_dir): + """Create the configuration scopes used in `config` and `mutable_config`.""" + scopes = [ + spack.config.InternalConfigScope('_builtin', spack.config.config_defaults), + ] + scopes += [ + spack.config.ConfigScope(name, str(configuration_dir.join(name))) + for name in ['site', 'system', 'user'] + ] + scopes += [spack.config.InternalConfigScope('command_line')] + return scopes + + @pytest.fixture(scope='session') def mock_configuration_scopes(configuration_dir): """Create a persistent Configuration object from the configuration_dir.""" - defaults = spack.config.InternalConfigScope( - '_builtin', spack.config.config_defaults - ) - test_scopes = [defaults] - test_scopes += [ - spack.config.ConfigScope(name, str(configuration_dir.join(name))) - for name in ['site', 'system', 'user']] - test_scopes.append(spack.config.InternalConfigScope('command_line')) - - yield test_scopes + yield _create_mock_configuration_scopes(configuration_dir) @pytest.fixture(scope='function') @@ -640,9 +669,7 @@ def mutable_config(tmpdir_factory, configuration_dir): mutable_dir = tmpdir_factory.mktemp('mutable_config').join('tmp') configuration_dir.copy(mutable_dir) - scopes = [spack.config.ConfigScope(name, str(mutable_dir.join(name))) - for name in ['site', 'system', 'user']] - + scopes = _create_mock_configuration_scopes(mutable_dir) with spack.config.use_configuration(*scopes) as cfg: yield cfg @@ -662,6 +689,8 @@ def mutable_empty_config(tmpdir_factory, configuration_dir): def no_compilers_yaml(mutable_config): """Creates a temporary configuration without compilers.yaml""" for scope, local_config in mutable_config.scopes.items(): + if not local_config.path: # skip internal scopes + continue compilers_yaml = os.path.join(local_config.path, 'compilers.yaml') if os.path.exists(compilers_yaml): os.remove(compilers_yaml) @@ -750,10 +779,11 @@ def mock_store(tmpdir_factory, mock_repo_path, mock_configuration_scopes, @pytest.fixture(scope='function') -def database(mock_store, mock_packages, config, monkeypatch): +def database(mock_store, mock_packages, config): """This activates the mock store, packages, AND config.""" with spack.store.use_store(str(mock_store)) as store: yield store.db + # Force reading the database again between tests store.db.last_seen_verifier = '' @@ -881,7 +911,7 @@ def __init__(self, root): self.root = root def path_for_spec(self, spec): - return '/'.join([self.root, spec.name + '-' + spec.dag_hash()]) + return os.path.sep.join([self.root, spec.name + '-' + spec.dag_hash()]) def ensure_installed(self, spec): pass @@ -1027,10 +1057,11 @@ def mock_archive(request, tmpdir_factory): ['url', 'path', 'archive_file', 'expanded_archive_basedir']) archive_file = str(tmpdir.join(archive_name)) + url = ('file://' + archive_file) # Return the url yield Archive( - url=('file://' + archive_file), + url=url, archive_file=archive_file, path=str(repodir), expanded_archive_basedir=spack.stage._source_path_subdir) @@ -1515,11 +1546,14 @@ def mock_executable(tmpdir): output a custom string when run. """ import jinja2 + shebang = '#!/bin/bash\n' if not is_windows else '@ECHO OFF' def _factory(name, output, subdir=('bin',)): f = tmpdir.ensure(*subdir, dir=True).join(name) - t = jinja2.Template('#!/bin/bash\n{{ output }}\n') - f.write(t.render(output=output)) + if is_windows: + f += '.bat' + t = jinja2.Template('{{ shebang }}{{ output }}\n') + f.write(t.render(shebang=shebang, output=output)) f.chmod(0o755) return str(f) @@ -1542,3 +1576,40 @@ def brand_new_binary_cache(): yield spack.binary_distribution.binary_index = llnl.util.lang.Singleton( spack.binary_distribution._binary_index) + + +@pytest.fixture() +def noncyclical_dir_structure(tmpdir): + """ + Create some non-trivial directory structure with + symlinks to dirs and dangling symlinks, but no cycles:: + + . + |-- a/ + | |-- d/ + | |-- file_1 + | |-- to_file_1 -> file_1 + | `-- to_c -> ../c + |-- b -> a + |-- c/ + | |-- dangling_link -> nowhere + | `-- file_2 + `-- file_3 + """ + d, j = tmpdir.mkdir('nontrivial-dir'), os.path.join + + with d.as_cwd(): + os.mkdir(j('a')) + os.mkdir(j('a', 'd')) + with open(j('a', 'file_1'), 'wb'): + pass + os.symlink(j('file_1'), j('a', 'to_file_1')) + os.symlink(j('..', 'c'), j('a', 'to_c')) + os.symlink(j('a'), j('b')) + os.mkdir(j('c')) + os.symlink(j('nowhere'), j('c', 'dangling_link')) + with open(j('c', 'file_2'), 'wb'): + pass + with open(j('file_3'), 'wb'): + pass + yield d diff --git a/lib/spack/spack/test/container/cli.py b/lib/spack/spack/test/container/cli.py index 6eb40b61e5ea9f..4199aa51b7bc9f 100644 --- a/lib/spack/spack/test/container/cli.py +++ b/lib/spack/spack/test/container/cli.py @@ -8,6 +8,7 @@ import spack.container.images import spack.main +import spack.platforms containerize = spack.main.SpackCommand('containerize') @@ -26,6 +27,8 @@ def test_listing_possible_os(): assert expected_os in output +@pytest.mark.skipif(str(spack.platforms.host()) == "windows", + reason="test unsupported on Windows") @pytest.mark.maybeslow @pytest.mark.requires_executables('git') def test_bootstrap_phase(minimal_configuration, config_dumper, capsys): diff --git a/lib/spack/spack/test/data/config/config.yaml b/lib/spack/spack/test/data/config/config.yaml index d5c5f914fbb9d7..43e8ad1abc2c49 100644 --- a/lib/spack/spack/test/data/config/config.yaml +++ b/lib/spack/spack/test/data/config/config.yaml @@ -14,3 +14,4 @@ config: checksum: true dirty: false concretizer: {0} + locks: {1} diff --git a/lib/spack/spack/test/data/web/4.html b/lib/spack/spack/test/data/web/4.html index b5fe850f4d79a0..dfe51df053a315 100644 --- a/lib/spack/spack/test/data/web/4.html +++ b/lib/spack/spack/test/data/web/4.html @@ -7,5 +7,6 @@ foo-4.5.tar.gz. foo-4.1-rc5.tar.gz. + foo-4.5.0.tar.gz. diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 1509dbb3356410..4278aeb4f078e0 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -12,6 +12,7 @@ import json import os import shutil +import sys import pytest @@ -36,6 +37,8 @@ from spack.util.executable import Executable from spack.util.mock_package import MockPackageMultiRepo +is_windows = sys.platform == 'win32' + pytestmark = pytest.mark.db @@ -61,6 +64,8 @@ def upstream_and_downstream_db(tmpdir_factory, gen_mock_layout): downstream_db, downstream_layout +@pytest.mark.skipif(sys.platform == 'win32', + reason="Upstreams currently unsupported on Windows") @pytest.mark.usefixtures('config') def test_installed_upstream(upstream_and_downstream_db): upstream_write_db, upstream_db, upstream_layout,\ @@ -104,6 +109,8 @@ def test_installed_upstream(upstream_and_downstream_db): downstream_db._check_ref_counts() +@pytest.mark.skipif(sys.platform == 'win32', + reason="Upstreams currently unsupported on Windows") @pytest.mark.usefixtures('config') def test_removed_upstream_dep(upstream_and_downstream_db): upstream_write_db, upstream_db, upstream_layout,\ @@ -135,6 +142,8 @@ def test_removed_upstream_dep(upstream_and_downstream_db): new_downstream._read() +@pytest.mark.skipif(sys.platform == 'win32', + reason="Upstreams currently unsupported on Windows") @pytest.mark.usefixtures('config') def test_add_to_upstream_after_downstream(upstream_and_downstream_db): """An upstream DB can add a package after it is installed in the downstream @@ -172,6 +181,8 @@ def test_add_to_upstream_after_downstream(upstream_and_downstream_db): spack.store.db = orig_db +@pytest.mark.skipif(sys.platform == 'win32', + reason="Upstreams currently unsupported on Windows") @pytest.mark.usefixtures('config', 'temporary_store') def test_cannot_write_upstream(tmpdir_factory, gen_mock_layout): roots = [str(tmpdir_factory.mktemp(x)) for x in ['a', 'b']] @@ -197,6 +208,8 @@ def test_cannot_write_upstream(tmpdir_factory, gen_mock_layout): upstream_dbs[0].add(spec, layouts[1]) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Upstreams currently unsupported on Windows") @pytest.mark.usefixtures('config', 'temporary_store') def test_recursive_upstream_dbs(tmpdir_factory, gen_mock_layout): roots = [str(tmpdir_factory.mktemp(x)) for x in ['a', 'b', 'c']] @@ -416,7 +429,9 @@ def test_005_db_exists(database): index_file = os.path.join(database.root, '.spack-db', 'index.json') lock_file = os.path.join(database.root, '.spack-db', 'lock') assert os.path.exists(str(index_file)) - assert os.path.exists(str(lock_file)) + # Lockfiles not currently supported on Windows + if not is_windows: + assert os.path.exists(str(lock_file)) with open(index_file) as fd: index_object = json.load(fd) @@ -690,13 +705,15 @@ def test_external_entries_in_db(mutable_database): assert not rec.spec.external_modules rec = mutable_database.get_record('externaltool') - assert rec.spec.external_path == '/path/to/external_tool' + assert rec.spec.external_path == os.sep + \ + os.path.join('path', 'to', 'external_tool') assert not rec.spec.external_modules assert rec.explicit is False rec.spec.package.do_install(fake=True, explicit=True) rec = mutable_database.get_record('externaltool') - assert rec.spec.external_path == '/path/to/external_tool' + assert rec.spec.external_path == os.sep + \ + os.path.join('path', 'to', 'external_tool') assert not rec.spec.external_modules assert rec.explicit is True @@ -973,3 +990,36 @@ def test_reindex_when_all_prefixes_are_removed(mutable_database, mock_store): mutable_database.remove(s) assert len(mutable_database.query_local(installed=False, explicit=True)) == 0 + + +@pytest.mark.parametrize('spec_str,parent_name,expected_nparents', [ + ('dyninst', 'callpath', 3), + ('libelf', 'dyninst', 1), + ('libelf', 'libdwarf', 1) +]) +@pytest.mark.regression('11983') +def test_check_parents(spec_str, parent_name, expected_nparents, database): + """Check that a spec returns the correct number of parents.""" + s = database.query_one(spec_str) + + parents = s.dependents(name=parent_name) + assert len(parents) == expected_nparents + + edges = s.edges_from_dependents(name=parent_name) + assert len(edges) == expected_nparents + + +def test_consistency_of_dependents_upon_remove(mutable_database): + # Check the initial state + s = mutable_database.query_one('dyninst') + parents = s.dependents(name='callpath') + assert len(parents) == 3 + + # Remove a dependent (and all its dependents) + mutable_database.remove('mpileaks ^callpath ^mpich2') + mutable_database.remove('callpath ^mpich2') + + # Check the final state + s = mutable_database.query_one('dyninst') + parents = s.dependents(name='callpath') + assert len(parents) == 2 diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index f7c7a6dad02ed7..7aa6a565fcfbb3 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -18,6 +18,7 @@ InvalidDirectoryLayoutParametersError, ) from spack.spec import Spec +from spack.util.path import path_to_os_path # number of packages to test (to reduce test time) max_packages = 10 @@ -103,7 +104,7 @@ def test_read_and_write_spec(temporary_store, config, mock_packages): layout.create_install_directory(spec) - install_dir = layout.path_for_spec(spec) + install_dir = path_to_os_path(layout.path_for_spec(spec))[0] spec_path = layout.spec_file_path(spec) # Ensure directory has been created in right place. diff --git a/lib/spack/spack/test/env.py b/lib/spack/spack/test/env.py index f68ffd31758d39..fc4cf031a82951 100644 --- a/lib/spack/spack/test/env.py +++ b/lib/spack/spack/test/env.py @@ -11,6 +11,8 @@ import spack.spec +@pytest.mark.skipif(str(spack.platforms.host()) == 'windows', + reason='Not supported on Windows (yet)') def test_hash_change_no_rehash_concrete(tmpdir, mock_packages, config): # create an environment env_path = tmpdir.mkdir('env_dir').strpath diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index 2040fb90eaca0f..36bd87bc7e5c51 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -3,9 +3,16 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import pickle +import pytest + from spack.environment import Environment +from spack.environment.environment import ( + SpackEnvironmentViewError, + _error_on_nonempty_view_dir, +) def test_environment_pickle(tmpdir): @@ -13,3 +20,31 @@ def test_environment_pickle(tmpdir): obj = pickle.dumps(env1) env2 = pickle.loads(obj) assert isinstance(env2, Environment) + + +def test_error_on_nonempty_view_dir(tmpdir): + """Error when the target is not an empty dir""" + with tmpdir.as_cwd(): + os.mkdir("empty_dir") + os.mkdir("nonempty_dir") + with open(os.path.join("nonempty_dir", "file"), "wb"): + pass + os.symlink("empty_dir", "symlinked_empty_dir") + os.symlink("does_not_exist", "broken_link") + os.symlink("broken_link", "file") + + # This is OK. + _error_on_nonempty_view_dir("empty_dir") + + # This is not OK. + with pytest.raises(SpackEnvironmentViewError): + _error_on_nonempty_view_dir("nonempty_dir") + + with pytest.raises(SpackEnvironmentViewError): + _error_on_nonempty_view_dir("symlinked_empty_dir") + + with pytest.raises(SpackEnvironmentViewError): + _error_on_nonempty_view_dir("broken_link") + + with pytest.raises(SpackEnvironmentViewError): + _error_on_nonempty_view_dir("file") diff --git a/lib/spack/spack/test/environment_modifications.py b/lib/spack/spack/test/environment_modifications.py index 44c38a99ae42ec..c76b08fd953d81 100644 --- a/lib/spack/spack/test/environment_modifications.py +++ b/lib/spack/spack/test/environment_modifications.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -162,6 +163,8 @@ def test_unset(env): os.environ['UNSET_ME'] +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_filter_system_paths(miscellaneous_paths): """Tests that the filtering of system paths works as expected.""" filtered = filter_system_paths(miscellaneous_paths) @@ -175,6 +178,9 @@ def test_filter_system_paths(miscellaneous_paths): assert filtered == expected +# TODO 27021 +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_set_path(env): """Tests setting paths in an environment variable.""" @@ -190,6 +196,8 @@ def test_set_path(env): assert 'foo;bar;baz' == os.environ['B'] +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_path_manipulation(env): """Tests manipulating list of paths in the environment.""" @@ -254,6 +262,8 @@ def test_extend(env): assert x is y +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.usefixtures('prepare_environment_for_tests') def test_source_files(files_to_be_sourced): """Tests the construction of a list of environment modifications that are @@ -321,6 +331,8 @@ def test_preserve_environment(prepare_environment_for_tests): assert os.environ['PATH_LIST'] == '/path/second:/path/third' +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('files,expected,deleted', [ # Sets two variables ((os.path.join(datadir, 'sourceme_first.sh'),), @@ -415,8 +427,8 @@ def test_sanitize_regex(env, blacklist, whitelist, expected, deleted): # Append paths to an environment variable ({'FOO_PATH': '/a/path'}, {'FOO_PATH': '/a/path:/b/path'}, [environment.AppendPath('FOO_PATH', '/b/path')]), - ({}, {'FOO_PATH': '/a/path:/b/path'}, [ - environment.AppendPath('FOO_PATH', '/a/path:/b/path') + ({}, {'FOO_PATH': '/a/path' + os.sep + '/b/path'}, [ + environment.AppendPath('FOO_PATH', '/a/path' + os.sep + '/b/path') ]), ({'FOO_PATH': '/a/path:/b/path'}, {'FOO_PATH': '/b/path'}, [ environment.RemovePath('FOO_PATH', '/a/path') @@ -445,6 +457,8 @@ def test_from_environment_diff(before, after, search_list): assert item in mod +@pytest.mark.skipif(sys.platform == 'win32', + reason="LMod not supported on Windows") @pytest.mark.regression('15775') def test_blacklist_lmod_variables(): # Construct the list of environment modifications diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index 4f8243651f4bc8..6e8993978cad0c 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -89,7 +89,8 @@ def test_fetch(type_of_test, mock_git_repository, config, mutable_mock_repo, - git_version): + git_version, + monkeypatch): """Tries to: 1. Fetch the repo using a fetch strategy constructed with @@ -107,7 +108,7 @@ def test_fetch(type_of_test, spec = Spec('git-test') spec.concretize() pkg = spack.repo.get(spec) - pkg.versions[ver('git')] = t.args + monkeypatch.setitem(pkg.versions, ver('git'), t.args) # Enter the stage directory and check some properties with pkg.stage: @@ -137,7 +138,9 @@ def test_fetch(type_of_test, @pytest.mark.parametrize("type_of_test", ['branch', 'commit']) -def test_debug_fetch(mock_packages, type_of_test, mock_git_repository, config): +def test_debug_fetch( + mock_packages, type_of_test, mock_git_repository, config, monkeypatch +): """Fetch the repo with debug enabled.""" # Retrieve the right test parameters t = mock_git_repository.checks[type_of_test] @@ -146,7 +149,7 @@ def test_debug_fetch(mock_packages, type_of_test, mock_git_repository, config): spec = Spec('git-test') spec.concretize() pkg = spack.repo.get(spec) - pkg.versions[ver('git')] = t.args + monkeypatch.setitem(pkg.versions, ver('git'), t.args) # Fetch then ensure source path exists with pkg.stage: @@ -176,7 +179,7 @@ def test_needs_stage(): @pytest.mark.parametrize("get_full_repo", [True, False]) def test_get_full_repo(get_full_repo, git_version, mock_git_repository, - config, mutable_mock_repo): + config, mutable_mock_repo, monkeypatch): """Ensure that we can clone a full repository.""" if git_version < ver('1.7.1'): @@ -193,7 +196,7 @@ def test_get_full_repo(get_full_repo, git_version, mock_git_repository, pkg = spack.repo.get(spec) args = copy.copy(t.args) args['get_full_repo'] = get_full_repo - pkg.versions[ver('git')] = args + monkeypatch.setitem(pkg.versions, ver('git'), args) with pkg.stage: with spack.config.override('config:verify_ssl', secure): @@ -222,7 +225,7 @@ def test_get_full_repo(get_full_repo, git_version, mock_git_repository, @pytest.mark.disable_clean_stage_check @pytest.mark.parametrize("submodules", [True, False]) def test_gitsubmodule(submodules, mock_git_repository, config, - mutable_mock_repo): + mutable_mock_repo, monkeypatch): """ Test GitFetchStrategy behavior with submodules """ @@ -235,7 +238,7 @@ def test_gitsubmodule(submodules, mock_git_repository, config, pkg = spack.repo.get(spec) args = copy.copy(t.args) args['submodules'] = submodules - pkg.versions[ver('git')] = args + monkeypatch.setitem(pkg.versions, ver('git'), args) pkg.do_stage() with working_dir(pkg.stage.source_path): for submodule_count in range(2): @@ -249,7 +252,9 @@ def test_gitsubmodule(submodules, mock_git_repository, config, @pytest.mark.disable_clean_stage_check -def test_gitsubmodules_delete(mock_git_repository, config, mutable_mock_repo): +def test_gitsubmodules_delete( + mock_git_repository, config, mutable_mock_repo, monkeypatch +): """ Test GitFetchStrategy behavior with submodules_delete """ @@ -264,7 +269,7 @@ def test_gitsubmodules_delete(mock_git_repository, config, mutable_mock_repo): args['submodules'] = True args['submodules_delete'] = ['third_party/submodule0', 'third_party/submodule1'] - pkg.versions[ver('git')] = args + monkeypatch.setitem(pkg.versions, ver('git'), args) pkg.do_stage() with working_dir(pkg.stage.source_path): file_path = os.path.join(pkg.stage.source_path, diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index 6cd8b69d84466f..185f1375a26698 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -2,43 +2,31 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys -from six import StringIO +import pytest +import six +import spack.graph import spack.repo -from spack.graph import AsciiGraph, graph_dot, topological_sort -from spack.spec import Spec +import spack.spec -def test_topo_sort(mock_packages): - """Test topo sort gives correct order.""" - s = Spec('mpileaks').normalized() +@pytest.mark.parametrize('spec_str', ['mpileaks', 'callpath']) +def test_topo_sort(spec_str, config, mock_packages): + """Ensure nodes are ordered topologically""" + s = spack.spec.Spec(spec_str).concretized() + nodes = spack.graph.topological_sort(s) + for idx, current in enumerate(nodes): + assert all(following not in current for following in nodes[idx + 1:]) - topo = topological_sort(s) - assert topo.index('mpileaks') < topo.index('callpath') - assert topo.index('mpileaks') < topo.index('mpi') - assert topo.index('mpileaks') < topo.index('dyninst') - assert topo.index('mpileaks') < topo.index('libdwarf') - assert topo.index('mpileaks') < topo.index('libelf') - - assert topo.index('callpath') < topo.index('mpi') - assert topo.index('callpath') < topo.index('dyninst') - assert topo.index('callpath') < topo.index('libdwarf') - assert topo.index('callpath') < topo.index('libelf') - - assert topo.index('dyninst') < topo.index('libdwarf') - assert topo.index('dyninst') < topo.index('libelf') - - assert topo.index('libdwarf') < topo.index('libelf') - - -def test_static_graph_mpileaks(mock_packages): +def test_static_graph_mpileaks(config, mock_packages): """Test a static spack graph for a simple package.""" - s = Spec('mpileaks').normalized() + s = spack.spec.Spec('mpileaks').normalized() - stream = StringIO() - graph_dot([s], static=True, out=stream) + stream = six.StringIO() + spack.graph.graph_dot([s], static=True, out=stream) dot = stream.getvalue() @@ -60,74 +48,71 @@ def test_static_graph_mpileaks(mock_packages): assert ' "dyninst" -> "libelf"\n' in dot +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_dynamic_dot_graph_mpileaks(mock_packages, config): """Test dynamically graphing the mpileaks package.""" - s = Spec('mpileaks').concretized() - - stream = StringIO() - graph_dot([s], static=False, out=stream) - + s = spack.spec.Spec('mpileaks').concretized() + stream = six.StringIO() + spack.graph.graph_dot([s], static=False, out=stream) dot = stream.getvalue() - print(dot) - - mpileaks_hash, mpileaks_lbl = s.dag_hash(), s.format('{name}') - mpi_hash, mpi_lbl = s['mpi'].dag_hash(), s['mpi'].format('{name}') - callpath_hash, callpath_lbl = ( - s['callpath'].dag_hash(), s['callpath'].format('{name}')) - dyninst_hash, dyninst_lbl = ( - s['dyninst'].dag_hash(), s['dyninst'].format('{name}')) - libdwarf_hash, libdwarf_lbl = ( - s['libdwarf'].dag_hash(), s['libdwarf'].format('{name}')) - libelf_hash, libelf_lbl = ( - s['libelf'].dag_hash(), s['libelf'].format('{name}')) - - assert ' "%s" [label="%s"]\n' % (mpileaks_hash, mpileaks_lbl) in dot - assert ' "%s" [label="%s"]\n' % (callpath_hash, callpath_lbl) in dot - assert ' "%s" [label="%s"]\n' % (mpi_hash, mpi_lbl) in dot - assert ' "%s" [label="%s"]\n' % (dyninst_hash, dyninst_lbl) in dot - assert ' "%s" [label="%s"]\n' % (libdwarf_hash, libdwarf_lbl) in dot - assert ' "%s" [label="%s"]\n' % (libelf_hash, libelf_lbl) in dot - - assert ' "%s" -> "%s"\n' % (dyninst_hash, libdwarf_hash) in dot - assert ' "%s" -> "%s"\n' % (callpath_hash, dyninst_hash) in dot - assert ' "%s" -> "%s"\n' % (mpileaks_hash, mpi_hash) in dot - assert ' "%s" -> "%s"\n' % (libdwarf_hash, libelf_hash) in dot - assert ' "%s" -> "%s"\n' % (callpath_hash, mpi_hash) in dot - assert ' "%s" -> "%s"\n' % (mpileaks_hash, callpath_hash) in dot - assert ' "%s" -> "%s"\n' % (dyninst_hash, libelf_hash) in dot - - -def test_ascii_graph_mpileaks(mock_packages): - """Test dynamically graphing the mpileaks package.""" - s = Spec('mpileaks').normalized() - stream = StringIO() - graph = AsciiGraph() + nodes_to_check = ['mpileaks', 'mpi', 'callpath', 'dyninst', 'libdwarf', 'libelf'] + hashes = {} + for name in nodes_to_check: + current = s[name] + current_hash = current.dag_hash() + hashes[name] = current_hash + assert ' "{0}" [label="{1}"]\n'.format( + current_hash, spack.graph.node_label(current) + ) in dot + + dependencies_to_check = [ + ('dyninst', 'libdwarf'), + ('callpath', 'dyninst'), + ('mpileaks', 'mpi'), + ('libdwarf', 'libelf'), + ('callpath', 'mpi'), + ('mpileaks', 'callpath'), + ('dyninst', 'libelf') + ] + for parent, child in dependencies_to_check: + assert ' "{0}" -> "{1}"\n'.format(hashes[parent], hashes[child]) in dot + + +@pytest.mark.skipif( + sys.version_info < (3, 6), reason="Ordering might not be consistent" +) +def test_ascii_graph_mpileaks(config, mock_packages, monkeypatch): + monkeypatch.setattr( + spack.graph.AsciiGraph, '_node_label', + lambda self, node: node.name + ) + s = spack.spec.Spec('mpileaks').concretized() + + stream = six.StringIO() + graph = spack.graph.AsciiGraph() graph.write(s, out=stream, color=False) - string = stream.getvalue() + graph_str = stream.getvalue() + graph_str = '\n'.join([line.rstrip() for line in graph_str.split('\n')]) - # Some lines in spack graph still have trailing space - # TODO: fix this. - string = '\n'.join([line.rstrip() for line in string.split('\n')]) - - assert string == r'''o mpileaks + assert graph_str == r'''o mpileaks |\ -| o callpath +| o callpath |/| -o | mpi +o | mpich / -o dyninst +o dyninst |\ -| o libdwarf +o | libdwarf |/ -o libelf +o libelf ''' -def test_topo_sort_filtered(mock_packages): - """Test topo sort gives correct order when filtering link deps.""" - s = Spec('both-link-and-build-dep-a').normalized() - - topo = topological_sort(s, deptype=('link',)) +def test_topological_sort_filtering_dependency_types(config, mock_packages): + s = spack.spec.Spec('both-link-and-build-dep-a').concretized() - assert topo == ['both-link-and-build-dep-a', 'both-link-and-build-dep-c'] + nodes = spack.graph.topological_sort(s, deptype=('link',)) + names = [s.name for s in nodes] + assert names == ['both-link-and-build-dep-c', 'both-link-and-build-dep-a'] diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index d3124514545228..a3d84b9973d641 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -17,8 +18,12 @@ from spack.util.executable import which from spack.version import ver -pytestmark = pytest.mark.skipif( - not which('hg'), reason='requires mercurial to be installed') +# Test functionality covered is supported on Windows, but currently failing +# and expected to be fixed +pytestmark = [pytest.mark.skipif( + not which('hg'), reason='requires mercurial to be installed'), + pytest.mark.skipif( + sys.platform == 'win32', reason="Failing on Win")] @pytest.mark.parametrize("type_of_test", ['default', 'rev0']) @@ -28,7 +33,8 @@ def test_fetch( secure, mock_hg_repository, config, - mutable_mock_repo + mutable_mock_repo, + monkeypatch ): """Tries to: @@ -47,7 +53,7 @@ def test_fetch( spec = Spec('hg-test') spec.concretize() pkg = spack.repo.get(spec) - pkg.versions[ver('hg')] = t.args + monkeypatch.setitem(pkg.versions, ver('hg'), t.args) # Enter the stage directory and check some properties with pkg.stage: diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index 06ac3817d8880f..00276b379c58db 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -39,7 +39,6 @@ def test_install_and_uninstall(install_mockery, mock_fetch, monkeypatch): # Get the package pkg = spec.package - try: pkg.do_install() @@ -151,7 +150,9 @@ def test_failing_overwrite_install_should_keep_previous_installation( assert os.path.exists(spec.prefix) -def test_dont_add_patches_to_installed_package(install_mockery, mock_fetch): +def test_dont_add_patches_to_installed_package( + install_mockery, mock_fetch, monkeypatch +): dependency = Spec('dependency-install') dependency.concretize() dependency.package.do_install() @@ -160,9 +161,11 @@ def test_dont_add_patches_to_installed_package(install_mockery, mock_fetch): dependent = Spec('dependent-install ^/' + dependency_hash) dependent.concretize() - dependency.package.patches['dependency-install'] = [ + monkeypatch.setitem(dependency.package.patches, 'dependency-install', [ spack.patch.UrlPatch( - dependent.package, 'file://fake.patch', sha256='unused-hash')] + dependent.package, 'file://fake.patch', sha256='unused-hash' + ) + ]) assert dependent['dependency-install'] == dependency @@ -279,7 +282,8 @@ def test_installed_upstream_external(install_upstream, mock_fetch): new_dependency = dependent['externaltool'] assert new_dependency.external - assert new_dependency.prefix == '/path/to/external_tool' + assert new_dependency.prefix == \ + os.path.sep + os.path.join('path', 'to', 'external_tool') dependent.package.do_install() @@ -308,52 +312,43 @@ def test_installed_upstream(install_upstream, mock_fetch): @pytest.mark.disable_clean_stage_check -def test_partial_install_keep_prefix(install_mockery, mock_fetch): +def test_partial_install_keep_prefix(install_mockery, mock_fetch, monkeypatch): spec = Spec('canfail').concretized() pkg = spack.repo.get(spec) # Normally the stage should start unset, but other tests set it pkg._stage = None - remove_prefix = spack.package.Package.remove_prefix - try: - # If remove_prefix is called at any point in this test, that is an - # error - pkg.succeed = False # make the build fail - spack.package.Package.remove_prefix = mock_remove_prefix - with pytest.raises(spack.build_environment.ChildError): - pkg.do_install(keep_prefix=True) - assert os.path.exists(pkg.prefix) - - # must clear failure markings for the package before re-installing it - spack.store.db.clear_failure(spec, True) - pkg.succeed = True # make the build succeed - pkg.stage = MockStage(pkg.stage) + # If remove_prefix is called at any point in this test, that is an + # error + pkg.succeed = False # make the build fail + monkeypatch.setattr(spack.package.Package, 'remove_prefix', mock_remove_prefix) + with pytest.raises(spack.build_environment.ChildError): pkg.do_install(keep_prefix=True) - assert pkg.installed - assert not pkg.stage.test_destroyed + assert os.path.exists(pkg.prefix) - finally: - spack.package.Package.remove_prefix = remove_prefix + # must clear failure markings for the package before re-installing it + spack.store.db.clear_failure(spec, True) + + pkg.succeed = True # make the build succeed + pkg.stage = MockStage(pkg.stage) + pkg.do_install(keep_prefix=True) + assert pkg.installed + assert not pkg.stage.test_destroyed -def test_second_install_no_overwrite_first(install_mockery, mock_fetch): +def test_second_install_no_overwrite_first(install_mockery, mock_fetch, monkeypatch): spec = Spec('canfail').concretized() pkg = spack.repo.get(spec) - remove_prefix = spack.package.Package.remove_prefix - try: - spack.package.Package.remove_prefix = mock_remove_prefix + monkeypatch.setattr(spack.package.Package, 'remove_prefix', mock_remove_prefix) - pkg.succeed = True - pkg.do_install() - assert pkg.installed - - # If Package.install is called after this point, it will fail - pkg.succeed = False - pkg.do_install() + pkg.succeed = True + pkg.do_install() + assert pkg.installed - finally: - spack.package.Package.remove_prefix = remove_prefix + # If Package.install is called after this point, it will fail + pkg.succeed = False + pkg.do_install() def test_install_prefix_collision_fails(config, mock_fetch, mock_packages, tmpdir): @@ -461,12 +456,12 @@ def test_pkg_build_paths(install_mockery): # Now check the newer log filename last_log = 'spack-build.txt' - os.rename(older_log, last_log) + fs.rename(older_log, last_log) assert spec.package.log_path.endswith(last_log) # Check the old environment file last_env = 'spack-build.env' - os.rename(last_log, last_env) + fs.rename(last_log, last_env) assert spec.package.env_path.endswith(last_env) # Cleanup @@ -497,12 +492,12 @@ def test_pkg_install_paths(install_mockery): # Now check the newer install log filename last_log = 'build.txt' - os.rename(older_log, last_log) + fs.rename(older_log, last_log) assert spec.package.install_log_path.endswith(last_log) # Check the old install environment file last_env = 'build.env' - os.rename(last_log, last_env) + fs.rename(last_log, last_env) assert spec.package.install_env_path.endswith(last_env) # Cleanup diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index bc1398afff834d..a7b0b1edd94e5a 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -5,6 +5,7 @@ import os import shutil +import sys import py import pytest @@ -22,6 +23,8 @@ import spack.store import spack.util.lock as lk +is_windows = sys.platform == 'win32' + def _mock_repo(root, namespace): """Create an empty repository at the specified root @@ -231,32 +234,12 @@ def _spec(spec, preferred_mirrors=None): def test_try_install_from_binary_cache(install_mockery, mock_packages, monkeypatch): - """Tests SystemExit path for_try_install_from_binary_cache. - - This test does not make sense. We tell spack there is a mirror - with a binary for this spec and then expect it to die because there - are no mirrors configured.""" - # def _mirrors_for_spec(spec, full_hash_match=False): - # spec = spack.spec.Spec('mpi').concretized() - # return [{ - # 'mirror_url': 'notused', - # 'spec': spec, - # }] - + """Test return false when no match exists in the mirror""" spec = spack.spec.Spec('mpich') spec.concretize() - - # monkeypatch.setattr( - # spack.binary_distribution, 'get_mirrors_for_spec', _mirrors_for_spec) - - # with pytest.raises(SystemExit): - # inst._try_install_from_binary_cache(spec.package, False, False) result = inst._try_install_from_binary_cache(spec.package, False, False) assert(not result) - # captured = capsys.readouterr() - # assert 'add a spack mirror to allow download' in str(captured) - def test_installer_repr(install_mockery): const_arg = installer_args(['trivial-install-test-package'], {}) @@ -521,7 +504,7 @@ def _repoerr(repo, name): # The call to install_tree will raise the exception since not mocking # creation of dependency package files within *install* directories. - with pytest.raises(IOError, match=path): + with pytest.raises(IOError, match=path if not is_windows else ''): inst.dump_packages(spec, path) # Now try the error path, which requires the mock directory structure @@ -534,6 +517,8 @@ def _repoerr(repo, name): assert "Couldn't copy in provenance for cmake" in out +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_clear_failures_success(install_mockery): """Test the clear_failures happy path.""" @@ -846,6 +831,10 @@ def _chgrp(path, group): fs.touchp(spec.prefix) metadatadir = spack.store.layout.metadata_path(spec) + # Regex matching with Windows style paths typically fails + # so we skip the match check here + if is_windows: + metadatadir = None # Should fail with a "not a directory" error with pytest.raises(OSError, match=metadatadir): installer._setup_install_dir(spec.package) diff --git a/lib/spack/spack/test/link_paths.py b/lib/spack/spack/test/link_paths.py index 6af3af2ba62760..cafb6463227491 100644 --- a/lib/spack/spack/test/link_paths.py +++ b/lib/spack/spack/test/link_paths.py @@ -3,12 +3,18 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import re +import sys import pytest import spack.paths from spack.compiler import _parse_non_system_link_dirs +is_windows = sys.platform == 'win32' +if is_windows: + drive_m = re.search(r'[A-Za-z]:', spack.paths.test_path) + drive = drive_m.group() if drive_m else None #: directory with sample compiler data datadir = os.path.join(spack.paths.test_path, 'data', 'compiler_verbose_output') @@ -39,15 +45,25 @@ def check_link_paths(filename, paths): def test_icc16_link_paths(): - check_link_paths('icc-16.0.3.txt', [ - '/usr/tce/packages/intel/intel-16.0.3/compilers_and_libraries_2016.3.210/linux/compiler/lib/intel64_lin', # noqa - '/usr/tce/packages/gcc/gcc-4.9.3/lib64/gcc/x86_64-unknown-linux-gnu/4.9.3', # noqa - '/usr/tce/packages/gcc/gcc-4.9.3/lib64']) + if is_windows: + check_link_paths('icc-16.0.3.txt', [ + drive + r'\usr\tce\packages\intel\intel-16.0.3\compilers_and_libraries_2016.3.210\linux\compiler\lib\intel64_lin', # noqa + drive + r'\usr\tce\packages\gcc\gcc-4.9.3\lib64\gcc\x86_64-unknown-linux-gnu\4.9.3', # noqa + drive + r'\usr\tce\packages\gcc\gcc-4.9.3\lib64']) + else: + check_link_paths('icc-16.0.3.txt', [ + '/usr/tce/packages/intel/intel-16.0.3/compilers_and_libraries_2016.3.210/linux/compiler/lib/intel64_lin', # noqa + '/usr/tce/packages/gcc/gcc-4.9.3/lib64/gcc/x86_64-unknown-linux-gnu/4.9.3', # noqa + '/usr/tce/packages/gcc/gcc-4.9.3/lib64']) def test_pgi_link_paths(): - check_link_paths('pgcc-16.3.txt', [ - '/usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib']) + if is_windows: + check_link_paths('pgcc-16.3.txt', [ + drive + r'\usr\tce\packages\pgi\pgi-16.3\linux86-64\16.3\lib']) + else: + check_link_paths('pgcc-16.3.txt', [ + '/usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib']) def test_gcc7_link_paths(): @@ -59,35 +75,65 @@ def test_clang4_link_paths(): def test_xl_link_paths(): - check_link_paths('xl-13.1.5.txt', [ - '/opt/ibm/xlsmp/4.1.5/lib', - '/opt/ibm/xlmass/8.1.5/lib', - '/opt/ibm/xlC/13.1.5/lib']) + if is_windows: + check_link_paths('xl-13.1.5.txt', [ + drive + r'\opt\ibm\xlsmp\4.1.5\lib', + drive + r'\opt\ibm\xlmass\8.1.5\lib', + drive + r'\opt\ibm\xlC\13.1.5\lib']) + else: + check_link_paths('xl-13.1.5.txt', [ + '/opt/ibm/xlsmp/4.1.5/lib', + '/opt/ibm/xlmass/8.1.5/lib', + '/opt/ibm/xlC/13.1.5/lib']) def test_cce_link_paths(): - check_link_paths('cce-8.6.5.txt', [ - '/opt/gcc/6.1.0/snos/lib64', - '/opt/cray/dmapp/default/lib64', - '/opt/cray/pe/mpt/7.7.0/gni/mpich-cray/8.6/lib', - '/opt/cray/pe/libsci/17.12.1/CRAY/8.6/x86_64/lib', - '/opt/cray/rca/2.2.16-6.0.5.0_15.34__g5e09e6d.ari/lib64', - '/opt/cray/pe/pmi/5.0.13/lib64', - '/opt/cray/xpmem/2.2.4-6.0.5.0_4.8__g35d5e73.ari/lib64', - '/opt/cray/dmapp/7.1.1-6.0.5.0_49.8__g1125556.ari/lib64', - '/opt/cray/ugni/6.0.14-6.0.5.0_16.9__g19583bb.ari/lib64', - '/opt/cray/udreg/2.3.2-6.0.5.0_13.12__ga14955a.ari/lib64', - '/opt/cray/alps/6.5.28-6.0.5.0_18.6__g13a91b6.ari/lib64', - '/opt/cray/pe/atp/2.1.1/libApp', - '/opt/cray/pe/cce/8.6.5/cce/x86_64/lib', - '/opt/cray/wlm_detect/1.3.2-6.0.5.0_3.1__g388ccd5.ari/lib64', - '/opt/gcc/6.1.0/snos/lib/gcc/x86_64-suse-linux/6.1.0', - '/opt/cray/pe/cce/8.6.5/binutils/x86_64/x86_64-unknown-linux-gnu/lib']) + if is_windows: + check_link_paths('cce-8.6.5.txt', [ + drive + r'\opt\gcc\6.1.0\snos\lib64', + drive + r'\opt\cray\dmapp\default\lib64', + drive + r'\opt\cray\pe\mpt\7.7.0\gni\mpich-cray\8.6\lib', + drive + r'\opt\cray\pe\libsci\17.12.1\CRAY\8.6\x86_64\lib', + drive + r'\opt\cray\rca\2.2.16-6.0.5.0_15.34__g5e09e6d.ari\lib64', + drive + r'\opt\cray\pe\pmi\5.0.13\lib64', + drive + r'\opt\cray\xpmem\2.2.4-6.0.5.0_4.8__g35d5e73.ari\lib64', + drive + r'\opt\cray\dmapp\7.1.1-6.0.5.0_49.8__g1125556.ari\lib64', + drive + r'\opt\cray\ugni\6.0.14-6.0.5.0_16.9__g19583bb.ari\lib64', + drive + r'\opt\cray\udreg\2.3.2-6.0.5.0_13.12__ga14955a.ari\lib64', + drive + r'\opt\cray\alps\6.5.28-6.0.5.0_18.6__g13a91b6.ari\lib64', + drive + r'\opt\cray\pe\atp\2.1.1\libApp', + drive + r'\opt\cray\pe\cce\8.6.5\cce\x86_64\lib', + drive + r'\opt\cray\wlm_detect\1.3.2-6.0.5.0_3.1__g388ccd5.ari\lib64', + drive + r'\opt\gcc\6.1.0\snos\lib\gcc\x86_64-suse-linux\6.1.0', + drive + + r'\opt\cray\pe\cce\8.6.5\binutils\x86_64\x86_64-unknown-linux-gnu\lib']) + else: + check_link_paths('cce-8.6.5.txt', [ + '/opt/gcc/6.1.0/snos/lib64', + '/opt/cray/dmapp/default/lib64', + '/opt/cray/pe/mpt/7.7.0/gni/mpich-cray/8.6/lib', + '/opt/cray/pe/libsci/17.12.1/CRAY/8.6/x86_64/lib', + '/opt/cray/rca/2.2.16-6.0.5.0_15.34__g5e09e6d.ari/lib64', + '/opt/cray/pe/pmi/5.0.13/lib64', + '/opt/cray/xpmem/2.2.4-6.0.5.0_4.8__g35d5e73.ari/lib64', + '/opt/cray/dmapp/7.1.1-6.0.5.0_49.8__g1125556.ari/lib64', + '/opt/cray/ugni/6.0.14-6.0.5.0_16.9__g19583bb.ari/lib64', + '/opt/cray/udreg/2.3.2-6.0.5.0_13.12__ga14955a.ari/lib64', + '/opt/cray/alps/6.5.28-6.0.5.0_18.6__g13a91b6.ari/lib64', + '/opt/cray/pe/atp/2.1.1/libApp', + '/opt/cray/pe/cce/8.6.5/cce/x86_64/lib', + '/opt/cray/wlm_detect/1.3.2-6.0.5.0_3.1__g388ccd5.ari/lib64', + '/opt/gcc/6.1.0/snos/lib/gcc/x86_64-suse-linux/6.1.0', + '/opt/cray/pe/cce/8.6.5/binutils/x86_64/x86_64-unknown-linux-gnu/lib']) def test_clang_apple_ld_link_paths(): - check_link_paths('clang-9.0.0-apple-ld.txt', [ - '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib']) # noqa + if is_windows: + check_link_paths('clang-9.0.0-apple-ld.txt', [ + drive + r'\Applications\Xcode.app\Contents\Developer\Platforms\MacOSX.platform\Developer\SDKs\MacOSX10.13.sdk\usr\lib']) # noqa + else: + check_link_paths('clang-9.0.0-apple-ld.txt', [ + '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib']) # noqa def test_nag_mixed_gcc_gnu_ld_link_paths(): @@ -95,10 +141,16 @@ def test_nag_mixed_gcc_gnu_ld_link_paths(): # is used for the rpath detection. The reference compiler output is a # result of # '/path/to/gcc/bin/g++ -Wl,-v ./main.c'. - check_link_paths('collect2-6.3.0-gnu-ld.txt', [ - '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib/gcc/x86_64-pc-linux-gnu/6.5.0', # noqa - '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib64', # noqa - '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib']) # noqa + if is_windows: + check_link_paths('collect2-6.3.0-gnu-ld.txt', [ + drive + r'\scratch\local1\spack\opt\spack\gcc-6.3.0-haswell\gcc-6.5.0-4sdjgrs\lib\gcc\x86_64-pc-linux-gnu\6.5.0', # noqa + drive + r'\scratch\local1\spack\opt\spack\gcc-6.3.0-haswell\gcc-6.5.0-4sdjgrs\lib64', # noqa + drive + r'\scratch\local1\spack\opt\spack\gcc-6.3.0-haswell\gcc-6.5.0-4sdjgrs\lib']) # noqa + else: + check_link_paths('collect2-6.3.0-gnu-ld.txt', [ + '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib/gcc/x86_64-pc-linux-gnu/6.5.0', # noqa + '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib64', # noqa + '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib']) # noqa def test_nag_link_paths(): @@ -106,14 +158,25 @@ def test_nag_link_paths(): # and therefore 'fc' is used for the rpath detection). The reference # compiler output is a result of # 'nagfor -Wc=/path/to/gcc/bin/gcc -Wl,-v ./main.c'. - check_link_paths('nag-6.2-gcc-6.5.0.txt', [ - '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib/gcc/x86_64-pc-linux-gnu/6.5.0', # noqa - '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib64', # noqa - '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib']) # noqa + if is_windows: + check_link_paths('nag-6.2-gcc-6.5.0.txt', [ + drive + r'\scratch\local1\spack\opt\spack\gcc-6.3.0-haswell\gcc-6.5.0-4sdjgrs\lib\gcc\x86_64-pc-linux-gnu\6.5.0', # noqa + drive + r'\scratch\local1\spack\opt\spack\gcc-6.3.0-haswell\gcc-6.5.0-4sdjgrs\lib64', # noqa + drive + r'\scratch\local1\spack\opt\spack\gcc-6.3.0-haswell\gcc-6.5.0-4sdjgrs\lib']) # noqa + else: + check_link_paths('nag-6.2-gcc-6.5.0.txt', [ + '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib/gcc/x86_64-pc-linux-gnu/6.5.0', # noqa + '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib64', # noqa + '/scratch/local1/spack/opt/spack/gcc-6.3.0-haswell/gcc-6.5.0-4sdjgrs/lib']) # noqa def test_obscure_parsing_rules(): - check_link_paths('obscure-parsing-rules.txt', [ - '/first/path', - '/second/path', - '/third/path']) + if is_windows: + check_link_paths('obscure-parsing-rules.txt', [ + drive + r'\first\path', + drive + r'\third\path']) + else: + check_link_paths('obscure-parsing-rules.txt', [ + '/first/path', + '/second/path', + '/third/path']) diff --git a/lib/spack/spack/test/llnl/util/file_list.py b/lib/spack/spack/test/llnl/util/file_list.py index a7cb1f0b43fb58..036cea500afd1d 100644 --- a/lib/spack/spack/test/llnl/util/file_list.py +++ b/lib/spack/spack/test/llnl/util/file_list.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import fnmatch -import os +import os.path import pytest import six @@ -270,14 +270,14 @@ def test_searching_order(search_fn, search_list, root, kwargs): @pytest.mark.parametrize('root,search_list,kwargs,expected', [ (search_dir, '*/*bar.tx?', {'recursive': False}, [ - os.path.join(search_dir, 'a/foobar.txt'), - os.path.join(search_dir, 'b/bar.txp'), - os.path.join(search_dir, 'c/bar.txt'), + 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, 'a/foobar.txt'), - os.path.join(search_dir, 'b/bar.txp'), - os.path.join(search_dir, 'c/bar.txt'), + 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): diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index 380501a011d803..de3e07d72576f1 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -12,6 +12,7 @@ import pytest import llnl.util.filesystem as fs +from llnl.util.symlink import islink, symlink import spack.paths @@ -36,9 +37,9 @@ def stage(tmpdir_factory): fs.touchp('source/g/i/j/10') # Create symlinks - os.symlink(os.path.abspath('source/1'), 'source/2') - os.symlink('b/2', 'source/a/b2') - os.symlink('a/b', 'source/f') + symlink(os.path.abspath('source/1'), 'source/2') + symlink('b/2', 'source/a/b2') + symlink('a/b', 'source/f') # Create destination directory fs.mkdirp('dest') @@ -148,6 +149,7 @@ def test_multiple_src_file_dest(self, stage): fs.install('source/a/*/*', 'dest/1') +@pytest.mark.skipif(sys.platform == 'win32', reason="Skip test on Windows") class TestCopyTree: """Tests for ``filesystem.copy_tree``""" @@ -174,7 +176,7 @@ def test_symlinks_true(self, stage): fs.copy_tree('source', 'dest', symlinks=True) assert os.path.exists('dest/2') - assert os.path.islink('dest/2') + assert islink('dest/2') assert os.path.exists('dest/a/b2') with fs.working_dir('dest/a'): @@ -201,7 +203,8 @@ def test_symlinks_false(self, stage): fs.copy_tree('source', 'dest', symlinks=False) assert os.path.exists('dest/2') - assert not os.path.islink('dest/2') + if sys.platform != "win32": + assert not os.path.islink('dest/2') def test_glob_src(self, stage): """Test using a glob as the source.""" @@ -229,6 +232,7 @@ def test_parent_dir(self, stage): fs.copy_tree('source', 'source/sub/directory') +@pytest.mark.skipif(sys.platform == 'win32', reason="Skip test on Windows") class TestInstallTree: """Tests for ``filesystem.install_tree``""" @@ -258,7 +262,8 @@ def test_symlinks_true(self, stage): fs.install_tree('source', 'dest', symlinks=True) assert os.path.exists('dest/2') - assert os.path.islink('dest/2') + if sys.platform != "win32": + assert os.path.islink('dest/2') check_added_exe_permissions('source/2', 'dest/2') def test_symlinks_false(self, stage): @@ -268,7 +273,8 @@ def test_symlinks_false(self, stage): fs.install_tree('source', 'dest', symlinks=False) assert os.path.exists('dest/2') - assert not os.path.islink('dest/2') + if sys.platform != "win32": + assert not os.path.islink('dest/2') check_added_exe_permissions('source/2', 'dest/2') def test_glob_src(self, stage): @@ -355,6 +361,12 @@ def test_recursive_search_of_headers_from_prefix( prefix = str(installation_dir_with_headers) header_list = fs.find_all_headers(prefix) + include_dirs = header_list.directories + + if sys.platform == "win32": + header_list = [header.replace("/", "\\") for header in header_list] + include_dirs = [dir.replace("/", "\\") for dir in include_dirs] + # Check that the header files we expect are all listed assert os.path.join(prefix, 'include', 'ex3.h') in header_list assert os.path.join(prefix, 'include', 'boost', 'ex3.h') in header_list @@ -362,20 +374,31 @@ def test_recursive_search_of_headers_from_prefix( assert os.path.join(prefix, 'path', 'to', 'subdir', 'ex2.h') in header_list # Check that when computing directories we exclude /include/boost - include_dirs = header_list.directories assert os.path.join(prefix, 'include') in include_dirs assert os.path.join(prefix, 'include', 'boost') not in include_dirs assert os.path.join(prefix, 'path', 'to') in include_dirs assert os.path.join(prefix, 'path', 'to', 'subdir') in include_dirs -@pytest.mark.parametrize('list_of_headers,expected_directories', [ - (['/pfx/include/foo.h', '/pfx/include/subdir/foo.h'], ['/pfx/include']), - (['/pfx/include/foo.h', '/pfx/subdir/foo.h'], - ['/pfx/include', '/pfx/subdir']), - (['/pfx/include/subdir/foo.h', '/pfx/subdir/foo.h'], - ['/pfx/include', '/pfx/subdir']) -]) +if sys.platform == "win32": + dir_list = [ + (['C:/pfx/include/foo.h', 'C:/pfx/include/subdir/foo.h'], ['C:/pfx/include']), + (['C:/pfx/include/foo.h', 'C:/pfx/subdir/foo.h'], + ['C:/pfx/include', 'C:/pfx/subdir']), + (['C:/pfx/include/subdir/foo.h', 'C:/pfx/subdir/foo.h'], + ['C:/pfx/include', 'C:/pfx/subdir']) + ] +else: + dir_list = [ + (['/pfx/include/foo.h', '/pfx/include/subdir/foo.h'], ['/pfx/include']), + (['/pfx/include/foo.h', '/pfx/subdir/foo.h'], + ['/pfx/include', '/pfx/subdir']), + (['/pfx/include/subdir/foo.h', '/pfx/subdir/foo.h'], + ['/pfx/include', '/pfx/subdir']) + ] + + +@pytest.mark.parametrize('list_of_headers,expected_directories', dir_list) def test_computation_of_header_directories( list_of_headers, expected_directories ): @@ -384,23 +407,31 @@ def test_computation_of_header_directories( def test_headers_directory_setter(): + if sys.platform == "win32": + root = r'C:\pfx\include\subdir' + else: + root = "/pfx/include/subdir" hl = fs.HeaderList( - ['/pfx/include/subdir/foo.h', '/pfx/include/subdir/bar.h'] + [root + '/foo.h', root + '/bar.h'] ) # Set directories using a list - hl.directories = ['/pfx/include/subdir'] - assert hl.directories == ['/pfx/include/subdir'] + hl.directories = [root] + assert hl.directories == [root] # If it's a single directory it's fine to not wrap it into a list # when setting the property - hl.directories = '/pfx/include/subdir' - assert hl.directories == ['/pfx/include/subdir'] + hl.directories = root + assert hl.directories == [root] # Paths are normalized, so it doesn't matter how many backslashes etc. # are present in the original directory being used - hl.directories = '/pfx/include//subdir/' - assert hl.directories == ['/pfx/include/subdir'] + if sys.platform == "win32": + # TODO: Test with \\'s + hl.directories = "C:/pfx/include//subdir" + else: + hl.directories = '/pfx/include//subdir/' + assert hl.directories == [root] # Setting an empty list is allowed and returns an empty list hl.directories = [] @@ -411,26 +442,52 @@ def test_headers_directory_setter(): assert hl.directories == [] -@pytest.mark.parametrize('path,entry,expected', [ - ('/tmp/user/root', None, - (['/tmp', '/tmp/user', '/tmp/user/root'], '', [])), - ('/tmp/user/root', 'tmp', ([], '/tmp', ['/tmp/user', '/tmp/user/root'])), - ('/tmp/user/root', 'user', (['/tmp'], '/tmp/user', ['/tmp/user/root'])), - ('/tmp/user/root', 'root', (['/tmp', '/tmp/user'], '/tmp/user/root', [])), - ('relative/path', None, (['relative', 'relative/path'], '', [])), - ('relative/path', 'relative', ([], 'relative', ['relative/path'])), - ('relative/path', 'path', (['relative'], 'relative/path', [])) -]) +if sys.platform == "win32": + # TODO: Test \\s + paths = [ + (r'C:\user\root', None, + (['C:\\', r'C:\user', r'C:\user\root'], '', [])), + (r'C:\user\root', 'C:\\', ([], 'C:\\', [r'C:\user', r'C:\user\root'])), + (r'C:\user\root', r'user', (['C:\\'], r'C:\user', [r'C:\user\root'])), + (r'C:\user\root', r'root', (['C:\\', r'C:\user'], r'C:\user\root', [])), + (r'relative\path', None, ([r'relative', r'relative\path'], '', [])), + (r'relative\path', r'relative', ([], r'relative', [r'relative\path'])), + (r'relative\path', r'path', ([r'relative'], r'relative\path', [])) + ] +else: + paths = [ + ('/tmp/user/root', None, + (['/tmp', '/tmp/user', '/tmp/user/root'], '', [])), + ('/tmp/user/root', 'tmp', ([], '/tmp', ['/tmp/user', '/tmp/user/root'])), + ('/tmp/user/root', 'user', (['/tmp'], '/tmp/user', ['/tmp/user/root'])), + ('/tmp/user/root', 'root', (['/tmp', '/tmp/user'], '/tmp/user/root', [])), + ('relative/path', None, (['relative', 'relative/path'], '', [])), + ('relative/path', 'relative', ([], 'relative', ['relative/path'])), + ('relative/path', 'path', (['relative'], 'relative/path', [])) + ] + + +@pytest.mark.parametrize('path,entry,expected', paths) def test_partition_path(path, entry, expected): assert fs.partition_path(path, entry) == expected -@pytest.mark.parametrize('path,expected', [ - ('', []), - ('/tmp/user/dir', ['/tmp', '/tmp/user', '/tmp/user/dir']), - ('./some/sub/dir', ['./some', './some/sub', './some/sub/dir']), - ('another/sub/dir', ['another', 'another/sub', 'another/sub/dir']) -]) +if sys.platform == "win32": + path_list = [ + ('', []), + (r'.\some\sub\dir', [r'.\some', r'.\some\sub', r'.\some\sub\dir']), + (r'another\sub\dir', [r'another', r'another\sub', r'another\sub\dir']) + ] +else: + path_list = [ + ('', []), + ('/tmp/user/dir', ['/tmp', '/tmp/user', '/tmp/user/dir']), + ('./some/sub/dir', ['./some', './some/sub', './some/sub/dir']), + ('another/sub/dir', ['another', 'another/sub', 'another/sub/dir']) + ] + + +@pytest.mark.parametrize('path,expected', path_list) def test_prefixes(path, expected): assert fs.prefixes(path) == expected @@ -617,3 +674,213 @@ def test_temporary_dir_context_manager(): with fs.temporary_dir() as tmp_dir: assert previous_dir != os.path.realpath(os.getcwd()) assert os.path.realpath(str(tmp_dir)) == os.path.realpath(os.getcwd()) + + +@pytest.mark.skipif(sys.platform == 'win32', reason="No shebang on Windows") +def test_is_nonsymlink_exe_with_shebang(tmpdir): + with tmpdir.as_cwd(): + # Create an executable with shebang. + with open('executable_script', 'wb') as f: + f.write(b'#!/interpreter') + os.chmod('executable_script', 0o100775) + + with open('executable_but_not_script', 'wb') as f: + f.write(b'#/not-a-shebang') + os.chmod('executable_but_not_script', 0o100775) + + with open('not_executable_with_shebang', 'wb') as f: + f.write(b'#!/interpreter') + os.chmod('not_executable_with_shebang', 0o100664) + + os.symlink('executable_script', 'symlink_to_executable_script') + + assert fs.is_nonsymlink_exe_with_shebang('executable_script') + assert not fs.is_nonsymlink_exe_with_shebang('executable_but_not_script') + assert not fs.is_nonsymlink_exe_with_shebang('not_executable_with_shebang') + assert not fs.is_nonsymlink_exe_with_shebang('symlink_to_executable_script') + + +def test_lexists_islink_isdir(tmpdir): + root = str(tmpdir) + + # Create a directory and a file, an a bunch of symlinks. + dir = os.path.join(root, "dir") + file = os.path.join(root, "file") + nonexistent = os.path.join(root, "does_not_exist") + symlink_to_dir = os.path.join(root, "symlink_to_dir") + symlink_to_file = os.path.join(root, "symlink_to_file") + dangling_symlink = os.path.join(root, "dangling_symlink") + symlink_to_dangling_symlink = os.path.join(root, "symlink_to_dangling_symlink") + symlink_to_symlink_to_dir = os.path.join(root, "symlink_to_symlink_to_dir") + symlink_to_symlink_to_file = os.path.join(root, "symlink_to_symlink_to_file") + + os.mkdir(dir) + with open(file, "wb") as f: + f.write(b"file") + + os.symlink("dir", symlink_to_dir) + os.symlink("file", symlink_to_file) + os.symlink("does_not_exist", dangling_symlink) + os.symlink("dangling_symlink", symlink_to_dangling_symlink) + os.symlink("symlink_to_dir", symlink_to_symlink_to_dir) + os.symlink("symlink_to_file", symlink_to_symlink_to_file) + + assert fs.lexists_islink_isdir(dir) == (True, False, True) + assert fs.lexists_islink_isdir(file) == (True, False, False) + assert fs.lexists_islink_isdir(nonexistent) == (False, False, False) + assert fs.lexists_islink_isdir(symlink_to_dir) == (True, True, True) + assert fs.lexists_islink_isdir(symlink_to_file) == (True, True, False) + assert fs.lexists_islink_isdir(symlink_to_dangling_symlink) == (True, True, False) + assert fs.lexists_islink_isdir(symlink_to_symlink_to_dir) == (True, True, True) + assert fs.lexists_islink_isdir(symlink_to_symlink_to_file) == (True, True, False) + + +class RegisterVisitor(object): + """A directory visitor that keeps track of all visited paths""" + def __init__(self, root, follow_dirs=True, follow_symlink_dirs=True): + self.files = [] + self.dirs_before = [] + self.symlinked_dirs_before = [] + self.dirs_after = [] + self.symlinked_dirs_after = [] + + self.root = root + self.follow_dirs = follow_dirs + self.follow_symlink_dirs = follow_symlink_dirs + + def check(self, root, rel_path, depth): + # verify the (root, rel_path, depth) make sense. + assert root == self.root and depth + 1 == len(rel_path.split(os.sep)) + + def visit_file(self, root, rel_path, depth): + self.check(root, rel_path, depth) + self.files.append(rel_path) + + def before_visit_dir(self, root, rel_path, depth): + self.check(root, rel_path, depth) + self.dirs_before.append(rel_path) + return self.follow_dirs + + def before_visit_symlinked_dir(self, root, rel_path, depth): + self.check(root, rel_path, depth) + self.symlinked_dirs_before.append(rel_path) + return self.follow_symlink_dirs + + def after_visit_dir(self, root, rel_path, depth): + self.check(root, rel_path, depth) + self.dirs_after.append(rel_path) + + def after_visit_symlinked_dir(self, root, rel_path, depth): + self.check(root, rel_path, depth) + self.symlinked_dirs_after.append(rel_path) + + +@pytest.mark.skipif(sys.platform == 'win32', reason="Requires symlinks") +def test_visit_directory_tree_follow_all(noncyclical_dir_structure): + root = str(noncyclical_dir_structure) + visitor = RegisterVisitor(root, follow_dirs=True, follow_symlink_dirs=True) + fs.visit_directory_tree(root, visitor) + j = os.path.join + assert visitor.files == [ + j('a', 'file_1'), + j('a', 'to_c', 'dangling_link'), + j('a', 'to_c', 'file_2'), + j('a', 'to_file_1'), + j('b', 'file_1'), + j('b', 'to_c', 'dangling_link'), + j('b', 'to_c', 'file_2'), + j('b', 'to_file_1'), + j('c', 'dangling_link'), + j('c', 'file_2'), + j('file_3'), + ] + assert visitor.dirs_before == [ + j('a'), + j('a', 'd'), + j('b', 'd'), + j('c'), + ] + assert visitor.dirs_after == [ + j('a', 'd'), + j('a'), + j('b', 'd'), + j('c'), + ] + assert visitor.symlinked_dirs_before == [ + j('a', 'to_c'), + j('b'), + j('b', 'to_c'), + ] + assert visitor.symlinked_dirs_after == [ + j('a', 'to_c'), + j('b', 'to_c'), + j('b'), + ] + + +@pytest.mark.skipif(sys.platform == 'win32', reason="Requires symlinks") +def test_visit_directory_tree_follow_dirs(noncyclical_dir_structure): + root = str(noncyclical_dir_structure) + visitor = RegisterVisitor(root, follow_dirs=True, follow_symlink_dirs=False) + fs.visit_directory_tree(root, visitor) + j = os.path.join + assert visitor.files == [ + j('a', 'file_1'), + j('a', 'to_file_1'), + j('c', 'dangling_link'), + j('c', 'file_2'), + j('file_3'), + ] + assert visitor.dirs_before == [ + j('a'), + j('a', 'd'), + j('c'), + ] + assert visitor.dirs_after == [ + j('a', 'd'), + j('a'), + j('c'), + ] + assert visitor.symlinked_dirs_before == [ + j('a', 'to_c'), + j('b'), + ] + assert not visitor.symlinked_dirs_after + + +@pytest.mark.skipif(sys.platform == 'win32', reason="Requires symlinks") +def test_visit_directory_tree_follow_none(noncyclical_dir_structure): + root = str(noncyclical_dir_structure) + visitor = RegisterVisitor(root, follow_dirs=False, follow_symlink_dirs=False) + fs.visit_directory_tree(root, visitor) + j = os.path.join + assert visitor.files == [ + j('file_3'), + ] + assert visitor.dirs_before == [ + j('a'), + j('c'), + ] + assert not visitor.dirs_after + assert visitor.symlinked_dirs_before == [ + j('b'), + ] + assert not visitor.symlinked_dirs_after + + +@pytest.mark.regression('29687') +@pytest.mark.parametrize('initial_mode', [ + stat.S_IRUSR | stat.S_IXUSR, + stat.S_IWGRP +]) +@pytest.mark.skipif(sys.platform == 'win32', reason='Windows might change permissions') +def test_remove_linked_tree_doesnt_change_file_permission(tmpdir, initial_mode): + # Here we test that a failed call to remove_linked_tree, due to passing a file + # as an argument instead of a directory, doesn't leave the file with different + # permissions as a side effect of trying to handle the error. + file_instead_of_dir = tmpdir.ensure('foo') + file_instead_of_dir.chmod(initial_mode) + initial_stat = os.stat(str(file_instead_of_dir)) + fs.remove_linked_tree(str(file_instead_of_dir)) + final_stat = os.stat(str(file_instead_of_dir)) + assert final_stat == initial_stat diff --git a/lib/spack/spack/test/llnl/util/lang.py b/lib/spack/spack/test/llnl/util/lang.py index 8a2a03ee52c40a..c085f30259c888 100644 --- a/lib/spack/spack/test/llnl/util/lang.py +++ b/lib/spack/spack/test/llnl/util/lang.py @@ -10,7 +10,7 @@ import pytest import llnl.util.lang -from llnl.util.lang import match_predicate, pretty_date +from llnl.util.lang import dedupe, match_predicate, memoized, pretty_date, stable_args @pytest.fixture() @@ -205,3 +205,68 @@ def _cmp_key(self): assert hash(a) == hash(a2) assert hash(b) == hash(b) assert hash(b) == hash(b2) + + +@pytest.mark.parametrize( + "args1,kwargs1,args2,kwargs2", + [ + # Ensure tuples passed in args are disambiguated from equivalent kwarg items. + (('a', 3), {}, (), {'a': 3}) + ], +) +def test_unequal_args(args1, kwargs1, args2, kwargs2): + assert stable_args(*args1, **kwargs1) != stable_args(*args2, **kwargs2) + + +@pytest.mark.parametrize( + "args1,kwargs1,args2,kwargs2", + [ + # Ensure that kwargs are stably sorted. + ((), {'a': 3, 'b': 4}, (), {'b': 4, 'a': 3}), + ], +) +def test_equal_args(args1, kwargs1, args2, kwargs2): + assert stable_args(*args1, **kwargs1) == stable_args(*args2, **kwargs2) + + +@pytest.mark.parametrize( + "args, kwargs", + [ + ((1,), {}), + ((), {'a': 3}), + ((1,), {'a': 3}), + ], +) +def test_memoized(args, kwargs): + @memoized + def f(*args, **kwargs): + return 'return-value' + assert f(*args, **kwargs) == 'return-value' + key = stable_args(*args, **kwargs) + assert list(f.cache.keys()) == [key] + assert f.cache[key] == 'return-value' + + +@pytest.mark.parametrize( + "args, kwargs", + [ + (([1],), {}), + ((), {'a': [1]}) + ], +) +def test_memoized_unhashable(args, kwargs): + """Check that an exception is raised clearly""" + @memoized + def f(*args, **kwargs): + return None + with pytest.raises(llnl.util.lang.UnhashableArguments) as exc_info: + f(*args, **kwargs) + exc_msg = str(exc_info.value) + key = stable_args(*args, **kwargs) + assert str(key) in exc_msg + assert "function 'f'" in exc_msg + + +def test_dedupe(): + assert [x for x in dedupe([1, 2, 1, 3, 2])] == [1, 2, 3] + assert [x for x in dedupe([1, -2, 1, 3, 2], key=abs)] == [1, -2, 3] diff --git a/lib/spack/spack/test/llnl/util/link_tree.py b/lib/spack/spack/test/llnl/util/link_tree.py index 7ff941221bfd58..296a2cd2636722 100644 --- a/lib/spack/spack/test/llnl/util/link_tree.py +++ b/lib/spack/spack/test/llnl/util/link_tree.py @@ -4,14 +4,19 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest -from llnl.util.filesystem import mkdirp, touchp, working_dir -from llnl.util.link_tree import LinkTree +from llnl.util.filesystem import mkdirp, touchp, visit_directory_tree, working_dir +from llnl.util.link_tree import DestinationMergeVisitor, LinkTree, SourceMergeVisitor +from llnl.util.symlink import islink from spack.stage import Stage +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture() def stage(): @@ -42,7 +47,7 @@ def link_tree(stage): def check_file_link(filename, expected_target): assert os.path.isfile(filename) - assert os.path.islink(filename) + assert islink(filename) assert (os.path.abspath(os.path.realpath(filename)) == os.path.abspath(expected_target)) @@ -168,3 +173,141 @@ def test_ignore(stage, link_tree): assert os.path.isfile('source/.spec') assert os.path.isfile('dest/.spec') + + +def test_source_merge_visitor_does_not_follow_symlinked_dirs_at_depth(tmpdir): + """Given an dir structure like this:: + + . + `-- a + |-- b + | |-- c + | | |-- d + | | | `-- file + | | `-- symlink_d -> d + | `-- symlink_c -> c + `-- symlink_b -> b + + The SoureMergeVisitor will expand symlinked dirs to directories, but only + to fixed depth, to avoid exponential explosion. In our current defaults, + symlink_b will be expanded, but symlink_c and symlink_d will not. + """ + j = os.path.join + with tmpdir.as_cwd(): + os.mkdir(j('a')) + os.mkdir(j('a', 'b')) + os.mkdir(j('a', 'b', 'c')) + os.mkdir(j('a', 'b', 'c', 'd')) + os.symlink(j('b'), j('a', 'symlink_b')) + os.symlink(j('c'), j('a', 'b', 'symlink_c')) + os.symlink(j('d'), j('a', 'b', 'c', 'symlink_d')) + with open(j('a', 'b', 'c', 'd', 'file'), 'wb'): + pass + + visitor = SourceMergeVisitor() + visit_directory_tree(str(tmpdir), visitor) + assert [p for p in visitor.files.keys()] == [ + j('a', 'b', 'c', 'd', 'file'), + j('a', 'b', 'c', 'symlink_d'), # treated as a file, not expanded + j('a', 'b', 'symlink_c'), # treated as a file, not expanded + j('a', 'symlink_b', 'c', 'd', 'file'), # symlink_b was expanded + j('a', 'symlink_b', 'c', 'symlink_d'), # symlink_b was expanded + j('a', 'symlink_b', 'symlink_c') # symlink_b was expanded + ] + assert [p for p in visitor.directories.keys()] == [ + j('a'), + j('a', 'b'), + j('a', 'b', 'c'), + j('a', 'b', 'c', 'd'), + j('a', 'symlink_b'), + j('a', 'symlink_b', 'c'), + j('a', 'symlink_b', 'c', 'd'), + ] + + +def test_source_merge_visitor_cant_be_cyclical(tmpdir): + """Given an dir structure like this:: + + . + |-- a + | `-- symlink_b -> ../b + | `-- symlink_symlink_b -> symlink_b + `-- b + `-- symlink_a -> ../a + + The SoureMergeVisitor will not expand `a/symlink_b`, `a/symlink_symlink_b` and + `b/symlink_a` to avoid recursion. The general rule is: only expand symlinked dirs + pointing deeper into the directory structure. + """ + j = os.path.join + with tmpdir.as_cwd(): + os.mkdir(j('a')) + os.symlink(j('..', 'b'), j('a', 'symlink_b')) + os.symlink(j('symlink_b'), j('a', 'symlink_b_b')) + os.mkdir(j('b')) + os.symlink(j('..', 'a'), j('b', 'symlink_a')) + + visitor = SourceMergeVisitor() + visit_directory_tree(str(tmpdir), visitor) + assert [p for p in visitor.files.keys()] == [ + j('a', 'symlink_b'), + j('a', 'symlink_b_b'), + j('b', 'symlink_a') + ] + assert [p for p in visitor.directories.keys()] == [ + j('a'), + j('b') + ] + + +def test_destination_merge_visitor_always_errors_on_symlinked_dirs(tmpdir): + """When merging prefixes into a non-empty destination folder, and + this destination folder has a symlinked dir where the prefix has a dir, + we should never merge any files there, but register a fatal error.""" + j = os.path.join + + # Here example_a and example_b are symlinks. + with tmpdir.mkdir('dst').as_cwd(): + os.mkdir('a') + os.symlink('a', 'example_a') + os.symlink('a', 'example_b') + + # Here example_a is a directory, and example_b is a (non-expanded) symlinked + # directory. + with tmpdir.mkdir('src').as_cwd(): + os.mkdir('example_a') + with open(j('example_a', 'file'), 'wb'): + pass + os.symlink('..', 'example_b') + + visitor = SourceMergeVisitor() + visit_directory_tree(str(tmpdir.join('src')), visitor) + visit_directory_tree(str(tmpdir.join('dst')), DestinationMergeVisitor(visitor)) + + assert visitor.fatal_conflicts + conflicts = [c.dst for c in visitor.fatal_conflicts] + assert 'example_a' in conflicts + assert 'example_b' in conflicts + + +def test_destination_merge_visitor_file_dir_clashes(tmpdir): + """Tests whether non-symlink file-dir and dir-file clashes as registered as fatal + errors""" + with tmpdir.mkdir('a').as_cwd(): + os.mkdir('example') + + with tmpdir.mkdir('b').as_cwd(): + with open('example', 'wb'): + pass + + a_to_b = SourceMergeVisitor() + visit_directory_tree(str(tmpdir.join('a')), a_to_b) + visit_directory_tree(str(tmpdir.join('b')), DestinationMergeVisitor(a_to_b)) + assert a_to_b.fatal_conflicts + assert a_to_b.fatal_conflicts[0].dst == 'example' + + b_to_a = SourceMergeVisitor() + visit_directory_tree(str(tmpdir.join('b')), b_to_a) + visit_directory_tree(str(tmpdir.join('a')), DestinationMergeVisitor(b_to_a)) + assert b_to_a.fatal_conflicts + assert b_to_a.fatal_conflicts[0].dst == 'example' diff --git a/lib/spack/spack/test/llnl/util/lock.py b/lib/spack/spack/test/llnl/util/lock.py index 4bb23540f608d3..da8f77b2c3f566 100644 --- a/lib/spack/spack/test/llnl/util/lock.py +++ b/lib/spack/spack/test/llnl/util/lock.py @@ -44,12 +44,13 @@ """ import collections import errno -import fcntl import getpass import glob import os import shutil import socket +import stat +import sys import tempfile import traceback from contextlib import contextmanager @@ -59,7 +60,15 @@ import llnl.util.lock as lk import llnl.util.multiproc as mp -from llnl.util.filesystem import touch +from llnl.util.filesystem import getuid, touch + +is_windows = sys.platform == "win32" +if not is_windows: + import fcntl + +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + # # This test can be run with MPI. MPI is "enabled" if we can import @@ -112,14 +121,25 @@ def make_readable(*paths): + # TODO: From os.chmod doc: + # "Note Although Windows supports chmod(), you can only + # set the file's read-only flag with it (via the stat.S_IWRITE and + # stat.S_IREAD constants or a corresponding integer value). All other + # bits are ignored." for path in paths: - mode = 0o555 if os.path.isdir(path) else 0o444 + if not is_windows: + mode = 0o555 if os.path.isdir(path) else 0o444 + else: + mode = stat.S_IREAD os.chmod(path, mode) def make_writable(*paths): for path in paths: - mode = 0o755 if os.path.isdir(path) else 0o744 + if not is_windows: + mode = 0o755 if os.path.isdir(path) else 0o744 + else: + mode = stat.S_IWRITE os.chmod(path, mode) @@ -580,7 +600,7 @@ def test_write_lock_timeout_with_multiple_readers_3_2_ranges(lock_path): TimeoutWrite(lock_path, 5, 1)) -@pytest.mark.skipif(os.getuid() == 0, reason='user is root') +@pytest.mark.skipif(getuid() == 0, reason='user is root') def test_read_lock_on_read_only_lockfile(lock_dir, lock_path): """read-only directory, read-only lockfile.""" touch(lock_path) @@ -608,7 +628,7 @@ def test_read_lock_read_only_dir_writable_lockfile(lock_dir, lock_path): pass -@pytest.mark.skipif(os.getuid() == 0, reason='user is root') +@pytest.mark.skipif(False if is_windows else getuid() == 0, reason='user is root') def test_read_lock_no_lockfile(lock_dir, lock_path): """read-only directory, no lockfile (so can't create).""" with read_only(lock_dir): @@ -676,9 +696,10 @@ def test_upgrade_read_to_write_fails_with_readonly_file(private_lock_path): assert lock._writes == 0 assert lock._file.mode == 'r' - # upgrade to writ here + # upgrade to write here with pytest.raises(lk.LockROFileError): lock.acquire_write() + lk.file_tracker.release_fh(lock.path) class ComplexAcquireAndRelease(object): diff --git a/lib/spack/spack/test/llnl/util/tty/log.py b/lib/spack/spack/test/llnl/util/tty/log.py index a5e6d8877d04c4..2491a5dbe3475c 100644 --- a/lib/spack/spack/test/llnl/util/tty/log.py +++ b/lib/spack/spack/test/llnl/util/tty/log.py @@ -11,15 +11,16 @@ import signal import sys import time -from types import ModuleType # novm -from typing import Optional # novm +from typing import TYPE_CHECKING, Optional # novm + +if TYPE_CHECKING: + from types import ModuleType # novm import pytest -import llnl.util.tty.log -from llnl.util.lang import uniq -from llnl.util.tty.log import log_output -from llnl.util.tty.pty import PseudoShell +import llnl.util.lang as lang +import llnl.util.tty.log as log +import llnl.util.tty.pty as pty from spack.util.executable import which @@ -31,6 +32,10 @@ pass +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + + @contextlib.contextmanager def nullcontext(): yield @@ -38,7 +43,7 @@ def nullcontext(): def test_log_python_output_with_echo(capfd, tmpdir): with tmpdir.as_cwd(): - with log_output('foo.txt', echo=True): + with log.log_output('foo.txt', echo=True): print('logged') # foo.txt has output @@ -51,7 +56,7 @@ def test_log_python_output_with_echo(capfd, tmpdir): def test_log_python_output_without_echo(capfd, tmpdir): with tmpdir.as_cwd(): - with log_output('foo.txt'): + with log.log_output('foo.txt'): print('logged') # foo.txt has output @@ -64,7 +69,7 @@ def test_log_python_output_without_echo(capfd, tmpdir): def test_log_python_output_with_invalid_utf8(capfd, tmpdir): with tmpdir.as_cwd(): - with log_output('foo.txt'): + with log.log_output('foo.txt'): sys.stdout.buffer.write(b'\xc3\x28\n') # python2 and 3 treat invalid UTF-8 differently @@ -83,7 +88,7 @@ def test_log_python_output_with_invalid_utf8(capfd, tmpdir): def test_log_python_output_and_echo_output(capfd, tmpdir): with tmpdir.as_cwd(): # echo two lines - with log_output('foo.txt') as logger: + with log.log_output('foo.txt') as logger: with logger.force_echo(): print('force echo') print('logged') @@ -102,7 +107,7 @@ def _log_filter_fn(string): def test_log_output_with_filter(capfd, tmpdir): with tmpdir.as_cwd(): - with log_output('foo.txt', filter_fn=_log_filter_fn): + with log.log_output('foo.txt', filter_fn=_log_filter_fn): print('foo blah') print('blah foo') print('foo foo') @@ -116,7 +121,7 @@ def test_log_output_with_filter(capfd, tmpdir): # now try with echo with tmpdir.as_cwd(): - with log_output('foo.txt', echo=True, filter_fn=_log_filter_fn): + with log.log_output('foo.txt', echo=True, filter_fn=_log_filter_fn): print('foo blah') print('blah foo') print('foo foo') @@ -138,7 +143,7 @@ def test_log_subproc_and_echo_output_no_capfd(capfd, tmpdir): # here, and echoing in test_log_subproc_and_echo_output_capfd below. with capfd.disabled(): with tmpdir.as_cwd(): - with log_output('foo.txt') as logger: + with log.log_output('foo.txt') as logger: with logger.force_echo(): echo('echo') print('logged') @@ -155,7 +160,7 @@ def test_log_subproc_and_echo_output_capfd(capfd, tmpdir): # interferes with the logged data. See # test_log_subproc_and_echo_output_no_capfd for tests on the logfile. with tmpdir.as_cwd(): - with log_output('foo.txt') as logger: + with log.log_output('foo.txt') as logger: with logger.force_echo(): echo('echo') print('logged') @@ -175,7 +180,7 @@ def handler(signum, frame): signal.signal(signal.SIGUSR1, handler) log_path = kwargs["log_path"] - with log_output(log_path): + with log.log_output(log_path): while running[0]: print("line") time.sleep(1e-3) @@ -304,25 +309,25 @@ def mock_shell_fg_bg_no_termios(proc, ctl, **kwargs): @contextlib.contextmanager def no_termios(): - saved = llnl.util.tty.log.termios - llnl.util.tty.log.termios = None + saved = log.termios + log.termios = None try: yield finally: - llnl.util.tty.log.termios = saved + log.termios = saved @pytest.mark.skipif(not which("ps"), reason="requires ps utility") @pytest.mark.skipif(not termios, reason="requires termios support") @pytest.mark.parametrize('test_fn,termios_on_or_off', [ # tests with termios - (mock_shell_fg, nullcontext), - (mock_shell_bg, nullcontext), - (mock_shell_bg_fg, nullcontext), - (mock_shell_fg_bg, nullcontext), - (mock_shell_tstp_cont, nullcontext), - (mock_shell_tstp_tstp_cont, nullcontext), - (mock_shell_tstp_tstp_cont_cont, nullcontext), + (mock_shell_fg, lang.nullcontext), + (mock_shell_bg, lang.nullcontext), + (mock_shell_bg_fg, lang.nullcontext), + (mock_shell_fg_bg, lang.nullcontext), + (mock_shell_tstp_cont, lang.nullcontext), + (mock_shell_tstp_tstp_cont, lang.nullcontext), + (mock_shell_tstp_tstp_cont_cont, lang.nullcontext), # tests without termios (mock_shell_fg_no_termios, no_termios), (mock_shell_bg, no_termios), @@ -340,7 +345,7 @@ def test_foreground_background(test_fn, termios_on_or_off, tmpdir): process stop and start. """ - shell = PseudoShell(test_fn, simple_logger) + shell = pty.PseudoShell(test_fn, simple_logger) log_path = str(tmpdir.join("log.txt")) # run the shell test @@ -373,7 +378,7 @@ def handler(signum, frame): v_lock = kwargs["v_lock"] sys.stderr.write(os.getcwd() + "\n") - with log_output(log_path) as logger: + with log.log_output(log_path) as logger: with logger.force_echo(): print("forced output") @@ -444,7 +449,7 @@ def mock_shell_v_v_no_termios(proc, ctl, **kwargs): @pytest.mark.skipif(not which("ps"), reason="requires ps utility") @pytest.mark.skipif(not termios, reason="requires termios support") @pytest.mark.parametrize('test_fn,termios_on_or_off', [ - (mock_shell_v_v, nullcontext), + (mock_shell_v_v, lang.nullcontext), (mock_shell_v_v_no_termios, no_termios), ]) def test_foreground_background_output( @@ -455,7 +460,7 @@ def test_foreground_background_output( return - shell = PseudoShell(test_fn, synchronized_logger) + shell = pty.PseudoShell(test_fn, synchronized_logger) log_path = str(tmpdir.join("log.txt")) # Locks for synchronizing with minion @@ -483,8 +488,8 @@ def test_foreground_background_output( # also get lines of log file assert os.path.exists(log_path) - with open(log_path) as log: - log = log.read().strip().split("\n") + with open(log_path) as logfile: + log_data = logfile.read().strip().split("\n") # Controller and minion process coordinate with locks such that the # minion writes "off" when echo is off, and "on" when echo is on. The @@ -492,12 +497,12 @@ def test_foreground_background_output( # lines if the controller is slow. The important thing to observe # here is that we started seeing 'on' in the end. assert ( - ['forced output', 'on'] == uniq(output) or - ['forced output', 'off', 'on'] == uniq(output) + ['forced output', 'on'] == lang.uniq(output) or + ['forced output', 'off', 'on'] == lang.uniq(output) ) # log should be off for a while, then on, then off assert ( - ['forced output', 'off', 'on', 'off'] == uniq(log) and - log.count("off") > 2 # ensure some "off" lines were omitted + ['forced output', 'off', 'on', 'off'] == lang.uniq(log_data) and + log_data.count("off") > 2 # ensure some "off" lines were omitted ) diff --git a/lib/spack/spack/test/main.py b/lib/spack/spack/test/main.py index 1a7a069e1557e0..dc6fa8299ebb55 100644 --- a/lib/spack/spack/test/main.py +++ b/lib/spack/spack/test/main.py @@ -4,18 +4,25 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys + +import pytest import llnl.util.filesystem as fs import spack.paths from spack.main import get_version, main +pytestmark = pytest.mark.skipif( + sys.platform == 'win32', + reason="Test functionality supported but tests are failing on Win") + -def test_get_version_no_match_git(tmpdir, working_env): +def test_version_git_nonsense_output(tmpdir, working_env): git = str(tmpdir.join("git")) with open(git, "w") as f: f.write("""#!/bin/sh -echo v0.13.3 +echo --|not a hash|---- """) fs.set_executable(git) @@ -23,16 +30,31 @@ def test_get_version_no_match_git(tmpdir, working_env): assert spack.spack_version == get_version() -def test_get_version_match_git(tmpdir, working_env): +def test_version_git_fails(tmpdir, working_env): git = str(tmpdir.join("git")) with open(git, "w") as f: f.write("""#!/bin/sh -echo v0.13.3-912-g3519a1762 +echo 26552533be04e83e66be2c28e0eb5011cb54e8fa +exit 1 """) fs.set_executable(git) os.environ["PATH"] = str(tmpdir) - assert "0.13.3-912-3519a1762" == get_version() + assert spack.spack_version == get_version() + + +def test_git_sha_output(tmpdir, working_env): + git = str(tmpdir.join("git")) + sha = '26552533be04e83e66be2c28e0eb5011cb54e8fa' + with open(git, "w") as f: + f.write("""#!/bin/sh +echo {0} +""".format(sha)) + fs.set_executable(git) + + os.environ["PATH"] = str(tmpdir) + expected = "{0} ({1})".format(spack.spack_version, sha) + assert expected == get_version() def test_get_version_no_repo(tmpdir, monkeypatch): diff --git a/lib/spack/spack/test/make_executable.py b/lib/spack/spack/test/make_executable.py index 4b40574ab0e6b1..9fcf4cc8c40511 100644 --- a/lib/spack/spack/test/make_executable.py +++ b/lib/spack/spack/test/make_executable.py @@ -10,12 +10,19 @@ """ import os import shutil +import sys import tempfile import unittest +import pytest + from spack.build_environment import MakeExecutable from spack.util.environment import path_put_first +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="MakeExecutable \ + not supported on Windows") + class MakeExecutableTest(unittest.TestCase): diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index d8684d13b9269f..3f02239b6167d0 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -5,6 +5,7 @@ import filecmp import os +import sys import pytest @@ -19,7 +20,9 @@ from spack.util.executable import which from spack.util.spack_yaml import SpackYAMLError -pytestmark = pytest.mark.usefixtures('mutable_config', 'mutable_mock_repo') +pytestmark = [pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows"), + pytest.mark.usefixtures('mutable_config', 'mutable_mock_repo')] # paths in repos that shouldn't be in the mirror tarballs. exclude = ['.hg', '.git', '.svn'] diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py index 7c7c7066f02aab..2a19d3903332b1 100644 --- a/lib/spack/spack/test/module_parsing.py +++ b/lib/spack/spack/test/module_parsing.py @@ -4,10 +4,12 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest import spack +import spack.util.module_cmd from spack.util.module_cmd import ( get_path_args_from_module_line, get_path_from_module_contents, @@ -15,36 +17,35 @@ path_from_modules, ) +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Tests fail on Windows") + test_module_lines = ['prepend-path LD_LIBRARY_PATH /path/to/lib', 'setenv MOD_DIR /path/to', 'setenv LDFLAGS -Wl,-rpath/path/to/lib', 'setenv LDFLAGS -L/path/to/lib', 'prepend-path PATH /path/to/bin'] -_test_template = "'. %s 2>&1' % args[1]" - -def test_module_function_change_env(tmpdir, working_env, monkeypatch): - monkeypatch.setattr(spack.util.module_cmd, '_cmd_template', _test_template) +def test_module_function_change_env(tmpdir, working_env): src_file = str(tmpdir.join('src_me')) with open(src_file, 'w') as f: f.write('export TEST_MODULE_ENV_VAR=TEST_SUCCESS\n') os.environ['NOT_AFFECTED'] = "NOT_AFFECTED" - module('load', src_file) + module('load', src_file, module_template='. {0} 2>&1'.format(src_file)) assert os.environ['TEST_MODULE_ENV_VAR'] == 'TEST_SUCCESS' assert os.environ['NOT_AFFECTED'] == "NOT_AFFECTED" -def test_module_function_no_change(tmpdir, monkeypatch): - monkeypatch.setattr(spack.util.module_cmd, '_cmd_template', _test_template) +def test_module_function_no_change(tmpdir): src_file = str(tmpdir.join('src_me')) with open(src_file, 'w') as f: f.write('echo TEST_MODULE_FUNCTION_PRINT') old_env = os.environ.copy() - text = module('show', src_file) + text = module('show', src_file, module_template='. {0} 2>&1'.format(src_file)) assert text == 'TEST_MODULE_FUNCTION_PRINT\n' assert os.environ == old_env @@ -126,6 +127,7 @@ def test_get_argument_from_module_line(): get_path_args_from_module_line(bl) +# lmod is entirely unsupported on Windows def test_lmod_quote_parsing(): lines = ['setenv("SOME_PARTICULAR_DIR","-L/opt/cray/pe/mpich/8.1.4/gtl/lib")'] result = get_path_from_module_contents(lines, 'some-module') diff --git a/lib/spack/spack/test/modules/common.py b/lib/spack/spack/test/modules/common.py index 133258e9ccef7f..401dc73877a864 100644 --- a/lib/spack/spack/test/modules/common.py +++ b/lib/spack/spack/test/modules/common.py @@ -6,6 +6,7 @@ import collections import os import stat +import sys import pytest @@ -15,6 +16,9 @@ from spack.modules.common import UpstreamModuleIndex from spack.spec import Spec +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def test_update_dictionary_extending_list(): target = { diff --git a/lib/spack/spack/test/modules/lmod.py b/lib/spack/spack/test/modules/lmod.py index a29d8ac2acfa97..f2aa048705a569 100644 --- a/lib/spack/spack/test/modules/lmod.py +++ b/lib/spack/spack/test/modules/lmod.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import re +import sys import pytest @@ -20,6 +21,9 @@ #: Class of the writer tested in this module writer_cls = spack.modules.lmod.LmodModulefileWriter +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.fixture(params=[ 'clang@3.3', diff --git a/lib/spack/spack/test/modules/tcl.py b/lib/spack/spack/test/modules/tcl.py index 7f94dabc60ebbc..121e47422b35d7 100644 --- a/lib/spack/spack/test/modules/tcl.py +++ b/lib/spack/spack/test/modules/tcl.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import spack.modules.common @@ -16,6 +18,9 @@ #: Class of the writer tested in this module writer_cls = spack.modules.tcl.TclModulefileWriter +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + @pytest.mark.usefixtures('config', 'mock_packages') class TestTcl(object): diff --git a/lib/spack/spack/test/monitor.py b/lib/spack/spack/test/monitor.py index d51341cac0dcf2..7ea7a0ddac1b69 100644 --- a/lib/spack/spack/test/monitor.py +++ b/lib/spack/spack/test/monitor.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -135,6 +136,8 @@ def test_spack_monitor_without_auth(mock_monitor_request): get_client(host="hostname") +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_spack_monitor_build_env(mock_monitor_request, install_mockery_mutable_config): monitor = get_client(host="hostname") assert hasattr(monitor, "build_environment") diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index 7170a08aaef42b..e403d858995958 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -3,7 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import os.path +import os import pytest @@ -373,3 +373,11 @@ def test_fetch_options(mock_packages, config): assert isinstance(fetcher, spack.fetch_strategy.URLFetchStrategy) assert fetcher.digest == '00000000000000000000000000000012' assert fetcher.extra_options == {'cookie': 'baz'} + + +def test_has_test_method_fails(capsys): + with pytest.raises(SystemExit): + spack.package.has_test_method('printing-package') + + captured = capsys.readouterr()[1] + assert 'is not a class' in captured diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py index 1a83bd97e209bb..ff68418ac4ccc9 100644 --- a/lib/spack/spack/test/packaging.py +++ b/lib/spack/spack/test/packaging.py @@ -12,10 +12,12 @@ import re import shutil import stat +import sys import pytest from llnl.util.filesystem import mkdirp +from llnl.util.symlink import symlink import spack.binary_distribution as bindist import spack.cmd.buildcache as buildcache @@ -38,6 +40,9 @@ ) from spack.spec import Spec +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + def fake_fetchify(url, pkg): """Fake the URL for a package so it downloads from a file.""" @@ -79,7 +84,7 @@ def test_buildcache(mock_archive, tmpdir): # Create an absolute symlink linkname = os.path.join(spec.prefix, "link_to_dummy.txt") - os.symlink(filename, linkname) + symlink(filename, linkname) # Create the build cache and # put it directly into the mirror @@ -232,8 +237,8 @@ def test_relocate_links(tmpdir): with open(new_binname, 'w') as f: f.write('\n') os.utime(new_binname, None) - os.symlink(old_binname, new_linkname) - os.symlink('/usr/lib/libc.so', new_linkname2) + symlink(old_binname, new_linkname) + symlink('/usr/lib/libc.so', new_linkname2) relocate_links(filenames, old_layout_root, old_install_prefix, new_install_prefix) assert os.readlink(new_linkname) == new_binname diff --git a/lib/spack/spack/test/patch.py b/lib/spack/spack/test/patch.py index 05de40f88dea3f..0d88b93c23a195 100644 --- a/lib/spack/spack/test/patch.py +++ b/lib/spack/spack/test/patch.py @@ -6,6 +6,7 @@ import collections import filecmp import os +import sys import pytest @@ -18,20 +19,26 @@ from spack.spec import Spec from spack.stage import Stage from spack.util.executable import Executable +from spack.util.path import is_windows # various sha256 sums (using variables for legibility) +# many file based shas will differ between Windows and other platforms +# due to the use of carriage returns ('\r\n') in Windows line endings # files with contents 'foo', 'bar', and 'baz' -foo_sha256 = 'b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c' -bar_sha256 = '7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730' -baz_sha256 = 'bf07a7fbb825fc0aae7bf4a1177b2b31fcf8a3feeaf7092761e18c859ee52a9c' -biz_sha256 = 'a69b288d7393261e613c276c6d38a01461028291f6e381623acc58139d01f54d' +foo_sha256 = 'b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c' if not is_windows else 'bf874c7dd3a83cf370fdc17e496e341de06cd596b5c66dbf3c9bb7f6c139e3ee' +bar_sha256 = '7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730' if not is_windows else '556ddc69a75d0be0ecafc82cd4657666c8063f13d762282059c39ff5dbf18116' +baz_sha256 = 'bf07a7fbb825fc0aae7bf4a1177b2b31fcf8a3feeaf7092761e18c859ee52a9c' if not is_windows else 'd30392e66c636a063769cbb1db08cd3455a424650d4494db6379d73ea799582b' +biz_sha256 = 'a69b288d7393261e613c276c6d38a01461028291f6e381623acc58139d01f54d' if not is_windows else '2f2b087a8f84834fd03d4d1d5b43584011e869e4657504ef3f8b0a672a5c222e' # url patches +# url shas are the same on Windows url1_sha256 = 'abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234' url2_sha256 = '1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd' url2_archive_sha256 = 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd' +platform_url_sha = '252c0af58be3d90e5dc5e0d16658434c9efa5d20a5df6c10bf72c2d77f780866' if not is_windows else 'ecf44a8244a486e9ef5f72c6cb622f99718dcd790707ac91af0b8c9a4ab7a2bb' + @pytest.fixture() def mock_patch_stage(tmpdir_factory, monkeypatch): @@ -44,6 +51,8 @@ def mock_patch_stage(tmpdir_factory, monkeypatch): data_path = os.path.join(spack.paths.test_path, 'data', 'patch') +@pytest.mark.skipif(sys.platform == 'win32', + reason="Line ending conflict on Windows") @pytest.mark.parametrize('filename, sha256, archive_sha256', [ # compressed patch -- needs sha256 and archive_256 (os.path.join(data_path, 'foo.tgz'), @@ -51,7 +60,7 @@ def mock_patch_stage(tmpdir_factory, monkeypatch): '4e8092a161ec6c3a1b5253176fcf33ce7ba23ee2ff27c75dbced589dabacd06e'), # uncompressed patch -- needs only sha256 (os.path.join(data_path, 'foo.patch'), - '252c0af58be3d90e5dc5e0d16658434c9efa5d20a5df6c10bf72c2d77f780866', + platform_url_sha, None) ]) def test_url_patch(mock_patch_stage, filename, sha256, archive_sha256): @@ -125,9 +134,13 @@ def test_patch_order(mock_packages, config): spec = Spec('dep-diamond-patch-top') spec.concretize() - mid2_sha256 = 'mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234' - mid1_sha256 = '0b62284961dab49887e31319843431ee5b037382ac02c4fe436955abef11f094' - top_sha256 = 'f7de2947c64cb6435e15fb2bef359d1ed5f6356b2aebb7b20535e3772904e6db' + mid2_sha256 = 'mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234' \ + if not is_windows \ + else 'mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234' + mid1_sha256 = '0b62284961dab49887e31319843431ee5b037382ac02c4fe436955abef11f094' \ + if not is_windows else 'aeb16c4dec1087e39f2330542d59d9b456dd26d791338ae6d80b6ffd10c89dfa' + top_sha256 = 'f7de2947c64cb6435e15fb2bef359d1ed5f6356b2aebb7b20535e3772904e6db' \ + if not is_windows else 'ff34cb21271d16dbf928374f610bb5dd593d293d311036ddae86c4846ff79070' dep = spec['patch'] patch_order = dep.variants['patches']._patches_in_order_of_appearance @@ -168,6 +181,8 @@ def test_nested_directives(mock_packages): assert len(fake_dep.patches[Spec()]) == 2 +@pytest.mark.skipif(sys.platform == 'win32', + reason="Test requires Autotools") def test_patched_dependency( mock_packages, config, install_mockery, mock_fetch): """Test whether patched dependencies work.""" @@ -176,7 +191,9 @@ def test_patched_dependency( assert 'patches' in list(spec['libelf'].variants.keys()) # make sure the patch makes it into the dependency spec - assert (('c45c1564f70def3fc1a6e22139f62cb21cd190cc3a7dbe6f4120fa59ce33dcb8',) == + t_sha = 'c45c1564f70def3fc1a6e22139f62cb21cd190cc3a7dbe6f4120fa59ce33dcb8' \ + if not is_windows else '3c5b65abcd6a3b2c714dbf7c31ff65fe3748a1adc371f030c283007ca5534f11' + assert ((t_sha,) == spec['libelf'].variants['patches'].value) # make sure the patch in the dependent's directory is applied to the diff --git a/lib/spack/spack/test/permissions.py b/lib/spack/spack/test/permissions.py index f570e5234fa60f..e2667b9b56668e 100644 --- a/lib/spack/spack/test/permissions.py +++ b/lib/spack/spack/test/permissions.py @@ -5,6 +5,7 @@ import os import stat +import sys import pytest @@ -12,6 +13,9 @@ from spack.util.file_permissions import InvalidPermissionsError, set_permissions +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="chmod unsupported on Windows") + def test_chmod_real_entries_ignores_suid_sgid(tmpdir): path = str(tmpdir.join('file').ensure()) diff --git a/lib/spack/spack/test/relocate.py b/lib/spack/spack/test/relocate.py index a64052c7c83d86..b5c0151420f2c5 100644 --- a/lib/spack/spack/test/relocate.py +++ b/lib/spack/spack/test/relocate.py @@ -2,9 +2,11 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import os.path import re import shutil +import sys import pytest @@ -19,6 +21,9 @@ import spack.tengine import spack.util.executable +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Tests fail on Windows") + def skip_unless_linux(f): return pytest.mark.skipif( @@ -240,7 +245,8 @@ def test_existing_rpaths(patchelf_behavior, expected, mock_patchelf): @pytest.mark.parametrize('start_path,path_root,paths,expected', [ ('/usr/bin/test', '/usr', ['/usr/lib', '/usr/lib64', '/opt/local/lib'], - ['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib']) + [os.path.join('$ORIGIN', '..', 'lib'), os.path.join('$ORIGIN', '..', 'lib64'), + '/opt/local/lib']) ]) def test_make_relative_paths(start_path, path_root, paths, expected): relatives = spack.relocate._make_relative(start_path, path_root, paths) @@ -252,7 +258,8 @@ def test_make_relative_paths(start_path, path_root, paths, expected): # and then normalized ('/usr/bin/test', ['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib'], - ['/usr/lib', '/usr/lib64', '/opt/local/lib']), + [os.sep + os.path.join('usr', 'lib'), os.sep + os.path.join('usr', 'lib64'), + '/opt/local/lib']), # Relative path without $ORIGIN ('/usr/bin/test', ['../local/lib'], ['../local/lib']), ]) @@ -276,6 +283,7 @@ def test_set_elf_rpaths(mock_patchelf): assert patchelf in output +@skip_unless_linux def test_set_elf_rpaths_warning(mock_patchelf): # Mock a failing patchelf command and ensure it warns users patchelf = mock_patchelf('exit 1') diff --git a/lib/spack/spack/test/repo.py b/lib/spack/spack/test/repo.py index 30fb73fce97229..ac3138325ec687 100644 --- a/lib/spack/spack/test/repo.py +++ b/lib/spack/spack/test/repo.py @@ -86,3 +86,15 @@ def test_namespace_hasattr(attr_name, exists, mutable_mock_repo): def test_all_package_names_is_cached_correctly(): assert 'mpi' in spack.repo.all_package_names(include_virtuals=True) assert 'mpi' not in spack.repo.all_package_names(include_virtuals=False) + + +@pytest.mark.regression('29203') +def test_use_repositories_doesnt_change_class(): + """Test that we don't create the same package module and class multiple times + when swapping repositories. + """ + zlib_cls_outer = spack.repo.path.get_pkg_class('zlib') + current_paths = [r.root for r in spack.repo.path.repos] + with spack.repo.use_repositories(*current_paths): + zlib_cls_inner = spack.repo.path.get_pkg_class('zlib') + assert id(zlib_cls_inner) == id(zlib_cls_outer) diff --git a/lib/spack/spack/test/rewiring.py b/lib/spack/spack/test/rewiring.py new file mode 100644 index 00000000000000..f467c8e239b3c8 --- /dev/null +++ b/lib/spack/spack/test/rewiring.py @@ -0,0 +1,142 @@ +# Copyright 2013-2021 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 filecmp +import os +import sys + +import pytest + +import spack.rewiring +import spack.store +from spack.spec import Spec +from spack.test.relocate import text_in_bin + +args = ['strings', 'file'] +if sys.platform == 'darwin': + args.extend(['/usr/bin/clang++', 'install_name_tool']) +else: + args.extend(['/usr/bin/g++', 'patchelf']) + + +@pytest.mark.requires_executables(*args) +@pytest.mark.parametrize('transitive', [True, False]) +def test_rewire(mock_fetch, install_mockery, transitive): + spec = Spec('splice-t^splice-h~foo').concretized() + dep = Spec('splice-h+foo').concretized() + spec.package.do_install() + dep.package.do_install() + spliced_spec = spec.splice(dep, transitive=transitive) + assert spec.dag_hash() != spliced_spec.dag_hash() + + spack.rewiring.rewire(spliced_spec) + + # check that the prefix exists + assert os.path.exists(spliced_spec.prefix) + + # test that it made it into the database + rec = spack.store.db.get_record(spliced_spec) + installed_in_db = rec.installed if rec else False + assert installed_in_db + + # check the file in the prefix has the correct paths + for node in spliced_spec.traverse(root=True): + text_file_path = os.path.join(node.prefix, node.name) + with open(text_file_path, 'r') as f: + text = f.read() + for modded_spec in node.traverse(root=True): + assert modded_spec.prefix in text + + +@pytest.mark.requires_executables(*args) +@pytest.mark.parametrize('transitive', [True, False]) +def test_rewire_bin(mock_fetch, install_mockery, transitive): + spec = Spec('quux').concretized() + dep = Spec('garply cflags=-g').concretized() + spec.package.do_install() + dep.package.do_install() + spliced_spec = spec.splice(dep, transitive=transitive) + assert spec.dag_hash() != spliced_spec.dag_hash() + + spack.rewiring.rewire(spliced_spec) + + # check that the prefix exists + assert os.path.exists(spliced_spec.prefix) + + # test that it made it into the database + rec = spack.store.db.get_record(spliced_spec) + installed_in_db = rec.installed if rec else False + assert installed_in_db + + # check the file in the prefix has the correct paths + bin_names = {'garply': 'garplinator', + 'corge': 'corgegator', + 'quux': 'quuxifier'} + for node in spliced_spec.traverse(root=True): + for dep in node.traverse(root=True): + bin_file_path = os.path.join(dep.prefix.bin, bin_names[dep.name]) + assert text_in_bin(dep.prefix, bin_file_path) + + +@pytest.mark.requires_executables(*args) +def test_rewire_writes_new_metadata(mock_fetch, install_mockery): + # check for spec.json and install_manifest.json and that they are new + # for a simple case. + spec = Spec('quux').concretized() + dep = Spec('garply cflags=-g').concretized() + spec.package.do_install() + dep.package.do_install() + spliced_spec = spec.splice(dep, transitive=True) + spack.rewiring.rewire(spliced_spec) + + # test install manifests + for node in spliced_spec.traverse(root=True): + spack.store.layout.ensure_installed(node) + manifest_file_path = os.path.join(node.prefix, + spack.store.layout.metadata_dir, + spack.store.layout.manifest_file_name) + assert os.path.exists(manifest_file_path) + orig_node = spec[node.name] + orig_manifest_file_path = os.path.join(orig_node.prefix, + spack.store.layout.metadata_dir, + spack.store.layout.manifest_file_name) + assert os.path.exists(orig_manifest_file_path) + assert not filecmp.cmp(orig_manifest_file_path, manifest_file_path, + shallow=False) + specfile_path = os.path.join(node.prefix, + spack.store.layout.metadata_dir, + spack.store.layout.spec_file_name) + assert os.path.exists(specfile_path) + orig_specfile_path = os.path.join(orig_node.prefix, + spack.store.layout.metadata_dir, + spack.store.layout.spec_file_name) + assert os.path.exists(orig_specfile_path) + assert not filecmp.cmp(orig_specfile_path, specfile_path, + shallow=False) + + +@pytest.mark.requires_executables(*args) +@pytest.mark.parametrize('transitive', [True, False]) +def test_uninstall_rewired_spec(mock_fetch, install_mockery, transitive): + # Test that rewired packages can be uninstalled as normal. + spec = Spec('quux').concretized() + dep = Spec('garply cflags=-g').concretized() + spec.package.do_install() + dep.package.do_install() + spliced_spec = spec.splice(dep, transitive=transitive) + spack.rewiring.rewire(spliced_spec) + spliced_spec.package.do_uninstall() + assert len(spack.store.db.query(spliced_spec)) == 0 + assert not os.path.exists(spliced_spec.prefix) + + +@pytest.mark.requires_executables(*args) +def test_rewire_not_installed_fails(mock_fetch, install_mockery): + spec = Spec('quux').concretized() + dep = Spec('garply cflags=-g').concretized() + spliced_spec = spec.splice(dep, False) + with pytest.raises(spack.rewiring.PackageNotInstalledError, + match="failed due to missing install of build spec"): + spack.rewiring.rewire(spliced_spec) diff --git a/lib/spack/spack/test/sbang.py b/lib/spack/spack/test/sbang.py index aa9d9b10dd37ce..2a4189e7f8b373 100644 --- a/lib/spack/spack/test/sbang.py +++ b/lib/spack/spack/test/sbang.py @@ -7,10 +7,10 @@ Test that Spack's shebang filtering works correctly. """ import filecmp -import grp import os import shutil import stat +import sys import tempfile import pytest @@ -23,6 +23,14 @@ import spack.util.spack_yaml as syaml from spack.util.executable import which +if sys.platform != 'win32': + import grp + + +pytestmark = pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows") + + too_long = sbang.system_shebang_limit + 1 diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index ae2d413bb46c11..046ff7aad2fd0e 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -18,10 +18,10 @@ def check_links(spec_to_check): for spec in spec_to_check.traverse(): for dependent in spec.dependents(): - assert spec.name in dependent.dependencies_dict() + assert dependent.edges_to_dependencies(name=spec.name) for dependency in spec.dependencies(): - assert spec.name in dependency.dependents_dict() + assert dependency.edges_from_dependents(name=spec.name) @pytest.fixture() @@ -31,7 +31,7 @@ def saved_deps(): @pytest.fixture() -def set_dependency(saved_deps): +def set_dependency(saved_deps, monkeypatch): """Returns a function that alters the dependency information for a package in the ``saved_deps`` fixture. """ @@ -48,7 +48,7 @@ def _mock(pkg_name, spec, deptypes=all_deptypes): cond = Spec(pkg.name) dependency = Dependency(pkg, spec, type=deptypes) - pkg.dependencies[spec.name] = {cond: dependency} + monkeypatch.setitem(pkg.dependencies, spec.name, {cond: dependency}) return _mock @@ -297,9 +297,16 @@ def test_conflicting_spec_constraints(self): # Normalize then add conflicting constraints to the DAG (this is an # extremely unlikely scenario, but we test for it anyway) mpileaks.normalize() - mpileaks._dependencies['mpich'].spec = Spec('mpich@1.0') - mpileaks._dependencies['callpath']. \ - spec._dependencies['mpich'].spec = Spec('mpich@2.0') + + mpileaks.edges_to_dependencies( + name='mpich' + )[0].spec = Spec('mpich@1.0') + + mpileaks.edges_to_dependencies( + name='callpath' + )[0].spec.edges_to_dependencies( + name='mpich' + )[0].spec = Spec('mpich@2.0') with pytest.raises(spack.spec.InconsistentSpecError): mpileaks.flat_dependencies(copy=False) @@ -617,6 +624,23 @@ def test_copy_concretized(self): copy_ids = set(id(s) for s in copy.traverse()) assert not orig_ids.intersection(copy_ids) + def test_copy_through_spec_build_interface(self): + """Check that copying dependencies using id(node) as a fast identifier of the + node works when the spec is wrapped in a SpecBuildInterface object. + """ + s = Spec('mpileaks').concretized() + + c0 = s.copy() + assert c0 == s + + # Single indirection + c1 = s['mpileaks'].copy() + assert c0 == c1 == s + + # Double indirection + c2 = s['mpileaks']['mpileaks'].copy() + assert c0 == c1 == c2 == s + """ Here is the graph with deptypes labeled (assume all packages have a 'dt' prefix). Arrows are marked with the deptypes ('b' for 'build', 'l' for @@ -790,21 +814,25 @@ def test_construct_spec_with_deptypes(self): } }) - assert s['b']._dependencies['c'].deptypes == ('build',) - assert s['d']._dependencies['e'].deptypes == ('build', 'link') - assert s['e']._dependencies['f'].deptypes == ('run',) - - assert s['b']._dependencies['c'].deptypes == ('build',) - assert s['d']._dependencies['e'].deptypes == ('build', 'link') - assert s['e']._dependencies['f'].deptypes == ('run',) - - assert s['c']._dependents['b'].deptypes == ('build',) - assert s['e']._dependents['d'].deptypes == ('build', 'link') - assert s['f']._dependents['e'].deptypes == ('run',) - - assert s['c']._dependents['b'].deptypes == ('build',) - assert s['e']._dependents['d'].deptypes == ('build', 'link') - assert s['f']._dependents['e'].deptypes == ('run',) + assert s['b'].edges_to_dependencies( + name='c' + )[0].deptypes == ('build',) + assert s['d'].edges_to_dependencies( + name='e' + )[0].deptypes == ('build', 'link') + assert s['e'].edges_to_dependencies( + name='f' + )[0].deptypes == ('run',) + + assert s['c'].edges_from_dependents( + name='b' + )[0].deptypes == ('build',) + assert s['e'].edges_from_dependents( + name='d' + )[0].deptypes == ('build', 'link') + assert s['f'].edges_from_dependents( + name='e' + )[0].deptypes == ('run',) def check_diamond_deptypes(self, spec): """Validate deptypes in dt-diamond spec. @@ -813,17 +841,21 @@ def check_diamond_deptypes(self, spec): depend on the same dependency in different ways. """ - assert spec['dt-diamond']._dependencies[ - 'dt-diamond-left'].deptypes == ('build', 'link') + assert spec['dt-diamond'].edges_to_dependencies( + name='dt-diamond-left' + )[0].deptypes == ('build', 'link') - assert spec['dt-diamond']._dependencies[ - 'dt-diamond-right'].deptypes == ('build', 'link') + assert spec['dt-diamond'].edges_to_dependencies( + name='dt-diamond-right' + )[0].deptypes == ('build', 'link') - assert spec['dt-diamond-left']._dependencies[ - 'dt-diamond-bottom'].deptypes == ('build',) + assert spec['dt-diamond-left'].edges_to_dependencies( + name='dt-diamond-bottom' + )[0].deptypes == ('build',) - assert spec['dt-diamond-right'] ._dependencies[ - 'dt-diamond-bottom'].deptypes == ('build', 'link', 'run') + assert spec['dt-diamond-right'].edges_to_dependencies( + name='dt-diamond-bottom' + )[0].deptypes == ('build', 'link', 'run') def check_diamond_normalized_dag(self, spec): @@ -974,7 +1006,6 @@ def test_canonical_deptype(self): canonical_deptype(('foo',)) def test_invalid_literal_spec(self): - # Can't give type 'build' to a top-level spec with pytest.raises(spack.spec.SpecParseError): Spec.from_literal({'foo:build': None}) @@ -982,3 +1013,107 @@ def test_invalid_literal_spec(self): # Can't use more than one ':' separator with pytest.raises(KeyError): Spec.from_literal({'foo': {'bar:build:link': None}}) + + def test_spec_tree_respect_deptypes(self): + # Version-test-root uses version-test-pkg as a build dependency + s = Spec('version-test-root').concretized() + out = s.tree(deptypes='all') + assert 'version-test-pkg' in out + out = s.tree(deptypes=('link', 'run')) + assert 'version-test-pkg' not in out + + +def test_synthetic_construction_of_split_dependencies_from_same_package( + mock_packages, config +): + # Construct in a synthetic way (i.e. without using the solver) + # the following spec: + # + # b + # build / \ link,run + # c@2.0 c@1.0 + # + # To demonstrate that a spec can now hold two direct + # dependencies from the same package + root = Spec('b').concretized() + link_run_spec = Spec('c@1.0').concretized() + build_spec = Spec('c@2.0').concretized() + + root.add_dependency_edge(link_run_spec, deptype='link') + root.add_dependency_edge(link_run_spec, deptype='run') + root.add_dependency_edge(build_spec, deptype='build') + + # Check dependencies from the perspective of root + assert len(root.dependencies()) == 2 + assert all(x.name == 'c' for x in root.dependencies()) + + assert '@2.0' in root.dependencies(name='c', deptype='build')[0] + assert '@1.0' in root.dependencies(name='c', deptype=('link', 'run'))[0] + + # Check parent from the perspective of the dependencies + assert len(build_spec.dependents()) == 1 + assert len(link_run_spec.dependents()) == 1 + assert build_spec.dependents() == link_run_spec.dependents() + assert build_spec != link_run_spec + + +def test_synthetic_construction_bootstrapping(mock_packages, config): + # Construct the following spec: + # + # b@2.0 + # | build + # b@1.0 + # + root = Spec('b@2.0').concretized() + bootstrap = Spec('b@1.0').concretized() + + root.add_dependency_edge(bootstrap, deptype='build') + + assert len(root.dependencies()) == 1 + assert root.dependencies()[0].name == 'b' + assert root.name == 'b' + + +def test_addition_of_different_deptypes_in_multiple_calls(mock_packages, config): + # Construct the following spec: + # + # b@2.0 + # | build,link,run + # b@1.0 + # + # with three calls and check we always have a single edge + root = Spec('b@2.0').concretized() + bootstrap = Spec('b@1.0').concretized() + + for current_deptype in ('build', 'link', 'run'): + root.add_dependency_edge(bootstrap, deptype=current_deptype) + + # Check edges in dependencies + assert len(root.edges_to_dependencies()) == 1 + forward_edge = root.edges_to_dependencies(deptype=current_deptype)[0] + assert current_deptype in forward_edge.deptypes + assert id(forward_edge.parent) == id(root) + assert id(forward_edge.spec) == id(bootstrap) + + # Check edges from dependents + assert len(bootstrap.edges_from_dependents()) == 1 + backward_edge = bootstrap.edges_from_dependents(deptype=current_deptype)[0] + assert current_deptype in backward_edge.deptypes + assert id(backward_edge.parent) == id(root) + assert id(backward_edge.spec) == id(bootstrap) + + +@pytest.mark.parametrize('c1_deptypes,c2_deptypes', [ + ('link', ('build', 'link')), + (('link', 'run'), ('build', 'link')) +]) +def test_adding_same_deptype_with_the_same_name_raises( + mock_packages, config, c1_deptypes, c2_deptypes +): + p = Spec('b@2.0').concretized() + c1 = Spec('b@1.0').concretized() + c2 = Spec('b@2.0').concretized() + + p.add_dependency_edge(c1, deptype=c1_deptypes) + with pytest.raises(spack.error.SpackError): + p.add_dependency_edge(c2, deptype=c2_deptypes) diff --git a/lib/spack/spack/test/stage.py b/lib/spack/spack/test/stage.py index 9d24bfc2661e1c..61228dd40c0b21 100644 --- a/lib/spack/spack/test/stage.py +++ b/lib/spack/spack/test/stage.py @@ -10,10 +10,11 @@ import os import shutil import stat +import sys import pytest -from llnl.util.filesystem import mkdirp, partition_path, touch, working_dir +from llnl.util.filesystem import getuid, mkdirp, partition_path, touch, working_dir import spack.paths import spack.stage @@ -39,6 +40,10 @@ _include_hidden = 2 _include_extra = 3 +_file_prefix = 'file://' +if sys.platform == 'win32': + _file_prefix += '/' + # Mock fetch directories are expected to appear as follows: # @@ -212,7 +217,7 @@ def create_stage_archive(expected_file_list=[_include_readme]): # Create the archive directory and associated file archive_dir = tmpdir.join(_archive_base) archive = tmpdir.join(_archive_fn) - archive_url = 'file://' + str(archive) + archive_url = _file_prefix + str(archive) archive_dir.ensure(dir=True) # Create the optional files as requested and make sure expanded @@ -278,7 +283,7 @@ def mock_expand_resource(tmpdir): archive_name = 'resource.tar.gz' archive = tmpdir.join(archive_name) - archive_url = 'file://' + str(archive) + archive_url = _file_prefix + str(archive) filename = 'resource-file.txt' test_file = resource_dir.join(filename) @@ -357,7 +362,7 @@ def check_stage_dir_perms(prefix, path): user = getpass.getuser() prefix_status = os.stat(prefix) - uid = os.getuid() + uid = getuid() # Obtain lists of ancestor and descendant paths of the $user node, if any. # @@ -412,7 +417,7 @@ def test_noexpand_stage_file( property of the stage should refer to the path of that file. """ test_noexpand_fetcher = spack.fetch_strategy.from_kwargs( - url='file://' + mock_noexpand_resource, expand=False) + url=_file_prefix + mock_noexpand_resource, expand=False) with Stage(test_noexpand_fetcher) as stage: stage.fetch() stage.expand_archive() @@ -428,7 +433,7 @@ def test_composite_stage_with_noexpand_resource( resource_dst_name = 'resource-dst-name.sh' test_resource_fetcher = spack.fetch_strategy.from_kwargs( - url='file://' + mock_noexpand_resource, expand=False) + url=_file_prefix + mock_noexpand_resource, expand=False) test_resource = Resource( 'test_resource', test_resource_fetcher, resource_dst_name, None) resource_stage = ResourceStage( @@ -657,7 +662,9 @@ def test_source_path_available(self, mock_stage_archive): assert source_path.endswith(spack.stage._source_path_subdir) assert not os.path.exists(source_path) - @pytest.mark.skipif(os.getuid() == 0, reason='user is root') + @pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") + @pytest.mark.skipif(getuid() == 0, reason='user is root') def test_first_accessible_path(self, tmpdir): """Test _first_accessible_path names.""" spack_dir = tmpdir.join('paths') @@ -688,6 +695,8 @@ def test_first_accessible_path(self, tmpdir): # Cleanup shutil.rmtree(str(name)) + @pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_create_stage_root(self, tmpdir, no_path_access): """Test create_stage_root permissions.""" test_dir = tmpdir.join('path') @@ -753,7 +762,7 @@ def _stat(path): # The following check depends on the patched os.stat as a poor # substitute for confirming the generated warnings. - assert os.stat(user_path).st_uid != os.getuid() + assert os.stat(user_path).st_uid != getuid() def test_resolve_paths(self): """Test _resolve_paths.""" @@ -788,7 +797,9 @@ def test_resolve_paths(self): assert spack.stage._resolve_paths(paths) == res_paths - @pytest.mark.skipif(os.getuid() == 0, reason='user is root') + @pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") + @pytest.mark.skipif(getuid() == 0, reason='user is root') def test_get_stage_root_bad_path(self, clear_stage_root): """Ensure an invalid stage path root raises a StageError.""" with spack.config.override('config:build_stage', '/no/such/path'): @@ -893,6 +904,8 @@ def test_diystage_preserve_file(self, tmpdir): _file.read() == _readme_contents +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_stage_create_replace_path(tmp_build_stage_dir): """Ensure stage creation replaces a non-directory path.""" _, test_stage_path = tmp_build_stage_dir @@ -909,6 +922,8 @@ def test_stage_create_replace_path(tmp_build_stage_dir): assert os.path.isdir(stage.path) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_cannot_access(capsys): """Ensure can_access dies with the expected error.""" with pytest.raises(SystemExit): diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index cfbc3d486c0a38..5051df5fc897cd 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -17,9 +18,11 @@ from spack.util.executable import which from spack.version import ver -pytestmark = pytest.mark.skipif( - not which('svn') or not which('svnadmin'), - reason='requires subversion to be installed') +pytestmark = [pytest.mark.skipif( + not which('svn') or not which('svnadmin'), + reason='requires subversion to be installed'), + pytest.mark.skipif(sys.platform == "win32", + reason="does not run on windows")] @pytest.mark.parametrize("type_of_test", ['default', 'rev0']) @@ -29,7 +32,8 @@ def test_fetch( secure, mock_svn_repository, config, - mutable_mock_repo + mutable_mock_repo, + monkeypatch ): """Tries to: @@ -48,7 +52,7 @@ def test_fetch( spec = Spec('svn-test') spec.concretize() pkg = spack.repo.get(spec) - pkg.versions[ver('svn')] = t.args + monkeypatch.setitem(pkg.versions, ver('svn'), t.args) # Enter the stage directory and check some properties with pkg.stage: diff --git a/lib/spack/spack/test/test_activations.py b/lib/spack/spack/test/test_activations.py index 86dcbbfef21219..8eadfa837b548e 100644 --- a/lib/spack/spack/test/test_activations.py +++ b/lib/spack/spack/test/test_activations.py @@ -8,6 +8,7 @@ """ import os +import sys import pytest @@ -19,6 +20,10 @@ from spack.filesystem_view import YamlFilesystemView from spack.repo import RepoPath +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Python activation not \ + currently supported on Windows") + def create_ext_pkg(name, prefix, extendee_spec, monkeypatch): ext_spec = spack.spec.Spec(name) diff --git a/lib/spack/spack/test/test_suite.py b/lib/spack/spack/test/test_suite.py index e1242cb70d1a07..20d7172eeae130 100644 --- a/lib/spack/spack/test/test_suite.py +++ b/lib/spack/spack/test/test_suite.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -11,6 +12,9 @@ import spack.install_test import spack.spec +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Tests fail on Windows") + def test_test_log_pathname(mock_packages, config): """Ensure test log path is reasonable.""" @@ -87,6 +91,34 @@ def test_do_test(mock_packages, install_mockery, mock_test_stage): assert os.path.exists(data_filename) +@pytest.mark.parametrize('arguments,status,msg', [ + ({}, 'SKIPPED', 'Skipped'), + ({'externals': True}, 'NO-TESTS', 'No tests'), +]) +def test_test_external(mock_packages, install_mockery, mock_test_stage, + arguments, status, msg): + def ensure_results(filename, expected): + assert os.path.exists(filename) + with open(filename, 'r') as fd: + lines = fd.readlines() + have = False + for line in lines: + if expected in line: + have = True + break + assert have + + name = 'trivial-smoke-test' + spec = spack.spec.Spec(name).concretized() + spec.external_path = '/path/to/external/{0}'.format(name) + + test_suite = spack.install_test.TestSuite([spec]) + test_suite(**arguments) + + ensure_results(test_suite.results_file, status) + ensure_results(test_suite.log_file_for_spec(spec), msg) + + def test_test_stage_caches(mock_packages, install_mockery, mock_test_stage): def ensure_current_cache_fail(test_suite): with pytest.raises(spack.install_test.TestSuiteSpecError): @@ -121,6 +153,23 @@ def test_test_spec_run_once(mock_packages, install_mockery, mock_test_stage): test_suite() +def test_test_spec_verbose(mock_packages, install_mockery, mock_test_stage): + spec = spack.spec.Spec('simple-standalone-test').concretized() + test_suite = spack.install_test.TestSuite([spec]) + + test_suite(verbose=True) + passed, msg = False, False + with open(test_suite.log_file_for_spec(spec), 'r') as fd: + for line in fd: + if 'simple stand-alone test' in line: + msg = True + elif 'PASSED' in line: + passed = True + + assert msg + assert passed + + def test_get_test_suite(): assert not spack.install_test.get_test_suite('nothing') diff --git a/lib/spack/spack/test/url_fetch.py b/lib/spack/spack/test/url_fetch.py index b2ccb9cb50df7a..54cb7e5a3b0e81 100644 --- a/lib/spack/spack/test/url_fetch.py +++ b/lib/spack/spack/test/url_fetch.py @@ -31,7 +31,15 @@ def checksum_type(request): @pytest.fixture def pkg_factory(): Pkg = collections.namedtuple( - 'Pkg', ['url_for_version', 'urls', 'url', 'versions', 'fetch_options'] + "Pkg", [ + "url_for_version", + "all_urls_for_version", + "find_valid_url_for_version", + "urls", + "url", + "versions", + "fetch_options", + ] ) def factory(url, urls, fetch_options={}): @@ -40,8 +48,16 @@ def fn(v): main_url = url or urls[0] return spack.url.substitute_version(main_url, v) + def fn_urls(v): + urls_loc = urls or [url] + return [spack.url.substitute_version(u, v) for u in urls_loc] + return Pkg( - url_for_version=fn, url=url, urls=urls, + find_valid_url_for_version=fn, + url_for_version=fn, + all_urls_for_version=fn_urls, + url=url, + urls=(urls,), versions=collections.defaultdict(dict), fetch_options=fetch_options ) @@ -111,12 +127,16 @@ def test_archive_file_errors(tmpdir, mock_archive, _fetch_method): fetcher._fetch_from_url('file:///does-not-exist') +files = [('.tar.gz', 'z'), ('.tgz', 'z')] +if sys.platform != "win32": + files += [('.tar.bz2', 'j'), ('.tbz2', 'j'), + ('.tar.xz', 'J'), ('.txz', 'J')] + + @pytest.mark.parametrize('secure', [True, False]) @pytest.mark.parametrize('_fetch_method', ['curl', 'urllib']) @pytest.mark.parametrize('mock_archive', - [('.tar.gz', 'z'), ('.tgz', 'z'), - ('.tar.bz2', 'j'), ('.tbz2', 'j'), - ('.tar.xz', 'J'), ('.txz', 'J')], + files, indirect=True) def test_fetch( mock_archive, @@ -159,6 +179,9 @@ def test_fetch( assert 'echo Building...' in contents +# TODO-27021 +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize('spec,url,digest', [ ('url-list-test @0.0.0', 'foo-0.0.0.tar.gz', '00000000000000000000000000000000'), ('url-list-test @1.0.0', 'foo-1.0.0.tar.gz', '00000000000000000000000000000100'), @@ -195,22 +218,44 @@ def test_from_list_url(mock_packages, config, spec, url, digest, _fetch_method): assert fetch_strategy.extra_options == {'timeout': 60} -@pytest.mark.parametrize('_fetch_method', ['curl', 'urllib']) -def test_from_list_url_unspecified(mock_packages, config, _fetch_method): +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") +@pytest.mark.parametrize("_fetch_method", ["curl", "urllib"]) +@pytest.mark.parametrize("requested_version,tarball,digest", [ + # This version is in the web data path (test/data/web/4.html), but not in the + # url-list-test package. We expect Spack to generate a URL with the new version. + ("4.5.0", "foo-4.5.0.tar.gz", None), + # This version is in web data path and not in the package file, BUT the 2.0.0b2 + # version in the package file satisfies 2.0.0, so Spack will use the known version. + # TODO: this is *probably* not what the user wants, but it's here as an example + # TODO: for that reason. We can't express "exactly 2.0.0" right now, and we don't + # TODO: have special cases that would make 2.0.0b2 less than 2.0.0. We should + # TODO: probably revisit this in our versioning scheme. + ("2.0.0", "foo-2.0.0b2.tar.gz", "000000000000000000000000000200b2"), +]) +def test_new_version_from_list_url( + mock_packages, config, _fetch_method, requested_version, tarball, digest +): + if spack.config.get('config:concretizer') == 'original': + pytest.skip( + "Original concretizer doesn't resolve concrete versions to known ones" + ) + """Test non-specific URLs from the url-list-test package.""" - with spack.config.override('config:url_fetch_method', _fetch_method): - pkg = spack.repo.get('url-list-test') + with spack.config.override("config:url_fetch_method", _fetch_method): + pkg = spack.repo.get("url-list-test") - spec = Spec('url-list-test @2.0.0').concretized() + spec = Spec("url-list-test @%s" % requested_version).concretized() pkg = spack.repo.get(spec) fetch_strategy = fs.from_list_url(pkg) + assert isinstance(fetch_strategy, fs.URLFetchStrategy) - assert os.path.basename(fetch_strategy.url) == 'foo-2.0.0.tar.gz' - assert fetch_strategy.digest is None + assert os.path.basename(fetch_strategy.url) == tarball + assert fetch_strategy.digest == digest assert fetch_strategy.extra_options == {} - pkg.fetch_options = {'timeout': 60} + pkg.fetch_options = {"timeout": 60} fetch_strategy = fs.from_list_url(pkg) - assert fetch_strategy.extra_options == {'timeout': 60} + assert fetch_strategy.extra_options == {"timeout": 60} def test_nosource_from_list_url(mock_packages, config): diff --git a/lib/spack/spack/test/util/editor.py b/lib/spack/spack/test/util/editor.py index ee8ed6295fab5b..e7c8bf23643478 100644 --- a/lib/spack/spack/test/util/editor.py +++ b/lib/spack/spack/test/util/editor.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys import pytest @@ -11,10 +12,14 @@ import spack.util.editor as ed -pytestmark = pytest.mark.usefixtures('working_env') +pytestmark = [pytest.mark.usefixtures('working_env'), + pytest.mark.skipif(sys.platform == 'win32', + reason="editor not implemented on windows")] def _make_exe(tmpdir_factory, name, contents=None): + if sys.platform == "win32": + name += '.exe' path = str(tmpdir_factory.mktemp('%s_exe' % name).join(name)) if contents is not None: with open(path, 'w') as f: @@ -119,8 +124,8 @@ def test_editor_both_bad(nosuch_exe, vim_exe): os.environ['VISUAL'] = nosuch_exe os.environ['EDITOR'] = nosuch_exe - os.environ['PATH'] = '%s:%s' % ( - os.path.dirname(vim_exe), os.environ['PATH']) + os.environ['PATH'] = '%s%s%s' % ( + os.path.dirname(vim_exe), os.pathsep, os.environ['PATH']) def assert_exec(exe, args): assert exe == vim_exe diff --git a/lib/spack/spack/test/util/environment.py b/lib/spack/spack/test/util/environment.py index 4d0a931a56f09f..1e28590e800a8f 100644 --- a/lib/spack/spack/test/util/environment.py +++ b/lib/spack/spack/test/util/environment.py @@ -5,11 +5,14 @@ """Test Spack's environment utility functions.""" import os +import sys import pytest import spack.util.environment as envutil +is_windows = sys.platform == 'win32' + @pytest.fixture() def prepare_environment_for_tests(): @@ -20,22 +23,33 @@ def prepare_environment_for_tests(): def test_is_system_path(): - assert(envutil.is_system_path('/usr/bin')) + sys_path = 'C:\\Users' if is_windows else '/usr/bin' + assert(envutil.is_system_path(sys_path)) assert(not envutil.is_system_path('/nonsense_path/bin')) assert(not envutil.is_system_path('')) assert(not envutil.is_system_path(None)) -test_paths = ['/usr/bin', - '/nonsense_path/lib', - '/usr/local/lib', - '/bin', - '/nonsense_path/extra/bin', - '/usr/lib64'] +if is_windows: + test_paths = [ + 'C:\\Users', + 'C:\\', + 'C:\\ProgramData', + 'C:\\nonsense_path', + 'C:\\Program Files', + 'C:\\nonsense_path\\extra\\bin'] +else: + test_paths = ['/usr/bin', + '/nonsense_path/lib', + '/usr/local/lib', + '/bin', + '/nonsense_path/extra/bin', + '/usr/lib64'] def test_filter_system_paths(): - expected = [p for p in test_paths if p.startswith('/nonsense_path')] + nonsense_prefix = 'C:\\nonsense_path' if is_windows else '/nonsense_path' + expected = [p for p in test_paths if p.startswith(nonsense_prefix)] filtered = envutil.filter_system_paths(test_paths) assert(expected == filtered) @@ -55,7 +69,7 @@ def test_prune_duplicate_paths(): def test_get_path(prepare_environment_for_tests): - os.environ['TEST_ENV_VAR'] = '/a:/b:/c/d' + os.environ['TEST_ENV_VAR'] = os.pathsep.join(['/a', '/b', '/c/d']) expected = ['/a', '/b', '/c/d'] assert(envutil.get_path('TEST_ENV_VAR') == expected) @@ -88,7 +102,8 @@ def test_env_flag(prepare_environment_for_tests): def test_path_set(prepare_environment_for_tests): envutil.path_set('TEST_ENV_VAR', ['/a', '/a/b', '/a/a']) - assert(os.environ['TEST_ENV_VAR'] == '/a:/a/b:/a/a') + assert(os.environ['TEST_ENV_VAR'] == '/a' + os.pathsep + + '/a/b' + os.pathsep + '/a/a') def test_path_put_first(prepare_environment_for_tests): @@ -111,8 +126,8 @@ def test_dump_environment(prepare_environment_for_tests, tmpdir): def test_reverse_environment_modifications(working_env): start_env = { - 'PREPEND_PATH': '/path/to/prepend/to', - 'APPEND_PATH': '/path/to/append/to', + 'PREPEND_PATH': os.sep + os.path.join('path', 'to', 'prepend', 'to'), + 'APPEND_PATH': os.sep + os.path.join('path', 'to', 'append', 'to'), 'UNSET': 'var_to_unset', 'APPEND_FLAGS': 'flags to append to', } diff --git a/lib/spack/spack/test/util/executable.py b/lib/spack/spack/test/util/executable.py index c8a21f9283dcee..ea9213f0636743 100644 --- a/lib/spack/spack/test/util/executable.py +++ b/lib/spack/spack/test/util/executable.py @@ -14,10 +14,16 @@ import spack.util.executable as ex from spack.hooks.sbang import filter_shebangs_in_directory +is_windows = sys.platform == 'win32' + def test_read_unicode(tmpdir, working_env): script_name = 'print_unicode.py' - + # read the unicode back in and see whether things work + if is_windows: + script = ex.Executable('%s %s' % (sys.executable, script_name)) + else: + script = ex.Executable('./%s' % script_name) with tmpdir.as_cwd(): os.environ['LD_LIBRARY_PATH'] = spack.main.spack_ld_library_path # make a script that prints some unicode @@ -35,22 +41,27 @@ def test_read_unicode(tmpdir, working_env): fs.set_executable(script_name) filter_shebangs_in_directory('.', [script_name]) - # read the unicode back in and see whether things work - script = ex.Executable('./%s' % script_name) assert u'\xc3' == script(output=str).strip() def test_which_relative_path_with_slash(tmpdir, working_env): - tmpdir.ensure('exe') - path = str(tmpdir.join('exe')) + tmpdir.ensure("exe") + path = str(tmpdir.join("exe")) + os.environ['PATH'] = '' with tmpdir.as_cwd(): - no_exe = ex.which('./exe') + no_exe = ex.which('.{0}exe'.format(os.path.sep)) assert no_exe is None - - fs.set_executable(path) - exe = ex.which('./exe') + if sys.platform == "win32": + # These checks are for 'executable' files, Windows + # determines this by file extension. + path += ".exe" + tmpdir.ensure('exe.exe') + else: + fs.set_executable(path) + + exe = ex.which('.{0}exe'.format(os.path.sep)) assert exe.path == path @@ -62,24 +73,39 @@ def test_which_with_slash_ignores_path(tmpdir, working_env): wrong_path = str(tmpdir.join('bin', 'exe')) os.environ['PATH'] = os.path.dirname(wrong_path) - fs.set_executable(path) - fs.set_executable(wrong_path) - with tmpdir.as_cwd(): - exe = ex.which('./exe') + if sys.platform == "win32": + # For Windows, need to create files with .exe after any assert is none tests + tmpdir.ensure('exe.exe') + tmpdir.ensure('bin{0}exe.exe'.format(os.path.sep)) + path = path + ".exe" + wrong_path = wrong_path + ".exe" + else: + fs.set_executable(path) + fs.set_executable(wrong_path) + + exe = ex.which('.{0}exe'.format(os.path.sep)) assert exe.path == path def test_which(tmpdir): os.environ["PATH"] = str(tmpdir) assert ex.which("spack-test-exe") is None + with pytest.raises(ex.CommandNotFoundError): ex.which("spack-test-exe", required=True) - with tmpdir.as_cwd(): - fs.touch("spack-test-exe") - fs.set_executable('spack-test-exe') + path = str(tmpdir.join("spack-test-exe")) - exe = ex.which("spack-test-exe") - assert exe is not None - assert exe.path == str(tmpdir.join("spack-test-exe")) + with tmpdir.as_cwd(): + if sys.platform == "win32": + # For Windows, need to create files with .exe after any assert is none tests + tmpdir.ensure("spack-test-exe.exe") + path += ".exe" + else: + fs.touch("spack-test-exe") + fs.set_executable("spack-test-exe") + + exe = ex.which("spack-test-exe") + assert exe is not None + assert exe.path == path diff --git a/lib/spack/spack/test/util/path.py b/lib/spack/spack/test/util/path.py index edd5492c85d17b..7d2b81e8b38cf1 100644 --- a/lib/spack/spack/test/util/path.py +++ b/lib/spack/spack/test/util/path.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + import pytest import llnl.util.tty as tty @@ -10,6 +12,12 @@ import spack.config import spack.util.path as sup +# This module pertains to path string padding manipulation specifically +# which is used for binary caching. This functionality is not supported +# on Windows as of yet. +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Tests fail on Windows") + #: Some lines with lots of placeholders padded_lines = [ "==> [2021-06-23-15:59:05.020387] './configure' '--prefix=/Users/gamblin2/padding-log-test/opt/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_pla/darwin-bigsur-skylake/apple-clang-12.0.5/zlib-1.2.11-74mwnxgn6nujehpyyalhwizwojwn5zga", # noqa: E501 diff --git a/lib/spack/spack/test/util/prefix.py b/lib/spack/spack/test/util/prefix.py index ead170855da468..8cd92306b5705c 100644 --- a/lib/spack/spack/test/util/prefix.py +++ b/lib/spack/spack/test/util/prefix.py @@ -5,29 +5,31 @@ """Tests various features of :py:class:`spack.util.prefix.Prefix`""" +import os + from spack.util.prefix import Prefix def test_prefix_attributes(): """Test normal prefix attributes like ``prefix.bin``""" - prefix = Prefix('/usr') + prefix = Prefix(os.sep + 'usr') - assert prefix.bin == '/usr/bin' - assert prefix.lib == '/usr/lib' - assert prefix.include == '/usr/include' + assert prefix.bin == os.sep + os.path.join('usr', 'bin') + assert prefix.lib == os.sep + os.path.join('usr', 'lib') + assert prefix.include == os.sep + os.path.join('usr', 'include') def test_prefix_join(): """Test prefix join ``prefix.join(...)``""" - prefix = Prefix('/usr') + prefix = Prefix(os.sep + 'usr') a1 = prefix.join('a_{0}'.format(1)).lib64 a2 = prefix.join('a-{0}'.format(1)).lib64 a3 = prefix.join('a.{0}'.format(1)).lib64 - assert a1 == '/usr/a_1/lib64' - assert a2 == '/usr/a-1/lib64' - assert a3 == '/usr/a.1/lib64' + assert a1 == os.sep + os.path.join('usr', 'a_1', 'lib64') + assert a2 == os.sep + os.path.join('usr', 'a-1', 'lib64') + assert a3 == os.sep + os.path.join('usr', 'a.1', 'lib64') assert isinstance(a1, Prefix) assert isinstance(a2, Prefix) @@ -37,9 +39,9 @@ def test_prefix_join(): p2 = prefix.share.join('pkg-config').join('foo.pc') p3 = prefix.join('dashed-directory').foo - assert p1 == '/usr/bin/executable.sh' - assert p2 == '/usr/share/pkg-config/foo.pc' - assert p3 == '/usr/dashed-directory/foo' + assert p1 == os.sep + os.path.join('usr', 'bin', 'executable.sh') + assert p2 == os.sep + os.path.join('usr', 'share', 'pkg-config', 'foo.pc') + assert p3 == os.sep + os.path.join('usr', 'dashed-directory', 'foo') assert isinstance(p1, Prefix) assert isinstance(p2, Prefix) @@ -48,16 +50,16 @@ def test_prefix_join(): def test_multilevel_attributes(): """Test attributes of attributes, like ``prefix.share.man``""" - prefix = Prefix('/usr/') + prefix = Prefix(os.sep + 'usr' + os.sep) - assert prefix.share.man == '/usr/share/man' - assert prefix.man.man8 == '/usr/man/man8' - assert prefix.foo.bar.baz == '/usr/foo/bar/baz' + assert prefix.share.man == os.sep + os.path.join('usr', 'share', 'man') + assert prefix.man.man8 == os.sep + os.path.join('usr', 'man', 'man8') + assert prefix.foo.bar.baz == os.sep + os.path.join('usr', 'foo', 'bar', 'baz') share = prefix.share assert isinstance(share, Prefix) - assert share.man == '/usr/share/man' + assert share.man == os.sep + os.path.join('usr', 'share', 'man') def test_string_like_behavior(): diff --git a/lib/spack/spack/test/util/spack_lock_wrapper.py b/lib/spack/spack/test/util/spack_lock_wrapper.py index 005154f3ce3fd3..7dd02122793632 100644 --- a/lib/spack/spack/test/util/spack_lock_wrapper.py +++ b/lib/spack/spack/test/util/spack_lock_wrapper.py @@ -8,7 +8,7 @@ import pytest -from llnl.util.filesystem import group_ids +from llnl.util.filesystem import getuid, group_ids import spack.config import spack.util.lock as lk @@ -42,7 +42,7 @@ def test_disable_locking(tmpdir): @pytest.mark.nomockstage def test_lock_checks_user(tmpdir): """Ensure lock checks work with a self-owned, self-group repo.""" - uid = os.getuid() + uid = getuid() if uid not in group_ids(): pytest.skip("user has no group with gid == uid") @@ -76,7 +76,7 @@ def test_lock_checks_user(tmpdir): @pytest.mark.nomockstage def test_lock_checks_group(tmpdir): """Ensure lock checks work with a self-owned, non-self-group repo.""" - uid = os.getuid() + uid = getuid() gid = next((g for g in group_ids() if g != uid), None) if not gid: pytest.skip("user has no group with gid != uid") diff --git a/lib/spack/spack/test/util/unparse/unparse.py b/lib/spack/spack/test/util/unparse/unparse.py index 85ab5c6b1b5508..f3a74aa9b78048 100644 --- a/lib/spack/spack/test/util/unparse/unparse.py +++ b/lib/spack/spack/test/util/unparse/unparse.py @@ -17,6 +17,9 @@ import spack.util.unparse +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason="Test module unsupported on Windows") + def read_pyfile(filename): """Read and return the contents of a Python source file (as a diff --git a/lib/spack/spack/test/util/util_url.py b/lib/spack/spack/test/util/util_url.py index fc70e882897e63..971375d9ccf5ab 100644 --- a/lib/spack/spack/test/util/util_url.py +++ b/lib/spack/spack/test/util/util_url.py @@ -6,18 +6,23 @@ """Test Spack's URL handling utility functions.""" import os import os.path +import posixpath +import re +import sys import pytest import spack.paths import spack.util.url as url_util +from spack.util.path import convert_to_posix_path + +is_windows = sys.platform == 'win32' +if is_windows: + drive_m = re.search(r'[A-Za-z]:', spack.paths.test_path) + drive = drive_m.group() if drive_m else None def test_url_parse(): - parsed = url_util.parse('/path/to/resource') - assert(parsed.scheme == 'file') - assert(parsed.netloc == '') - assert(parsed.path == '/path/to/resource') parsed = url_util.parse('/path/to/resource', scheme='fake') assert(parsed.scheme == 'fake') @@ -36,49 +41,61 @@ def test_url_parse(): parsed = url_util.parse('file://path/to/resource') assert(parsed.scheme == 'file') - assert(parsed.netloc == '') - expected = os.path.abspath(os.path.join('path', 'to', 'resource')) + expected = convert_to_posix_path( + os.path.abspath( + posixpath.join('path', 'to', 'resource'))) + if is_windows: + expected = expected.lstrip(drive) assert(parsed.path == expected) + if is_windows: + parsed = url_util.parse('file://%s\\path\\to\\resource' % drive) + assert(parsed.scheme == 'file') + expected = '/' + posixpath.join('path', 'to', 'resource') + assert parsed.path == expected + parsed = url_util.parse('https://path/to/resource') assert(parsed.scheme == 'https') assert(parsed.netloc == 'path') assert(parsed.path == '/to/resource') + parsed = url_util.parse('gs://path/to/resource') + assert(parsed.scheme == 'gs') + assert(parsed.netloc == 'path') + assert(parsed.path == '/to/resource') + spack_root = spack.paths.spack_root - parsed = url_util.parse('$spack') + parsed = url_util.parse('file://$spack') assert(parsed.scheme == 'file') - assert(parsed.netloc == '') - assert(parsed.path == spack_root) - parsed = url_util.parse('/a/b/c/$spack') - assert(parsed.scheme == 'file') - assert(parsed.netloc == '') - expected = os.path.abspath(os.path.join( - '/', 'a', 'b', 'c', './' + spack_root)) - assert(parsed.path == expected) + if is_windows: + spack_root = '/' + convert_to_posix_path(spack_root) + + assert(parsed.netloc + parsed.path == spack_root) def test_url_local_file_path(): spack_root = spack.paths.spack_root - + sep = os.path.sep lfp = url_util.local_file_path('/a/b/c.txt') - assert(lfp == '/a/b/c.txt') + assert(lfp == sep + os.path.join('a', 'b', 'c.txt')) lfp = url_util.local_file_path('file:///a/b/c.txt') - assert(lfp == '/a/b/c.txt') + assert(lfp == sep + os.path.join('a', 'b', 'c.txt')) - lfp = url_util.local_file_path('file://a/b/c.txt') - expected = os.path.abspath(os.path.join('a', 'b', 'c.txt')) - assert(lfp == expected) + if is_windows: + lfp = url_util.local_file_path('file://a/b/c.txt') + expected = os.path.abspath(os.path.join('a', 'b', 'c.txt')) + assert(lfp == expected) - lfp = url_util.local_file_path('$spack/a/b/c.txt') + lfp = url_util.local_file_path('file://$spack/a/b/c.txt') expected = os.path.abspath(os.path.join(spack_root, 'a', 'b', 'c.txt')) assert(lfp == expected) - lfp = url_util.local_file_path('file:///$spack/a/b/c.txt') - expected = os.path.abspath(os.path.join(spack_root, 'a', 'b', 'c.txt')) - assert(lfp == expected) + if is_windows: + lfp = url_util.local_file_path('file:///$spack/a/b/c.txt') + expected = os.path.abspath(os.path.join(spack_root, 'a', 'b', 'c.txt')) + assert(lfp == expected) lfp = url_util.local_file_path('file://$spack/a/b/c.txt') expected = os.path.abspath(os.path.join(spack_root, 'a', 'b', 'c.txt')) @@ -177,20 +194,21 @@ def test_url_join_local_paths(): # file:// URL path components are *NOT* canonicalized spack_root = spack.paths.spack_root - join_result = url_util.join('/a/b/c', '$spack') - assert(join_result == 'file:///a/b/c/$spack') # not canonicalized - format_result = url_util.format(join_result) - # canoncalize by hand - expected = url_util.format(os.path.abspath(os.path.join( - '/', 'a', 'b', 'c', '.' + spack_root))) - assert(format_result == expected) - - # see test_url_join_absolute_paths() for more on absolute path components - join_result = url_util.join('/a/b/c', '/$spack') - assert(join_result == 'file:///$spack') # not canonicalized - format_result = url_util.format(join_result) - expected = url_util.format(spack_root) - assert(format_result == expected) + if sys.platform != 'win32': + join_result = url_util.join('/a/b/c', '$spack') + assert(join_result == 'file:///a/b/c/$spack') # not canonicalized + format_result = url_util.format(join_result) + # canoncalize by hand + expected = url_util.format(os.path.abspath(os.path.join( + '/', 'a', 'b', 'c', '.' + spack_root))) + assert(format_result == expected) + + # see test_url_join_absolute_paths() for more on absolute path components + join_result = url_util.join('/a/b/c', '/$spack') + assert(join_result == 'file:///$spack') # not canonicalized + format_result = url_util.format(join_result) + expected = url_util.format(spack_root) + assert(format_result == expected) # For s3:// URLs, the "netloc" (bucket) is considered part of the path. # Make sure join() can cross bucket boundaries in this case. @@ -271,6 +289,10 @@ def test_url_join_absolute_paths(): cwd = os.getcwd() # ...to work out what resource it points to) + if sys.platform == "win32": + convert_to_posix_path(cwd) + cwd = '/' + cwd + # So, even though parse() assumes "file://" URL, the scheme is still # significant in URL path components passed to join(), even if the base # is a file:// URL. diff --git a/lib/spack/spack/test/verification.py b/lib/spack/spack/test/verification.py index 30d4d376c03086..ad7373a43934d3 100644 --- a/lib/spack/spack/test/verification.py +++ b/lib/spack/spack/test/verification.py @@ -6,14 +6,21 @@ """Tests for the `spack.verify` module""" import os import shutil +import sys + +import pytest import llnl.util.filesystem as fs +from llnl.util.symlink import symlink import spack.spec import spack.store import spack.util.spack_json as sjson import spack.verify +pytestmark = pytest.mark.skipif(sys.platform == 'win32', + reason='Tests fail on Win') + def test_link_manifest_entry(tmpdir): # Test that symlinks are properly checked against the manifest. @@ -157,7 +164,7 @@ def test_check_prefix_manifest(tmpdir): f.write("I'm a little file short and stout") link = os.path.join(bin_dir, 'run') - os.symlink(file, link) + symlink(file, link) spack.verify.write_manifest(spec) results = spack.verify.check_spec_manifest(spec) diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index 587295d01a51cb..9b892221624001 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -8,6 +8,7 @@ where it makes sense. """ import os +import sys import pytest @@ -585,6 +586,8 @@ def test_invalid_versions(version_str): Version(version_str) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_versions_from_git(mock_git_version_info, monkeypatch, mock_packages): repo_path, filename, commits = mock_git_version_info monkeypatch.setattr(spack.package.PackageBase, 'git', 'file://%s' % repo_path, @@ -630,6 +633,14 @@ def test_version_wrong_idx_type(): v['0:'] +@pytest.mark.regression('29170') +def test_version_range_satisfies_means_nonempty_intersection(): + x = VersionRange('3.7.0', '3') + y = VersionRange('3.6.0', '3.6.0') + assert not x.satisfies(y) + assert not y.satisfies(x) + + @pytest.mark.regression('26482') def test_version_list_with_range_included_in_concrete_version_interpreted_as_range(): # Note: this test only tests whether we can construct a version list of a range diff --git a/lib/spack/spack/test/views.py b/lib/spack/spack/test/views.py index acf9393043d213..c7e9bb521338c6 100644 --- a/lib/spack/spack/test/views.py +++ b/lib/spack/spack/test/views.py @@ -4,12 +4,17 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys + +import pytest from spack.directory_layout import DirectoryLayout from spack.filesystem_view import YamlFilesystemView from spack.spec import Spec +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_global_activation(install_mockery, mock_fetch): """This test ensures that views which are maintained inside of an extendee package's prefix are maintained as expected and are compatible with @@ -31,6 +36,8 @@ def test_global_activation(install_mockery, mock_fetch): expected_path) +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_remove_extensions_ordered(install_mockery, mock_fetch, tmpdir): view_dir = str(tmpdir.join('view')) layout = DirectoryLayout(view_dir) diff --git a/lib/spack/spack/test/web.py b/lib/spack/spack/test/web.py index 8c4512c7916637..7d04d564cea805 100644 --- a/lib/spack/spack/test/web.py +++ b/lib/spack/spack/test/web.py @@ -4,6 +4,8 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import collections import os +import posixpath +import sys import pytest @@ -17,8 +19,8 @@ def _create_url(relative_url): - web_data_path = os.path.join(spack.paths.test_path, 'data', 'web') - return 'file://' + os.path.join(web_data_path, relative_url) + web_data_path = posixpath.join(spack.paths.test_path, 'data', 'web') + return 'file://' + posixpath.join(web_data_path, relative_url) root = _create_url('index.html') @@ -29,6 +31,8 @@ def _create_url(relative_url): page_4 = _create_url('4.html') +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") @pytest.mark.parametrize( 'depth,expected_found,expected_not_found,expected_text', [ (0, @@ -87,12 +91,16 @@ def test_spider_no_response(monkeypatch): assert not pages and not links +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_find_versions_of_archive_0(): versions = spack.util.web.find_versions_of_archive( root_tarball, root, list_depth=0) assert ver('0.0.0') in versions +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_find_versions_of_archive_1(): versions = spack.util.web.find_versions_of_archive( root_tarball, root, list_depth=1) @@ -100,6 +108,8 @@ def test_find_versions_of_archive_1(): assert ver('1.0.0') in versions +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_find_versions_of_archive_2(): versions = spack.util.web.find_versions_of_archive( root_tarball, root, list_depth=2) @@ -108,6 +118,8 @@ def test_find_versions_of_archive_2(): assert ver('2.0.0') in versions +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_find_exotic_versions_of_archive_2(): versions = spack.util.web.find_versions_of_archive( root_tarball, root, list_depth=2) @@ -115,6 +127,8 @@ def test_find_exotic_versions_of_archive_2(): assert ver('2.0.0b2') in versions +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_find_versions_of_archive_3(): versions = spack.util.web.find_versions_of_archive( root_tarball, root, list_depth=3) @@ -125,6 +139,8 @@ def test_find_versions_of_archive_3(): assert ver('4.5') in versions +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_find_exotic_versions_of_archive_3(): versions = spack.util.web.find_versions_of_archive( root_tarball, root, list_depth=3) @@ -174,6 +190,8 @@ def test_get_header(): spack.util.web.get_header(headers, 'ContentLength') +@pytest.mark.skipif(sys.platform == 'win32', + reason="Not supported on Windows (yet)") def test_list_url(tmpdir): testpath = str(tmpdir) diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py index 421b0f66f2f47e..60b43e34cec90f 100644 --- a/lib/spack/spack/util/compression.py +++ b/lib/spack/spack/util/compression.py @@ -39,13 +39,31 @@ def _gunzip(archive_file): f_out.write(f_in.read()) +def _unzip(archive_file): + """Try to use Python's zipfile, but extract in the current working + directory instead of in-place. + + If unavailable, search for 'unzip' executable on system and use instead + + Args: + archive_file (str): absolute path of the file to be decompressed + """ + try: + from zipfile import ZipFile + destination_abspath = os.getcwd() + with ZipFile(archive_file, 'r') as zf: + zf.extractall(destination_abspath) + except ImportError: + unzip = which('unzip', required=True) + unzip.add_default_arg('-q') + return unzip + + def decompressor_for(path, extension=None): """Get the appropriate decompressor for a path.""" if ((extension and re.match(r'\.?zip$', extension)) or path.endswith('.zip')): - unzip = which('unzip', required=True) - unzip.add_default_arg('-q') - return unzip + return _unzip if extension and re.match(r'gz', extension): return _gunzip if extension and re.match(r'bz2', extension): diff --git a/lib/spack/spack/util/debug.py b/lib/spack/spack/util/debug.py index 0cae1ef58a81c5..64f7132a6f8df7 100644 --- a/lib/spack/spack/util/debug.py +++ b/lib/spack/spack/util/debug.py @@ -11,7 +11,9 @@ """ import code import os +import pdb import signal +import sys import traceback @@ -32,3 +34,44 @@ def debug_handler(sig, frame): def register_interrupt_handler(): """Print traceback and enter an interpreter on Ctrl-C""" signal.signal(signal.SIGINT, debug_handler) + + +# Subclass of the debugger to keep readline working. See +# https://stackoverflow.com/questions/4716533/how-to-attach-debugger-to-a-python-subproccess/23654936 +class ForkablePdb(pdb.Pdb): + """ + This class allows the python debugger to follow forked processes + and can set tracepoints allowing the Python Debugger Pdb to be used + from a python multiprocessing child process. + + This is used the same way one would normally use Pdb, simply import this + class and use as a drop in for Pdb, although the syntax here is slightly different, + requiring the instantiton of this class, i.e. ForkablePdb().set_trace(). + + This should be used when attempting to call a debugger from a + child process spawned by the python multiprocessing such as during + the run of Spack.install, or any where else Spack spawns a child process. + """ + + _original_stdin_fd = sys.stdin.fileno() + _original_stdin = None + + def __init__(self, stdout_fd=None, stderr_fd=None): + pdb.Pdb.__init__(self, nosigint=True) + self._stdout_fd = stdout_fd + self._stderr_fd = stderr_fd + + def _cmdloop(self): + current_stdin = sys.stdin + try: + if not self._original_stdin: + self._original_stdin = os.fdopen(self._original_stdin_fd) + sys.stdin = self._original_stdin + if self._stdout_fd is not None: + os.dup2(self._stdout_fd, sys.stdout.fileno()) + os.dup2(self._stdout_fd, self.stdout.fileno()) + if self._stderr_fd is not None: + os.dup2(self._stderr_fd, sys.stderr.fileno()) + self.cmdloop() + finally: + sys.stdin = current_stdin diff --git a/lib/spack/spack/util/editor.py b/lib/spack/spack/util/editor.py index 5aa79bbe996250..e3f740adac4834 100644 --- a/lib/spack/spack/util/editor.py +++ b/lib/spack/spack/util/editor.py @@ -21,7 +21,7 @@ from spack.util.executable import which_string #: editors to try if VISUAL and EDITOR are not set -_default_editors = ['vim', 'vi', 'emacs', 'nano'] +_default_editors = ['vim', 'vi', 'emacs', 'nano', 'notepad'] def _find_exe_from_env_var(var): @@ -41,6 +41,7 @@ def _find_exe_from_env_var(var): # split env var into executable and args if needed args = shlex.split(str(exe)) + if not args: return None, [] diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index 9b143b0b6b400b..207a9040731393 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -26,9 +26,15 @@ import spack.spec import spack.util.executable as executable import spack.util.spack_json as sjson +from spack.util.path import path_to_os_path, system_path_filter -system_paths = ['/', '/usr', '/usr/local'] -suffixes = ['bin', 'bin64', 'include', 'lib', 'lib64'] +is_windows = sys.platform == 'win32' + +system_paths = ['/', '/usr', '/usr/local'] if \ + not is_windows else ['C:\\', 'C:\\Program Files', + 'C:\\Program Files (x86)', 'C:\\Users', + 'C:\\ProgramData'] +suffixes = ['bin', 'bin64', 'include', 'lib', 'lib64'] if not is_windows else [] system_dirs = [os.path.join(p, s) for s in suffixes for p in system_paths] + \ system_paths @@ -36,7 +42,8 @@ _shell_set_strings = { 'sh': 'export {0}={1};\n', 'csh': 'setenv {0} {1};\n', - 'fish': 'set -gx {0} {1};\n' + 'fish': 'set -gx {0} {1};\n', + 'bat': 'set "{0}={1}"\n' } @@ -44,6 +51,7 @@ 'sh': 'unset {0};\n', 'csh': 'unsetenv {0};\n', 'fish': 'set -e {0};\n', + 'bat': 'set "{0}="\n' } @@ -83,7 +91,7 @@ def prune_duplicate_paths(paths): def get_path(name): path = os.environ.get(name, "").strip() if path: - return path.split(":") + return path.split(os.pathsep) else: return [] @@ -96,7 +104,7 @@ def env_flag(name): def path_set(var_name, directories): - path_str = ":".join(str(dir) for dir in directories) + path_str = os.pathsep.join(str(dir) for dir in directories) os.environ[var_name] = path_str @@ -104,7 +112,7 @@ def path_put_first(var_name, directories): """Puts the provided directories first in the path, adding them if they're not already there. """ - path = os.environ.get(var_name, "").split(':') + path = os.environ.get(var_name, "").split(os.pathsep) for dir in directories: if dir in path: @@ -128,6 +136,7 @@ def env_var_to_source_line(var, val): return source_line +@system_path_filter(arg_slice=slice(1)) def dump_environment(path, environment=None): """Dump an environment dictionary to a source-able file.""" use_env = environment or os.environ @@ -141,6 +150,7 @@ def dump_environment(path, environment=None): '\n'])) +@system_path_filter(arg_slice=slice(1)) def pickle_environment(path, environment=None): """Pickle an environment dictionary to a file.""" cPickle.dump(dict(environment if environment else os.environ), @@ -214,7 +224,7 @@ class NameModifier(object): def __init__(self, name, **kwargs): self.name = name - self.separator = kwargs.get('separator', ':') + self.separator = kwargs.get('separator', os.pathsep) self.args = {'name': name, 'separator': self.separator} self.args.update(kwargs) @@ -234,7 +244,7 @@ class NameValueModifier(object): def __init__(self, name, value, **kwargs): self.name = name self.value = value - self.separator = kwargs.get('separator', ':') + self.separator = kwargs.get('separator', os.pathsep) self.args = {'name': name, 'value': value, 'separator': self.separator} self.args.update(kwargs) @@ -305,7 +315,7 @@ def execute(self, env): environment_value = env.get(self.name, '') directories = environment_value.split( self.separator) if environment_value else [] - directories.append(os.path.normpath(self.value)) + directories.append(path_to_os_path(os.path.normpath(self.value)).pop()) env[self.name] = self.separator.join(directories) @@ -317,7 +327,8 @@ def execute(self, env): environment_value = env.get(self.name, '') directories = environment_value.split( self.separator) if environment_value else [] - directories = [os.path.normpath(self.value)] + directories + directories = [path_to_os_path(os.path.normpath(self.value)).pop()] \ + + directories env[self.name] = self.separator.join(directories) @@ -329,8 +340,9 @@ def execute(self, env): environment_value = env.get(self.name, '') directories = environment_value.split( self.separator) if environment_value else [] - directories = [os.path.normpath(x) for x in directories - if x != os.path.normpath(self.value)] + directories = [path_to_os_path(os.path.normpath(x)).pop() + for x in directories + if x != path_to_os_path(os.path.normpath(self.value)).pop()] env[self.name] = self.separator.join(directories) @@ -341,8 +353,8 @@ def execute(self, env): environment_value = env.get(self.name, '') directories = environment_value.split( self.separator) if environment_value else [] - directories = deprioritize_system_paths([os.path.normpath(x) - for x in directories]) + directories = deprioritize_system_paths( + [path_to_os_path(os.path.normpath(x)).pop() for x in directories]) env[self.name] = self.separator.join(directories) @@ -354,7 +366,7 @@ def execute(self, env): environment_value = env.get(self.name, '') directories = environment_value.split( self.separator) if environment_value else [] - directories = prune_duplicate_paths([os.path.normpath(x) + directories = prune_duplicate_paths([path_to_os_path(os.path.normpath(x)).pop() for x in directories]) env[self.name] = self.separator.join(directories) @@ -634,8 +646,13 @@ def shell_modifications(self, shell='sh', explicit=False, env=None): if new is None: cmds += _shell_unset_strings[shell].format(name) else: - cmds += _shell_set_strings[shell].format( - name, cmd_quote(new_env[name])) + if sys.platform != "win32": + cmd = _shell_set_strings[shell].format( + name, cmd_quote(new_env[name])) + else: + cmd = _shell_set_strings[shell].format( + name, new_env[name]) + cmds += cmd return cmds @staticmethod @@ -815,13 +832,13 @@ def return_separator_if_any(*args): return env -def concatenate_paths(paths, separator=':'): +def concatenate_paths(paths, separator=os.pathsep): """Concatenates an iterable of paths into a string of paths separated by separator, defaulting to colon. Args: paths: iterable of paths - separator: the separator to use, default ':' + separator: the separator to use, default ';' windows, ':' otherwise Returns: string diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 200ddc0d2dce91..a278fd1f5d5478 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -14,6 +14,7 @@ import llnl.util.tty as tty import spack.error +from spack.util.path import Path, format_os_path, path_to_os_path, system_path_filter __all__ = ['Executable', 'which', 'ProcessError'] @@ -22,7 +23,11 @@ class Executable(object): """Class representing a program that can be run on the command line.""" def __init__(self, name): + # necesary here for the shlex call to succeed + name = format_os_path(name, mode=Path.unix) self.exe = shlex.split(str(name)) + # filter back to platform dependent path + self.exe = path_to_os_path(*self.exe) self.default_env = {} from spack.util.environment import EnvironmentModifications # no cycle self.default_envmod = EnvironmentModifications() @@ -31,10 +36,12 @@ def __init__(self, name): if not self.exe: raise ProcessError("Cannot construct executable for '%s'" % name) + @system_path_filter def add_default_arg(self, arg): """Add a default argument to the command.""" self.exe.append(arg) + @system_path_filter def add_default_env(self, key, value): """Set an environment variable when the command is run. @@ -202,12 +209,18 @@ def streamify(arg, mode): if output in (str, str.split) or error in (str, str.split): result = '' if output in (str, str.split): - outstr = text_type(out.decode('utf-8')) + if sys.platform == 'win32': + outstr = text_type(out.decode('ISO-8859-1')) + else: + outstr = text_type(out.decode('utf-8')) result += outstr if output is str.split: sys.stdout.write(outstr) if error in (str, str.split): - errstr = text_type(err.decode('utf-8')) + if sys.platform == 'win32': + errstr = text_type(err.decode('ISO-8859-1')) + else: + errstr = text_type(err.decode('utf-8')) result += errstr if error is str.split: sys.stderr.write(errstr) @@ -261,6 +274,7 @@ def __str__(self): return ' '.join(self.exe) +@system_path_filter def which_string(*args, **kwargs): """Like ``which()``, but return a string instead of an ``Executable``.""" path = kwargs.get('path', os.environ.get('PATH', '')) @@ -270,15 +284,23 @@ def which_string(*args, **kwargs): path = path.split(os.pathsep) for name in args: - if os.path.sep in name: - exe = os.path.abspath(name) - if os.path.isfile(exe) and os.access(exe, os.X_OK): - return exe - else: - for directory in path: - exe = os.path.join(directory, name) + win_candidates = [] + if sys.platform == "win32" and (not name.endswith(".exe") + and not name.endswith(".bat")): + win_candidates = [name + ext for ext in ['.exe', '.bat']] + candidate_names = [name] if not win_candidates else win_candidates + + for candidate_name in candidate_names: + if os.path.sep in candidate_name: + exe = os.path.abspath(candidate_name) if os.path.isfile(exe) and os.access(exe, os.X_OK): return exe + else: + for directory in path: + directory = path_to_os_path(directory).pop() + exe = os.path.join(directory, candidate_name) + if os.path.isfile(exe) and os.access(exe, os.X_OK): + return exe if required: raise CommandNotFoundError( diff --git a/lib/spack/spack/util/file_cache.py b/lib/spack/spack/util/file_cache.py index 3ef46d3b6e6126..f9436ace7309f5 100644 --- a/lib/spack/spack/util/file_cache.py +++ b/lib/spack/spack/util/file_cache.py @@ -6,7 +6,7 @@ import os import shutil -from llnl.util.filesystem import mkdirp +from llnl.util.filesystem import mkdirp, rename from spack.error import SpackError from spack.util.lock import Lock, ReadTransaction, WriteTransaction @@ -145,7 +145,7 @@ def __exit__(cm, type, value, traceback): # noqa shutil.rmtree(cm.tmp_filename, True) else: - os.rename(cm.tmp_filename, cm.orig_filename) + rename(cm.tmp_filename, cm.orig_filename) return WriteTransaction( self._get_lock(key), acquire=WriteContextManager) @@ -170,7 +170,7 @@ def remove(self, key): os.unlink(self.cache_path(key)) finally: lock.release_write() - os.unlink(self._lock_path(key)) + lock.cleanup() class CacheError(SpackError): diff --git a/lib/spack/spack/util/lock.py b/lib/spack/spack/util/lock.py index f310627208910a..75d5c653b6be57 100644 --- a/lib/spack/spack/util/lock.py +++ b/lib/spack/spack/util/lock.py @@ -6,6 +6,7 @@ """Wrapper for ``llnl.util.lock`` allows locking to be enabled/disabled.""" import os import stat +import sys import llnl.util.lock @@ -15,6 +16,8 @@ from llnl.util.lock import * # noqa +is_windows = sys.platform == 'win32' + class Lock(llnl.util.lock.Lock): # type: ignore[no-redef] """Lock that can be disabled. @@ -25,7 +28,7 @@ class Lock(llnl.util.lock.Lock): # type: ignore[no-redef] """ def __init__(self, *args, **kwargs): super(Lock, self).__init__(*args, **kwargs) - self._enable = spack.config.get('config:locks', True) + self._enable = spack.config.get('config:locks', not is_windows) def _lock(self, op, timeout=0): if self._enable: @@ -42,6 +45,10 @@ def _debug(self, *args): if self._enable: super(Lock, self)._debug(*args) + def cleanup(self, *args): + if self._enable: + super(Lock, self).cleanup(*args) + def check_lock_safety(path): """Do some extra checks to ensure disabling locks is safe. diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py index 4e897e85d82a3d..82ce6c07a46aba 100644 --- a/lib/spack/spack/util/module_cmd.py +++ b/lib/spack/spack/util/module_cmd.py @@ -7,7 +7,6 @@ This module contains routines related to the module command for accessing and parsing environment modules. """ -import json import os import re import subprocess @@ -15,70 +14,46 @@ import llnl.util.tty as tty -import spack - # This list is not exhaustive. Currently we only use load and unload # If we need another option that changes the environment, add it here. module_change_commands = ['load', 'swap', 'unload', 'purge', 'use', 'unuse'] -py_cmd = 'import os;import json;print(json.dumps(dict(os.environ)))' -_cmd_template = "'module ' + ' '.join(args) + ' 2>&1'" - - -def module(*args): - module_cmd = eval(_cmd_template) # So we can monkeypatch for testing - if args[0] in module_change_commands: - # Do the module manipulation, then output the environment in JSON - # and read the JSON back in the parent process to update os.environ - # For python, we use the same python running the Spack process, because - # we can guarantee its existence. We have to do some LD_LIBRARY_PATH - # shenanigans to ensure python will run. - - # LD_LIBRARY_PATH under which Spack ran - os.environ['SPACK_LD_LIBRARY_PATH'] = spack.main.spack_ld_library_path - - # suppress output from module function - module_cmd += ' >/dev/null;' - # Capture the new LD_LIBRARY_PATH after `module` was run - module_cmd += 'export SPACK_NEW_LD_LIBRARY_PATH="$LD_LIBRARY_PATH";' +# This awk script is a posix alternative to `env -0` +awk_cmd = (r"""awk 'BEGIN{for(name in ENVIRON)""" + r"""printf("%s=%s%c", name, ENVIRON[name], 0)}'""") - # Set LD_LIBRARY_PATH to value at Spack startup time to ensure that - # python executable finds its libraries - module_cmd += 'LD_LIBRARY_PATH="$SPACK_LD_LIBRARY_PATH" ' - # Execute the python command - module_cmd += '%s -E -c "%s";' % (sys.executable, py_cmd) +def module(*args, **kwargs): + module_cmd = kwargs.get('module_template', 'module ' + ' '.join(args)) - # If LD_LIBRARY_PATH was set after `module`, dump the old value because - # we have since corrupted it to ensure python would run. - # dump SPACKIGNORE as a placeholder for parsing if LD_LIBRARY_PATH null - module_cmd += 'echo "${SPACK_NEW_LD_LIBRARY_PATH:-SPACKIGNORE}"' - - module_p = subprocess.Popen(module_cmd, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - shell=True, - executable="/bin/bash") - - # Cray modules spit out warnings that we cannot supress. - # This hack skips to the last output (the environment) - env_out = str(module_p.communicate()[0].decode()).strip().split('\n') - - # The environment dumped as json - env_json = env_out[-2] - # Either the uncorrupted $LD_LIBRARY_PATH or SPACKIGNORE - new_ld_library_path = env_out[-1] + if args[0] in module_change_commands: + # Suppress module output + module_cmd += r' >/dev/null 2>&1; ' + awk_cmd + module_p = subprocess.Popen( + module_cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=True, + executable="/bin/bash") + + # In Python 3, keys and values of `environ` are byte strings. + environ = {} + output = module_p.communicate()[0] + + # Loop over each environment variable key=value byte string + for entry in output.strip(b'\0').split(b'\0'): + # Split variable name and value + parts = entry.split(b'=', 1) + if len(parts) != 2: + continue + environ[parts[0]] = parts[1] # Update os.environ with new dict - env_dict = json.loads(env_json) os.environ.clear() - os.environ.update(env_dict) - - # Override restored LD_LIBRARY_PATH with pre-python value - if new_ld_library_path == 'SPACKIGNORE': - os.environ.pop('LD_LIBRARY_PATH', None) + if sys.version_info >= (3, 2): + os.environb.update(environ) # novermin else: - os.environ['LD_LIBRARY_PATH'] = new_ld_library_path + os.environ.update(environ) else: # Simply execute commands that don't change state and return output diff --git a/lib/spack/spack/util/parallel.py b/lib/spack/spack/util/parallel.py index c64d0431f96c59..a931bba0c6bd09 100644 --- a/lib/spack/spack/util/parallel.py +++ b/lib/spack/spack/util/parallel.py @@ -127,7 +127,7 @@ def parallel_map(func, arguments, max_processes=None, debug=False): RuntimeError: if any error occurred in the worker processes """ task_wrapper = Task(func) - if sys.platform != 'darwin': + if sys.platform != 'darwin' and sys.platform != 'win32': with pool(processes=num_processes(max_processes=max_processes)) as p: results = p.map(task_wrapper, arguments) else: diff --git a/lib/spack/spack/util/path.py b/lib/spack/spack/util/path.py index 1a44e1946f6e66..fd51acbce7d84e 100644 --- a/lib/spack/spack/util/path.py +++ b/lib/spack/spack/util/path.py @@ -12,26 +12,34 @@ import os import re import subprocess +import sys import tempfile +from six.moves.urllib.parse import urlparse + import llnl.util.tty as tty from llnl.util.lang import memoized -import spack.paths import spack.util.spack_yaml as syaml +is_windows = sys.platform == 'win32' + __all__ = [ 'substitute_config_variables', 'substitute_path_variables', 'canonicalize_path'] + # Substitutions to perform -replacements = { - 'spack': spack.paths.prefix, - 'user': getpass.getuser(), - 'tempdir': tempfile.gettempdir(), - 'user_cache_path': spack.paths.user_cache_path, -} +def replacements(): + # break circular import from spack.util.executable + import spack.paths + return { + 'spack': spack.paths.prefix, + 'user': getpass.getuser(), + 'tempdir': tempfile.gettempdir(), + 'user_cache_path': spack.paths.user_cache_path} + # This is intended to be longer than the part of the install path # spack generates from the root path we give it. Included in the @@ -53,23 +61,134 @@ SPACK_PATH_PADDING_CHARS = '__spack_path_placeholder__' +def is_path_url(path): + if '\\' in path: + return False + url_tuple = urlparse(path) + return bool(url_tuple.scheme) and len(url_tuple.scheme) > 1 + + +def win_exe_ext(): + return '.exe' + + +def path_to_os_path(*pths): + """ + Takes an arbitrary number of positional parameters + converts each arguemnt of type string to use a normalized + filepath separator, and returns a list of all values + """ + ret_pths = [] + for pth in pths: + if type(pth) is str and\ + not is_path_url(pth): + pth = convert_to_platform_path(pth) + ret_pths.append(pth) + return ret_pths + + +def system_path_filter(_func=None, arg_slice=None): + """ + Filters function arguments to account for platform path separators. + Optional slicing range can be specified to select specific arguments + + This decorator takes all (or a slice) of a method's positional arguments + and normalizes usage of filepath separators on a per platform basis. + + Note: **kwargs, urls, and any type that is not a string are ignored + so in such cases where path normalization is required, that should be + handled by calling path_to_os_path directly as needed. + + Parameters: + arg_slice (slice): a slice object specifying the slice of arguments + in the decorated method over which filepath separators are + normalized + """ + from functools import wraps + + def holder_func(func): + @wraps(func) + def path_filter_caller(*args, **kwargs): + args = list(args) + if arg_slice: + args[arg_slice] = path_to_os_path(*args[arg_slice]) + else: + args = path_to_os_path(*args) + return func(*args, **kwargs) + return path_filter_caller + if _func: + return holder_func(_func) + return holder_func + + @memoized def get_system_path_max(): # Choose a conservative default sys_max_path_length = 256 - try: - path_max_proc = subprocess.Popen(['getconf', 'PATH_MAX', '/'], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - proc_output = str(path_max_proc.communicate()[0].decode()) - sys_max_path_length = int(proc_output) - except (ValueError, subprocess.CalledProcessError, OSError): - tty.msg('Unable to find system max path length, using: {0}'.format( - sys_max_path_length)) + if is_windows: + sys_max_path_length = 260 + else: + try: + path_max_proc = subprocess.Popen(['getconf', 'PATH_MAX', '/'], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + proc_output = str(path_max_proc.communicate()[0].decode()) + sys_max_path_length = int(proc_output) + except (ValueError, subprocess.CalledProcessError, OSError): + tty.msg('Unable to find system max path length, using: {0}'.format( + sys_max_path_length)) return sys_max_path_length +class Path: + """ + Describes the filepath separator types + in an enum style + with a helper attribute + exposing the path type of + the current platform. + """ + unix = 0 + windows = 1 + platform_path = windows if is_windows\ + else unix + + +def format_os_path(path, mode=Path.unix): + """ + Format path to use consistent, platform specific + separators. Absolute paths are converted between + drive letters and a prepended '/' as per platform + requirement. + + Parameters: + path (str): the path to be normalized, must be a string + or expose the replace method. + mode (Path): the path filesperator style to normalize the + passed path to. Default is unix style, i.e. '/' + """ + if not path: + return path + if mode == Path.windows: + path = path.replace('/', '\\') + else: + path = path.replace('\\', '/') + return path + + +def convert_to_posix_path(path): + return format_os_path(path, mode=Path.unix) + + +def convert_to_windows_path(path): + return format_os_path(path, mode=Path.windows) + + +def convert_to_platform_path(path): + return format_os_path(path, mode=Path.platform_path) + + def substitute_config_variables(path): """Substitute placeholders into paths. @@ -87,17 +206,18 @@ def substitute_config_variables(path): environment yaml files. """ import spack.environment as ev # break circular + _replacements = replacements() env = ev.active_environment() if env: - replacements.update({'env': env.path}) + _replacements.update({'env': env.path}) else: # If a previous invocation added env, remove it - replacements.pop('env', None) + _replacements.pop('env', None) # Look up replacements def repl(match): m = match.group(0).strip('${}') - return replacements.get(m.lower(), match.group(0)) + return _replacements.get(m.lower(), match.group(0)) # Replace $var or ${var}. return re.sub(r'(\$\w+\b|\$\{\w+\})', repl, path) @@ -216,7 +336,7 @@ def padding_filter(string): """ global _filter_re - pad = spack.util.path.SPACK_PATH_PADDING_CHARS + pad = SPACK_PATH_PADDING_CHARS if not _filter_re: longest_prefix = longest_prefix_re(pad) regex = ( @@ -244,6 +364,7 @@ def filter_padding(): This is needed because Spack's debug output gets extremely long when we use a long padded installation path. """ + import spack.config padding = spack.config.get("config:install_tree:padded_length", None) if padding: # filter out all padding from the intsall command output diff --git a/lib/spack/spack/util/url.py b/lib/spack/spack/util/url.py index 046856aac1bb9c..ea74d88db0a40b 100644 --- a/lib/spack/spack/util/url.py +++ b/lib/spack/spack/util/url.py @@ -8,28 +8,35 @@ """ import itertools -import os.path +import posixpath import re +import sys import six.moves.urllib.parse as urllib_parse from six import string_types -import spack.util.path +from spack.util.path import ( + canonicalize_path, + convert_to_platform_path, + convert_to_posix_path, +) + +is_windows = sys.platform == 'win32' def _split_all(path): """Split path into its atomic components. - Returns the shortest list, L, of strings such that os.path.join(*L) == path - and os.path.split(element) == ('', element) for every element in L except - possibly the first. This first element may possibly have the value of '/', - or some other OS-dependent path root. + Returns the shortest list, L, of strings such that posixpath.join(*L) == + path and posixpath.split(element) == ('', element) for every element in L + except possibly the first. This first element may possibly have the value + of '/'. """ result = [] a = path old_a = None while a != old_a: - (old_a, (a, b)) = a, os.path.split(a) + (old_a, (a, b)) = a, posixpath.split(a) if a or b: result.insert(0, b or '/') @@ -47,7 +54,13 @@ def local_file_path(url): url = parse(url) if url.scheme == 'file': + if is_windows: + pth = convert_to_platform_path(url.netloc + url.path) + if re.search(r'^\\[A-Za-z]:', pth): + pth = pth.lstrip('\\') + return pth return url.path + return None @@ -60,19 +73,39 @@ def parse(url, scheme='file'): Otherwise, the returned value is the same as urllib's urlparse() with allow_fragments=False. """ - + # guarantee a value passed in is of proper url format. Guarantee + # allows for easier string manipulation accross platforms + if isinstance(url, string_types): + require_url_format(url) + url = escape_file_url(url) url_obj = ( urllib_parse.urlparse(url, scheme=scheme, allow_fragments=False) if isinstance(url, string_types) else url) (scheme, netloc, path, params, query, _) = url_obj + scheme = (scheme or 'file').lower() if scheme == 'file': - path = spack.util.path.canonicalize_path(netloc + path) + + # (The user explicitly provides the file:// scheme.) + # examples: + # file://C:\\a\\b\\c + # file://X:/a/b/c + path = canonicalize_path(netloc + path) path = re.sub(r'^/+', '/', path) netloc = '' + drive_ltr_lst = re.findall(r'[A-Za-z]:\\', path) + is_win_path = bool(drive_ltr_lst) + if is_windows and is_win_path: + drive_ltr = drive_ltr_lst[0].strip('\\') + path = re.sub(r'[\\]*' + drive_ltr, '', path) + netloc = '/' + drive_ltr.strip('\\') + + if sys.platform == "win32": + path = convert_to_posix_path(path) + return urllib_parse.ParseResult(scheme=scheme, netloc=netloc, path=path, @@ -97,13 +130,13 @@ def join(base_url, path, *extra, **kwargs): If resolve_href is True, treat the base URL as though it where the locator of a web page, and the remaining URL path components as though they formed - a relative URL to be resolved against it (i.e.: as in os.path.join(...)). + a relative URL to be resolved against it (i.e.: as in posixpath.join(...)). The result is an absolute URL to the resource to which a user's browser would navigate if they clicked on a link with an "href" attribute equal to the relative URL. If resolve_href is False (default), then the URL path components are joined - as in os.path.join(). + as in posixpath.join(). Note: file:// URL path components are not canonicalized as part of this operation. To canonicalize, pass the joined url to format(). @@ -147,8 +180,11 @@ def join(base_url, path, *extra, **kwargs): 'file:///opt/spack' """ paths = [ - (x if isinstance(x, string_types) else x.geturl()) + (x) if isinstance(x, string_types) + else x.geturl() for x in itertools.chain((base_url, path), extra)] + + paths = [convert_to_posix_path(x) for x in paths] n = len(paths) last_abs_component = None scheme = '' @@ -192,7 +228,7 @@ def join(base_url, path, *extra, **kwargs): result = urllib_parse.ParseResult( scheme=result.scheme, netloc='', - path=os.path.abspath(result.netloc + result.path), + path=posixpath.abspath(result.netloc + result.path), params=result.params, query=result.query, fragment=None) @@ -227,11 +263,11 @@ def _join(base_url, path, *extra, **kwargs): base_path_args.append(base_path) if resolve_href: - new_base_path, _ = os.path.split(os.path.join(*base_path_args)) + new_base_path, _ = posixpath.split(posixpath.join(*base_path_args)) base_path_args = [new_base_path] base_path_args.extend(path_tokens) - base_path = os.path.relpath(os.path.join(*base_path_args), '/fake-root') + base_path = posixpath.relpath(posixpath.join(*base_path_args), '/fake-root') if scheme == 's3': path_tokens = [ @@ -240,7 +276,10 @@ def _join(base_url, path, *extra, **kwargs): if path_tokens: netloc = path_tokens.pop(0) - base_path = os.path.join('', *path_tokens) + base_path = posixpath.join('', *path_tokens) + + if sys.platform == "win32": + base_path = convert_to_posix_path(base_path) return format(urllib_parse.ParseResult(scheme=scheme, netloc=netloc, @@ -301,3 +340,17 @@ def parse_git_url(url): raise ValueError("bad port in git url: %s" % url) return (scheme, user, hostname, port, path) + + +def require_url_format(url): + ut = re.search(r'^(file://|http://|https://|ftp://|s3://|gs://|ssh://|git://|/)', url) + # DH 20220411 - https://github.com/spack/spack/issues/29910 + #assert ut is not None + + +def escape_file_url(url): + drive_ltr = re.findall(r'[A-Za-z]:\\', url) + if is_windows and drive_ltr: + url = url.replace(drive_ltr[0], '/' + drive_ltr[0]) + + return url diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index a47bd39ccbdf53..dc1a7c24f61b24 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -22,7 +22,7 @@ import llnl.util.lang import llnl.util.tty as tty -from llnl.util.filesystem import mkdirp +from llnl.util.filesystem import mkdirp, rename import spack.config import spack.error @@ -32,6 +32,7 @@ import spack.util.s3 as s3_util import spack.util.url as url_util from spack.util.compression import ALLOWED_ARCHIVE_TYPES +from spack.util.path import convert_to_posix_path if sys.version_info < (3, 0): # Python 2 had these in the HTMLParser package. @@ -111,9 +112,14 @@ def read_from_url(url, accept_content_type=None): if not __UNABLE_TO_VERIFY_SSL: context = ssl._create_unverified_context() - req = Request(url_util.format(url)) + url_scheme = url.scheme + url = url_util.format(url) + if sys.platform == "win32" and url_scheme == "file": + url = convert_to_posix_path(url) + req = Request(url) + content_type = None - is_web_url = url.scheme in ('http', 'https') + is_web_url = url_scheme in ('http', 'https') if accept_content_type and is_web_url: # Make a HEAD request first to check the content type. This lets # us ignore tarballs and gigantic files. @@ -144,7 +150,7 @@ def read_from_url(url, accept_content_type=None): if reject_content_type: tty.debug("ignoring page {0}{1}{2}".format( - url_util.format(url), + url, " with content type " if content_type is not None else "", content_type or "")) @@ -160,6 +166,9 @@ def warn_no_ssl_cert_checking(): def push_to_url( local_file_path, remote_path, keep_original=True, extra_args=None): + if sys.platform == "win32": + if remote_path[1] == ':': + remote_path = "file://" + remote_path remote_url = url_util.parse(remote_path) verify_ssl = spack.config.get('config:verify_ssl') @@ -173,7 +182,7 @@ def push_to_url( shutil.copy(local_file_path, remote_file_path) else: try: - os.rename(local_file_path, remote_file_path) + rename(local_file_path, remote_file_path) except OSError as e: if e.errno == errno.EXDEV: # NOTE(opadron): The above move failed because it crosses @@ -562,9 +571,13 @@ def _urlopen(req, *args, **kwargs): def find_versions_of_archive( - archive_urls, list_url=None, list_depth=0, concurrency=32 + archive_urls, list_url=None, list_depth=0, concurrency=32, reference_package=None ): - """Scrape web pages for new versions of a tarball. + """Scrape web pages for new versions of a tarball. This function prefers URLs in the + following order: links found on the scraped page that match a url generated by the + reference package, found and in the archive_urls list, found and derived from those + in the archive_urls list, and if none are found for a version then the item in the + archive_urls list is included for the version. Args: archive_urls (str or list or tuple): URL or sequence of URLs for @@ -577,6 +590,10 @@ def find_versions_of_archive( list_depth (int): max depth to follow links on list_url pages. Defaults to 0. concurrency (int): maximum number of concurrent requests + reference_package (spack.package.Package or None): a spack package + used as a reference for url detection. Uses the url_for_version + method on the package to produce reference urls which, if found, + are preferred. """ if not isinstance(archive_urls, (list, tuple)): archive_urls = [archive_urls] @@ -638,14 +655,34 @@ def find_versions_of_archive( # Walk through archive_url links first. # Any conflicting versions will be overwritten by the list_url links. versions = {} - for url in archive_urls + sorted(links): + matched = set() + for url in sorted(links): + url = convert_to_posix_path(url) if any(re.search(r, url) for r in regexes): try: ver = spack.url.parse_version(url) + if ver in matched: + continue versions[ver] = url + # prevent this version from getting overwritten + if reference_package is not None: + if url == reference_package.url_for_version(ver): + matched.add(ver) + else: + extrapolated_urls = [ + spack.url.substitute_version(u, ver) for u in archive_urls + ] + if url in extrapolated_urls: + matched.add(ver) except spack.url.UndetectableVersionError: continue + for url in archive_urls: + url = convert_to_posix_path(url) + ver = spack.url.parse_version(url) + if ver not in versions: + versions[ver] = url + return versions diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 13c8354ea96b32..ff0f910adc5daa 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -403,15 +403,32 @@ def satisfies(self, other): """ super_sat = super(MultiValuedVariant, self).satisfies(other) + if not super_sat: + return False + + if '*' in other or '*' in self: + return True + + # allow prefix find on patches + if self.name == 'patches': + return all(any(w.startswith(v) for w in self.value) for v in other.value) + # Otherwise we want all the values in `other` to be also in `self` - return super_sat and (all(v in self.value for v in other.value) or - '*' in other or '*' in self) + return all(v in self.value for v in other.value) def append(self, value): """Add another value to this multi-valued variant.""" self._value = tuple(sorted((value,) + self._value)) self._original_value = ",".join(self._value) + def __str__(self): + # Special-case patches to not print the full 64 character hashes + if self.name == 'patches': + values_str = ','.join(x[:7] for x in self.value) + else: + values_str = ','.join(str(x) for x in self.value) + return '{0}={1}'.format(self.name, values_str) + class SingleValuedVariant(AbstractVariant): """A variant that can hold multiple values, but one at a time.""" diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 31a585469be84a..d3dd01c3a5adbe 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -48,7 +48,7 @@ VALID_VERSION = re.compile(r'^[A-Za-z0-9_.-]+$') # regex for a commit version -COMMIT_VERSION = re.compile(r'^[a-z0-9]{40}$') +COMMIT_VERSION = re.compile(r'^[a-f0-9]{40}$') # regex for version segments SEGMENT_REGEX = re.compile(r'(?:(?P[0-9]+)|(?P[a-zA-Z]+))(?P[_.-]*)') @@ -59,7 +59,7 @@ "(?:[+][0-9A-Za-z-]+)?)") # Infinity-like versions. The order in the list implies the comparison rules -infinity_versions = ['develop', 'main', 'master', 'head', 'trunk'] +infinity_versions = ['develop', 'main', 'master', 'head', 'trunk', 'stable'] iv_min_len = min(len(s) for s in infinity_versions) @@ -167,7 +167,14 @@ def __gt__(self, other): class Version(object): """Class to represent versions""" - __slots__ = ['version', 'separators', 'string', 'commit_lookup'] + __slots__ = [ + "version", + "separators", + "string", + "commit_lookup", + "is_commit", + "commit_version", + ] def __init__(self, string): if not isinstance(string, str): @@ -182,17 +189,21 @@ def __init__(self, string): # An object that can lookup git commits to compare them to versions self.commit_lookup = None - + self.commit_version = None segments = SEGMENT_REGEX.findall(string) self.version = tuple( int(m[0]) if m[0] else VersionStrComponent(m[1]) for m in segments ) self.separators = tuple(m[2] for m in segments) + self.is_commit = len(self.string) == 40 and COMMIT_VERSION.match(self.string) + def _cmp(self, other_lookups=None): commit_lookup = self.commit_lookup or other_lookups if self.is_commit and commit_lookup: + if self.commit_version is not None: + return self.commit_version commit_info = commit_lookup.get(self.string) if commit_info: prev_version, distance = commit_info @@ -201,19 +212,11 @@ def _cmp(self, other_lookups=None): # If commit is exactly a known version, no distance suffix prev_tuple = Version(prev_version).version if prev_version else () dist_suffix = (VersionStrComponent(''), distance) if distance else () - return prev_tuple + dist_suffix + self.commit_version = prev_tuple + dist_suffix + return self.commit_version return self.version - @property - def is_commit(self): - """ - Determine if the original string is referencing a commit. - """ - if self.string in infinity_versions: - return False - return COMMIT_VERSION.match(self.string) is not None - @property def dotted(self): """The dotted representation of the version. @@ -586,35 +589,23 @@ def __contains__(self, other): @coerced def satisfies(self, other): - """A VersionRange satisfies another if some version in this range - would satisfy some version in the other range. To do this it must - either: - - a) Overlap with the other range - b) The start of this range satisfies the end of the other range. - - This is essentially the same as overlaps(), but overlaps assumes - that its arguments are specific. That is, 4.7 is interpreted as - 4.7.0.0.0.0... . This function assumes that 4.7 would be satisfied - by 4.7.3.5, etc. - - Rationale: + """ + x.satisfies(y) in general means that x and y have a + non-zero intersection. For VersionRange this means they overlap. - If a user asks for gcc@4.5:4.7, and a package is only compatible with - gcc@4.7.3:4.8, then that package should be able to build under the - constraints. Just using overlaps() would not work here. + `satisfies` is a commutative binary operator, meaning that + x.satisfies(y) if and only if y.satisfies(x). - Note that we don't need to check whether the end of this range - would satisfy the start of the other range, because overlaps() - already covers that case. + Note: in some cases we have the keyword x.satisfies(y, strict=True) + to mean strict set inclusion, which is not commutative. However, this + lacks in VersionRange for unknown reasons. - Note further that overlaps() is a symmetric operation, while - satisfies() is not. + Examples + - 1:3 satisfies 2:4, as their intersection is 2:3. + - 1:2 does not satisfy 3:4, as their intersection is empty. + - 4.5:4.7 satisfies 4.7.2:4.8, as their intersection is 4.7.2:4.7 """ - return (self.overlaps(other) or - # if either self.start or other.end are None, then this can't - # satisfy, or overlaps() would've taken care of it. - self.start and other.end and self.start.satisfies(other.end)) + return self.overlaps(other) @coerced def overlaps(self, other): diff --git a/share/spack/bash/spack-completion.in b/share/spack/bash/spack-completion.in index 803563d9ce3c96..f9cf846ec5f330 100755 --- a/share/spack/bash/spack-completion.in +++ b/share/spack/bash/spack-completion.in @@ -208,10 +208,10 @@ _repos() { SPACK_COMPREPLY="$SPACK_REPOS" } -_tests() { +_unit_tests() { if [[ -z "${SPACK_TESTS:-}" ]] then - SPACK_TESTS="$(spack test -l)" + SPACK_TESTS="$(spack unit-test -l)" fi SPACK_COMPREPLY="$SPACK_TESTS" } diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index 37a636d4ba1301..bd80a5292115f7 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -13,6 +13,7 @@ default: variables: SPACK_PR_BRANCH: ${CI_COMMIT_REF_NAME} SPACK_PIPELINE_TYPE: "spack_pull_request" + SPACK_PRUNE_UNTOUCHED: "True" .develop: only: @@ -101,6 +102,48 @@ default: # job: my-super-cool-stack-develop-generate # strategy: depend +######################################## +# E4S Mac Stack +######################################## +.e4s-mac: + variables: + SPACK_CI_STACK_NAME: e4s-mac + allow_failure: True + +e4s-mac-pr-generate: + extends: [ ".e4s-mac", ".pr-generate"] + tags: + - omicron + timeout: 60 minutes + +e4s-mac-develop-generate: + extends: [ ".e4s-mac", ".develop-generate"] + tags: + - omicron + timeout: 60 minutes + +e4s-mac-pr-build: + extends: [ ".e4s-mac", ".pr-build" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: e4s-mac-pr-generate + strategy: depend + needs: + - artifacts: True + job: e4s-mac-pr-generate + +e4s-mac-develop-build: + extends: [ ".e4s-mac", ".develop-build" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: e4s-mac-develop-generate + strategy: depend + needs: + - artifacts: True + job: e4s-mac-develop-generate + ######################################## # E4S pipeline ######################################## @@ -110,6 +153,7 @@ default: e4s-pr-generate: extends: [ ".e4s", ".pr-generate"] + tags: e4s-develop-generate: extends: [ ".e4s", ".develop-generate"] 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 d67c8f1abb4b4e..d6b550ec99bf83 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 @@ -10,6 +10,9 @@ spack: all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}' packages: + conduit: + version: + - "0.7.2" mesa: variants: ~glx +osmesa paraview: diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml new file mode 100644 index 00000000000000..dae34b02ed19c8 --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml @@ -0,0 +1,63 @@ +spack: + view: false + concretization: separately + + config: + concretizer: clingo + install_tree: + root: $SPACK_ROOT/opt/spack + padded_length: 512 + projections: + all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}' + + packages: + all: + compiler: [apple-clang@13.0.0] + target: [m1] + + definitions: + - easy_specs: + - bzip2 + - zlib + + - arch: + - '%apple-clang@13.0.0 target=m1' + + specs: + + - matrix: + - - $easy_specs + - - $arch + + mirrors: { "mirror": "s3://spack-binaries-develop/e4s-mac" } + + gitlab-ci: + + script: + - . "./share/spack/setup-env.sh" + - spack --version + - cd ${SPACK_CONCRETE_ENV_DIR} + - spack env activate --without-view . + - 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 + - spack -d ci rebuild > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2) + + mappings: + - match: ['os=monterey'] + runner-attributes: + tags: + - omicron + temporary-storage-url-prefix: "s3://spack-binaries-prs/pipeline-storage" + broken-specs-url: "s3://spack-binaries-develop/broken-specs" + service-job-attributes: + before_script: + - . "./share/spack/setup-env.sh" + - spack --version + tags: + - omicron + + cdash: + build-group: E4S Mac + url: https://cdash.spack.io + project: Spack Testing + site: Cloud Gitlab Infrastructure diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index b5c6703fa5c40c..54f02bf94056d7 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -33,8 +33,6 @@ spack: variants: +bzip2 ~nls +xz hdf5: variants: +fortran +hl +shared - version: - - 1.10.7 libfabric: variants: fabrics=sockets,tcp,udp,rxm libunwind: @@ -49,6 +47,8 @@ spack: variants: +termlib openblas: variants: threads=openmp + openturns: + version: [1.18] trilinos: variants: +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +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: @@ -131,6 +131,7 @@ spack: - gmp - gotcha - gptune + - h5bench - hdf5 - heffte +fftw - hpctoolkit @@ -138,6 +139,7 @@ spack: - hypre - kokkos +openmp - kokkos-kernels +openmp + - lammps - legion - libnrm - libquo @@ -149,6 +151,8 @@ spack: - mfem - mpark-variant - mpifileutils ~xattr + - nccmp + - nco - ninja - nrm - omega-h @@ -193,6 +197,7 @@ spack: - upcxx - variorum - veloc + - wannier90 - zfp #- dealii #- geopm diff --git a/share/spack/qa/configuration/windows_config.yaml b/share/spack/qa/configuration/windows_config.yaml new file mode 100644 index 00000000000000..fb90000223446a --- /dev/null +++ b/share/spack/qa/configuration/windows_config.yaml @@ -0,0 +1,8 @@ +config: + locks: false + install_tree: + root: $spack\opt\spack + projections: + all: '${ARCHITECTURE}\${COMPILERNAME}-${COMPILERVER}\${PACKAGE}-${VERSION}-${HASH}' + build_stage: + - ~/.spack/stage \ No newline at end of file diff --git a/share/spack/qa/setup-env-test.sh b/share/spack/qa/setup-env-test.sh index 7fdc15b83538af..03eb23a6faf2f9 100755 --- a/share/spack/qa/setup-env-test.sh +++ b/share/spack/qa/setup-env-test.sh @@ -200,3 +200,6 @@ despacktivate echo "Correct error exit codes for activate and deactivate" fails spack env activate nonexisiting_environment fails spack env deactivate + +echo "Correct error exit codes for unit-test when it fails" +fails spack unit-test fail diff --git a/share/spack/qa/setup_spack.ps1 b/share/spack/qa/setup_spack.ps1 new file mode 100644 index 00000000000000..6b462916fa7fc2 --- /dev/null +++ b/share/spack/qa/setup_spack.ps1 @@ -0,0 +1,3 @@ +spack compiler find +echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml +spack external find cmake \ No newline at end of file diff --git a/share/spack/qa/vcvarsall.ps1 b/share/spack/qa/vcvarsall.ps1 new file mode 100644 index 00000000000000..8172bcd69a5f95 --- /dev/null +++ b/share/spack/qa/vcvarsall.ps1 @@ -0,0 +1,14 @@ +$erroractionpreference = "stop" + +$VCVARSALL="C:\\Program Files (x86)\\MicroSoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat" +$VCVARSPLATFORM="x64" +$VCVARSVERSION="14.29.30038" + + +cmd /c "`"$VCVARSALL`" $VCVARSPLATFORM -vcvars_ver=$VCVARSVERSION & set" | +foreach { + if ($_ -match "=") { + $v = $_.split("=") + [Environment]::SetEnvironmentVariable($v[0], $v[1]) + } +} diff --git a/share/spack/qa/windows_test_setup.ps1 b/share/spack/qa/windows_test_setup.ps1 new file mode 100644 index 00000000000000..a7e3c66ea3e206 --- /dev/null +++ b/share/spack/qa/windows_test_setup.ps1 @@ -0,0 +1,11 @@ +Set-Location ../ + +$env:python_pf_ver="C:\hostedtoolcache\windows\Python\3.9.5\x64\python.exe" + +cmd /c "`"spack\bin\spack_cmd.bat`" print " | +foreach { + if ($_ -match "=") { + $v = $_.split("=") + [Environment]::SetEnvironmentVariable($v[0], $v[1]) + } +} diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index a5b3dcb33e0ffa..135c4eb3b34f53 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -208,10 +208,10 @@ _repos() { SPACK_COMPREPLY="$SPACK_REPOS" } -_tests() { +_unit_tests() { if [[ -z "${SPACK_TESTS:-}" ]] then - SPACK_TESTS="$(spack test -l)" + SPACK_TESTS="$(spack unit-test -l)" fi SPACK_COMPREPLY="$SPACK_TESTS" } @@ -335,9 +335,9 @@ _spacktivate() { _spack() { if $list_options then - SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --show-cores --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -p --profile --sorted-profile --lines -v --verbose --stacktrace -V --version --print-shell-vars" + SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --show-cores --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 -V --version --print-shell-vars" else - SPACK_COMPREPLY="activate add analyze arch audit blame bootstrap build-env buildcache cd checksum ci clean clone commands compiler compilers concretize config containerize create deactivate debug 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 maintainers mark mirror module monitor 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" + SPACK_COMPREPLY="activate add analyze arch audit blame bootstrap build-env buildcache cd checksum ci clean clone commands compiler compilers concretize config containerize create deactivate debug 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 maintainers make-installer mark mirror module monitor 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 } @@ -709,7 +709,7 @@ _spack_compilers() { } _spack_concretize() { - SPACK_COMPREPLY="-h --help --reuse -f --force --test" + SPACK_COMPREPLY="-h --help -f --force --test -U --fresh --reuse" } _spack_config() { @@ -870,7 +870,7 @@ _spack_deprecate() { _spack_dev_build() { if $list_options then - SPACK_COMPREPLY="-h --help -j --jobs --reuse -d --source-path -i --ignore-dependencies -n --no-checksum --deprecated --keep-prefix --skip-patch -q --quiet --drop-in --test -b --before -u --until --clean --dirty" + SPACK_COMPREPLY="-h --help -j --jobs -d --source-path -i --ignore-dependencies -n --no-checksum --deprecated --keep-prefix --skip-patch -q --quiet --drop-in --test -b --before -u --until --clean --dirty -U --fresh --reuse" else _all_packages fi @@ -919,14 +919,14 @@ _spack_env() { _spack_env_activate() { if $list_options then - SPACK_COMPREPLY="-h --help --sh --csh --fish -v --with-view -V --without-view -p --prompt --temp -d --dir" + SPACK_COMPREPLY="-h --help --sh --csh --fish --bat -v --with-view -V --without-view -p --prompt --temp -d --dir" else _environments fi } _spack_env_deactivate() { - SPACK_COMPREPLY="-h --help --sh --csh --fish" + SPACK_COMPREPLY="-h --help --sh --csh --fish --bat" } _spack_env_create() { @@ -1024,7 +1024,7 @@ _spack_external() { _spack_external_find() { if $list_options then - SPACK_COMPREPLY="-h --help --not-buildable --scope -t --tag" + SPACK_COMPREPLY="-h --help --not-buildable --scope --all -t --tag" else _all_packages fi @@ -1157,7 +1157,7 @@ _spack_help() { _spack_info() { if $list_options then - SPACK_COMPREPLY="-h --help" + SPACK_COMPREPLY="-h --help -a --all --detectable --maintainers --no-dependencies --no-variants --no-versions --phases --tags --tests --virtuals" else _all_packages fi @@ -1166,7 +1166,7 @@ _spack_info() { _spack_install() { if $list_options then - SPACK_COMPREPLY="-h --help --only -u --until -j --jobs --reuse --overwrite --fail-fast --keep-prefix --keep-stage --dont-restage --use-cache --no-cache --cache-only --monitor --monitor-save-local --monitor-tags --monitor-keep-going --monitor-host --monitor-prefix --include-build-deps --no-check-signature --require-full-hash-match --show-log-on-error --source -n --no-checksum --deprecated -v --verbose --fake --only-concrete --no-add -f --file --clean --dirty --test --run-tests --log-format --log-file --help-cdash --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp -y --yes-to-all" + SPACK_COMPREPLY="-h --help --only -u --until -j --jobs --overwrite --fail-fast --keep-prefix --keep-stage --dont-restage --use-cache --no-cache --cache-only --monitor --monitor-save-local --monitor-tags --monitor-keep-going --monitor-host --monitor-prefix --include-build-deps --no-check-signature --require-full-hash-match --show-log-on-error --source -n --no-checksum --deprecated -v --verbose --fake --only-concrete --no-add -f --file --clean --dirty --test --run-tests --log-format --log-file --help-cdash --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp -y --yes-to-all -U --fresh --reuse" else _all_packages fi @@ -1205,7 +1205,7 @@ _spack_list() { _spack_load() { if $list_options then - SPACK_COMPREPLY="-h --help --sh --csh --fish --first --only --list" + SPACK_COMPREPLY="-h --help --sh --csh --fish --bat --first --only --list" else _installed_packages fi @@ -1238,6 +1238,15 @@ _spack_maintainers() { fi } +_spack_make_installer() { + if $list_options + then + SPACK_COMPREPLY="-h --help -v --spack-version -s --spack-source -g --git-installer-verbosity" + else + SPACK_COMPREPLY="" + fi +} + _spack_mark() { if $list_options then @@ -1652,7 +1661,7 @@ _spack_restage() { _spack_solve() { if $list_options then - SPACK_COMPREPLY="-h --help --show --models -l --long -L --very-long -I --install-status --reuse -y --yaml -j --json -c --cover -N --namespaces -t --types --timers --stats" + SPACK_COMPREPLY="-h --help --show --models -l --long -L --very-long -I --install-status -y --yaml -j --json -c --cover -N --namespaces -t --types --timers --stats -U --fresh --reuse" else _all_packages fi @@ -1661,7 +1670,7 @@ _spack_solve() { _spack_spec() { if $list_options then - SPACK_COMPREPLY="-h --help -l --long -L --very-long -I --install-status --reuse -y --yaml -j --json -c --cover -N --namespaces --hash-type -t --types" + SPACK_COMPREPLY="-h --help -l --long -L --very-long -I --install-status -y --yaml -j --json -c --cover -N --namespaces --hash-type -t --types -U --fresh --reuse" else _all_packages fi @@ -1706,7 +1715,7 @@ _spack_test() { _spack_test_run() { if $list_options then - SPACK_COMPREPLY="-h --help --alias --fail-fast --fail-first --keep-stage --log-format --log-file --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp --help-cdash --clean --dirty" + SPACK_COMPREPLY="-h --help --alias --fail-fast --fail-first --externals --keep-stage --log-format --log-file --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp --help-cdash --clean --dirty" else _installed_packages fi @@ -1793,14 +1802,14 @@ _spack_unit_test() { then SPACK_COMPREPLY="-h --help -H --pytest-help -l --list -L --list-long -N --list-names --extension -s -k --showlocals" else - _tests + _unit_tests fi } _spack_unload() { if $list_options then - SPACK_COMPREPLY="-h --help --sh --csh --fish -a --all" + SPACK_COMPREPLY="-h --help --sh --csh --fish --bat -a --all" else _installed_packages fi diff --git a/var/spack/repos/builtin.mock/packages/callpath/package.py b/var/spack/repos/builtin.mock/packages/callpath/package.py index ac5122fafcc9f6..3f3da665a92c6b 100644 --- a/var/spack/repos/builtin.mock/packages/callpath/package.py +++ b/var/spack/repos/builtin.mock/packages/callpath/package.py @@ -22,5 +22,5 @@ def install(self, spec, prefix): make() make("install") - def setup_environment(self, senv, renv): - renv.set('FOOBAR', self.name) + def setup_run_environment(self, env): + env.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin.mock/packages/cmake-client/package.py b/var/spack/repos/builtin.mock/packages/cmake-client/package.py index 43037eb22e2032..0e8d1a3d9bf2f0 100644 --- a/var/spack/repos/builtin.mock/packages/cmake-client/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake-client/package.py @@ -54,20 +54,20 @@ def do_not_execute(self): def setup_build_environment(self, spack_env): spack_cc # Ensure spack module-scope variable is avaiabl check(from_cmake == "from_cmake", - "setup_environment couldn't read global set by cmake.") + "setup_build_environment couldn't read global set by cmake.") check(self.spec['cmake'].link_arg == "test link arg", "link arg on dependency spec not readable from " - "setup_environment.") + "setup_build_environment.") - def setup_dependent_build_environment(self, spack_env, dspec): + def setup_dependent_build_environment(self, env, dependent_spec): spack_cc # Ensure spack module-scope variable is avaiable check(from_cmake == "from_cmake", - "setup_dependent_environment couldn't read global set by cmake.") + "setup_dependent_build_environment couldn't read global set by cmake.") check(self.spec['cmake'].link_arg == "test link arg", "link arg on dependency spec not readable from " - "setup_dependent_environment.") + "setup_dependent_build_environment.") def setup_dependent_package(self, module, dspec): spack_cc # Ensure spack module-scope variable is avaiable @@ -94,6 +94,8 @@ def install(self, spec, prefix): # check that which('cmake') returns the right one. cmake = which('cmake') + print(cmake) + print(cmake.exe) check(cmake.exe[0].startswith(spec['cmake'].prefix.bin), "Wrong cmake was in environment: %s" % cmake) diff --git a/var/spack/repos/builtin.mock/packages/cmake/package.py b/var/spack/repos/builtin.mock/packages/cmake/package.py index aaa03b22f0b77a..8c19ca8a6ecebf 100644 --- a/var/spack/repos/builtin.mock/packages/cmake/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake/package.py @@ -4,9 +4,12 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import sys from spack import * +is_windows = sys.platform == 'win32' + def check(condition, msg): """Raise an install error if condition is False.""" @@ -22,13 +25,13 @@ class Cmake(Package): version('3.4.3', '4cb3ff35b2472aae70f542116d616e63', url='https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz') - def setup_environment(self, spack_env, run_env): + def setup_build_environment(self, env): spack_cc # Ensure spack module-scope variable is avaiable - spack_env.set('for_install', 'for_install') + env.set('for_install', 'for_install') - def setup_dependent_environment(self, spack_env, run_env, dspec): + def setup_dependent_build_environment(self, env, dependent_spec): spack_cc # Ensure spack module-scope variable is avaiable - spack_env.set('from_cmake', 'from_cmake') + env.set('from_cmake', 'from_cmake') def setup_dependent_package(self, module, dspec): spack_cc # Ensure spack module-scope variable is avaiable @@ -43,7 +46,7 @@ def install(self, spec, prefix): check(os.environ['for_install'] == 'for_install', "Couldn't read env var set in compile envieonmnt") - - cmake_exe = join_path(prefix.bin, 'cmake') + cmake_exe_ext = ".exe" if is_windows else '' + cmake_exe = join_path(prefix.bin, 'cmake{}'.format(cmake_exe_ext)) touch(cmake_exe) set_executable(cmake_exe) diff --git a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py index 2cd67ec17758e7..64abfe35252f55 100644 --- a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py @@ -23,5 +23,5 @@ def install(self, spec, prefix): make() make("install") - def setup_environment(self, senv, renv): - renv.set('FOOBAR', self.name) + def setup_run_environment(self, env): + env.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin.mock/packages/conflict/package.py b/var/spack/repos/builtin.mock/packages/conflict/package.py index b08da7606b9a9c..891a6c9ec2874a 100644 --- a/var/spack/repos/builtin.mock/packages/conflict/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict/package.py @@ -23,5 +23,5 @@ def install(self, spec, prefix): make() make("install") - def setup_environment(self, senv, renv): - renv.set('FOOBAR', self.name) + def setup_run_environment(self, env): + env.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin.mock/packages/find-externals1/package.py b/var/spack/repos/builtin.mock/packages/find-externals1/package.py index 9200668d7cf730..c85598e891f2f2 100644 --- a/var/spack/repos/builtin.mock/packages/find-externals1/package.py +++ b/var/spack/repos/builtin.mock/packages/find-externals1/package.py @@ -20,11 +20,11 @@ def determine_spec_details(cls, prefix, exes_in_prefix): exe_to_path = dict( (os.path.basename(p), p) for p in exes_in_prefix ) - if 'find-externals1-exe' not in exe_to_path: - return None - + exes = [x for x in exe_to_path.keys() if 'find-externals1-exe' in x] + if not exes: + return exe = spack.util.executable.Executable( - exe_to_path['find-externals1-exe']) + exe_to_path[exes[0]]) output = exe('--version', output=str) if output: match = re.search(r'find-externals1.*version\s+(\S+)', output) diff --git a/var/spack/repos/builtin.mock/packages/hash-test1/package.py b/var/spack/repos/builtin.mock/packages/hash-test1/package.py index ec9a10091f5184..22ffae43d12229 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test1/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test1/package.py @@ -29,7 +29,7 @@ class HashTest1(Package): variant('variantx', default=False, description='Test variant X') variant('varianty', default=False, description='Test variant Y') - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): pass @when('@:1.4') diff --git a/var/spack/repos/builtin.mock/packages/hash-test2/package.py b/var/spack/repos/builtin.mock/packages/hash-test2/package.py index 4623fb11344275..fffcc22274b1e9 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test2/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test2/package.py @@ -25,7 +25,7 @@ class HashTest2(Package): variant('variantx', default=False, description='Test variant X') variant('varianty', default=False, description='Test variant Y') - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): pass def install(self, spec, prefix): diff --git a/var/spack/repos/builtin.mock/packages/hash-test3/package.py b/var/spack/repos/builtin.mock/packages/hash-test3/package.py index fc97d59284d39c..69e9922b79d698 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test3/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test3/package.py @@ -24,7 +24,7 @@ class HashTest3(Package): variant('variantx', default=False, description='Test variant X') variant('varianty', default=False, description='Test variant Y') - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): pass @when('@:1.4') diff --git a/var/spack/repos/builtin.mock/packages/invalid-github-patch-url/package.py b/var/spack/repos/builtin.mock/packages/invalid-github-patch-url/package.py new file mode 100644 index 00000000000000..afeb451e486c6f --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/invalid-github-patch-url/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class InvalidGithubPatchUrl(Package): + """Package that has a GitHub patch URL that fails auditing.""" + + homepage = "http://www.example.com" + url = "http://www.example.com/patch-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + patch( + 'https://github.com/spack/spack/commit/cc76c0f5f9f8021cfb7423a226bd431c00d791ce.patch', + sha256='6057c3a8d50a23e93e5642be5a78df1e45d7de85446c2d7a63e3d0d88712b369', + ) diff --git a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py index 18254babf4a803..60298535312e3f 100644 --- a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py +++ b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py @@ -12,11 +12,11 @@ class ModulePathSeparator(Package): version(1.0, '0123456789abcdef0123456789abcdef') - def setup_environment(self, senv, renv): - renv.append_path("COLON", "foo") - renv.prepend_path("COLON", "foo") - renv.remove_path("COLON", "foo") + def setup_run_environment(self, env): + env.append_path("COLON", "foo") + env.prepend_path("COLON", "foo") + env.remove_path("COLON", "foo") - renv.append_path("SEMICOLON", "bar", separator=";") - renv.prepend_path("SEMICOLON", "bar", separator=";") - renv.remove_path("SEMICOLON", "bar", separator=";") + env.append_path("SEMICOLON", "bar", separator=";") + env.prepend_path("SEMICOLON", "bar", separator=";") + env.remove_path("SEMICOLON", "bar", separator=";") diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py index 91ea1980f64f73..0fe96b419d64b0 100644 --- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py +++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py @@ -30,5 +30,5 @@ def install(self, spec, prefix): touch(prefix.mpileaks) mkdirp(prefix.man) - def setup_environment(self, senv, renv): - renv.set('FOOBAR', self.name) + def setup_run_environment(self, env): + env.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin.mock/packages/ninja/package.py b/var/spack/repos/builtin.mock/packages/ninja/package.py new file mode 100644 index 00000000000000..3ed308b3c08c6d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/ninja/package.py @@ -0,0 +1,15 @@ +# Copyright 2013-2021 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 import * + + +class Ninja(Package): + """Dummy Ninja Package""" + + homepage = "https://ninja-build.org/" + url = "https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz" + + version('1.10.2', sha256='ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed') diff --git a/var/spack/repos/builtin.mock/packages/simple-standalone-test/package.py b/var/spack/repos/builtin.mock/packages/simple-standalone-test/package.py new file mode 100644 index 00000000000000..12ea970ba79b4c --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/simple-standalone-test/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class SimpleStandaloneTest(Package): + """This package has a simple stand-alone test features.""" + homepage = "http://www.example.com/simple_test" + url = "http://www.unit-test-should-replace-this-url/simple_test-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + def test(self): + msg = 'simple stand-alone test' + self.run_test('echo', [msg], + expected=[msg], + purpose='test: running {0}'.format(msg)) 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 d57ddf85d2cec8..8236b11766fa87 100644 --- a/var/spack/repos/builtin.mock/packages/splice-h/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-h/package.py @@ -6,7 +6,7 @@ from spack import * -class SpliceH(AutotoolsPackage): +class SpliceH(Package): """Simple package with one optional dependency""" homepage = "http://www.example.com" @@ -20,3 +20,8 @@ class SpliceH(AutotoolsPackage): depends_on('splice-z') depends_on('splice-z+foo', when='+foo') + + def install(self, spec, prefix): + with open(prefix.join('splice-h'), 'w') as f: + f.write('splice-h: {0}'.format(prefix)) + f.write('splice-z: {0}'.format(spec['splice-z'].prefix)) diff --git a/var/spack/repos/builtin.mock/packages/splice-t/package.py b/var/spack/repos/builtin.mock/packages/splice-t/package.py index f38b627e99bffa..edf373dbf5d4dd 100644 --- a/var/spack/repos/builtin.mock/packages/splice-t/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-t/package.py @@ -6,7 +6,7 @@ from spack import * -class SpliceT(AutotoolsPackage): +class SpliceT(Package): """Simple package with one optional dependency""" homepage = "http://www.example.com" @@ -16,3 +16,9 @@ class SpliceT(AutotoolsPackage): depends_on('splice-h') depends_on('splice-z') + + def install(self, spec, prefix): + with open(prefix.join('splice-t'), 'w') as f: + f.write('splice-t: {0}'.format(prefix)) + f.write('splice-h: {0}'.format(spec['splice-h'].prefix)) + f.write('splice-z: {0}'.format(spec['splice-z'].prefix)) 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 c00c936f9d6217..793dfd1cfeedc0 100644 --- a/var/spack/repos/builtin.mock/packages/splice-z/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-z/package.py @@ -6,7 +6,7 @@ from spack import * -class SpliceZ(AutotoolsPackage): +class SpliceZ(Package): """Simple package with one optional dependency""" homepage = "http://www.example.com" @@ -16,3 +16,7 @@ class SpliceZ(AutotoolsPackage): variant('foo', default=False, description='nope') variant('bar', default=False, description='nope') + + def install(self, spec, prefix): + with open(prefix.join('splice-z'), 'w') as f: + f.write('splice-z: {0}'.format(prefix)) diff --git a/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py b/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py index 748034baca3fda..467a1631fabcda 100644 --- a/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py +++ b/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py @@ -2,7 +2,6 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - from spack import * @@ -15,6 +14,4 @@ class TrivialInstallTestPackage(Package): version('1.0', '0123456789abcdef0123456789abcdef') def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make('install') + touch(join_path(prefix, 'an_installation_file')) diff --git a/var/spack/repos/builtin.mock/packages/unconstrainable-conflict/package.py b/var/spack/repos/builtin.mock/packages/unconstrainable-conflict/package.py new file mode 100644 index 00000000000000..e869b13b3fce1d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/unconstrainable-conflict/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2022 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) + +class UnconstrainableConflict(Package): + """Package with a conflict whose trigger cannot constrain its constraint.""" + + homepage = "http://www.example.com" + url = "http://www.example.com/unconstrainable-conflict-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + # Two conflicts so there's always one that is not the current platform + conflicts('target=x86_64', when='platform=darwin') + conflicts('target=aarch64', when='platform=linux') diff --git a/var/spack/repos/builtin.mock/packages/view-dir-dir/package.py b/var/spack/repos/builtin.mock/packages/view-dir-dir/package.py new file mode 100644 index 00000000000000..b85a81caa4ac2b --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/view-dir-dir/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 + + +class ViewDirDir(Package): + """Installs a /bin/x where x is a dir, in contrast to view-dir-file.""" + homepage = "http://www.spack.org" + url = "http://www.spack.org/downloads/aml-1.0.tar.gz" + has_code = False + + version('0.1.0', sha256='cc89a8768693f1f11539378b21cdca9f0ce3fc5cb564f9b3e4154a051dcea69b') + + def install(self, spec, prefix): + os.mkdir(os.path.join(prefix, 'bin')) + os.mkdir(os.path.join(prefix, 'bin', 'x')) + with open(os.path.join(prefix, 'bin', 'x', 'file_in_dir'), 'wb') as f: + f.write(b'hello world') diff --git a/var/spack/repos/builtin.mock/packages/view-dir-file/package.py b/var/spack/repos/builtin.mock/packages/view-dir-file/package.py new file mode 100644 index 00000000000000..a47e02ca24499d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/view-dir-file/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 + + +class ViewDirFile(Package): + """Installs a /bin/x where x is a file, in contrast to view-dir-dir""" + homepage = "http://www.spack.org" + url = "http://www.spack.org/downloads/aml-1.0.tar.gz" + has_code = False + + version('0.1.0', sha256='cc89a8768693f1f11539378b21cdca9f0ce3fc5cb564f9b3e4154a051dcea69b') + + def install(self, spec, prefix): + os.mkdir(os.path.join(prefix, 'bin')) + with open(os.path.join(prefix, 'bin', 'x'), 'wb') as f: + f.write(b'file') diff --git a/var/spack/repos/builtin.mock/packages/view-dir-symlinked-dir/package.py b/var/spack/repos/builtin.mock/packages/view-dir-symlinked-dir/package.py new file mode 100644 index 00000000000000..ae0d90541be80e --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/view-dir-symlinked-dir/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 + + +class ViewDirSymlinkedDir(Package): + """Installs /bin/x/file_in_symlinked_dir where x -> y is a symlinked dir. + This should be mergeable with view-dir-dir, but not with view-dir-file.""" + homepage = "http://www.spack.org" + url = "http://www.spack.org/downloads/aml-1.0.tar.gz" + has_code = False + + version('0.1.0', sha256='cc89a8768693f1f11539378b21cdca9f0ce3fc5cb564f9b3e4154a051dcea69b') + + def install(self, spec, prefix): + os.mkdir(os.path.join(prefix, 'bin')) + os.mkdir(os.path.join(prefix, 'bin', 'y')) + with open(os.path.join(prefix, 'bin', 'y', 'file_in_symlinked_dir'), 'wb') as f: + f.write(b'hello world') + os.symlink('y', os.path.join(prefix, 'bin', 'x')) diff --git a/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.patch b/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.patch index bc179c7cd2db96..b27c7e90fe5fff 100644 --- a/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.patch +++ b/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.patch @@ -350,3 +350,37 @@ diff -uprN spack-src.org/src/98_main/abinit.F90 spack-src/src/98_main/abinit.F90 codename='ABINIT'//repeat(' ',18) call herald(codename,abinit_version,ab_out) call herald(codename,abinit_version,std_out) +diff -ru spack-src.org/config/specs/corelibs.conf spack-src/config/specs/corelibs.conf +--- spack-src.org/config/specs/corelibs.conf 2021-10-14 11:14:26.000000000 +0900 ++++ spack-src/config/specs/corelibs.conf 2021-10-14 11:19:29.000000000 +0900 +@@ -242,7 +242,7 @@ + dependencies = gpu + + [68_rsprc] +-dependencies = bigdft ++dependencies = bigdft netcdf + + [69_wfdesc] + abirules = no +diff -ru spack-src.org/src/68_rsprc/Makefile.am spack-src/src/68_rsprc/Makefile.am +--- spack-src.org/src/68_rsprc/Makefile.am 2021-10-14 11:15:36.000000000 +0900 ++++ spack-src/src/68_rsprc/Makefile.am 2021-10-14 11:20:13.000000000 +0900 +@@ -36,6 +36,7 @@ + @src_53_ffts_incs@ \ + @src_incs_incs@ \ + @lib_bigdft_incs@ \ ++ @lib_netcdf_incs@ \ + @fallbacks_incs@ \ + @abi_extra_incs@ \ + @fc_mod_incs@ +diff -u spack-src/src/68_rsprc/Makefile.in.org spack-src/src/68_rsprc/Makefile.am +--- spack-src/src/68_rsprc/Makefile.in.org 2021-11-05 14:40:10.000000000 +0900 ++++ spack-src/src/68_rsprc/Makefile.in 2021-11-05 14:43:22.000000000 +0900 +@@ -845,6 +845,7 @@ + @src_53_ffts_incs@ \ + @src_incs_incs@ \ + @lib_bigdft_incs@ \ ++ @lib_netcdf_incs@ \ + @fallbacks_incs@ \ + @abi_extra_incs@ \ + @fc_mod_incs@ diff --git a/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.v9.patch b/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.v9.patch new file mode 100644 index 00000000000000..19e44dea113cf3 --- /dev/null +++ b/var/spack/repos/builtin/packages/abinit/fix_for_fujitsu.v9.patch @@ -0,0 +1,569 @@ +diff --git a/configure b/configure +--- a/configure 2021-04-30 18:25:20.000000000 +0900 ++++ b/configure 2021-10-14 16:05:13.000000000 +0900 +@@ -13019,6 +13019,30 @@ + + # Do some sanity checking of the arguments + ++ cc_info_string=`${CC} --version 2>&1 | grep 'FCC'` ++ abi_result=$cc_info_string ++ if test "${abi_result}" = ""; then ++ abi_result="no" ++ cc_info_string="" ++ abi_cc_vendor="unknown" ++ abi_cc_version="unknown" ++ else ++ ++$as_echo "#define CC_FUJITSU 1" >>confdefs.h ++ ++ abi_cc_vendor="fujitsu" ++ abi_cc_version=`echo "${abi_result}" | sed -e 's/[^0-9]*\([0-9]\)/\1/' -e 's/ .*$//'` ++ if test "${abi_cc_version}" = "${abi_result}"; then ++ abi_cc_version="unknown" ++ fi ++ abi_result="yes" ++ fi ++ ++ fi ++ if test "${abi_cc_vendor}" = "unknown"; then ++ ++ # Do some sanity checking of the arguments ++ + cc_info_string=`${CC} --version 2>/dev/null | head -n 1` + abi_result=`echo "${cc_info_string}" | grep '[Cc]lang'` + if test "${abi_result}" = ""; then +@@ -13891,6 +13915,30 @@ + + # Do some sanity checking of the arguments + ++ cxx_info_string=`${CXX} --version 2>&1|grep 'FCC'` ++ abi_result=$cxx_info_string ++ if test "${abi_result}" = ""; then ++ abi_result="no" ++ cxx_info_string="" ++ abi_cxx_vendor="unknown" ++ abi_cxx_version="unknown" ++ else ++ ++$as_echo "#define CXX_FUJITSU 1" >>confdefs.h ++ ++ abi_cxx_vendor="fujitsu" ++ abi_cxx_version=`echo "${abi_result}" | sed -e 's/[^0-9]*\([0-9]\)/\1/' -e 's/ .*$//'` ++ if test "${abi_cxx_version}" = "${abi_result}"; then ++ abi_cxx_version="unknown" ++ fi ++ abi_result="yes" ++ fi ++ ++ fi ++ if test "${abi_cxx_vendor}" = "unknown"; then ++ ++ # Do some sanity checking of the arguments ++ + cxx_info_string=`${CXX} --version 2>/dev/null | head -n 1` + abi_result=`echo "${cxx_info_string}" | grep '[Cc]lang'` + if test "${abi_result}" = ""; then +@@ -14697,6 +14745,32 @@ + fi + echo "${fc_info_string}" >>"${tmp_fc_info_file}" + ++ if test "${abi_fc_vendor}" = "unknown"; then ++ ++ # Do some sanity checking of the arguments ++ ++ fc_info_string=`${FC} --version 2>&1 | head -n 1 ` ++ abi_result=`echo "${fc_info_string}" | grep 'FRT'` ++ if test "${abi_result}" = ""; then ++ abi_result="no" ++ fc_info_string="" ++ abi_fc_vendor="unknown" ++ abi_fc_version="unknown" ++ else ++ ++$as_echo "#define FC_FUJITSU 1" >>confdefs.h ++ ++ abi_fc_vendor="fujitsu" ++ abi_fc_version=`echo "${abi_result}" | sed -e 's/[^0-9]*\([0-9]\)/\1/' -e 's/ .*$//'` ++ if test "${abi_fc_version}" = "${abi_result}"; then ++ abi_fc_version="unknown" ++ fi ++ abi_result="yes" ++ fi ++ ++ fi ++ echo "${fc_info_string}" >>"${tmp_fc_info_file}" ++ + if test "${abi_fc_vendor}" = "unknown"; then + + # Do some sanity checking of the arguments +@@ -15049,6 +15123,7 @@ + # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, + # LIBRARY_PATH; skip all such settings. + ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | ++ sed -r "s/(\-L)(\/[^ ]+)+(\/bin\/\.\.\/lib64\/nofjobj)//g" | + sed '/^Driving:/d; /^Configured with:/d; + '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` + $as_echo "$ac_fc_v_output" >&5 +@@ -15157,6 +15232,7 @@ + # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, + # LIBRARY_PATH; skip all such settings. + ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | ++ sed -r "s/(\-L)(\/[^ ]+)+(\/bin\/\.\.\/lib64\/nofjobj)//g" | + sed '/^Driving:/d; /^Configured with:/d; + '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` + $as_echo "$ac_fc_v_output" >&5 +@@ -15982,6 +16058,13 @@ + openmp='-qopenmp' + CFLAGS_PIC='-fPIC' + ;; ++ fujitsu) ++ abi_cc_vendor_hnt="fujitsu" ++ abi_cc_version_hnt="default" ++ abi_sys_spec_hnt="default" ++ CFLAGS_PIC='-fPIC' ++ CFLAGS_HINTS='-fopenmp' ++ ;; + llvm) + abi_cc_vendor_hnt="llvm" + abi_cc_version_hnt="default" +@@ -16050,6 +16133,12 @@ + CXX_LDFLAGS_HINTS='-static-libgcc -static-intel' + CXXFLAGS_PIC='-fPIC' + ;; ++ fujitsu) ++ abi_cxx_vendor_hnt="fujitsu" ++ abi_cxx_version_hnt="default" ++ abi_sys_spec_hnt="default" ++ CXXFLAGS_PIC='-fPIC' ++ ;; + llvm) + abi_cxx_vendor_hnt="llvm" + abi_cxx_version_hnt="default" +@@ -16222,6 +16311,27 @@ + FCFLAGS_HINTS='-Mextend' + FC_LDFLAGS_HINTS='' + ;; ++ fujitsu) ++ abi_fc_vendor_hnt="fujitsu" ++ abi_sys_spec_hnt="default" ++ FCFLAGS_FIXEDFORM='-Fixed -X7' ++ FCFLAGS_FREEFORM='-Free -X9' ++ FCFLAGS_MODDIR='-M ../mods' ++ FCFLAGS_PIC='-KPIC' ++ FC_LDFLAGS_HINTS='' ++ case "${abi_fc_version}" in ++ 4.*) ++ abi_fc_version_hnt="4.x" ++ FCFLAGS_OPENMP='-Kopenmp' ++ FCFLAGS_HINTS='' ++ ;; ++ *) ++ abi_fc_version_hnt="default" ++ FCFLAGS_HINTS='-Am -Ee -Ep' ++ FCFLAGS_OPENMP='--openmp' ++ ;; ++ esac ++ ;; + esac # [case: abi_fc_vendor, indent: 0, item: True] + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${abi_fc_vendor_hnt}/${abi_fc_version_hnt}/${abi_sys_spec_hnt}" >&5 +@@ -16878,6 +16988,25 @@ + ;; + esac # [case: abi_optim_flavor, indent: 2, item: True] + ;; ++ fujitsu) ++ abi_cc_vendor_opt="fujitsu" ++ abi_cc_version_opt="default" ++ abi_cpu_spec_opt="default" ++ case "${abi_optim_flavor}" in ++ safe) ++ abi_optim_flavor_opt="safe" ++ CFLAGS_OPTIM="-O2" ++ ;; ++ standard) ++ abi_optim_flavor_opt="standard" ++ CFLAGS_OPTIM="-O2" ++ ;; ++ aggressive) ++ abi_optim_flavor_opt="aggressive" ++ CFLAGS_OPTIM="-Kfast" ++ ;; ++ esac # [case: abi_optim_flavor, indent: 2, item: True] ++ ;; + llvm) + abi_cc_vendor_opt="llvm" + abi_cc_version_opt="default" +@@ -17031,6 +17160,25 @@ + ;; + esac # [case: abi_optim_flavor, indent: 2, item: True] + ;; ++ fujitsu) ++ abi_cxx_vendor_opt="fujitsu" ++ abi_cxx_version_opt="default" ++ abi_cpu_spec_opt="default" ++ case "${abi_optim_flavor}" in ++ safe) ++ abi_optim_flavor_opt="safe" ++ CXXFLAGS_OPTIM="-O2" ++ ;; ++ standard) ++ abi_optim_flavor_opt="standard" ++ CXXFLAGS_OPTIM="-O2" ++ ;; ++ aggressive) ++ abi_optim_flavor_opt="aggressive" ++ CXXFLAGS_OPTIM="-Kfast" ++ ;; ++ esac # [case: abi_optim_flavor, indent: 2, item: True] ++ ;; + llvm) + abi_cxx_vendor_opt="llvm" + abi_cxx_version_opt="default" +@@ -17302,6 +17450,46 @@ + ;; + esac # [case: abi_optim_flavor, indent: 2, item: True] + ;; ++ fujitsu) ++ abi_fc_vendor_opt="fujitsu" ++ abi_cpu_spec_opt="default" ++ case "${abi_fc_version}" in ++ 4.*) ++ abi_fc_version_opt="4.X" ++ case "${abi_optim_flavor}" in ++ safe) ++ abi_optim_flavor_opt="safe" ++ FCFLAGS_OPTIM="-O2 -Koptmsg=2 -Nlst=t" ++ ;; ++ standard) ++ abi_optim_flavor_opt="standard" ++ FCFLAGS_OPTIM="-O2 -Koptmsg=2 -Nlst=t" ++ ;; ++ aggressive) ++ abi_optim_flavor_opt="aggressive" ++ FCFLAGS_OPTIM="-Kfast -Koptmsg=2 -Nlst=t" ++ ;; ++ esac ++ ;; ++ *) ++ abi_fc_version_opt="default" ++ case "${abi_optim_flavor}" in ++ safe) ++ abi_optim_flavor_opt="safe" ++ FCFLAGS_OPTIM="-Of -X9 -Ps -Wv,-md" ++ ;; ++ standard) ++ abi_optim_flavor_opt="standard" ++ FCFLAGS_OPTIM="-Of -X9 -Ps -Wv,-md" ++ ;; ++ aggressive) ++ abi_optim_flavor_opt="aggressive" ++ FCFLAGS_OPTIM="-Of -X9 -Ps -Wv,-md" ++ ;; ++ esac ++ ;; ++ esac ++ ;; + esac # [case: abi_fc_vendor, indent: 0, item: True] + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${abi_fc_vendor_opt}/${abi_fc_version_opt}/${abi_cpu_spec_opt}" >&5 +index 3174381..ac7118f 100644 +diff --git a/shared/common/src/10_defs/defs_basis.F90 b/shared/common/src/10_defs/defs_basis.F90 +--- a/shared/common/src/10_defs/defs_basis.F90 ++++ b/shared/common/src/10_defs/defs_basis.F90 +@@ -80,7 +80,7 @@ module defs_basis + ! do not trim input strings and use character(len=500) :: msg + + integer, parameter :: fnlen=264 ! maximum length of file name variables +- integer, parameter :: strlen=2000000 ! maximum length of input string ++ integer, parameter :: strlen=65000 ! maximum length of input string + + ! The input file used to run the code, set by parsefile. + ! It will be added to the netcdf files in ntck_open_create +diff --git a/shared/common/src/14_hidewrite/m_cppopts_dumper.F90 b/shared/common/src/14_hidewrite/m_cppopts_dumper.F90 +index 9bf19f4..79d94a9 100644 +--- a/shared/common/src/14_hidewrite/m_cppopts_dumper.F90 ++++ b/shared/common/src/14_hidewrite/m_cppopts_dumper.F90 +@@ -89,6 +88,16 @@ subroutine dump_cpp_options(my_unit) + msg = "" + end if + #endif ++#if defined CC_FUJITSU ++ write(tmp,"(1x,a25)") "CC_FUJITSU" ++ msg = trim(msg)//trim(tmp) ++ msg_index = msg_index + 1 ++ if ( mod(msg_index,3) == 0 ) then ++ msg = trim(msg)//ch10 ++ write(my_unit,'(a)') msg ++ msg = "" ++ end if ++#endif + #if defined CC_GNU + write(tmp,"(1x,a25)") "CC_GNU" + msg = trim(msg)//trim(tmp) +@@ -149,6 +158,16 @@ subroutine dump_cpp_options(my_unit) + msg = "" + end if + #endif ++#if defined CXX_FUJITSU ++ write(tmp,"(1x,a25)") "CXX_FUJITSU" ++ msg = trim(msg)//trim(tmp) ++ msg_index = msg_index + 1 ++ if ( mod(msg_index,3) == 0 ) then ++ msg = trim(msg)//ch10 ++ write(my_unit,'(a)') msg ++ msg = "" ++ end if ++#endif + #if defined CXX_GNU + write(tmp,"(1x,a25)") "CXX_GNU" + msg = trim(msg)//trim(tmp) +@@ -259,6 +278,16 @@ subroutine dump_cpp_options(my_unit) + msg = "" + end if + #endif ++#if defined FC_FUJITSU ++ write(tmp,"(1x,a25)") "FC_FUJITSU" ++ msg = trim(msg)//trim(tmp) ++ msg_index = msg_index + 1 ++ if ( mod(msg_index,3) == 0 ) then ++ msg = trim(msg)//ch10 ++ write(my_unit,'(a)') msg ++ msg = "" ++ end if ++#endif + #if defined FC_GNU + write(tmp,"(1x,a25)") "FC_GNU" + msg = trim(msg)//trim(tmp) +diff --git a/src/43_wvl_wrappers/m_wvl_denspot.F90 b/src/43_wvl_wrappers/m_wvl_denspot.F90 +index 18f8785..e06ac4a 100644 +--- a/src/43_wvl_wrappers/m_wvl_denspot.F90 ++++ b/src/43_wvl_wrappers/m_wvl_denspot.F90 +@@ -88,7 +88,7 @@ subroutine wvl_denspot_set(den,gth_params,ixc,natom,nsppol,rprimd,wvl,& + real(dp), intent(in) :: rprimd(3, 3) + real(dp), intent(in) :: wvl_frmult,wvl_crmult + real(dp), intent(inout) :: xred(3,natom) +- type(wvl_denspot_type), intent(out) :: den ++ type(wvl_denspot_type), intent(inout) :: den + type(wvl_internal_type),intent(in) :: wvl + type(pseudopotential_gth_type),intent(in)::gth_params + +diff --git a/src/43_wvl_wrappers/m_wvl_wfs.F90 b/src/43_wvl_wrappers/m_wvl_wfs.F90 +index 4643fff..a1307da 100644 +--- a/src/43_wvl_wrappers/m_wvl_wfs.F90 ++++ b/src/43_wvl_wrappers/m_wvl_wfs.F90 +@@ -96,7 +96,7 @@ subroutine wvl_wfs_set(alphadiis, spinmagntarget, kpt, me, natom, nband, nkpt, n + integer, intent(in) :: natom, nkpt, nsppol, nspinor, nband, nwfshist,me,nproc + real(dp), intent(in) :: spinmagntarget, wvl_crmult, wvl_frmult, alphadiis + type(pseudopotential_type),intent(in) :: psps +- type(wvl_wf_type),intent(out) :: wfs ++ type(wvl_wf_type),intent(inout) :: wfs + type(wvl_internal_type), intent(in) :: wvl + !arrays + real(dp), intent(in) :: kpt(3,nkpt) +diff --git a/src/52_fft_mpi_noabirule/m_fftw3.F90 b/src/52_fft_mpi_noabirule/m_fftw3.F90 +index bdeb0ce..8d4e0e3 100644 +--- a/src/52_fft_mpi_noabirule/m_fftw3.F90 ++++ b/src/52_fft_mpi_noabirule/m_fftw3.F90 +@@ -4191,7 +4191,7 @@ subroutine fftw3_mpiback_wf(cplexwf,ndat,n1,n2,n3,nd1,nd2,nd3proc,& + integer,intent(in) :: cplexwf,ndat,n1,n2,n3,nd1,nd2,nd3proc + integer,intent(in) :: max1,max2,max3,m1,m2,m3,md1,md2proc,md3,comm_fft + real(dp),intent(in) :: zf(2,md1,md3,md2proc,ndat) +- real(dp),intent(out) :: zr(2,nd1,nd2,nd3proc,ndat) ++ real(dp),intent(inout) :: zr(2,nd1,nd2,nd3proc,ndat) + + #ifdef HAVE_FFTW3 + !Local variables------------------------------- +@@ -4548,7 +4548,7 @@ subroutine fftw3_mpiforw_wf(cplexwf,ndat,n1,n2,n3,nd1,nd2,nd3proc,& + integer,intent(in) :: max1,max2,max3,m1,m2,m3,md1,md2proc,md3,comm_fft + !arrays + real(dp),intent(inout) :: zr(2,nd1,nd2,nd3proc,ndat) +- real(dp),intent(out) :: zf(2,md1,md3,md2proc,ndat) ++ real(dp),intent(inout) :: zf(2,md1,md3,md2proc,ndat) + + !Local variables------------------------------- + !scalars +@@ -4896,7 +4896,7 @@ subroutine fftw3_mpiback(cplex,ndat,n1,n2,n3,nd1,nd2,nd3,nd1eff,nd2proc,nd3proc, + ! real space input + integer,intent(in) :: cplex,ndat,n1,n2,n3,nd1,nd2,nd3,nd1eff,nd2proc,nd3proc,option,comm_fft + real(dp),intent(in) :: zf(2,nd1,nd3,nd2proc,ndat) +- real(dp),intent(out) :: zr(2,nd1eff,nd2,nd3proc,ndat) ++ real(dp),intent(inout) :: zr(2,nd1eff,nd2,nd3proc,ndat) + + !Local variables------------------------------- + !scalaras +@@ -5197,7 +5197,7 @@ subroutine fftw3_mpiforw(cplex,ndat,n1,n2,n3,nd1,nd2,nd3,nd1eff,nd2proc,nd3proc, + integer,intent(in) :: ndat,n1,n2,n3,nd1,nd2,nd3,nd1eff,nd2proc,nd3proc,option + !arrays + real(dp),intent(in) :: zr(2,nd1eff,nd2,nd3proc,ndat) +- real(dp),intent(out) :: zf(2,nd1,nd3,nd2proc,ndat) ++ real(dp),intent(inout) :: zf(2,nd1,nd3,nd2proc,ndat) + + !Local variables------------------------------- + !scalars +@@ -6379,7 +6379,7 @@ subroutine fftw3_mpiback_manywf(cplexwf,ndat,n1,n2,n3,nd1,nd2,nd3proc,& + integer,intent(in) :: cplexwf,ndat,n1,n2,n3,nd1,nd2,nd3proc + integer,intent(in) :: max1,max2,max3,m1,m2,m3,md1,md2proc,md3,comm_fft + real(dp),intent(in) :: zf(2,md1,md3,md2proc,ndat) +- real(dp),intent(out) :: zr(2,nd1,nd2,nd3proc,ndat) ++ real(dp),intent(inout) :: zr(2,nd1,nd2,nd3proc,ndat) + + #ifdef HAVE_FFTW3 + !Local variables------------------------------- +@@ -6733,7 +6733,7 @@ subroutine fftw3_mpiforw_manywf(cplexwf,ndat,n1,n2,n3,nd1,nd2,nd3proc,& + integer,intent(in) :: max1,max2,max3,m1,m2,m3,md1,md2proc,md3,comm_fft + !arrays + real(dp),intent(inout) :: zr(2,nd1,nd2,nd3proc,ndat) +- real(dp),intent(out) :: zf(2,md1,md3,md2proc,ndat) ++ real(dp),intent(inout) :: zf(2,md1,md3,md2proc,ndat) + + !Local variables------------------------------- + !scalars +diff --git a/src/62_poisson/m_psolver.F90 b/src/62_poisson/m_psolver.F90 +index 1f4a20a..b4ba3cf 100644 +--- a/src/62_poisson/m_psolver.F90 ++++ b/src/62_poisson/m_psolver.F90 +@@ -110,7 +110,7 @@ subroutine psolver_rhohxc(enhartr, enxc, envxc, icoulomb, ixc, & + integer,intent(in) :: usexcnhat,usepaw,xclevel + real(dp),intent(in) :: rprimd(3,3) + real(dp), intent(in) :: xc_denpos +- real(dp), intent(out) :: enxc, envxc, enhartr, vxcavg ++ real(dp), intent(inout) :: enxc, envxc, enhartr, vxcavg + type(mpi_type), intent(in) :: mpi_enreg + type(wvl_internal_type), intent(in) :: wvl + type(wvl_denspot_type), intent(inout) :: wvl_den +@@ -120,8 +120,8 @@ subroutine psolver_rhohxc(enhartr, enxc, envxc, icoulomb, ixc, & + real(dp),intent(in) :: xccc3d(n3xccc) + real(dp),intent(in) :: nhat(nfft,nspden*nhatdim) + real(dp),intent(inout) :: rhor(nfft, nspden) +- real(dp),intent(out) :: vhartr(nfft) +- real(dp),intent(out) :: vxc(nfft, nspden) ++ real(dp),intent(inout) :: vhartr(nfft) ++ real(dp),intent(inout) :: vxc(nfft, nspden) + + !Local variables------------------------------- + #if defined HAVE_BIGDFT +@@ -562,12 +562,12 @@ subroutine psolver_hartree(enhartr, hgrid, icoulomb, me, mpi_comm, nfft, ngfft, + !Arguments ------------------------------------ + !scalars + integer, intent(in) :: nfft, nspden, icoulomb, usewvl, mpi_comm, me, nproc, nscforder +- real(dp), intent(out) :: enhartr ++ real(dp), intent(inout) :: enhartr + !arrays + integer, intent(in) :: ngfft(3) + real(dp),intent(in) :: hgrid(3) + real(dp),intent(in) :: rhor(nfft,nspden) +- real(dp),intent(out) :: vhartr(nfft) ++ real(dp),intent(inout) :: vhartr(nfft) + + !Local variables------------------------------- + #if defined HAVE_BIGDFT +diff --git a/src/62_wvl_wfs/m_wvl_psi.F90 b/src/62_wvl_wfs/m_wvl_psi.F90 +index 7eb4b9c..bcb3b08 100644 +--- a/src/62_wvl_wfs/m_wvl_psi.F90 ++++ b/src/62_wvl_wfs/m_wvl_psi.F90 +@@ -234,16 +234,16 @@ subroutine wvl_psitohpsi(alphamix,eexctX, eexcu, ehart, ekin_sum, epot_sum, epro + !scalars + integer, intent(in) :: me, nproc, itrp, iter, iscf, natom, nfft, nspden + real(dp), intent(in) :: alphamix +- real(dp), intent(out) :: rpnrm ++ real(dp), intent(inout) :: rpnrm + logical, intent(in) :: scf + logical, intent(in) :: wvlbigdft + type(wvl_data), intent(inout) :: wvl + real(dp), intent(inout) :: eexctX,eSIC_DC,ehart,eexcu,vexcu, ekin_sum, epot_sum, eproj_sum +- real(dp), dimension(6), intent(out) :: xcstr ++ real(dp), dimension(6), intent(inout) :: xcstr + real(dp), intent(inout) :: xcart(3, natom) + !arrays +- real(dp),intent(out), optional :: vxc(nfft,nspden) +- real(dp),intent(out), optional :: vtrial(nfft,nspden) ++ real(dp),intent(inout), optional :: vxc(nfft,nspden) ++ real(dp),intent(inout), optional :: vtrial(nfft,nspden) + + !Local variables------------------------------- + !scalars +@@ -454,7 +454,7 @@ subroutine wvl_tail_corrections(dtset, energies, etotal, mpi_enreg, psps, wvl, x + + !Arguments ------------------------------------ + !scalars +- real(dp),intent(out) :: etotal ++ real(dp),intent(inout) :: etotal + type(MPI_type),intent(in) :: mpi_enreg + type(dataset_type),intent(in) :: dtset + type(energies_type),intent(inout) :: energies +diff --git a/src/67_common/m_mklocl_realspace.F90 b/src/67_common/m_mklocl_realspace.F90 +index 423dd4d..ba43c6e 100644 +--- a/src/67_common/m_mklocl_realspace.F90 ++++ b/src/67_common/m_mklocl_realspace.F90 +@@ -1622,7 +1622,7 @@ subroutine local_forces_wvl(iproc,natom,rxyz,hxh,hyh,hzh,n1,n2,n3,n3pi,i3s,n1i,n + !arrays + real(dp),intent(in) :: rxyz(3,natom) + real(dp),dimension(*),intent(in) :: rho,pot +- real(dp),intent(out) :: floc(3,natom) ++ real(dp),intent(inout) :: floc(3,natom) + + !Local variables ------------------------- + #if defined HAVE_BIGDFT +diff --git a/src/67_common/mkcore_wvl.F90 b/src/67_common/mkcore_wvl.F90 +index fc58fbc..6960e64 100644 +--- a/src/67_common/mkcore_wvl.F90 ++++ b/src/67_common/mkcore_wvl.F90 +@@ -127,7 +127,7 @@ subroutine mkcore_wvl(atindx1,corstr,grxc,natom,nattyp,nfft,nspden,ntypat,n1xccc + integer,intent(in) :: atindx1(natom),nattyp(ntypat) + real(dp),intent(in) :: rprimd(3,3),xccc1d(n1xccc,6,ntypat),xcccrc(ntypat),xred(3,natom) + real(dp),intent(in),target :: vxc(nfft,nspden) +- real(dp),intent(out) :: corstr(6),grxc(3,natom) ++ real(dp),intent(inout) :: corstr(6),grxc(3,natom) + real(dp),intent(inout) :: xccc3d(n3xccc) + type(pawrad_type),intent(in) :: pawrad(:) + type(pawtab_type),intent(in) :: pawtab(:) +@@ -568,8 +568,8 @@ subroutine mkcore_wvl_old(atindx1,corstr,dyfrx2,geocode,grxc,h,natom,& + real(dp),intent(in) :: psppar(0:4,0:6,ntypat),rprimd(3,3) + real(dp),intent(in)::xred(3,natom) + real(dp),intent(in)::vxc(nfft,nspden) +- real(dp),intent(out)::xccc3d(n3xccc) +- real(dp),intent(out) :: corstr(6),dyfrx2(3,3,natom),grxc(3,natom) ++ real(dp),intent(inout)::xccc3d(n3xccc) ++ real(dp),intent(inout) :: corstr(6),dyfrx2(3,3,natom),grxc(3,natom) + type(pawtab_type),intent(in) :: pawtab(ntypat) + type(pawrad_type),intent(in) :: pawrad(ntypat) + +diff --git a/src/78_effpot/m_spmat_base.F90 b/src/78_effpot/m_spmat_base.F90 +index be4e8b9..0590a33 100644 +--- a/src/78_effpot/m_spmat_base.F90 ++++ b/src/78_effpot/m_spmat_base.F90 +@@ -113,7 +113,7 @@ contains + subroutine base_mat2d_t_mv(self, x, b) + class(base_mat2d_t), intent(in) :: self + real(dp), intent(in) :: x(self%ncol) +- real(dp), intent(out) :: b(self%nrow) ++ real(dp), intent(inout) :: b(self%nrow) + ABI_UNUSED_A(x) + ABI_UNUSED_A(b) + end subroutine base_mat2d_t_mv +diff --git a/src/78_effpot/m_spmat_csr.F90 b/src/78_effpot/m_spmat_csr.F90 +index 389abd3..d5904e7 100644 +--- a/src/78_effpot/m_spmat_csr.F90 ++++ b/src/78_effpot/m_spmat_csr.F90 +@@ -201,7 +201,7 @@ contains + subroutine CSR_mat_t_mv(self, x, b) + class(CSR_mat_t), intent(in):: self + real(dp), intent(in) :: x(self%ncol) +- real(dp), intent(out) :: b(self%nrow) ++ real(dp), intent(inout) :: b(self%nrow) + integer::irow, i1, i2, i + b(:)=0.0d0 + !$OMP PARALLEL DO private(i, i1, i2) +diff --git a/src/78_effpot/m_spmat_dense.F90 b/src/78_effpot/m_spmat_dense.F90 +index c861e47..a53b46f 100644 +--- a/src/78_effpot/m_spmat_dense.F90 ++++ b/src/78_effpot/m_spmat_dense.F90 +@@ -114,7 +114,7 @@ contains + subroutine dense_mat_t_mv(self, x, b) + class(dense_mat_t), intent(in) :: self + real(dp), intent(in) :: x(self%ncol) +- real(dp), intent(out) :: b(self%nrow) ++ real(dp), intent(inout) :: b(self%nrow) + call dgemv("N", self%nrow, self%ncol, 1.0d0,self%mat , 2, x, 1, 0.0d0, b, 1) + end subroutine dense_mat_t_mv + diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index ff6c4ff6281c99..f489ee78099a1c 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -30,6 +30,7 @@ class Abinit(AutotoolsPackage): homepage = 'https://www.abinit.org/' url = 'https://www.abinit.org/sites/default/files/packages/abinit-8.6.3.tar.gz' + version('9.6.1', sha256='b6a12760fd728eb4aacca431ae12150609565bedbaa89763f219fcd869f79ac6') version('9.4.2', sha256='d40886f5c8b138bb4aa1ca05da23388eb70a682790cfe5020ecce4db1b1a76bc') version('8.10.3', sha256='ed626424b4472b93256622fbb9c7645fa3ffb693d4b444b07d488771ea7eaa75') version('8.10.2', sha256='4ee2e0329497bf16a9b2719fe0536cc50c5d5a07c65e18edaf15ba02251cbb73') @@ -99,10 +100,11 @@ class Abinit(AutotoolsPackage): # need openmp threading for abinit+openmp # TODO: The logic here can be reversed with the new concretizer. Instead of # using `conflicts`, `depends_on` could be used instead. + for fftw in ['amdfftw', 'cray-fftw', 'fujitsu-fftw', 'fftw']: + conflicts('+openmp', when='^{0}~openmp'.format(fftw), + msg='Need to request {0} +openmp'.format(fftw)) + mkl_message = 'Need to set dependent variant to threads=openmp' - conflicts('+openmp', - when='^fftw~openmp', - msg='Need to request fftw +openmp') conflicts('+openmp', when='^intel-mkl threads=none', msg=mkl_message) @@ -113,13 +115,22 @@ class Abinit(AutotoolsPackage): when='^intel-parallel-studio +mkl threads=none', msg=mkl_message) + conflicts('+openmp', + when='^fujitsu-ssl2 ~parallel', + msg='Need to request fujitsu-ssl2 +parallel') + + conflicts('~openmp', + when='^fujitsu-ssl2 +parallel', + msg='Need to request fujitsu-ssl2 ~parallel') + patch('rm_march_settings.patch', when='@:8') patch('rm_march_settings_v9.patch', when='@9:') # Fix detection of Fujitsu compiler # Fix configure not to collect the option that causes an error # Fix intent(out) and unnecessary rewind to avoid compile error - patch('fix_for_fujitsu.patch', when='%fj') + patch('fix_for_fujitsu.patch', when='@:8 %fj') + patch('fix_for_fujitsu.v9.patch', when='@9: %fj') def configure_args(self): @@ -129,8 +140,12 @@ def configure_args(self): options += self.with_or_without('libxml2') oapp = options.append - oapp('--with-optim-flavor={0}' - .format(self.spec.variants['optimization-flavor'].value)) + if '@:8' in spec: + oapp('--enable-optim={0}' + .format(self.spec.variants['optimization-flavor'].value)) + else: + oapp('--with-optim-flavor={0}' + .format(self.spec.variants['optimization-flavor'].value)) if '+wannier90' in spec: if '@:8' in spec: @@ -184,6 +199,8 @@ def configure_args(self): linalg_flavor = 'mkl' elif '@9:' in spec and '^openblas' in spec: linalg_flavor = 'openblas' + elif '@9:' in spec and '^fujitsu-ssl2' in spec: + linalg_flavor = 'openblas' else: linalg_flavor = 'custom' @@ -201,7 +218,7 @@ def configure_args(self): if '^mkl' in spec: fftflavor = 'dfti' - elif '^fftw' in spec: + else: if '+openmp' in spec: fftflavor, fftlibs = 'fftw3-threads', '-lfftw3_omp -lfftw3 -lfftw3f' else: @@ -213,11 +230,11 @@ def configure_args(self): if '^mkl' in spec: oapp('--with-fft-incs={0}'.format(spec['fftw-api'].headers.cpp_flags)) oapp('--with-fft-libs={0}'.format(spec['fftw-api'].libs.ld_flags)) - elif '^fftw' in spec: + else: options.extend([ - '--with-fft-incs={0}'.format(spec['fftw'].headers.cpp_flags), + '--with-fft-incs={0}'.format(spec['fftw-api'].headers.cpp_flags), '--with-fft-libs=-L{0} {1}'.format( - spec['fftw'].prefix.lib, fftlibs), + spec['fftw-api'].prefix.lib, fftlibs), ]) else: if '^mkl' in spec: @@ -225,11 +242,11 @@ def configure_args(self): 'FFT_CPPFLAGS={0}'.format(spec['fftw-api'].headers.cpp_flags), 'FFT_LIBs={0}'.format(spec['fftw-api'].libs.ld_flags), ]) - elif '^fftw' in spec: + else: options.extend([ - 'FFTW3_CPPFLAGS={0}'.format(spec['fftw'].headers.cpp_flags), + 'FFTW3_CPPFLAGS={0}'.format(spec['fftw-api'].headers.cpp_flags), 'FFTW3_LIBS=-L{0} {1}'.format( - spec['fftw'].prefix.lib, fftlibs), + spec['fftw-api'].prefix.lib, fftlibs), ]) # LibXC library @@ -251,7 +268,9 @@ def configure_args(self): # Since version 8, Abinit started to use netcdf4 + hdf5 and we have # to link with the high level HDF5 library options.extend([ - '--with-netcdf-incs={0}'.format(netcdff.headers.cpp_flags), + '--with-netcdf-incs={0}'.format( + netcdfc.headers.cpp_flags + ' ' + + netcdff.headers.cpp_flags), '--with-netcdf-libs={0}'.format( netcdff.libs.ld_flags + ' ' + hdf5.libs.ld_flags ), diff --git a/var/spack/repos/builtin/packages/abyss/package.py b/var/spack/repos/builtin/packages/abyss/package.py index 7494eb0514add8..efba4eb25e68a9 100644 --- a/var/spack/repos/builtin/packages/abyss/package.py +++ b/var/spack/repos/builtin/packages/abyss/package.py @@ -6,6 +6,7 @@ import numbers from spack import * +from spack.pkg.builtin.boost import Boost def is_multiple_32(x): @@ -42,6 +43,8 @@ class Abyss(AutotoolsPackage): depends_on('mpi') depends_on('boost@:1.50.0,1.53.0:', when='@2.0.2:') depends_on('boost@:1.50.0,1.53.0:1.59.0', when='@:1.5.2') + # Maintainers: Is boost really a dependency? In what conditions? + depends_on(Boost.with_default_variants) depends_on('sparsehash') depends_on('sqlite') depends_on('libtool') diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index f27bed177dab96..134cd4882aee59 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -39,6 +39,8 @@ class Acts(CMakePackage, CudaPackage): # Supported Acts versions version('main', branch='main') version('master', branch='main', deprecated=True) # For compatibility + version('17.1.0', commit='0d9c3a6da022da48d6401e10c273896a1f775a9e', submodules=True) + version('17.0.0', commit='ccbf4c7d4ec3698bac4db9687fab2455a3f9c203', submodules=True) version('16.0.0', commit='9bd86921155e708189417b5a8019add10fd5b273', submodules=True) version('15.1.0', commit='a96e6db7de6075e85b6d5346bc89845eeb89b324', submodules=True) version('15.0.1', commit='b9469b8914f6a1bc47af0998eb7c9e8e20e4debc', submodules=True) @@ -115,7 +117,8 @@ class Acts(CMakePackage, CudaPackage): # Variants that affect the core Acts library variant('benchmarks', default=False, description='Build the performance benchmarks', when='@0.16:') - variant('examples', default=False, description='Build the examples', when='@0.23: +digitization +fatras +identification +json +tgeo') + variant('examples', default=False, description='Build the examples', when='@0.23:16 +digitization +fatras +identification +json +tgeo') + variant('examples', default=False, description='Build the examples', when='@17: +fatras +identification +json +tgeo') variant('integration_tests', default=False, description='Build the integration tests') variant('unit_tests', default=False, description='Build the unit tests') variant('log_failure_threshold', default='MAX', description='Log level above which examples should auto-crash') @@ -123,7 +126,7 @@ class Acts(CMakePackage, CudaPackage): # Variants that enable / disable Acts plugins variant('autodiff', default=False, description='Build the auto-differentiation plugin', when='@1.2:') variant('dd4hep', default=False, description='Build the DD4hep plugin', when='+tgeo') - variant('digitization', default=False, description='Build the geometric digitization plugin') + variant('digitization', default=False, description='Build the geometric digitization plugin', when='@:16') variant('fatras', default=False, description='Build the FAst TRAcking Simulation package', when='@0.16:') variant('fatras_geant4', default=False, description='Build Geant4 Fatras package') variant('identification', default=False, description='Build the Identification plugin') @@ -144,7 +147,7 @@ class Acts(CMakePackage, CudaPackage): # Build dependencies # FIXME: Use spack's vecmem package once there is one # (https://github.com/acts-project/acts/pull/998) - depends_on('autodiff @0.6:', when='@develop +autodiff') + depends_on('autodiff @0.6:', when='@17: +autodiff') depends_on('autodiff @0.5.11:0.5.99', when='@1.2:16 +autodiff') depends_on('boost @1.62:1.69 +program_options +test', when='@:0.10.3') depends_on('boost @1.71: +filesystem +program_options +test', when='@0.10.4:') @@ -202,7 +205,6 @@ def plugin_cmake_variant(plugin_name, spack_variant): cmake_variant("BENCHMARKS", "benchmarks"), plugin_cmake_variant("CUDA", "cuda"), plugin_cmake_variant("DD4HEP", "dd4hep"), - plugin_cmake_variant("DIGITIZATION", "digitization"), cmake_variant("EXAMPLES", "examples"), example_cmake_variant("DD4HEP", "dd4hep"), example_cmake_variant("GEANT4", "geant4"), @@ -241,4 +243,7 @@ def plugin_cmake_variant(plugin_name, spack_variant): elif spec.satisfies('@0.14.0: +json'): args.append("-DACTS_USE_BUNDLED_NLOHMANN_JSON=OFF") + if spec.satisfies('@:16'): + args.append(plugin_cmake_variant("DIGITIZATION", "digitization")) + return args diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index ffd12861280753..d6c4d767029178 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -106,8 +106,8 @@ class Adios(AutotoolsPackage): patch('zfp051.patch', when='@1.11.0:1.13.1') # Fix a bug in configure.ac that causes automake issues on RHEL 7.7 - patch('https://github.com/ornladios/ADIOS/pull/207.patch', when='@1.12.0: +mpi', - sha256='01113e9efb929d71c28bf33cc8b7f215d85195ec700e99cb41164e2f8f830640') + patch('https://github.com/ornladios/ADIOS/pull/207.patch?full_index=1', when='@1.12.0: +mpi', + sha256='aea47e56013b57c2d5d36e23e0ae6010541c3333a84003784437768c2e350b05') def validate(self, spec): """Checks if incompatible variants have been activated at the same time diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index 593bd0099065ca..9169af460dec2d 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -8,12 +8,12 @@ from spack import * -class Adios2(CMakePackage): +class Adios2(CMakePackage, CudaPackage): """The Adaptable Input Output System version 2, developed in the Exascale Computing Program""" homepage = "https://csmd.ornl.gov/software/adios2" - url = "https://github.com/ornladios/ADIOS2/archive/v2.6.0.tar.gz" + url = "https://github.com/ornladios/ADIOS2/archive/v2.8.0.tar.gz" git = "https://github.com/ornladios/ADIOS2.git" maintainers = ['ax3l', 'chuckatkins', 'williamfgc'] @@ -21,6 +21,8 @@ class Adios2(CMakePackage): tags = ['e4s'] version('master', branch='master') + version('2.8.0', sha256='5af3d950e616989133955c2430bd09bcf6bad3a04cf62317b401eaf6e7c2d479', + preferred=True) version('2.7.1', sha256='c8e237fd51f49d8a62a0660db12b72ea5067512aa7970f3fcf80b70e3f87ca3e') version('2.7.0', sha256='4b5df1a1f92d7ff380416dec7511cfcfe3dc44da27e486ed63c3e6cffb173924') version('2.6.0', sha256='45b41889065f8b840725928db092848b8a8b8d1bfae1b92e72f8868d1c76216c') @@ -28,61 +30,56 @@ class Adios2(CMakePackage): version('2.4.0', sha256='50ecea04b1e41c88835b4b3fd4e7bf0a0a2a3129855c9cc4ba6cf6a1575106e2') version('2.3.1', sha256='3bf81ccc20a7f2715935349336a76ba4c8402355e1dc3848fcd6f4c3c5931893') - # general build options - variant('mpi', default=True, description='Enable MPI') + # General build options variant('build_type', default='Release', description='CMake build type', values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) - variant('shared', default=True, - description='Also build shared libraries') - variant('pic', default=True, - description='Enable position independent code ' - '(for usage of static in shared downstream deps)') - variant('endian_reverse', default=False, - description='Enable endian conversion if a different ' - 'endianness is detected between write and read.') - - # compression libraries - variant('blosc', default=True, - description='Enable Blosc compression') - variant('bzip2', default=True, - description='Enable BZip2 compression') - variant('zfp', default=True, - description='Enable ZFP compression') - variant('png', default=True, - description='Enable PNG compression') - variant('sz', default=True, - description='Enable SZ compression') - - # transport engines - variant('sst', default=True, - description='Enable the SST staging engine') - variant('dataman', default=False, + + # 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 + # library build types: + # shared (which is implicitly w/ pic) + # Implemented by +shared +pic + # static w/o pic + # Implemented by ~shared ~pic + # static w/ pic + # Implemented by ~shared +pic + # shared w/o pic is not a valid configuration because shared libraries are Position + # Independent # Code by design. We're not inherently tied to this approach and can + # change how we're supporting differnt library types in the package at anytime if + # spack decides on a standardized way of doing it across packages + variant('shared', default=True, when='+pic', description='Build shared libraries') + variant('pic', default=True, description='Build pic-enabled static libraries') + + # Features + variant('mpi', default=True, description='Enable MPI') + + # Compression libraries + variant('blosc', default=True, when='@2.4:', description='Enable Blosc compression') + 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') + + # Rransport engines + variant('sst', default=True, description='Enable the SST staging engine') + variant('dataman', default=False, when='+shared', description='Enable the DataMan engine for WAN transports') - variant('dataspaces', default=False, + variant('dataspaces', default=False, when='@2.5:', description='Enable support for DATASPACES') - variant('ssc', default=True, - description='Enable the SSC staging engine') - variant('hdf5', default=False, - description='Enable the HDF5 engine') - - # optional language bindings, C++11 and C always provided - variant('python', default=False, - description='Enable the Python bindings') - variant('fortran', default=True, - description='Enable the Fortran bindings') - - # requires mature C++11 implementations + variant('ssc', default=True, description='Enable the SSC staging engine') + variant('hdf5', default=False, description='Enable the HDF5 engine') + + # Optional language bindings, C++11 and C always provided + variant('cuda', default=False, when='@2.8:', description='Enable CUDA support') + variant('python', default=False, description='Enable the Python bindings') + variant('fortran', default=True, description='Enable the Fortran bindings') + + # Requires mature C++11 implementations conflicts('%gcc@:4.7') conflicts('%intel@:15') conflicts('%pgi@:14') - # shared libs must have position-independent code - conflicts('+shared ~pic') - - # DataMan needs dlopen - conflicts('+dataman', when='~shared') - depends_on('cmake@3.12.0:', type='build') depends_on('pkgconfig', type='build') @@ -95,22 +92,22 @@ class Adios2(CMakePackage): depends_on('libzmq', when='+dataman') depends_on('dataspaces@1.8.0:', when='+dataspaces') - depends_on('hdf5', when='+hdf5') + depends_on('hdf5~mpi', when='+hdf5~mpi') depends_on('hdf5+mpi', when='+hdf5+mpi') - depends_on('c-blosc', when='@2.4: +blosc') - depends_on('bzip2', when='@2.4: +bzip2') - depends_on('libpng@1.6:', when='@2.4: +png') + depends_on('c-blosc', when='+blosc') + depends_on('bzip2', when='+bzip2') + depends_on('libpng@1.6:', when='+png') depends_on('zfp@0.5.1:', when='+zfp') depends_on('sz@2.0.2.0:', when='+sz') extends('python', when='+python') depends_on('python@2.7:2.8,3.5:', when='@:2.4.0 +python', type=('build', 'run')) - depends_on('python@3.5:', when='@2.5.0: +python', type=('build', 'run')) - depends_on('python@2.7:2.8,3.5:', when='@:2.4.0', type='test') - depends_on('python@3.5:', when='@2.5.0:', type='test') - depends_on('py-numpy@1.6.1:', type=('build', 'run'), when='+python') - depends_on('py-mpi4py@2.0.0:', type=('build', 'run'), when='+mpi +python') + depends_on('python@2.7:2.8,3.5:', when='@:2.4.0', type='test') + depends_on('python@3.5:', when='@2.5.0: +python', type=('build', 'run')) + depends_on('python@3.5:', when='@2.5.0:', type='test') + depends_on('py-numpy@1.6.1:', when='+python', type=('build', 'run')) + depends_on('py-mpi4py@2.0.0:', when='+mpi +python', type=('build', 'run')) # Fix findmpi when called by dependees # See https://github.com/ornladios/ADIOS2/pull/1632 @@ -131,8 +128,8 @@ class Adios2(CMakePackage): # Add missing include # https://github.com/ornladios/adios2/pull/2710 - patch('https://github.com/ornladios/adios2/pull/2710.patch', when='@:2.7.1', - sha256='8d301e8232baf4049b547f22bd73774309662017a62dac36360d2965907062bf') + patch('https://github.com/ornladios/adios2/pull/2710.patch?full_index=1', when='@:2.7.1', + sha256='8221073d1b2f8944395a88a5d60a15c7370646b62f5fc6309867bbb6a8c2096c') @when('%fj') def patch(self): @@ -154,33 +151,29 @@ def cmake_args(self): from_variant = self.define_from_variant args = [ + from_variant('CMAKE_POSITION_INDEPENDENT_CODE', 'pic'), from_variant('BUILD_SHARED_LIBS', 'shared'), - '-DADIOS2_BUILD_EXAMPLES=OFF', - from_variant('ADIOS2_USE_MPI', 'mpi'), - '-DADIOS2_USE_MGARD=OFF', - from_variant('ADIOS2_USE_ZFP', 'zfp'), - from_variant('ADIOS2_USE_SZ', 'sz'), + from_variant('ADIOS2_USE_Blosc', 'blosc'), + from_variant('ADIOS2_USE_BZip2', 'bzip2'), from_variant('ADIOS2_USE_DataMan', 'dataman'), - from_variant('ADIOS2_USE_SST', 'sst'), + from_variant('ADIOS2_USE_DataSpaces', 'dataspaces'), + from_variant('ADIOS2_USE_Fortran', 'fortran'), from_variant('ADIOS2_USE_HDF5', 'hdf5'), + from_variant('ADIOS2_USE_MPI', 'mpi'), + from_variant('ADIOS2_USE_PNG', 'png'), from_variant('ADIOS2_USE_Python', 'python'), - from_variant('ADIOS2_USE_Fortran', 'fortran'), - from_variant('ADIOS2_USE_Endian_Reverse', 'endian_reverse'), + from_variant('ADIOS2_USE_SSC', 'ssc'), + from_variant('ADIOS2_USE_SST', 'sst'), + from_variant('ADIOS2_USE_SZ', 'sz'), + from_variant('ADIOS2_USE_ZFP', 'zfp'), + from_variant('ADIOS2_USE_CUDA', 'cuda'), self.define('BUILD_TESTING', self.run_tests), + 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.version >= Version('2.4.0'): - args.append(from_variant('ADIOS2_USE_Blosc', 'blosc')) - args.append(from_variant('ADIOS2_USE_BZip2', 'bzip2')) - args.append(from_variant('ADIOS2_USE_PNG', 'png')) - args.append(from_variant('ADIOS2_USE_SSC', 'ssc')) - - if spec.version >= Version('2.5.0'): - args.append(from_variant('ADIOS2_USE_DataSpaces', 'dataspaces')) - - if spec.version >= Version('2.6.0'): - args.append('-DADIOS2_USE_IME=OFF') - if '+sst' in spec: args.extend([ # Broken dependency package @@ -193,18 +186,14 @@ def cmake_args(self): '-DCMAKE_DISABLE_FIND_PACKAGE_NVSTREAM=TRUE' ]) - if spec.satisfies('~shared'): - args.append(from_variant('CMAKE_POSITION_INDEPENDENT_CODE', 'pic')) - - if spec.satisfies('%fj'): + if '%fj' in spec: args.extend([ '-DCMAKE_Fortran_SUBMODULE_EXT=.smod', '-DCMAKE_Fortran_SUBMODULE_SEP=.' ]) - if spec.satisfies('+python') or self.run_tests: - args.append('-DPYTHON_EXECUTABLE:FILEPATH=%s' - % spec['python'].command.path) + if '+python' in spec or self.run_tests: + args.append('-DPYTHON_EXECUTABLE:FILEPATH=%s' % spec['python'].command.path) return args @@ -213,7 +202,7 @@ def libs(self): spec = self.spec libs_to_seek = set() - if spec.satisfies('@2.6:'): + if '@2.6:' in spec: libs_to_seek.add('libadios2_core') libs_to_seek.add('libadios2_c') libs_to_seek.add('libadios2_cxx11') @@ -227,8 +216,7 @@ def libs(self): if '+fortran' in spec: libs_to_seek.add('libadios2_fortran_mpi') - if (self.spec.satisfies('@2.7: +shared+hdf5') and - self.spec['hdf5'].satisfies('@1.12:')): + if '@2.7: +shared+hdf5' in spec and '@1.12:' in spec['hdf5']: libs_to_seek.add('libadios2_h5vol') else: diff --git a/var/spack/repos/builtin/packages/akantu/package.py b/var/spack/repos/builtin/packages/akantu/package.py index 024a7b99cdd47a..55dc467d944a5f 100644 --- a/var/spack/repos/builtin/packages/akantu/package.py +++ b/var/spack/repos/builtin/packages/akantu/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Akantu(CMakePackage): @@ -30,7 +31,7 @@ class Akantu(CMakePackage): description="Activates python bindings") depends_on('boost@:1.66', when='@:3.0') - depends_on('boost') + depends_on(Boost.with_default_variants) depends_on('lapack') depends_on('cmake@3.5.1:', type='build') depends_on('python', when='+python', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/aluminum/package.py b/var/spack/repos/builtin/packages/aluminum/package.py index 3c912d06524c57..1fb57efac91163 100644 --- a/var/spack/repos/builtin/packages/aluminum/package.py +++ b/var/spack/repos/builtin/packages/aluminum/package.py @@ -68,6 +68,10 @@ def cmake_args(self): '-DALUMINUM_ENABLE_ROCM:BOOL=%s' % ('+rocm' in spec)] if '+cuda' in spec: + if self.spec.satisfies('%clang'): + for flag in self.spec.compiler_flags['cxxflags']: + if 'gcc-toolchain' in flag: + args.append('-DCMAKE_CUDA_FLAGS=-Xcompiler={0}'.format(flag)) if spec.satisfies('^cuda@11.0:'): args.append('-DCMAKE_CUDA_STANDARD=17') else: @@ -77,6 +81,10 @@ def cmake_args(self): arch_str = ";".join(archs) args.append('-DCMAKE_CUDA_ARCHITECTURES=%s' % arch_str) + if (spec.satisfies('%cce') and + spec.satisfies('^cuda+allow-unsupported-compilers')): + args.append('-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler') + if spec.satisfies('@0.5:'): args.extend([ '-DALUMINUM_ENABLE_HOST_TRANSFER:BOOL=%s' % ('+ht' in spec), diff --git a/var/spack/repos/builtin/packages/amber/package.py b/var/spack/repos/builtin/packages/amber/package.py index 944706052545b2..26ceba87dc8ad9 100644 --- a/var/spack/repos/builtin/packages/amber/package.py +++ b/var/spack/repos/builtin/packages/amber/package.py @@ -104,6 +104,10 @@ class Amber(Package, CudaPackage): patch(patch_url_str.format(ver, num), sha256=checksum, level=0, when='@{0}'.format(ver)) + # Patch to move the namelist sebomd after the variable declarations + # Taken from http://archive.ambermd.org/202105/0098.html + patch('sebomd_fix.patch', when='@20') + # Patch to add ppc64le in config.guess patch('ppc64le.patch', when='@18: target=ppc64le:') @@ -132,6 +136,7 @@ class Amber(Package, CudaPackage): depends_on('bison', type='build') depends_on('netcdf-fortran') depends_on('parallel-netcdf', when='@20:') # when='AmberTools@21:' + depends_on('tcsh', type=('build'), when='@20') # when='AmberTools@21:' # Potential issues with openmpi 4 # (http://archive.ambermd.org/201908/0105.html) depends_on('mpi', when='+mpi') @@ -152,6 +157,10 @@ class Amber(Package, CudaPackage): conflicts('+openmp', when='%pgi', msg='OpenMP not available for the pgi compiler') + def url_for_version(self, version): + url = "file://{0}/Amber{1}.tar.bz2".format(os.getcwd(), version) + return url + def setup_build_environment(self, env): amber_src = self.stage.source_path env.set('AMBERHOME', amber_src) @@ -189,6 +198,10 @@ def install(self, spec, prefix): else: raise InstallError('Unknown compiler, exiting!!!') + # Alternative way to make csh/tcsh detection work with modules + filter_file(r'-x /bin/csh', 'command -v csh &> /dev/null/', + 'AmberTools/src/configure2', string=True) + # Base configuration conf = Executable('./configure') base_args = ['--skip-python', diff --git a/var/spack/repos/builtin/packages/amber/sebomd_fix.patch b/var/spack/repos/builtin/packages/amber/sebomd_fix.patch new file mode 100644 index 00000000000000..c2ee04a0b02e5e --- /dev/null +++ b/var/spack/repos/builtin/packages/amber/sebomd_fix.patch @@ -0,0 +1,78 @@ +--- a/ambertools_tmpdir/AmberTools/src/sander/sebomd_module.F90 2019-08-01 09:29:43.000000000 -0300 ++++ b/ambertools_tmpdir/AmberTools/src/sander/sebomd_module.F90 2022-03-30 09:07:07.635303955 -0300 +@@ -121,37 +121,6 @@ + implicit none + integer :: stat + +- namelist /sebomd/ hamiltonian, & +- modif, & +- ncore, & +- dbuff1, & +- dbuff2, & +- charge_out, & +- bond_order_out, & +- lambda, & +- peptk, & +- method, & +- charge, & +- longrange, & +- fullscf, & +- ntwc, & +- ntwb, & +- chtype, & +- chewald, & +- screen, & +- guess, & +- pdump, & +- ipolyn, & +- nresidue, & +- ntwh, & +- iprec, & +- peptcorr, & +- debugmsg, & +- debugforces, & +- diag_routine, & +- dpmax, & +- bocut +- + character(10) :: hamiltonian + character(10) :: modif + integer :: method +@@ -183,6 +152,37 @@ + integer :: debugforces + integer :: diag_routine + ++ namelist /sebomd/ hamiltonian, & ++ modif, & ++ ncore, & ++ dbuff1, & ++ dbuff2, & ++ charge_out, & ++ bond_order_out, & ++ lambda, & ++ peptk, & ++ method, & ++ charge, & ++ longrange, & ++ fullscf, & ++ ntwc, & ++ ntwb, & ++ chtype, & ++ chewald, & ++ screen, & ++ guess, & ++ pdump, & ++ ipolyn, & ++ nresidue, & ++ ntwh, & ++ iprec, & ++ peptcorr, & ++ debugmsg, & ++ debugforces, & ++ diag_routine, & ++ dpmax, & ++ bocut ++ + hamiltonian = sebomd_obj%hamiltonian + modif = sebomd_obj%modif + method = sebomd_obj%method diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py index 34539f97ce47c6..eb682b8e5971b0 100644 --- a/var/spack/repos/builtin/packages/amdscalapack/package.py +++ b/var/spack/repos/builtin/packages/amdscalapack/package.py @@ -28,11 +28,6 @@ class Amdscalapack(ScalapackBase): version('3.0', sha256='6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f') version('2.2', sha256='2d64926864fc6d12157b86e3f88eb1a5205e7fc157bf67e7577d0f18b9a7484c') - variant( - 'build_type', - default='Release', - description='CMake build type', - values=('Release', 'RelWithDebInfo')) variant( 'ilp64', default=False, diff --git a/var/spack/repos/builtin/packages/amp/package.py b/var/spack/repos/builtin/packages/amp/package.py index 8ee0fd21b49526..78bf52e003bd05 100644 --- a/var/spack/repos/builtin/packages/amp/package.py +++ b/var/spack/repos/builtin/packages/amp/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Amp(CMakePackage): @@ -34,7 +35,11 @@ class Amp(CMakePackage): # Everything should be compiled position independent (-fpic) depends_on('blas') depends_on('lapack') - depends_on('boost', when='+boost') + + # 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, when='+boost') depends_on('hdf5', when='+hdf5') depends_on('hypre', when='+hypre') depends_on('libmesh', when='+libmesh') diff --git a/var/spack/repos/builtin/packages/amr-wind/package.py b/var/spack/repos/builtin/packages/amr-wind/package.py index 6fa3209a215b0d..aa67ab555d8342 100644 --- a/var/spack/repos/builtin/packages/amr-wind/package.py +++ b/var/spack/repos/builtin/packages/amr-wind/package.py @@ -3,106 +3,89 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import itertools - from spack import * -def process_amrex_constraints(): - """Map constraints when building with external AMReX""" - a1 = ['+', '~'] - a2 = ['mpi', 'hypre', 'cuda'] - a3 = [[x + y for x in a1] for y in a2] - for k in itertools.product(*a3): - if '+cuda' in k: - for arch in CudaPackage.cuda_arch_values: - yield ''.join(k) + " cuda_arch=%s" % arch - else: - yield ''.join(k) - - -class AmrWind(CMakePackage, CudaPackage): +class AmrWind(CMakePackage, CudaPackage, ROCmPackage): """AMR-Wind is a massively parallel, block-structured adaptive-mesh, incompressible flow sover for wind turbine and wind farm simulations. """ homepage = "https://github.com/Exawind/amr-wind" git = "https://github.com/Exawind/amr-wind.git" - maintainers = ['jrood-nrel', 'michaeljbrazell'] + maintainers = ['jrood-nrel'] tags = ['ecp', 'ecp-apps'] version('main', branch='main', submodules=True) - variant('shared', default=True, - description='Build shared libraries') - variant('unit', default=True, - description='Build unit tests') - variant('tests', default=True, - description='Activate regression tests') - variant('mpi', default=True, - description='Enable MPI support') - variant('openmp', default=False, - description='Enable OpenMP for CPU builds') - variant('netcdf', default=True, - description='Enable NetCDF support') variant('hypre', default=True, description='Enable Hypre integration') variant('masa', default=False, description='Enable MASA integration') + variant('mpi', default=True, + description='Enable MPI support') + variant('netcdf', default=True, + description='Enable NetCDF support') variant('openfast', default=False, description='Enable OpenFAST integration') - variant('internal-amrex', default=True, - description='Use AMRex submodule to build') - - conflicts('+openmp', when='+cuda') - - depends_on('mpi', when='+mpi') - - for opt in process_amrex_constraints(): - dopt = '+particles' + opt - depends_on('amrex@develop' + dopt, when='~internal-amrex' + opt) + variant('openmp', default=False, + description='Enable OpenMP for CPU builds') + variant('shared', default=True, + description='Build shared libraries') + variant('tests', default=True, + description='Activate regression tests') - depends_on('hypre+shared+mpi~int64~cuda@2.20.0:', when='+mpi~cuda+hypre') - depends_on('hypre+shared~mpi~int64~cuda@2.20.0:', when='~mpi~cuda+hypre') + depends_on('hypre~int64+shared@2.20.0:', when='+hypre') + depends_on('hypre+mpi', when='+hypre+mpi') for arch in CudaPackage.cuda_arch_values: - depends_on('hypre+shared+mpi~int64+cuda cuda_arch=%s @2.20.0:' % arch, - when='+mpi+cuda+hypre cuda_arch=%s' % arch) - depends_on('hypre+shared~mpi~int64+cuda cuda_arch=%s @2.20.0:' % arch, - when='~mpi+cuda+hypre cuda_arch=%s' % arch) - depends_on('netcdf-c', when='+netcdf') + depends_on('hypre+cuda cuda_arch=%s' % arch, + when='+cuda+hypre cuda_arch=%s' % arch) + for arch in ROCmPackage.amdgpu_targets: + depends_on('hypre+rocm amdgpu_target=%s' % arch, + when='+rocm+hypre amdgpu_target=%s' % arch) depends_on('masa', when='+masa') + depends_on('mpi', when='+mpi') + depends_on('netcdf-c', when='+netcdf') depends_on('openfast+cxx', when='+openfast') + depends_on('py-matplotlib', when='+masa') + depends_on('py-pandas', when='+masa') + + conflicts('+openmp', when='+cuda') + conflicts('+shared', when='+cuda') + + def setup_build_environment(self, env): + # Avoid compile errors with Intel interprocedural optimization + if '%intel' in self.spec: + env.append_flags('CXXFLAGS', '-no-ipo') def cmake_args(self): define = CMakePackage.define vs = ["mpi", "cuda", "openmp", "netcdf", "hypre", "masa", - "openfast", "tests"] + "openfast", "rocm", "tests"] args = [ self.define_from_variant("AMR_WIND_ENABLE_%s" % v.upper(), v) for v in vs ] args += [ - define('CMAKE_EXPORT_COMPILE_COMMANDS', True), define('AMR_WIND_ENABLE_ALL_WARNINGS', True), self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), - self.define_from_variant('AMR_WIND_TEST_WITH_FCOMPARE', 'tests'), ] + if '+mpi' in self.spec: + args.append(define('MPI_HOME', self.spec['mpi'].prefix)) + if '+cuda' in self.spec: amrex_arch = ['{0:.1f}'.format(float(i) / 10.0) for i in self.spec.variants['cuda_arch'].value] if amrex_arch: args.append(define('AMReX_CUDA_ARCH', amrex_arch)) - if '+internal-amrex' in self.spec: - args.append(self.define('AMR_WIND_USE_INTERNAL_AMREX', True)) - else: - args += [ - self.define('AMR_WIND_USE_INTERNAL_AMREX', False), - self.define('AMReX_ROOT', self.spec['amrex'].prefix) - ] + if '+rocm' in self.spec: + args.append(define('CMAKE_CXX_COMPILER', self.spec['hip'].hipcc)) + targets = self.spec.variants['amdgpu_target'].value + args.append('-DAMReX_AMD_ARCH=' + ';'.join(str(x) for x in targets)) return args diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 8fd6d0d5cf3708..9567ba4d63fc73 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -12,16 +12,18 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage): mesh refinement (AMR) applications.""" homepage = "https://amrex-codes.github.io/amrex/" - url = "https://github.com/AMReX-Codes/amrex/releases/download/22.02/amrex-22.02.tar.gz" + url = "https://github.com/AMReX-Codes/amrex/releases/download/22.04/amrex-22.04.tar.gz" git = "https://github.com/AMReX-Codes/amrex.git" test_requires_compiler = True tags = ['ecp', 'e4s'] - maintainers = ['WeiqunZhang', 'asalmgren'] + maintainers = ['WeiqunZhang', 'asalmgren', 'etpalmer63'] version('develop', branch='development') + version('22.04', sha256='c33f5bdbc1ca21d8dd34b494a9c6c67a7eda4f42403cec3a7c13963f9140ebcf') + version('22.03', sha256='2a67233e55f20b937e2da97f1ed3ab0666e12ef283b4d14c9456ebf21f36b77c') version('22.02', sha256='5d8dd3fa3c416b04e70188e06b7e8fc2838d78b43a2cf33a285184c77f0c1e1e') version('22.01', sha256='857df5b2fa8e3010b8856b81879a5be32ba7cc2e575474256eae7ef815b8354d') version('21.12', sha256='439f9ebf2b440fc739a7976f3ade188ec3e1de5f51a0b151e6b8dda36fa67278') @@ -78,6 +80,8 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage): description='Build particle classes') variant('plotfile_tools', default=False, description='Build plotfile_tools like fcompare') + variant('tiny_profile', default=False, + description='Enable tiny profiling') variant('hdf5', default=False, description='Enable HDF5-based I/O') variant('hypre', default=False, @@ -187,6 +191,7 @@ def cmake_args(self): self.define_from_variant('AMReX_AMRDATA', 'amrdata'), self.define_from_variant('AMReX_PARTICLES', 'particles'), self.define_from_variant('AMReX_PLOTFILE_TOOLS', 'plotfile_tools'), + self.define_from_variant('AMReX_TINY_PROFILE', 'tiny_profile'), self.define_from_variant('AMReX_HDF5', 'hdf5'), self.define_from_variant('AMReX_HYPRE', 'hypre'), self.define_from_variant('AMReX_PETSC', 'petsc'), diff --git a/var/spack/repos/builtin/packages/ants/package.py b/var/spack/repos/builtin/packages/ants/package.py index 040e45802fff55..0e317bf1fdf88f 100644 --- a/var/spack/repos/builtin/packages/ants/package.py +++ b/var/spack/repos/builtin/packages/ants/package.py @@ -16,9 +16,11 @@ class Ants(CMakePackage): """ homepage = "https://stnava.github.io/ANTs/" + git = "https://github.com/ANTsX/ANTs.git" url = "https://github.com/ANTsX/ANTs/archive/v2.2.0.tar.gz" - version('2.3.5', sha256='2fddfd5f274a47f1c383e734a7e763b627c4a8383d2d3b9971561f335016bb0a') + version('20220205', commit='6f07ac55569d0d085d2adf7888d1c7a2bd563bfe') + version('2.3.5', sha256='2fddfd5f274a47f1c383e734a7e763b627c4a8383d2d3b9971561f335016bb0a', preferred=True) version('2.2.0', sha256='62f8f9ae141cb45025f4bb59277c053acf658d4a3ba868c9e0f609af72e66b4a') depends_on('zlib', type='link') diff --git a/var/spack/repos/builtin/packages/aoflagger/package.py b/var/spack/repos/builtin/packages/aoflagger/package.py index e0bb7c7a4d5e57..db2db74693650c 100644 --- a/var/spack/repos/builtin/packages/aoflagger/package.py +++ b/var/spack/repos/builtin/packages/aoflagger/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Aoflagger(CMakePackage): @@ -18,6 +19,11 @@ class Aoflagger(CMakePackage): depends_on('casacore+python~fftpack@1.10:') depends_on('fftw~mpi@3.0:') depends_on('boost+python@:1.66.99') + + # 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('libxml2') depends_on('lapack') depends_on('cfitsio') diff --git a/var/spack/repos/builtin/packages/aomp/package.py b/var/spack/repos/builtin/packages/aomp/package.py index 9e14051631530c..599d3d4524f484 100644 --- a/var/spack/repos/builtin/packages/aomp/package.py +++ b/var/spack/repos/builtin/packages/aomp/package.py @@ -114,7 +114,7 @@ class Aomp(Package): depends_on('python@3:', type='build', when='@3.9.0:') depends_on('py-setuptools', when='@3.9.0:', type='build') - depends_on('mesa18~llvm@18.3:', type=('build', 'link')) + depends_on('gl@4.5:', type=('build', 'link')) depends_on('py-pip', when='@3.8.0:', type='build') depends_on('py-wheel', when='@3.8.0:', type=('build', 'run')) depends_on('perl-data-dumper', type='build') diff --git a/var/spack/repos/builtin/packages/apex/install-includes.patch b/var/spack/repos/builtin/packages/apex/install-includes.patch new file mode 100644 index 00000000000000..5d584555ef321d --- /dev/null +++ b/var/spack/repos/builtin/packages/apex/install-includes.patch @@ -0,0 +1,12 @@ +diff --git a/src/apex/CMakeLists.standalone b/src/apex/CMakeLists.standalone +index 5acfa34..bb43bd5 100644 +--- a/src/apex/CMakeLists.standalone ++++ b/src/apex/CMakeLists.standalone +@@ -143,6 +143,7 @@ INSTALL(FILES apex.h + profiler.hpp + task_wrapper.hpp + task_identifier.hpp ++ dependency_tree.hpp + DESTINATION include) + + INSTALL(TARGETS apex RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index 363a7a2f8fd914..c6b8da72be4c43 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -65,12 +65,18 @@ class Apex(CMakePackage): depends_on('hip', when='+hip') depends_on('roctracer-dev', when='+hip') depends_on('rocm-smi-lib', when='+hip') - depends_on('boost@1.54:', when='+boost') + depends_on('boost@1.54: +exception+chrono+system+atomic+container+regex+thread', when='+boost') # Conflicts conflicts('+jemalloc', when='+gperftools') conflicts('+plugins', when='~activeharmony') + # Patches + + # This patch ensures that the missing dependency_tree.hpp header is + # installed + patch('install-includes.patch', when='@2.3.2:2.4.1') + def cmake_args(self): args = [] spec = self.spec diff --git a/var/spack/repos/builtin/packages/apfel/package.py b/var/spack/repos/builtin/packages/apfel/package.py index 137c2b141d92ba..f7c12d744a06ed 100644 --- a/var/spack/repos/builtin/packages/apfel/package.py +++ b/var/spack/repos/builtin/packages/apfel/package.py @@ -20,7 +20,7 @@ class Apfel(AutotoolsPackage): version('3.0.4', sha256='c7bfae7fe2dc0185981850f2fe6ae4842749339d064c25bf525b4ef412bbb224') depends_on('swig', when='+python') - depends_on('python', when='+python', type=('build', 'run')) + depends_on('python', type=('build', 'run')) depends_on('lhapdf', when='+lhapdf', type=('build', 'run')) variant('python', description='Build python wrapper', default=False) diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index f461679c79e728..a4e559af8636fb 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -18,6 +18,7 @@ class Arborx(CMakePackage): maintainers = ['aprokop'] version('master', branch='master') + version('1.2', sha256='ed1939110b2330b7994dcbba649b100c241a2353ed2624e627a200a398096c20') version('1.1', sha256='2b5f2d2d5cec57c52f470c2bf4f42621b40271f870b4f80cb57e52df1acd90ce') version('1.0', sha256='9b5f45c8180622c907ef0b7cc27cb18ba272ac6558725d9e460c3f3e764f1075') version('0.9-beta', sha256='b349b5708d1aa00e8c20c209ac75dc2d164ff9bf1b85adb5437346d194ba6c0d', deprecated=True) @@ -42,9 +43,11 @@ class Arborx(CMakePackage): depends_on('cmake@3.12:', type='build') depends_on('cmake@3.16:', type='build', when='@1.0:') depends_on('mpi', when='+mpi') + depends_on('rocthrust', when='+rocm') # Standalone Kokkos depends_on('kokkos@3.1.00:', when='~trilinos') + depends_on('kokkos@3.4.00:', when='@1.2:~trilinos') for backend in kokkos_backends: depends_on('kokkos+%s' % backend.lower(), when='~trilinos+%s' % backend.lower()) @@ -56,6 +59,7 @@ class Arborx(CMakePackage): # - current version of Trilinos package does not allow enabling CUDA depends_on('trilinos+kokkos', when='+trilinos') depends_on('trilinos+openmp', when='+trilinos+openmp') + depends_on('trilinos@13.2.0:', when='@1.2:+trilinos') conflicts('~serial', when='+trilinos') conflicts('+cuda', when='+trilinos') @@ -72,6 +76,9 @@ def cmake_args(self): # Only Kokkos allows '+cuda' for now options.append( '-DCMAKE_CXX_COMPILER=%s' % spec["kokkos"].kokkos_cxx) + if '+rocm' in spec: + options.append( + '-DCMAKE_CXX_COMPILER=%s' % spec["hip"].hipcc) return options diff --git a/var/spack/repos/builtin/packages/arrayfire/package.py b/var/spack/repos/builtin/packages/arrayfire/package.py index 0049dd7df0950d..5d1a65428bedfd 100644 --- a/var/spack/repos/builtin/packages/arrayfire/package.py +++ b/var/spack/repos/builtin/packages/arrayfire/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Arrayfire(CMakePackage, CudaPackage): @@ -24,6 +25,11 @@ class Arrayfire(CMakePackage, CudaPackage): variant('opencl', default=False, description='Enable OpenCL backend') depends_on('boost@1.65:') + + # 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('fftw-api@3:') depends_on('blas') depends_on('cuda@7.5:', when='+cuda') diff --git a/var/spack/repos/builtin/packages/arrow/package.py b/var/spack/repos/builtin/packages/arrow/package.py index ee2ab9caf9274c..f1b9224a684852 100644 --- a/var/spack/repos/builtin/packages/arrow/package.py +++ b/var/spack/repos/builtin/packages/arrow/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Arrow(CMakePackage, CudaPackage): @@ -26,6 +27,11 @@ class Arrow(CMakePackage, CudaPackage): version('0.8.0', sha256='c61a60c298c30546fc0b418a35be66ef330fb81b06c49928acca7f1a34671d54') depends_on('boost@1.60:') + + # 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('cmake@3.2.0:', type='build') depends_on('flatbuffers build_type=Release') # only Release contains flatc depends_on('python', when='+python') diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py index d4784cc1d6b073..c2fb928f31d05d 100644 --- a/var/spack/repos/builtin/packages/ascent/package.py +++ b/var/spack/repos/builtin/packages/ascent/package.py @@ -78,7 +78,6 @@ class Ascent(CMakePackage, CudaPackage): variant("openmp", default=(sys.platform != 'darwin'), description="build openmp support") variant("mfem", default=False, description="Build MFEM filter support") - variant("adios", default=False, description="Build Adios filter support") variant("dray", default=False, description="Build with Devil Ray support") variant("adios2", default=False, description="Build Adios2 filter support") variant("fides", default=False, description="Build Fides filter support") @@ -103,8 +102,8 @@ class Ascent(CMakePackage, CudaPackage): # Certain CMake versions have been found to break for our use cases depends_on("cmake@3.14.1:3.14,3.18.2:", type='build') depends_on("conduit@:0.7.2", when="@:0.7.1") - depends_on("conduit~python", when="~python") depends_on("conduit+python", when="+python") + depends_on("conduit~python", when="~python") depends_on("conduit+mpi", when="+mpi") depends_on("conduit~mpi", when="~mpi") @@ -135,44 +134,46 @@ class Ascent(CMakePackage, CudaPackage): # TPLs for Runtime Features ############################# - depends_on("vtk-h", when="+vtkh") - depends_on("vtk-h~openmp", when="+vtkh~openmp") - depends_on("vtk-h+cuda+openmp", when="+vtkh+cuda+openmp") - depends_on("vtk-h+cuda~openmp", when="+vtkh+cuda~openmp") - - depends_on("vtk-h~shared", when="~shared+vtkh") - depends_on("vtk-h~shared~openmp", when="~shared+vtkh~openmp") - depends_on("vtk-h~shared+cuda", when="~shared+vtkh+cuda") - depends_on("vtk-h~shared+cuda~openmp", when="~shared+vtkh+cuda~openmp") + depends_on("vtk-h", when="+vtkh") + # propagate relevent variants to vtk-h + depends_on("vtk-h+openmp", when="+vtkh+openmp") + depends_on("vtk-h~openmp", when="+vtkh~openmp") + depends_on("vtk-h+cuda", when="+vtkh+cuda") + depends_on("vtk-h~cuda", when="+vtkh~cuda") + depends_on("vtk-h+shared", when="+vtkh+shared") + depends_on("vtk-h~shared", when="+vtkh~shared") # mfem - depends_on("mfem~threadsafe~openmp+shared+mpi+conduit", when="+shared+mfem+mpi") - depends_on("mfem~threadsafe~openmp~shared+mpi+conduit", when="~shared+mfem+mpi") - - depends_on("mfem~threadsafe~openmp+shared~mpi+conduit", when="+shared+mfem~mpi") - depends_on("mfem~threadsafe~openmp~shared~mpi+conduit", when="~shared+mfem~mpi") + depends_on("mfem~threadsafe~openmp+conduit", when="+mfem") + # propagate relevent variants to mfem + depends_on("mfem+mpi", when="+mfem+mpi") + depends_on("mfem~mpi", when="+mfem~mpi") + depends_on("mfem+shared", when="+mfem+shared") + depends_on("mfem~shared", when="+mfem~shared") # fides depends_on("fides", when="+fides") # devil ray variants with mpi # we have to specify both because mfem makes us - depends_on("dray+mpi~test~utils+shared+cuda", when="+dray+mpi+cuda+shared") - depends_on("dray+mpi~test~utils+shared+openmp", when="+dray+mpi+openmp+shared") - depends_on("dray+mpi~test~utils+shared~openmp~cuda", when="+dray+mpi~openmp~cuda+shared") - - depends_on("dray+mpi~test~utils~shared+cuda", when="+dray+mpi+cuda~shared") - depends_on("dray+mpi~test~utils~shared+openmp", when="+dray+mpi+openmp~shared") - depends_on("dray+mpi~test~utils~shared~openmp~cuda", when="+dray+mpi~openmp~cuda~shared") - - # devil ray variants without mpi - depends_on("dray~mpi~test~utils+shared+cuda", when="+dray~mpi+cuda+shared") - depends_on("dray~mpi~test~utils+shared+openmp", when="+dray~mpi+openmp+shared") - depends_on("dray~mpi~test~utils+shared~openmp~cuda", when="+dray~mpi~openmp~cuda+shared") - - depends_on("dray~mpi~test~utils~shared+cuda", when="+dray~mpi+cuda~shared") - depends_on("dray~mpi~test~utils~shared+openmp", when="+dray~mpi+openmp~shared") - depends_on("dray~mpi~test~utils~shared~openmp~cuda", when="+dray~mpi~openmp~cuda~shared") + depends_on('dray~test~utils', when='+dray') + # propagate relevent variants to dray + depends_on('dray+cuda', when='+dray+cuda') + depends_on('dray~cuda', when='+dray~cuda') + depends_on('dray+mpi', when='+dray+mpi') + depends_on('dray~mpi', when='+dray~mpi') + depends_on('dray+shared', when='+dray+shared') + depends_on('dray~shared', when='+dray~shared') + depends_on('dray+openmp', when='+dray+openmp') + depends_on('dray~openmp', when='+dray~openmp') + + # Adios2 + depends_on('adios2', when='+adios2') + # propagate relevent variants to adios2 + depends_on('adios2+mpi', when='+adios2+mpi') + depends_on('adios2~mpi', when='+adios2~mpi') + depends_on('adios2+shared', when='+adios2+shared') + depends_on('adios2~shared', when='+adios2~shared') ####################### # Documentation related diff --git a/var/spack/repos/builtin/packages/asio/package.py b/var/spack/repos/builtin/packages/asio/package.py index 3498de3a05933e..babc5ed40be925 100644 --- a/var/spack/repos/builtin/packages/asio/package.py +++ b/var/spack/repos/builtin/packages/asio/package.py @@ -16,11 +16,17 @@ class Asio(AutotoolsPackage): git = "https://github.com/chriskohlhoff/asio.git" maintainers = ["msimberg"] + version('1.21.0', sha256='5d2d2dcb7bfb39bff941cabbfc8c27ee322a495470bf0f3a7c5238648cf5e6a9') version('1.20.0', sha256='34a8f07be6f54e3753874d46ecfa9b7ab7051c4e3f67103c52a33dfddaea48e6') version('1.19.2', sha256='5ee191aee825dfb1325cbacf643d599b186de057c88464ea98f1bae5ba4ff47a') version('1.19.1', sha256='2555e0a29256de5c77d6a34b14faefd28c76555e094ba0371acb0b91d483520e') version('1.19.0', sha256='11bc0e22fcdfb3f0b77574ac33760a3592c0dac7e7eece7668b823c158243629') version('1.18.2', sha256='8d67133b89e0f8b212e9f82fdcf1c7b21a978d453811e2cd941c680e72c2ca32') + version('1.18.1', sha256='39c721b987b7a0d2fe2aee64310bd128cd8cc10f43481604d18cb2d8b342fd40') + version('1.18.0', sha256='820688d1e0387ff55194ae20036cbae0fb3c7d11b7c3f46492369723c01df96f') + version('1.17.0', sha256='46406a830f8334b3789e7352ed7309a39c7c30b685b0499d289eda4fd4ae2067') + version('1.16.1', sha256='e40bbd531530f08318b7c7d7e84e457176d8eae6f5ad2e3714dc27b9131ecd35') + version('1.16.0', sha256='c87410ea62de6245aa239b9ed2057edf01d7f66acc3f5e50add9a29343c87512') depends_on("autoconf", type="build") depends_on("automake", type="build") diff --git a/var/spack/repos/builtin/packages/aspcud/package.py b/var/spack/repos/builtin/packages/aspcud/package.py index 920fe4d0712dc5..6b2457f9fd4b19 100644 --- a/var/spack/repos/builtin/packages/aspcud/package.py +++ b/var/spack/repos/builtin/packages/aspcud/package.py @@ -21,7 +21,7 @@ class Aspcud(CMakePackage): version('1.9.5', sha256='9cd3a9490d377163d87b16fa1a10cc7254bc2dbb9f60e846961ac8233f3835cf') version('1.9.4', sha256='3645f08b079e1cc80e24cd2d7ae5172a52476d84e3ec5e6a6c0034492a6ea885') - depends_on('boost@1.74:', type=('build'), when='@1.9.5:') + depends_on('boost@1.74:+exception+serialization+container', type=('build'), when='@1.9.5:') depends_on('cmake', type=('build')) depends_on('re2c', type=('build')) depends_on('clingo') diff --git a/var/spack/repos/builtin/packages/assimp/package.py b/var/spack/repos/builtin/packages/assimp/package.py index 6c4f20713f9532..3b3af37960f306 100644 --- a/var/spack/repos/builtin/packages/assimp/package.py +++ b/var/spack/repos/builtin/packages/assimp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Assimp(CMakePackage): @@ -17,19 +18,35 @@ class Assimp(CMakePackage): maintainers = ['wdconinc'] version('master', branch='master') + version('5.2.2', sha256='ad76c5d86c380af65a9d9f64e8fc57af692ffd80a90f613dfc6bd945d0b80bb4') + version('5.2.1', sha256='c9cbbc8589639cd8c13f65e94a90422a70454e8fa150cf899b6038ba86e9ecff') version('5.1.4', sha256='bd32cdc27e1f8b7ac09d914ab92dd81d799c97e9e47315c1f40dcb7c6f7938c6') version('5.1.3', sha256='50a7bd2c8009945e1833c591d16f4f7c491a3c6190f69d9d007167aadb175c35') version('5.0.1', sha256='11310ec1f2ad2cd46b95ba88faca8f7aaa1efe9aa12605c55e3de2b977b3dbfc') version('4.0.1', sha256='60080d8ab4daaab309f65b3cffd99f19eb1af8d05623fff469b9b652818e286e') + patch('https://patch-diff.githubusercontent.com/raw/assimp/assimp/pull/4203.patch', + sha256='a227714a215023184536e38b4bc7f8341f635e16bfb3b0ea029d420c29aacd2d', + when='@5.1:5.2.2') + variant('shared', default=True, description='Enables the build of shared libraries') + depends_on('pkgconfig', type='build') depends_on('zlib') - depends_on('boost') + # 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) + + def patch(self): + filter_file('-Werror', '', 'code/CMakeLists.txt') def cmake_args(self): args = [ + '-DASSIMP_HUNTER_ENABLED=OFF', + '-DASSIMP_BUILD_ZLIB=OFF', + '-DASSIMP_BUILD_MINIZIP=OFF', '-DASSIMP_BUILD_TESTS=OFF', self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), ] diff --git a/var/spack/repos/builtin/packages/atmi/package.py b/var/spack/repos/builtin/packages/atmi/package.py index 492d8b88214193..29026d02d71d4f 100644 --- a/var/spack/repos/builtin/packages/atmi/package.py +++ b/var/spack/repos/builtin/packages/atmi/package.py @@ -15,10 +15,12 @@ class Atmi(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/atmi" git = "https://github.com/RadeonOpenCompute/atmi.git" - url = "https://github.com/RadeonOpenCompute/atmi/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/atmi/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='3aea040f5a246539ab118f2183cf3e802a21e0e6215a53025eda77f382341747') + version('5.0.0', sha256='208c1773170722b60b74357e264e698df5871e9d9d490d64011e6ea76750d9cf') version('4.5.2', sha256='c235cfb8bdd89deafecf9123264217b8cc5577a5469e3e1f24587fa820d0792e') version('4.5.0', sha256='64eeb0244cedae99db7dfdb365e0ad624106cc1090a531f94885ae81e254aabf') version('4.3.1', sha256='4497fa6d33547b946e2a51619f2777ec36e9cff1b07fd534eb8a5ef0d8e30650') @@ -38,10 +40,10 @@ class Atmi(CMakePackage): depends_on('rsync') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('comgr@' + ver, type='link', when='@' + ver) depends_on('hsa-rocr-dev@' + ver, type='link', when='@' + ver) - depends_on('libelf@0.8:', type='link', when='@' + ver) + depends_on('elf', type='link', when='@' + ver) root_cmakelists_dir = 'src' diff --git a/var/spack/repos/builtin/packages/augustus/bam2wig_Makefile.patch b/var/spack/repos/builtin/packages/augustus/bam2wig_Makefile.patch index bbd5bfeef68742..45dce94cc354d6 100644 --- a/var/spack/repos/builtin/packages/augustus/bam2wig_Makefile.patch +++ b/var/spack/repos/builtin/packages/augustus/bam2wig_Makefile.patch @@ -17,7 +17,7 @@ - HTSERRHINT:=$(HTSERRHINT)"Check if HTSlib is installed and of version 1.10 or higher - see README.txt" -endif +INCLUDES=-I$(HTSLIBDIR)/include/htslib -+HTSLIBS=-L$(HTSLIBDIR)/lib -Wl,-rpath,$(HTSLIBDIR)/lib -lhts -lcurses -lm -lz -lpthread -lcurl -lssl -lcrypto -lbz2 -llzma ++HTSLIBS=-L$(HTSLIBDIR)/lib -Wl,-rpath,$(HTSLIBDIR)/lib -lhts -lncurses -lm -lz -lpthread -lcurl -lssl -lcrypto -lbz2 -llzma CFLAGS:=-Wall -O2 $(CFLAGS) CC?=gcc diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py index 6fea66cbaed450..b158c5b346fe0b 100644 --- a/var/spack/repos/builtin/packages/augustus/package.py +++ b/var/spack/repos/builtin/packages/augustus/package.py @@ -6,6 +6,7 @@ import glob from spack import * +from spack.pkg.builtin.boost import Boost class Augustus(MakefilePackage): @@ -29,11 +30,16 @@ class Augustus(MakefilePackage): depends_on('python', when='@3.3.1:', type=('build', 'run')) depends_on('bamtools') depends_on('gsl') - depends_on('boost') + + # 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('zlib') depends_on('htslib') depends_on('bcftools') depends_on('samtools') + depends_on('ncurses') depends_on('curl', when='@3.3.1:') depends_on('sqlite', when='@3.4.0:') depends_on('mysql-client', when='@3.4.0:') diff --git a/var/spack/repos/builtin/packages/autodock-vina/package.py b/var/spack/repos/builtin/packages/autodock-vina/package.py index 0c00b75387fee4..e2f29465e613f6 100644 --- a/var/spack/repos/builtin/packages/autodock-vina/package.py +++ b/var/spack/repos/builtin/packages/autodock-vina/package.py @@ -3,9 +3,11 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) + import sys from spack import * +from spack.pkg.builtin.boost import Boost class AutodockVina(MakefilePackage): @@ -18,6 +20,11 @@ class AutodockVina(MakefilePackage): depends_on('boost@1.65.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) + # Replacing depecrated function call of boost with current function call patch('main.patch') patch('split.patch') diff --git a/var/spack/repos/builtin/packages/automaded/package.py b/var/spack/repos/builtin/packages/automaded/package.py index 39fc27abc84a9e..b1533ace901f17 100644 --- a/var/spack/repos/builtin/packages/automaded/package.py +++ b/var/spack/repos/builtin/packages/automaded/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Automaded(CMakePackage): @@ -24,7 +25,11 @@ class Automaded(CMakePackage): version('1.0', sha256='600740cdd594cc6968c7bcb285d0829eb0ddbd5597c32c06c6ae5d9929a2625d') depends_on('mpi') - depends_on('boost') + + # 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('callpath') depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py index dea6e03203f3bd..8252bc0c903a58 100644 --- a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py +++ b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py @@ -13,12 +13,13 @@ class AwsParallelcluster(PythonPackage): tool to deploy and manage HPC clusters in the AWS cloud.""" homepage = "https://github.com/aws/aws-parallelcluster" - pypi = "aws-parallelcluster/aws-parallelcluster-2.11.4.tar.gz" + pypi = "aws-parallelcluster/aws-parallelcluster-2.11.5.tar.gz" maintainers = [ 'demartinofra', 'enrico-usai', 'lukeseawalker', ] + version('2.11.5', sha256='7499f88387cbe2cb73f9fddeee3363117f7ef1524d6a73e77bb07900040baebb') version('2.11.4', sha256='449537ccda57f91f4ec6ae0c94a8e2b1a789f08f80245fadb28f44a4351d5da4') version('2.11.3', sha256='7c1d74123f2f670846aed8fe1fcca5908bb46ec014e2dfc7d3ec8994447a37a0') version('2.11.2', sha256='60d96a5ea4dca4816ceffc4546549743abd1f6207c62f016c9c348adc64b2ec0') diff --git a/var/spack/repos/builtin/packages/axom/package.py b/var/spack/repos/builtin/packages/axom/package.py index dbd23dfe4642e3..3719459be3da10 100644 --- a/var/spack/repos/builtin/packages/axom/package.py +++ b/var/spack/repos/builtin/packages/axom/package.py @@ -98,9 +98,6 @@ class Axom(CachedCMakePackage, CudaPackage): depends_on("conduit+hdf5", when="+hdf5") depends_on("conduit~hdf5", when="~hdf5") - # HDF5 needs to be the same as Conduit's - depends_on("hdf5@1.8.19:1.8~cxx~fortran", when="+hdf5") - depends_on("lua", when="+lua") depends_on("scr", when="+scr") diff --git a/var/spack/repos/builtin/packages/bamtools/package.py b/var/spack/repos/builtin/packages/bamtools/package.py index 80bba8175c3aa8..909ca97bab8faf 100644 --- a/var/spack/repos/builtin/packages/bamtools/package.py +++ b/var/spack/repos/builtin/packages/bamtools/package.py @@ -22,6 +22,7 @@ class Bamtools(CMakePackage): version('2.2.3', sha256='92ddef44801a1f8f01ce1a397f83e0f8b5e1ae8ad92c620f2dafaaf8d54cf178') depends_on('zlib', type='link') + depends_on('jsoncpp') def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/bart/package.py b/var/spack/repos/builtin/packages/bart/package.py index 57565754c25c00..75f932d5ab2ea1 100644 --- a/var/spack/repos/builtin/packages/bart/package.py +++ b/var/spack/repos/builtin/packages/bart/package.py @@ -19,8 +19,8 @@ class Bart(MakefilePackage, CudaPackage): version('0.5.00', sha256='30eedcda0f0ef3808157542e0d67df5be49ee41e4f41487af5c850632788f643') # patch to fix build with MKL - patch('https://github.com/mrirecon/bart/commit/b62ca4972d5ac41a44217a5c27123c15daae74db.patch', - sha256='8fd1be181da928448da750b32d45ee6dce7ba6af0424617c4f8d653cf3f05445', + patch('https://github.com/mrirecon/bart/commit/b62ca4972d5ac41a44217a5c27123c15daae74db.patch?full_index=1', + sha256='501ca985df2324fc02e32cc4ffb32ce5c235fe83a59f5b853eb78ad0f2d6629c', when='@0.5.00') # patch to fix Makefile for openblas and cuda diff --git a/var/spack/repos/builtin/packages/barvinok/package.py b/var/spack/repos/builtin/packages/barvinok/package.py index 387eecfee9f2a9..18dd16de33418b 100644 --- a/var/spack/repos/builtin/packages/barvinok/package.py +++ b/var/spack/repos/builtin/packages/barvinok/package.py @@ -10,16 +10,21 @@ class Barvinok(AutotoolsPackage): """barvinok is a library for counting the number of integer points in parametric and non-parametric polytopes.""" + maintainers = ['vmiheer'] homepage = "https://barvinok.gforge.inria.fr" url = "http://barvinok.gforge.inria.fr/barvinok-0.41.5.tar.bz2" version('0.41.5', sha256='e70493318fe76c0c202f98d7861bdf5dda8c4d79c21024af2e04b009ffa79734') - variant('pet', default=False, description="Enable an X toolkit") + variant('pet', default=False, description="Enable pet support (Generate polyhedral model from c code)") depends_on('gmp') + depends_on('ntl') depends_on('llvm +clang', when='+pet') depends_on('libyaml', when='+pet') + def setup_build_environment(self, env): + env.set('CFLAGS', '-pthread') + def configure_args(self): spec = self.spec args = [ diff --git a/var/spack/repos/builtin/packages/batchedblas/AVX2.patch b/var/spack/repos/builtin/packages/batchedblas/AVX2.patch new file mode 100644 index 00000000000000..219aed9ad5c945 --- /dev/null +++ b/var/spack/repos/builtin/packages/batchedblas/AVX2.patch @@ -0,0 +1,11 @@ +--- spack-src/bblas_src/batched_blas_fp16.h.orig 2022-02-16 17:15:22.000000000 +0900 ++++ spack-src/bblas_src/batched_blas_fp16.h 2022-02-16 17:15:31.000000000 +0900 +@@ -13,8 +13,6 @@ + # if BF_NMANT>7 || BF_NMANT<=1 + # error "too large or small mantissa for BFLIKE_FLOAT" + # endif +-#elif defined(__AVX2__) +-# define FP16_AVX2_EMULATION + #elif defined(__clang__) && __clang_major__ >= 8 + # define FP16_AUTO_PROMOTION + #else diff --git a/var/spack/repos/builtin/packages/batchedblas/package.py b/var/spack/repos/builtin/packages/batchedblas/package.py new file mode 100644 index 00000000000000..0c92cedd724021 --- /dev/null +++ b/var/spack/repos/builtin/packages/batchedblas/package.py @@ -0,0 +1,41 @@ +# Copyright 2013-2022 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 import * + + +class Batchedblas(MakefilePackage): + """Batched BLAS is one of the new approaches for a task-based BLAS + invocation, and it is defined as a new interface that allows users to + execute multiple independent BLAS operations as a single subroutine call""" + + homepage = "https://www.r-ccs.riken.jp/labs/lpnctrt/projects/batchedblas/index.html" + url = "https://www.r-ccs.riken.jp/labs/lpnctrt/projects/batchedblas/BatchedBLAS-1.0.tar.gz" + + version('1.0', sha256='798ae4e7cc4ad5c3d5f3479f3d001da566d7d5205779103aaf10cd5b956ba433') + + depends_on('blas') + + patch('AVX2.patch') + + def edit(self, spec, prefix): + CCFLAGS = [self.compiler.openmp_flag, '-I./', '-O3'] + BLAS = ['-lm', spec['blas'].libs.ld_flags] + if not spec.satisfies('^mkl'): + CCFLAGS.append('-D_CBLAS_') + if spec.satisfies('%intel'): + CCFLAGS.extend(['-Os']) + elif spec.satisfies('%fj'): + CCFLAGS.extend(['-std=gnu11', '-Kfast,ocl', '-Nclang']) + makefile_src = FileFilter('bblas_src/Makefile') + makefile_src.filter(r'^\s*CCFLAG\s*=.*', 'CCFLAG = %s' % ' '.join(CCFLAGS)) + makefile_src.filter(r'^\s*BLAS\s*=.*', 'BLAS = %s' % ' '.join(BLAS)) + + def install(self, spec, prefix): + mkdirp(prefix.lib) + mkdirp(prefix.include) + install(join_path('bblas_src', '*.h'), prefix.include) + install(join_path('bblas_src', 'libbblas.a'), prefix.lib) + install(join_path('bblas_src', 'libbblas.so'), prefix.lib) diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 59c8bee95d871b..619243204ddbb6 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -17,6 +17,9 @@ class Bazel(Package): url = "https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-dist.zip" maintainers = ['adamjstewart'] + + tags = ['build-tools'] + version('4.0.0', sha256='d350f80e70654932db252db380d2ec0144a00e86f8d9f2b4c799ffdb48e9cdd1') version('3.7.2', sha256='de255bb42163a915312df9f4b86e5b874b46d9e8d4b72604b5123c3a845ed9b1') version('3.7.1', sha256='c9244e5905df6b0190113e26082c72d58b56b1b0dec66d076f083ce4089b0307') diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 1af053502cc75f..52271f1235b375 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -9,6 +9,7 @@ import llnl.util.tty as tty from spack import * +from spack.pkg.builtin.boost import Boost # This application uses cmake to build, but they wrap it with a @@ -28,6 +29,11 @@ class Bcl2fastq2(Package): msg='malloc.h/etc requirements break build on macs') depends_on('boost@1.54.0:1.55') + + # 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('cmake@2.8.9:', type='build') depends_on('libxml2@2.7.8') depends_on('libxslt@1.1.26~crypto') diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index 1ea2765197f885..ea937d82dd6cfe 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/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 re class Binutils(AutotoolsPackage, GNUMirrorPackage): @@ -12,6 +13,11 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage): maintainers = ['alalazo'] + tags = ['build-tools', 'core-packages'] + + executables = ['^nm$', '^readelf$'] + + version('2.38', sha256='070ec71cf077a6a58e0b959f05a09a35015378c2d8a51e90f3aeabfe30590ef8') version('2.37', sha256='67fc1a4030d08ee877a4867d3dcab35828148f87e1fd05da6db585ed5a166bd4') version('2.36.1', sha256='5b4bd2e79e30ce8db0abd76dd2c2eae14a94ce212cfc59d3c37d23e24bc6d7a3') version('2.35.2', sha256='cfa7644dbecf4591e136eb407c1c1da16578bd2b03f0c2e8acdceba194bb9d61') @@ -80,6 +86,12 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage): # --disable-ld flag conflicts('~ld', '+gold') + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + match = re.search(r'GNU (nm|readelf).* (\S+)', output) + return Version(match.group(2)).dotted.up_to(3) if match else None + def setup_build_environment(self, env): if self.spec.satisfies('%cce'): diff --git a/var/spack/repos/builtin/packages/biobloom/package.py b/var/spack/repos/builtin/packages/biobloom/package.py index 26839630b0bf18..7ea0666b12b0c1 100644 --- a/var/spack/repos/builtin/packages/biobloom/package.py +++ b/var/spack/repos/builtin/packages/biobloom/package.py @@ -15,7 +15,7 @@ class Biobloom(AutotoolsPackage): version('2.2.0', sha256='5d09f8690f0b6402f967ac09c5b0f769961f3fe3791000f8f73af6af7324f02c') - depends_on('boost') + depends_on('boost+exception+math+serialization+container') depends_on('sdsl-lite') depends_on('sparsehash') depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index ef18220d49767c..4c9a200f0abab4 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -18,6 +18,8 @@ class Bison(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org/software/bison/" gnu_mirror_path = "bison/bison-3.6.4.tar.gz" + tags = ['build-tools'] + executables = ['^bison$'] version('3.8.2', sha256='06c9e13bdf7eb24d4ceb6b59205a4f67c2c7e7213119644430fe82fbd14a0abb') diff --git a/var/spack/repos/builtin/packages/blackhat/package.py b/var/spack/repos/builtin/packages/blackhat/package.py new file mode 100644 index 00000000000000..3ad851e12e2848 --- /dev/null +++ b/var/spack/repos/builtin/packages/blackhat/package.py @@ -0,0 +1,31 @@ +# Copyright 2013-2022 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 import * + + +class Blackhat(AutotoolsPackage): + """Blackhat MC generator""" + + homepage = "https://blackhat.hepforge.org" + git = "https://github.com/cms-externals/blackhat.git" + + version('0.9.9', branch='cms/v0.9.9') + + depends_on('qd') + depends_on('python') + extends('python') + + def patch(self): + filter_file('else return Cached_OLHA_user_normal', + 'else return new Cached_OLHA_user_normal', + 'src/cached_OLHA.cpp') + + def configure_args(self): + return ['--with-QDpath=' + self.spec['qd'].prefix, + '--enable-pythoninterface=no'] + + def setup_build_environment(self, env): + env.append_flags('CXXFLAGS', '-Wno-deprecated') diff --git a/var/spack/repos/builtin/packages/blasr/package.py b/var/spack/repos/builtin/packages/blasr/package.py index 704dc234c85067..647d84112d7f7e 100644 --- a/var/spack/repos/builtin/packages/blasr/package.py +++ b/var/spack/repos/builtin/packages/blasr/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Blasr(Package): @@ -20,7 +21,11 @@ class Blasr(Package): depends_on('hdf5+cxx@1.8.12:1.8') depends_on('htslib') depends_on('zlib') - depends_on('boost') + + # 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('pbbam') depends_on('blasr-libcpp') depends_on('python', type='build') diff --git a/var/spack/repos/builtin/packages/blaze/package.py b/var/spack/repos/builtin/packages/blaze/package.py index 8d137d64f54739..7ceb1b8e7fc53a 100644 --- a/var/spack/repos/builtin/packages/blaze/package.py +++ b/var/spack/repos/builtin/packages/blaze/package.py @@ -19,9 +19,7 @@ class Blaze(CMakePackage): url = "https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.8.tar.gz" git = "https://bitbucket.org/blaze-lib/blaze.git" - # Blaze requires at least cmake 3.8.0 for C++14 features. - depends_on('cmake@3.8.0:', type='build') - depends_on('blas') + maintainers = ['nilsvu'] version('master', branch='master') version('3.8', sha256='dfaae1a3a9fea0b3cc92e78c9858dcc6c93301d59f67de5d388a3a41c8a629ae') @@ -46,3 +44,57 @@ class Blaze(CMakePackage): version('1.2', sha256='16f56d4f61dca229fa7e17a0d1e348a1f3246c65cded2df5db33babebf8f9b9d') version('1.1', sha256='6add20eb9c176ea9f8091c49b101f46d1a1a6bd9c31553a6eff5e53603f0527f') version('1.0', sha256='ee13cfd467c1a4b0fe7cc58b61b846eae862167a90dd2e60559626a30418b5a3') + + # These configuration options set defaults for dependent packages and + # control Blaze dependencies. They can also be enabled or disabled with + # compiler flags later by dependent packages, since Blaze is a header-only + # library. + # - BLAS mode is turned off by default in the Blaze CMake configuration (as + # of v3.8), so we turn it off by default here as well. + variant('blas', default=False, description='Enable BLAS kernels') + # - LAPACK is only a link-time dependency, but Blaze provides a CMake + # configuration check. It is enabled by default in the Blaze CMake + # configuration (as of v3.8). + variant('lapack', default=True, description='Enable LAPACK kernels') + # - SMP mode is set to OpenMP by default in the Blaze CMake configuration + # (as of v3.8), but isn't a required dependency. + variant('smp', values=['none', 'openmp', 'cpp11', 'boost', 'hpx'], + default='openmp', description='Shared memory parallelization mode') + + # Blaze requires at least cmake 3.8.0 for C++14 features. + depends_on('cmake@3.8.0:', type='build') + depends_on('blas', when='+blas') + depends_on('lapack', when='+lapack') + depends_on('boost@1.54.0: +thread', when='smp=boost') + depends_on('hpx', when='smp=hpx') + + def cmake_args(self): + args = [ + self.define_from_variant('BLAZE_BLAS_MODE', 'blas'), + # These flags can be set at compile time, but it would be useful to + # determine them from the BLAS provider if possible and pass them to + # the CMake configuration: + # - BLAZE_BLAS_IS_64BIT + # - BLAZE_BLAS_IS_PARALLEL + # The name of the header file is particularly important because + # builds will fail if `BLAZE_BLAS_MODE` is enabled but the header + # file is missing: + # - BLAZE_BLAS_INCLUDE_FILE (defaults to ) + self.define_from_variant('USE_LAPACK', 'lapack'), + ] + + # SMP mode + if self.spec.variants['smp'].value == 'none': + args.append(self.define('BLAZE_SHARED_MEMORY_PARALLELIZATION', False)) + else: + args.extend([ + self.define('BLAZE_SHARED_MEMORY_PARALLELIZATION', True), + self.define('BLAZE_SMP_THREADS', { + 'openmp': 'OpenMP', + 'cpp11': 'C++11', + 'boost': 'Boost', + 'hpx': 'HPX', + }[self.spec.variants['smp'].value]) + ]) + + return args diff --git a/var/spack/repos/builtin/packages/blt/package.py b/var/spack/repos/builtin/packages/blt/package.py index 0fc81e742167d3..96e60ef679edde 100644 --- a/var/spack/repos/builtin/packages/blt/package.py +++ b/var/spack/repos/builtin/packages/blt/package.py @@ -23,6 +23,7 @@ class Blt(Package): # if you export targets this could cause problems in downstream # projects if not handled properly. More info here: # https://llnl-blt.readthedocs.io/en/develop/tutorial/exporting_targets.html + version('0.5.0', sha256='5f680ef922d0e0a7ff1b1a5fc8aa107cd4f543ad888cbc9b12639bea72a6ab1f') version('0.4.1', sha256='16cc3e067ddcf48b99358107e5035a17549f52dcc701a35cd18a9d9f536826c1') version('0.4.0', sha256='f3bc45d28b9b2eb6df43b75d4f6f89a1557d73d012da7b75bac1be0574767193') version('0.3.6', sha256='6276317c29e7ff8524fbea47d9288ddb40ac06e9f9da5e878bf9011e2c99bf71') diff --git a/var/spack/repos/builtin/packages/bmi/package.py b/var/spack/repos/builtin/packages/bmi/package.py index ebc4dce2a8b2c2..3ecaabf8e836c9 100644 --- a/var/spack/repos/builtin/packages/bmi/package.py +++ b/var/spack/repos/builtin/packages/bmi/package.py @@ -11,10 +11,12 @@ class Bmi(AutotoolsPackage): homepage = 'https://github.com/radix-io/bmi/' git = 'https://github.com/radix-io/bmi.git' + url = 'https://github.com/radix-io/bmi/archive/v2.8.1.tar.gz' maintainers = ['carns'] version('main', branch='main') + version('2.8.1', sha256='28aa4341f0456cf20ee762f712d7c749ab8f864003329f9327c18ea03fc7ffdb') depends_on('autoconf', type='build') depends_on('automake', type='build') diff --git a/var/spack/repos/builtin/packages/bohrium/package.py b/var/spack/repos/builtin/packages/bohrium/package.py index f6dd89788b528a..0e10278dfafe6f 100644 --- a/var/spack/repos/builtin/packages/bohrium/package.py +++ b/var/spack/repos/builtin/packages/bohrium/package.py @@ -9,6 +9,7 @@ from spack import * from spack.package_test import compare_output +from spack.pkg.builtin.boost import Boost from spack.util.executable import Executable @@ -74,6 +75,11 @@ class Bohrium(CMakePackage, CudaPackage): depends_on('cmake@2.8:', type="build") depends_on('boost+system+serialization+filesystem+regex') + # 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) + # cuda dependencies managed by CudaPackage class depends_on('opencl', when="+opencl") diff --git a/var/spack/repos/builtin/packages/bolt/package.py b/var/spack/repos/builtin/packages/bolt/package.py index f7d14ffe2a1e01..57b64e45cada8b 100644 --- a/var/spack/repos/builtin/packages/bolt/package.py +++ b/var/spack/repos/builtin/packages/bolt/package.py @@ -5,6 +5,8 @@ import os +from llnl.util import tty + from spack import * @@ -57,19 +59,19 @@ def run_sample_nested_example(self): """Run stand alone test: sample_nested""" test_dir = join_path(self.test_suite.current_test_cache_dir, 'examples') + exe = 'sample_nested' + source_file = 'sample_nested.c' - if not os.path.exists(test_dir): - print('Skipping bolt test') + if not os.path.isfile(join_path(test_dir, source_file)): + tty.warn('Skipping bolt test:' + '{0} does not exist'.format(source_file)) return - exe = 'sample_nested' - - # TODO: Either change to use self.compiler.cc (so using the build-time compiler) - # or add test parts that compile with the different supported compilers. - self.run_test('gcc', - options=['-lomp', '-o', exe, - '-L{0}'.format(join_path(self.prefix, 'lib')), - '{0}'.format(join_path(test_dir, 'sample_nested.c'))], + self.run_test(exe=os.environ['CXX'], + options=['-L{0}'.format(self.prefix.lib), + '-I{0}'.format(self.prefix.include), + '{0}'.format(join_path(test_dir, source_file)), + '-o', exe, '-lomp', '-lbolt'], purpose='test: compile {0} example'.format(exe), work_dir=test_dir) @@ -78,5 +80,4 @@ def run_sample_nested_example(self): work_dir=test_dir) def test(self): - print("Running bolt test") self.run_sample_nested_example() diff --git a/var/spack/repos/builtin/packages/boost/bootstrap-compiler.patch b/var/spack/repos/builtin/packages/boost/bootstrap-compiler.patch new file mode 100644 index 00000000000000..6bc1a1257c1b47 --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/bootstrap-compiler.patch @@ -0,0 +1,13 @@ +diff --git a/bootstrap.sh b/bootstrap.sh +index 654801e21f..3331483aa5 100755 +--- a/bootstrap.sh ++++ b/bootstrap.sh +@@ -226,7 +226,7 @@ rm -f config.log + if test "x$BJAM" = x; then + $ECHO "Building B2 engine.." + pwd=`pwd` +- CXX= CXXFLAGS= "$my_dir/tools/build/src/engine/build.sh" ${TOOLSET} ++ CXXFLAGS= "$my_dir/tools/build/src/engine/build.sh" ${TOOLSET} --cxx="$CXX" + if [ $? -ne 0 ]; then + echo + echo "Failed to build B2 build engine" diff --git a/var/spack/repos/builtin/packages/boost/fujitsu_version_analysis-1.77.patch b/var/spack/repos/builtin/packages/boost/fujitsu_version_analysis-1.77.patch new file mode 100644 index 00000000000000..14b467f7355d10 --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/fujitsu_version_analysis-1.77.patch @@ -0,0 +1,11 @@ +--- spack-src/tools/build/src/tools/clang-linux.jam.orig 2022-02-22 09:51:17.000000000 +0900 ++++ spack-src/tools/build/src/tools/clang-linux.jam 2022-02-22 11:22:58.000000000 +0900 +@@ -97,7 +97,7 @@ + + rule get-full-version ( command-string ) + { +- return [ common.match-command-output version : "version ([0-9.]+)" ++ return [ common.match-command-output version : "LLVM ([0-9.]+)" + : "$(command-string) --version" ] ; + } + diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 16d1d9e246b73c..9aae2d1b141304 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -79,26 +79,10 @@ class Boost(Package): version('1.34.1', sha256='0f866c75b025a4f1340117a106595cc0675f48ba1e5a9b5c221ec7f19e96ec4c') version('1.34.0', sha256='455cb8fa41b759272768257c2e7bdc5c47ec113245dfa533f275e787a855efd2') - default_install_libs = set(['atomic', - 'chrono', - 'date_time', - 'exception', - 'filesystem', - 'graph', - 'iostreams', - 'locale', - 'log', - 'math', - 'program_options', - 'random', - 'regex', - 'serialization', - 'signals', - 'system', - 'test', - 'thread', - 'timer', - 'wave']) + with_default_variants = ("boost+atomic+chrono+date_time+exception+filesystem" + "+graph+iostreams+locale+log+math+program_options" + "+random+regex+serialization+signals+system+test" + "+thread+timer+wave") # mpi/python are not installed by default because they pull in many # dependencies and/or because there is a great deal of customization @@ -107,13 +91,37 @@ class Boost(Package): # Boost.Container can be both header-only and compiled. '+container' # indicates the compiled version which requires Extended Allocator # support. The header-only library is installed when no variant is given. - default_noinstall_libs\ - = set(['container', 'context', 'coroutine', 'fiber', 'mpi', 'python']) - - all_libs = default_install_libs | default_noinstall_libs + all_libs = [ + 'atomic', + 'chrono', + 'container', + 'context', + 'coroutine', + 'date_time', + 'exception', + 'fiber', + 'filesystem', + 'graph', + 'iostreams', + 'locale', + 'log', + 'math', + 'mpi', + 'program_options', + 'python', + 'random', + 'regex', + 'serialization', + 'signals', + 'system', + 'test', + 'thread', + 'timer', + 'wave' + ] for lib in all_libs: - variant(lib, default=(lib not in default_noinstall_libs), + variant(lib, default=False, description="Compile with {0} library".format(lib)) @property @@ -261,7 +269,8 @@ def libs(self): working_dir='libs/system', level=1) # Change the method for version analysis when using Fujitsu compiler. - patch('fujitsu_version_analysis.patch', when='@1.67.0:%fj') + patch('fujitsu_version_analysis.patch', when='@1.67.0:1.76.0%fj') + patch('fujitsu_version_analysis-1.77.patch', when='@1.77.0:%fj') # Add option to C/C++ compile commands in clang-linux.jam patch('clang-linux_add_option.patch', when='@1.56.0:1.63.0') @@ -292,6 +301,9 @@ def libs(self): # and https://github.com/spack/spack/pull/21408 patch("bootstrap-toolset.patch", when="@1.75") + # Fix compiler used for building bjam during bootstrap + patch("bootstrap-compiler.patch", when="@1.76:") + # Allow building context asm sources with GCC on Darwin # See https://github.com/spack/spack/pull/24889 # and https://github.com/boostorg/context/issues/177 @@ -299,14 +311,14 @@ def libs(self): # Fix float128 support when building with CUDA and Cray compiler # See https://github.com/boostorg/config/pull/378 - patch("https://github.com/boostorg/config/commit/fee1ad07968386b6d547f089311b7a2c1bf7fa55.patch", - sha256="3b159d65a0d3d2df2a21c6bf56ffaba943fce92d2d41d628b2c4d2e924e0f421", + patch("https://github.com/boostorg/config/commit/fee1ad07968386b6d547f089311b7a2c1bf7fa55.patch?full_index=1", + sha256="666eec8cfb0f71a87443ab27d179a9771bda32bcb8ff5e16afa3767f7b7f1e70", when="@:1.76%cce", level=2) # Fix building with Intel compilers - patch("https://github.com/bfgroup/b2/commit/23212066f0f20358db54568bb16b3fe1d76f88ce.patch", - sha256="93f4aad8f88d1437e50d95a2d066390ef3753b99ef5de24f7a46bc083bd6df06", + patch("https://github.com/bfgroup/b2/commit/23212066f0f20358db54568bb16b3fe1d76f88ce.patch?full_index=1", + sha256="4849671f9df4b8f3c962130d7f6d44eba3b20d113e84f9faade75e6469e90310", when="@1.77.0", working_dir="tools/build") diff --git a/var/spack/repos/builtin/packages/botan/package.py b/var/spack/repos/builtin/packages/botan/package.py index 76a0e460a111d7..b82c7c00e98bc8 100644 --- a/var/spack/repos/builtin/packages/botan/package.py +++ b/var/spack/repos/builtin/packages/botan/package.py @@ -14,6 +14,9 @@ class Botan(Package): maintainers = ['aumuell'] + version('2.19.1', sha256='e26e00cfefda64082afdd540d3c537924f645d6a674afed2cd171005deff5560') + version('2.19.0', sha256='240d9e56e6acb91ef4cf06a8a1c6c0f101c61d40cf48cccf139faef821d7040b') + version('2.18.2', sha256='541a3b13f1b9d30f977c6c1ae4c7bfdfda763cda6e44de807369dce79f42307e') version('2.18.1', sha256='f8c7b46222a857168a754a5cc329bb780504122b270018dda5304c98db28ae29') version('2.18.0', sha256='cc64852e1e0c5bb30ecd052e4a12d5136125a8ce5c3be2efb6fb061c8677e327') version('2.17.3', sha256='79123b654445a4abba486e09a431788545c708237382a3e765664c9f55b03b88') diff --git a/var/spack/repos/builtin/packages/branson/package.py b/var/spack/repos/builtin/packages/branson/package.py index 21347672de39ef..f5611869dff34e 100644 --- a/var/spack/repos/builtin/packages/branson/package.py +++ b/var/spack/repos/builtin/packages/branson/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Branson(CMakePackage): @@ -25,7 +26,11 @@ class Branson(CMakePackage): version('0.8', sha256='85ffee110f89be00c37798700508b66b0d15de1d98c54328b6d02a9eb2cf1cb8') depends_on('mpi@2:') - depends_on('boost', when='@:0.81') + + # 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, when='@:0.81') depends_on('metis') depends_on('parmetis', when='@:0.81') diff --git a/var/spack/repos/builtin/packages/bridger/package.py b/var/spack/repos/builtin/packages/bridger/package.py index 9098a6c22714f3..4b3e78d63a4414 100644 --- a/var/spack/repos/builtin/packages/bridger/package.py +++ b/var/spack/repos/builtin/packages/bridger/package.py @@ -16,8 +16,7 @@ class Bridger(MakefilePackage, SourceforgePackage): sourceforge_mirror_path = "rnaseqassembly/Bridger_r2014-12-01.tar.gz" version('2014-12-01', sha256='8fbec8603ea8ad2162cbd0c658e4e0a4af6453bdb53310b4b7e0d112e40b5737') - - depends_on('boost') + depends_on('boost + exception + filesystem + system + serialization + graph') depends_on('perl', type='run') def flag_handler(self, name, flags): diff --git a/var/spack/repos/builtin/packages/butterflypack/package.py b/var/spack/repos/builtin/packages/butterflypack/package.py index 993c5c0ba40208..715f7244cc1c18 100644 --- a/var/spack/repos/builtin/packages/butterflypack/package.py +++ b/var/spack/repos/builtin/packages/butterflypack/package.py @@ -22,10 +22,11 @@ class Butterflypack(CMakePackage): homepage = "https://github.com/liuyangzhuan/ButterflyPACK" git = "https://github.com/liuyangzhuan/ButterflyPACK.git" - url = "https://github.com/liuyangzhuan/ButterflyPACK/archive/v2.1.0.tar.gz" + url = "https://github.com/liuyangzhuan/ButterflyPACK/archive/v2.1.1.tar.gz" maintainers = ['liuyangzhuan'] version('master', branch='master') + version('2.1.1', sha256='0d4a1ce540c84de37e4398f72ecf685ea0c4eabceba13015add5b445a4ca3a15') version('2.1.0', sha256='ac76cc8d431797c1a3641b23124e3de5eb8c3a3afb71c336e7ba69c6cdf150ef') version('2.0.0', sha256='84f0e5ac40997409f3c80324238a07f9c700a1263b84140ed97275d67b577b80') version('1.2.1', sha256='cd61b0e033f55a932f13d9902e28a7abbf029c279cec9ab1b2a063525d036fa2') diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py index fc2773b71f997e..b3e059dc27a753 100644 --- a/var/spack/repos/builtin/packages/c-blosc/package.py +++ b/var/spack/repos/builtin/packages/c-blosc/package.py @@ -14,6 +14,7 @@ class CBlosc(CMakePackage): homepage = "https://www.blosc.org" url = "https://github.com/Blosc/c-blosc/archive/v1.11.1.tar.gz" + version('1.21.1', sha256='f387149eab24efa01c308e4cba0f59f64ccae57292ec9c794002232f7903b55b') version('1.21.0', sha256='b0ef4fda82a1d9cbd11e0f4b9685abf14372db51703c595ecd4d76001a8b342d') version('1.17.0', sha256='75d98c752b8cf0d4a6380a3089d56523f175b0afa2d0cf724a1bd0a1a8f975a4') version('1.16.3', sha256='bec56cb0956725beb93d50478e918aca09f489f1bfe543dbd3087827a7344396') diff --git a/var/spack/repos/builtin/packages/c-blosc2/package.py b/var/spack/repos/builtin/packages/c-blosc2/package.py index b5789ef443a868..2a8045776cd964 100644 --- a/var/spack/repos/builtin/packages/c-blosc2/package.py +++ b/var/spack/repos/builtin/packages/c-blosc2/package.py @@ -17,6 +17,7 @@ class CBlosc2(CMakePackage): maintainers = ['ax3l', 'robert-mijakovic'] version('develop', branch='master') + version('2.0.4', sha256='90c78edcc262759dd16d243141513310624bb4fda3d98ac34dcfb78255e151c1') version('2.0.2', sha256='fba51ba601610441eea6046e384284b2d8d7884922060cf15369d01d713b9b77') version('2.0.1', sha256='35b93dfed479b1dfd9372d41d7843b60254ed1d71792577b95e489c28705874f') diff --git a/var/spack/repos/builtin/packages/ca-certificates-mozilla/package.py b/var/spack/repos/builtin/packages/ca-certificates-mozilla/package.py index daa31938022f01..ee9fc00018431a 100644 --- a/var/spack/repos/builtin/packages/ca-certificates-mozilla/package.py +++ b/var/spack/repos/builtin/packages/ca-certificates-mozilla/package.py @@ -14,6 +14,8 @@ class CaCertificatesMozilla(Package): maintainers = ['haampie'] + version('2022-03-29', sha256='1979e7fe618c51ed1c9df43bba92f977a0d3fe7497ffa2a5e80dfc559a1e5a29', expand=False) + version('2022-03-18', sha256='2d0575e481482551a6a4f9152e7d2ab4bafaeaee5f2606edb829c2fdb3713336', expand=False) version('2022-02-01', sha256='1d9195b76d2ea25c2b5ae9bee52d05075244d78fcd9c58ee0b6fac47d395a5eb', expand=False) version('2021-10-26', sha256='ae31ecb3c6e9ff3154cb7a55f017090448f88482f0e94ac927c0c67a1f33b9cf', expand=False) version('2021-09-30', sha256='f524fc21859b776e18df01a87880efa198112214e13494275dbcbd9bcb71d976', expand=False) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index 7953bff17bc486..844e3aba2bd30e 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Caffe(CMakePackage, CudaPackage): @@ -33,8 +34,12 @@ class Caffe(CMakePackage, CudaPackage): variant('matlab', default=False, description='Build Matlab wrapper') - depends_on('boost') depends_on('boost +python', when='+python') + + # 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, when='+python') depends_on('cuda', when='+cuda') depends_on('blas') depends_on('protobuf@:3.17') diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index 30eb7f70b327c7..a41b1b685bff0d 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -154,30 +154,36 @@ def cache_test_sources(self): def run_cxx_example_test(self): """Run stand alone test: cxx_example""" - test_dir = join_path(self.test_suite.current_test_cache_dir, 'examples', 'apps') + test_dir = self.test_suite.current_test_cache_dir.examples.apps + exe = 'cxx-example' + source_file = 'cxx-example.cpp' - if not os.path.isfile(join_path(test_dir, 'cxx-example.cpp')): - tty.msg('Skipping caliper test: file does not exist') + if not os.path.isfile(join_path(test_dir, source_file)): + tty.warn('Skipping caliper test:' + '{0} does not exist'.format(source_file)) return - exe = 'cxx-example' - if os.path.exists(self.prefix.lib): lib_dir = self.prefix.lib else: lib_dir = self.prefix.lib64 - self.run_test(exe='gcc', - options=['{0}'.format(join_path(test_dir, 'cxx-example.cpp')), - '-L{0}'.format(lib_dir), - '-I{0}'.format(self.prefix.include), - '-std=c++11', '-lcaliper', '-lstdc++', '-o', exe], - purpose='test: compile {0} example'.format(exe), - work_dir=test_dir) - - self.run_test(exe, - purpose='test: run {0} example'.format(exe), - work_dir=test_dir) + options = ['-L{0}'.format(lib_dir), + '-I{0}'.format(self.prefix.include), + '{0}'.format(join_path(test_dir, source_file)), + '-o', exe, '-std=c++11', '-lcaliper', '-lstdc++'] + + if not self.run_test(exe=os.environ['CXX'], + options=options, + purpose='test: compile {0} example'.format(exe), + work_dir=test_dir): + tty.warn('Skipping caliper test: failed to compile example') + return + + if not self.run_test(exe, + purpose='test: run {0} example'.format(exe), + work_dir=test_dir): + tty.warn('Skipping caliper test: failed to run example') def test(self): self.run_cxx_example_test() diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index 54cda50d30e827..ad7824ac88b582 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Cantera(SConsPackage): @@ -31,7 +32,11 @@ class Cantera(SConsPackage): depends_on('fmt@3.0.0:3.0.2', when='@2.3.0:') depends_on('googletest+gmock', when='@2.3.0:') depends_on('eigen', when='@2.3.0:') - depends_on('boost') + + # 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('sundials@:3.1.2+lapack', when='+sundials') # must be compiled with -fPIC depends_on('blas') depends_on('lapack') diff --git a/var/spack/repos/builtin/packages/canu/package.py b/var/spack/repos/builtin/packages/canu/package.py index 5a793028c69caa..ca02d7ca8585fb 100644 --- a/var/spack/repos/builtin/packages/canu/package.py +++ b/var/spack/repos/builtin/packages/canu/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Canu(MakefilePackage): @@ -25,6 +26,11 @@ class Canu(MakefilePackage): # build fail when using boost@1.71.0:1.73.0 by canu@1.8:2.0 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) + build_directory = 'src' build_targets = ['clean'] diff --git a/var/spack/repos/builtin/packages/capstone/package.py b/var/spack/repos/builtin/packages/capstone/package.py index 2d51c4eea57999..734fd804492b5f 100644 --- a/var/spack/repos/builtin/packages/capstone/package.py +++ b/var/spack/repos/builtin/packages/capstone/package.py @@ -11,10 +11,9 @@ class Capstone(CMakePackage): multi-architecture disassembly framework.""" homepage = "https://www.capstone-engine.org/" - url = "https://github.com/aquynh/capstone/archive/4.0.1.tar.gz" - git = "https://github.com/aquynh/capstone.git" + url = "https://github.com/capstone-engine/capstone/archive/4.0.1.tar.gz" + git = "https://github.com/capstone-engine/capstone.git" version('next', branch='next') - version('master', branch='master') version('4.0.2', sha256='7c81d798022f81e7507f1a60d6817f63aa76e489aa4e7055255f21a22f5e526a') version('4.0.1', sha256='79bbea8dbe466bd7d051e037db5961fdb34f67c9fac5c3471dd105cfb1e05dc7') diff --git a/var/spack/repos/builtin/packages/casacore/package.py b/var/spack/repos/builtin/packages/casacore/package.py index 279406ca48f22b..cd067f7f7d0575 100644 --- a/var/spack/repos/builtin/packages/casacore/package.py +++ b/var/spack/repos/builtin/packages/casacore/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Casacore(CMakePackage): @@ -60,6 +61,11 @@ class Casacore(CMakePackage): depends_on('mpi', when='+adios2') depends_on('python@2.6:', when='+python') depends_on('boost+python', when='+python') + + # 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, when='+python') depends_on('py-numpy', when='+python') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/casper/package.py b/var/spack/repos/builtin/packages/casper/package.py index 17d89367191e42..436c13104718dd 100644 --- a/var/spack/repos/builtin/packages/casper/package.py +++ b/var/spack/repos/builtin/packages/casper/package.py @@ -18,7 +18,7 @@ class Casper(MakefilePackage): version('0.8.2', sha256='3005e165cebf8ce4e12815b7660a833e0733441b5c7e5ecbfdccef7414b0c914') depends_on('jellyfish@2.2.3:') - depends_on('boost') + depends_on('boost+exception') conflicts('%gcc@7.1.0') diff --git a/var/spack/repos/builtin/packages/cblas/package.py b/var/spack/repos/builtin/packages/cblas/package.py index f0d5c3818c7d36..93981fddaed8b8 100644 --- a/var/spack/repos/builtin/packages/cblas/package.py +++ b/var/spack/repos/builtin/packages/cblas/package.py @@ -11,7 +11,7 @@ class Cblas(Package): provide standard building blocks for performing basic vector and matrix operations.""" - homepage = "http://www.netlib.org/blas/_cblas/" + homepage = "http://www.netlib.org/blas/#_cblas" # tarball has no version, but on the date below, this MD5 was correct. version('2015-06-06', sha256='0f6354fd67fabd909baf57ced2ef84e962db58fae126e4f41b21dd4fec60a2a3', diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py index 50cb66ada95bd1..1e6a64a82a8759 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class CbtfArgonavisGui(QMakePackage): @@ -24,6 +25,11 @@ class CbtfArgonavisGui(QMakePackage): depends_on("boost@1.66.0:1.69.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) + # For MRNet depends_on("mrnet@5.0.1-3:+lwthreads", when='@develop') depends_on("mrnet@5.0.1-3+lwthreads", when='@1.3.0.0:9999') diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index 7259ca418e5f86..19934fe3fc7cdc 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class CbtfArgonavis(CMakePackage): @@ -38,6 +39,11 @@ class CbtfArgonavis(CMakePackage): # For boost 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) + # For MRNet depends_on("mrnet@5.0.1-3:+lwthreads", when='@develop', type=('build', 'link', 'run')) depends_on("mrnet@5.0.1-3+lwthreads", when='@1.9.3:9999', type=('build', 'link', 'run')) diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index 8202918bbd209f..bd0f045d8dd0c5 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -6,6 +6,7 @@ import spack import spack.store from spack import * +from spack.pkg.builtin.boost import Boost class CbtfKrell(CMakePackage): @@ -55,6 +56,11 @@ class CbtfKrell(CMakePackage): # For boost 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) + # For Dyninst depends_on("dyninst@10.1.0", when='@develop') depends_on("dyninst@10.1.0", when='@1.9.3:9999') diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index 793262020a82c2..13fb91630b53c8 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Cbtf(CMakePackage): @@ -38,6 +39,11 @@ class Cbtf(CMakePackage): 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) + # For MRNet depends_on("mrnet@5.0.1-3:+lwthreads", when='@develop') depends_on("mrnet@5.0.1-3+lwthreads", when='@1.9.3:9999') diff --git a/var/spack/repos/builtin/packages/ccache/package.py b/var/spack/repos/builtin/packages/ccache/package.py index 07a676a046fa54..3258bceb4f9312 100644 --- a/var/spack/repos/builtin/packages/ccache/package.py +++ b/var/spack/repos/builtin/packages/ccache/package.py @@ -17,6 +17,8 @@ class Ccache(CMakePackage): url = "https://github.com/ccache/ccache/releases/download/v4.2.1/ccache-4.2.1.tar.gz" maintainers = ['haampie'] + tags = ['build-tools'] + executables = ['^ccache$'] version('4.5.1', sha256='f0d3cff5d555d6868f14a7d05696f0370074e475304fd5aa152b98f892364981') diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index f02277246ea58d..e2d6aaf6bac4b4 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -20,6 +20,8 @@ class Cdo(AutotoolsPackage): maintainers = ['skosukhin', 'Try2Code'] + version('2.0.5', sha256='edeebbf1c3b1a1f0c642dae6bc8c7624e0c54babe461064dc5c7daca4a5b0dce', url='https://code.mpimet.mpg.de/attachments/download/26823/cdo-2.0.5.tar.gz') + version('2.0.4', sha256='73c0c1e5348632e6e8452ea8e617c35499bc55c845ee2c1d42b912a7e00e5533', url='https://code.mpimet.mpg.de/attachments/download/26761/cdo-2.0.4.tar.gz') version('2.0.3', sha256='25520260ccb4e5324c27fa2160dfafc8152b180dd7f0133bd80425df3ef7c65a', url='https://code.mpimet.mpg.de/attachments/download/26676/cdo-2.0.3.tar.gz') version('2.0.2', sha256='34dfdd0d4126cfd35fc69e37e60901c8622d13ec5b3fa5f0fe6a1cc866cc5a70', url='https://code.mpimet.mpg.de/attachments/download/26654/cdo-2.0.2.tar.gz') version('2.0.1', sha256='d0794d261e22efa0adac8e6d18de2b60d54de5e1a4df6127c65fc417feb8fdac', url='https://code.mpimet.mpg.de/attachments/download/26477/cdo-2.0.1.tar.gz') diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index a548ca16b06ee7..d4753c69974174 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -52,7 +52,7 @@ class Cgal(CMakePackage): depends_on('cmake@2.8.11:', type='build') # Essential Third Party Libraries - depends_on('boost+thread+system') + depends_on('boost+exception+math+random+container') depends_on('gmp') depends_on('mpfr') diff --git a/var/spack/repos/builtin/packages/cgns/package.py b/var/spack/repos/builtin/packages/cgns/package.py index 80f29f1a5796fb..04f6a83b8610a4 100644 --- a/var/spack/repos/builtin/packages/cgns/package.py +++ b/var/spack/repos/builtin/packages/cgns/package.py @@ -14,13 +14,15 @@ class Cgns(CMakePackage): fluid dynamics (CFD) analysis data.""" homepage = "https://cgns.github.io/" - url = "https://github.com/CGNS/CGNS/archive/v3.3.0.tar.gz" + url = "https://github.com/CGNS/CGNS/archive/v4.3.0.tar.gz" git = "https://github.com/CGNS/CGNS" + maintainers = ['gsjaardema'] parallel = False version('develop', branch='develop') version('master', branch='master') + version('4.3.0', sha256='7709eb7d99731dea0dd1eff183f109eaef8d9556624e3fbc34dc5177afc0a032') version('4.2.0', sha256='090ec6cb0916d90c16790183fc7c2bd2bd7e9a5e3764b36c8196ba37bf1dc817') version('4.1.2', sha256='951653956f509b8a64040f1440c77f5ee0e6e2bf0a9eef1248d370f60a400050') version('4.1.1', sha256='055d345c3569df3ae832fb2611cd7e0bc61d56da41b2be1533407e949581e226') @@ -43,6 +45,7 @@ class Cgns(CMakePackage): variant('legacy', default=False, description='Enable legacy options') variant('mem_debug', default=False, description='Enable memory debugging option') + depends_on('cmake@3.12:', when='@4.3:', type='build') depends_on('cmake@3.8:', when='@4.2:', type='build') depends_on('cmake@2.8:', when='@:4.1', type='build') depends_on('hdf5~mpi', when='+hdf5~mpi') diff --git a/var/spack/repos/builtin/packages/channelflow/package.py b/var/spack/repos/builtin/packages/channelflow/package.py index a931b09cd3e250..9d9ecedc7ff079 100644 --- a/var/spack/repos/builtin/packages/channelflow/package.py +++ b/var/spack/repos/builtin/packages/channelflow/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Channelflow(CMakePackage): @@ -40,6 +41,11 @@ class Channelflow(CMakePackage): # Python bindings depends_on('boost+python', when='+python') + # 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, when='+python') + conflicts('~mpi', when='netcdf=parallel', msg='Parallel NetCDF requires MPI') conflicts( '+mpi', when='+python', diff --git a/var/spack/repos/builtin/packages/charmpp/package.py b/var/spack/repos/builtin/packages/charmpp/package.py index fe867153a5c043..6d8bda0f37288f 100644 --- a/var/spack/repos/builtin/packages/charmpp/package.py +++ b/var/spack/repos/builtin/packages/charmpp/package.py @@ -94,9 +94,7 @@ class Charmpp(Package): # Other options variant("papi", default=False, description="Enable PAPI integration") variant("syncft", default=False, description="Compile with Charm++ fault tolerance support") - variant("smp", default=True, - description=( - "Enable SMP parallelism (does not work with +multicore)")) + variant("smp", default=True, description="Enable SMP parallelism") variant("tcp", default=False, description="Use TCP as transport mechanism (requires +net)") variant("omp", default=False, description="Support for the integrated LLVM OpenMP runtime") @@ -134,7 +132,8 @@ class Charmpp(Package): conflicts("~tracing", "+papi") - conflicts("backend=multicore", "+smp") + conflicts("backend=multicore", when="~smp", + msg="The 'multicore' backend always uses SMP") conflicts("backend=ucx", when="@:6.9") # Shared-lib builds with GCC are broken on macOS: @@ -299,7 +298,11 @@ def install(self, spec, prefix): options.extend(["--basedir=%s" % spec["ucx"].prefix]) if "+papi" in spec: options.extend(["papi", "--basedir=%s" % spec["papi"].prefix]) - if "+smp" in spec: + if "+smp" in spec and 'backend=multicore' not in spec: + # The 'multicore' backend always uses SMP, so we don't have to + # append the 'smp' option when the 'multicore' backend is active. As + # of Charm++ v7.0.0 it is actually a build error to append 'smp' + # with the 'multicore' backend. options.append("smp") if "+tcp" in spec: if 'backend=netlrts' not in spec: @@ -367,10 +370,11 @@ def check_build(self): 'test', 'TESTOPTS=++local', parallel=False) def setup_dependent_build_environment(self, env, dependent_spec): - env.set('MPICC', self.prefix.bin.ampicc) - env.set('MPICXX', self.prefix.bin.ampicxx) - env.set('MPIF77', self.prefix.bin.ampif77) - env.set('MPIF90', self.prefix.bin.ampif90) + if not self.spec.satisfies("backend=mpi"): + env.set('MPICC', self.prefix.bin.ampicc) + env.set('MPICXX', self.prefix.bin.ampicxx) + env.set('MPIF77', self.prefix.bin.ampif77) + env.set('MPIF90', self.prefix.bin.ampif90) def setup_dependent_package(self, module, dependent_spec): self.spec.mpicc = self.prefix.bin.ampicc diff --git a/var/spack/repos/builtin/packages/chill/package.py b/var/spack/repos/builtin/packages/chill/package.py index 5e9df74870083c..5954a63940071d 100644 --- a/var/spack/repos/builtin/packages/chill/package.py +++ b/var/spack/repos/builtin/packages/chill/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Chill(AutotoolsPackage): @@ -19,6 +20,11 @@ class Chill(AutotoolsPackage): version('0.3', sha256='574b622368a6bfaadbe9c1fa02fabefdc6c006069246f67d299f943b7e1d8aa3') depends_on('boost@1.66.0 cxxstd=11', type='build') + + # 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, type='build') depends_on('rose@0.9.13.0: +cxx11', type=('build', 'run')) depends_on('autoconf', type='build') depends_on('automake@1.14:', type='build') diff --git a/var/spack/repos/builtin/packages/cistem/package.py b/var/spack/repos/builtin/packages/cistem/package.py index d34f0bdbf2262c..d221c967b593ea 100644 --- a/var/spack/repos/builtin/packages/cistem/package.py +++ b/var/spack/repos/builtin/packages/cistem/package.py @@ -19,3 +19,4 @@ class Cistem(AutotoolsPackage): depends_on('wxwidgets@3.0.2') depends_on('fftw') + depends_on('libtiff') diff --git a/var/spack/repos/builtin/packages/claw/package.py b/var/spack/repos/builtin/packages/claw/package.py index af6dc82635c432..1d9223f4240f1f 100644 --- a/var/spack/repos/builtin/packages/claw/package.py +++ b/var/spack/repos/builtin/packages/claw/package.py @@ -36,14 +36,14 @@ class Claw(CMakePackage): # Enable parsing of source files with calls to TRACEBACKQQ from the Intel # Fortran run-time library: - patch('https://github.com/claw-project/claw-compiler/commit/e9fe6dbd291454ce34dd58f21d102f7f1bdff874.patch', - sha256='82033a576966143f3b1fd66f4d5b5604704b615b3e08afa4901fc1c29caefbe2', + patch('https://github.com/claw-project/claw-compiler/commit/e9fe6dbd291454ce34dd58f21d102f7f1bdff874.patch?full_index=1', + sha256='262799fde57cb32f1514db22a7757e994bd8b97090ce0a5f55249fd56d0e5c29', when='@:2.0.2%intel') # Fix the dependency preprocessing for compilers that cannot use # redirection > to save file (cce is currently the only known case): - patch('https://github.com/claw-project/claw-compiler/commit/4d8bc7a794af3651b8b61501388fc00096b23a85.patch', - sha256='0a55110c67d7755741e1c86c2f71341286e7502a81ac29958ce80273e87bc8e1', + patch('https://github.com/claw-project/claw-compiler/commit/4d8bc7a794af3651b8b61501388fc00096b23a85.patch?full_index=1', + sha256='a20427456560070e284ff44edb658383b635042be91d2ffbe7aeb7afbd8f02bc', when='@2.0.2%cce') # Cache ANT dependencies in the stage directory. diff --git a/var/spack/repos/builtin/packages/cleverleaf/package.py b/var/spack/repos/builtin/packages/cleverleaf/package.py index 6c8c9cfc740b9f..1d5aa842f9baba 100644 --- a/var/spack/repos/builtin/packages/cleverleaf/package.py +++ b/var/spack/repos/builtin/packages/cleverleaf/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Cleverleaf(CMakePackage): @@ -21,7 +22,11 @@ class Cleverleaf(CMakePackage): depends_on('samrai@3.8.0:') depends_on('hdf5+mpi') - depends_on('boost') + + # 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('cmake@3.1:', type='build') # The Fujitsu compiler requires the '--linkfortran' diff --git a/var/spack/repos/builtin/packages/clfft/package.py b/var/spack/repos/builtin/packages/clfft/package.py index 52801d0e77e929..5e415bb399d853 100644 --- a/var/spack/repos/builtin/packages/clfft/package.py +++ b/var/spack/repos/builtin/packages/clfft/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Clfft(CMakePackage): @@ -20,8 +21,13 @@ class Clfft(CMakePackage): depends_on('opencl@1.2:') depends_on('boost@1.33.0:', when='+client') - patch('https://github.com/clMathLibraries/clFFT/commit/eea7dbc888367b8dbea602ba539eb1a9cbc118d9.patch', - sha256='3148d5937077def301b30b913bc2437df869204fca1de4385ccd46e3b98b13aa', when='@2.12.2') + # 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, when='+client') + + patch('https://github.com/clMathLibraries/clFFT/commit/eea7dbc888367b8dbea602ba539eb1a9cbc118d9.patch?full_index=1', + sha256='9ee126955f0bb9469c8302d8b08672d60a493d3373dbad06bdfda0b5c7893488', when='@2.12.2') root_cmakelists_dir = 'src' diff --git a/var/spack/repos/builtin/packages/clinfo/package.py b/var/spack/repos/builtin/packages/clinfo/package.py index f0ceba44a1ec4e..ea52c85e8dadf5 100644 --- a/var/spack/repos/builtin/packages/clinfo/package.py +++ b/var/spack/repos/builtin/packages/clinfo/package.py @@ -16,6 +16,8 @@ class Clinfo(MakefilePackage): maintainers = ['matthiasdiener'] + version('3.0.21.02.21', sha256='e52f5c374a10364999d57a1be30219b47fb0b4f090e418f2ca19a0c037c1e694') + version('3.0.20.11.20', sha256='3c506083e72e9ee09fc7d5de513be7c5eff0284f198a60fb60ab493f6f0a549a') version('2.2.18.04.06', sha256='f77021a57b3afcdebc73107e2254b95780026a9df9aa4f8db6aff11c03f0ec6c') depends_on('opencl') diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index e91b6eacdc0f40..0b8c63aea7d555 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -3,9 +3,12 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import re +import sys import spack.build_environment +from spack import * class Cmake(Package): @@ -22,9 +25,13 @@ class Cmake(Package): executables = ['^cmake$'] version('master', branch='master') + version('3.23.0', sha256='5ab0a12f702f44013be7e19534cd9094d65cc9fe7b2cd0f8c9e5318e0fe4ac82') + version('3.22.3', sha256='9f8469166f94553b6978a16ee29227ec49a2eb5ceb608275dec40d8ae0d1b5a0') version('3.22.2', sha256='3c1c478b9650b107d452c5bd545c72e2fad4e37c09b89a1984b9a2f46df6aced') version('3.22.1', sha256='0e998229549d7b3f368703d20e248e7ee1f853910d42704aa87918c213ea82c0') version('3.22.0', sha256='998c7ba34778d2dfdb3df8a695469e24b11e2bfa21fbe41b361a3f45e1c9345e') + version('3.21.6', sha256='b7c3ac35ca7ed3cce8c192c9c873e6061aaecc8b2bc564290e629b10bff59f3c') + version('3.21.5', sha256='c73587b5ab827d56c09f0a1e256b12743ff200495e31fc9686f2b9dc8a28897f') version('3.21.4', sha256='d9570a95c215f4c9886dd0f0564ca4ef8d18c30750f157238ea12669c2985978') version('3.21.3', sha256='d14d06df4265134ee42c4d50f5a60cb8b471b7b6a47da8e5d914d49dd783794f') version('3.21.2', sha256='94275e0b61c84bb42710f5320a23c6dcb2c6ee032ae7d2a616f53f68b3d21659') @@ -141,6 +148,8 @@ class Cmake(Package): # https://gitlab.kitware.com/cmake/cmake/merge_requests/4075 patch('fix-xlf-ninja-mr-4075.patch', sha256="42d8b2163a2f37a745800ec13a96c08a3a20d5e67af51031e51f63313d0dedd1", when="@3.15.5") + depends_on('ninja', when='platform=windows') + # We default ownlibs to true because it greatly speeds up the CMake # build, and CMake is built frequently. Also, CMake is almost always # a build dependency, and its libs will not interfere with others in @@ -149,14 +158,18 @@ class Cmake(Package): variant('qt', default=False, description='Enables the build of cmake-gui') variant('doc', default=False, description='Enables the generation of html and man page documentation') variant('openssl', default=True, description="Enable openssl for curl bootstrapped by CMake when using +ownlibs") - variant('ncurses', default=True, description='Enables the build of the ncurses gui') + variant('ncurses', default=os.name != 'nt', description='Enables the build of the ncurses gui') # See https://gitlab.kitware.com/cmake/cmake/-/issues/21135 conflicts('%gcc platform=darwin', when='@:3.17', msg='CMake <3.18 does not compile with GCC on macOS, ' 'please use %apple-clang or a newer CMake release. ' 'See: https://gitlab.kitware.com/cmake/cmake/-/issues/21135') - conflicts('%nvhpc') + + # Seems like the vendored dependencies do not build with nvhpc, and linking with + # ncurses runs into issues. + conflicts('+ownlibs %nvhpc') + conflicts('+ncurses %nvhpc') # Really this should conflict since it's enabling or disabling openssl for # CMake's internal copy of curl. Ideally we'd want a way to have the @@ -222,6 +235,18 @@ class Cmake(Package): conflicts('%intel@:14', when='@3.14:', msg="Intel 14 has immature C++11 support") + resource(name='cmake-bootstrap', + url='https://cmake.org/files/v3.21/cmake-3.21.2-windows-x86_64.zip', + checksum='213a4e6485b711cb0a48cbd97b10dfe161a46bfe37b8f3205f47e99ffec434d2', + placement='cmake-bootstrap', + when='@3.0.2: platform=windows') + + resource(name='cmake-bootstrap', + url='https://cmake.org/files/v2.8/cmake-2.8.4-win32-x86.zip', + checksum='8b9b520f3372ce67e33d086421c1cb29a5826d0b9b074f44a8a0304e44cf88f3', + placement='cmake-bootstrap', + when='@:2.8.10.2 platform=windows') + phases = ['bootstrap', 'build', 'install'] @classmethod @@ -241,37 +266,50 @@ def flag_handler(self, name, flags): flags.append(self.compiler.cxx11_flag) return (flags, None, None) - def bootstrap_args(self): + def setup_build_environment(self, env): spec = self.spec - args = [ - '--prefix={0}'.format(self.prefix), - '--parallel={0}'.format(make_jobs) - ] - - if '+ownlibs' in spec: - # Build and link to the CMake-provided third-party libraries - args.append('--no-system-libs') - else: - # Build and link to the Spack-installed third-party libraries - args.append('--system-libs') + if '+openssl' in spec: + env.set('OPENSSL_ROOT_DIR', spec['openssl'].prefix) - if spec.satisfies('@3.2:'): - # jsoncpp requires CMake to build - # use CMake-provided library to avoid circular dependency - args.append('--no-system-jsoncpp') - - if '+qt' in spec: - args.append('--qt-gui') + def bootstrap_args(self): + spec = self.spec + args = [] + self.generator = make + + if not sys.platform == 'win32': + args.extend( + ['--prefix={0}'.format(self.prefix), + '--parallel={0}'.format(make_jobs)] + ) + + if '+ownlibs' in spec: + # Build and link to the CMake-provided third-party libraries + args.append('--no-system-libs') + else: + # Build and link to the Spack-installed third-party libraries + args.append('--system-libs') + + if spec.satisfies('@3.2:'): + # jsoncpp requires CMake to build + # use CMake-provided library to avoid circular dependency + args.append('--no-system-jsoncpp') + + if '+qt' in spec: + args.append('--qt-gui') + else: + args.append('--no-qt-gui') + + if '+doc' in spec: + args.append('--sphinx-html') + args.append('--sphinx-man') + + # Now for CMake arguments to pass after the initial bootstrap + args.append('--') else: - args.append('--no-qt-gui') - - if '+doc' in spec: - args.append('--sphinx-html') - args.append('--sphinx-man') - - # Now for CMake arguments to pass after the initial bootstrap - args.append('--') - + args.append('-DCMAKE_INSTALL_PREFIX=%s' % self.prefix) + if self.spec.satisfies('platform=windows'): + args.append('-GNinja') + self.generator = ninja args.append('-DCMAKE_BUILD_TYPE={0}'.format( self.spec.variants['build_type'].value)) @@ -297,21 +335,32 @@ def bootstrap_args(self): return args + def cmake_bootstrap(self): + exe_prefix = self.stage.source_path + relative_cmake_exe = os.path.join('cmake-bootstrap', 'bin', 'cmake.exe') + return Executable(os.path.join(exe_prefix, relative_cmake_exe)) + def bootstrap(self, spec, prefix): - bootstrap = Executable('./bootstrap') - bootstrap(*self.bootstrap_args()) + bootstrap_args = self.bootstrap_args() + if sys.platform == 'win32': + # self.winbootcmake(spec) + bootstrap = self.cmake_bootstrap() + bootstrap_args.extend(['.']) + else: + bootstrap = Executable('./bootstrap') + bootstrap(*bootstrap_args) def build(self, spec, prefix): - make() + self.generator() @run_after('build') @on_package_attributes(run_tests=True) def build_test(self): # Some tests fail, takes forever - make('test') + self.generator('test') def install(self, spec, prefix): - make('install') + self.generator('install') if spec.satisfies('%fj'): for f in find(self.prefix, 'FindMPI.cmake', recursive=True): diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py index 2973122db1c1db..e2f871d8bba0f4 100644 --- a/var/spack/repos/builtin/packages/cntk/package.py +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Cntk(Package): @@ -31,7 +32,10 @@ class Cntk(Package): depends_on('libzip') depends_on('openblas') depends_on('mpi') - depends_on('boost') + # 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('protobuf@3.10') # CNTK depends on kaldi@c02e8. # See https://github.com/Microsoft/CNTK/blob/master/Tools/docker/CNTK-CPUOnly-Image/Dockerfile#L105-L125 diff --git a/var/spack/repos/builtin/packages/cnvnator/package.py b/var/spack/repos/builtin/packages/cnvnator/package.py index 56359c291a597a..42ee4fbf036857 100644 --- a/var/spack/repos/builtin/packages/cnvnator/package.py +++ b/var/spack/repos/builtin/packages/cnvnator/package.py @@ -15,13 +15,15 @@ class Cnvnator(MakefilePackage): version('0.3.3', sha256='58c5acf61f9a1e5febf546c196f8917a5e084b729e5c4cfd3eba83471b3fe5c1') - depends_on('samtools') + depends_on('samtools@:1.13') depends_on('htslib') depends_on('root') depends_on('bzip2') depends_on('curl') - depends_on('lzma') + depends_on('xz') depends_on('zlib') + depends_on('libdeflate') + depends_on('openssl') def edit(self, spec, prefix): makefile = FileFilter('Makefile') @@ -35,9 +37,18 @@ def edit(self, spec, prefix): makefile.filter('$(CXX)', '$(CXX) $(CXXFLAGS)', string=True) # Replace -I$(SAMDIR) with -I$(SAMINC) makefile.filter('-I$(SAMDIR)', '-I$(SAMINC)', string=True) + # Link more libs + ldflags = [ + spec['zlib'].libs.ld_flags, + spec['bzip2'].libs.ld_flags, + spec['curl'].libs.ld_flags, + spec['xz'].libs.ld_flags, + spec['libdeflate'].libs.ld_flags, + spec['openssl'].libs.ld_flags, + ] makefile.filter('^override LIBS.*', - 'override LIBS += -lz -lbz2 -lcurl -llzma -lcrypto') + 'override LIBS += {0}'.format(' '.join(ldflags))) def build(self, spec, prefix): make('ROOTSYS={0}'.format(spec['root'].prefix), diff --git a/var/spack/repos/builtin/packages/coin3d/package.py b/var/spack/repos/builtin/packages/coin3d/package.py index 567b6517061706..a5ec006d41050e 100644 --- a/var/spack/repos/builtin/packages/coin3d/package.py +++ b/var/spack/repos/builtin/packages/coin3d/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Coin3d(AutotoolsPackage): @@ -18,6 +19,11 @@ class Coin3d(AutotoolsPackage): version('2.0.0', sha256='6d26435aa962d085b7accd306a0b478069a7de1bc5ca24e22344971852dd097c') depends_on('boost@1.45.0:', type='build') + + # 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, type='build') depends_on('doxygen', when='+html', type='build') depends_on('perl', when='+html', type='build') depends_on('glu', type='link') diff --git a/var/spack/repos/builtin/packages/comgr/package.py b/var/spack/repos/builtin/packages/comgr/package.py index 8e0a96b405ceb5..715874f089d82b 100644 --- a/var/spack/repos/builtin/packages/comgr/package.py +++ b/var/spack/repos/builtin/packages/comgr/package.py @@ -18,6 +18,9 @@ class Comgr(CMakePackage): maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] version('master', branch='amd-stg-open') + + version('5.0.2', sha256='20d733f70d8edb573d8c92707f663d7d46dcaff08026cd6addbb83266679f92a') + version('5.0.0', sha256='da1bbc694bd930a504406eb0a0018c2e317d8b2c136fb2cab8de426870efe9a8') version('4.5.2', sha256='e45f387fb6635fc1713714d09364204cd28fea97655b313c857beb1f8524e593') version('4.5.0', sha256='03c5880e0922fcff31306f7da2eb9d3a3709d9b5b75b3524dcfae85f4b181678') version('4.3.1', sha256='f1d99550383ed7b3a01d304eedc3d86a8e45b271aa5a80b1dd099c22fda3f745') @@ -45,7 +48,8 @@ class Comgr(CMakePackage): depends_on('ncurses', type='link') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: # llvm libs are linked statically, so this *could* be a build dep depends_on('llvm-amdgpu@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index 300d67dc5eb98d..42d97be84ebf0a 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -77,7 +77,9 @@ class Conduit(CMakePackage): # set to false for systems that implicitly link mpi variant('blt_find_mpi', default=True, description='Use BLT CMake Find MPI logic') variant("hdf5", default=True, description="Build Conduit HDF5 support") - variant("hdf5_compat", default=True, + # TODO: remove 'compat' variant when VisIt starts distributing HDF5 + # binaries + variant("hdf5_compat", default=True, when='+hdf5', description="Build Conduit with HDF5 1.8.x (compatibility mode)") variant("silo", default=False, description="Build Conduit Silo support") variant("adios", default=False, description="Build Conduit ADIOS support") @@ -117,26 +119,18 @@ class Conduit(CMakePackage): ############### # HDF5 ############### - # Note: cxx variant is disabled due to build issue Cyrus - # experienced on BGQ. When on, the static build tries - # to link against shared libs. - # - # Use HDF5 1.8, for wider output compatibly - # variants reflect we are not using hdf5's mpi or fortran features. - depends_on("hdf5~cxx", when="+hdf5") - depends_on("hdf5~shared", when="+hdf5~shared") - depends_on("hdf5@1.8.19:1.8", when="+hdf5+hdf5_compat") - # we need to hand this to conduit so it can properly - # handle downstream linking of zlib reqed by hdf5 - depends_on("zlib", when="+hdf5") + depends_on("hdf5", when="+hdf5") + depends_on("hdf5~shared", when="+hdf5~shared") + # Require older HDF5 to ensure compatibility with VisIt: see #29132 + depends_on("hdf5@1.8.0:1.8", when="+hdf5+hdf5_compat") ############### # Silo ############### # we are not using silo's fortran features - depends_on("silo~fortran", when="+silo+shared") - depends_on("silo~shared~fortran", when="+silo~shared") + depends_on("silo+shared", when="+silo+shared") + depends_on("silo~shared", when="+silo~shared") ############### # ADIOS @@ -179,8 +173,8 @@ class Conduit(CMakePackage): # Add missing include for numeric_limits # https://github.com/LLNL/conduit/pull/773 - patch('https://github.com/LLNL/conduit/pull/773.patch', when='@:0.7.2', - sha256='89d1829ad52f503f6179e43efddf998c239a95c14ca1f248463a3f61ad7d5cf7') + patch('https://github.com/LLNL/conduit/pull/773.patch?full_index=1', when='@:0.7.2', + sha256='784d74942a63acf698c31b39848b46b4b755bf06faa6aa6fb81be61783ec0c30') ################################### # build phases used by this package @@ -528,7 +522,9 @@ def hostconfig(self, spec, prefix): if "+hdf5" in spec: cfg.write(cmake_cache_entry("HDF5_DIR", spec['hdf5'].prefix)) - cfg.write(cmake_cache_entry("ZLIB_DIR", spec['zlib'].prefix)) + if 'zlib' in spec: + # HDF5 depends on zlib + cfg.write(cmake_cache_entry("ZLIB_DIR", spec['zlib'].prefix)) else: cfg.write("# hdf5 not built by spack \n") diff --git a/var/spack/repos/builtin/packages/cool/package.py b/var/spack/repos/builtin/packages/cool/package.py index e56cbaa9addbf6..94fecafbb921ae 100644 --- a/var/spack/repos/builtin/packages/cool/package.py +++ b/var/spack/repos/builtin/packages/cool/package.py @@ -16,6 +16,7 @@ class Cool(CMakePackage): tags = ['hep'] maintainers = ['iarspider'] + version('3.3.10', tag='COOL_3_3_10') version('3.3.7', tag='COOL_3_3_7') version('3.3.5', tag='COOL_3_3_5') version('3.3.4', tag='COOL_3_3_4') @@ -25,7 +26,13 @@ class Cool(CMakePackage): # * Create python/PyCool/_internal directory # (only necessary for Spack builds, for some reason) # * Explicitly request Boost components - patch('cool.patch', level=0) + patch('cool.patch', level=0, when='@:3.3.8') + + @when('@3.3.9:') + def patch(self): + filter_file("find_package(Boost REQUIRED)", + "find_package(Boost REQUIRED chrono system thread)", + "src/RelationalCool/CMakeLists.txt") # BINARY_TAG is a combination of target, os, compiler name and build type (opt/dbg) # If you override it, please also override it for CORAL diff --git a/var/spack/repos/builtin/packages/coral/package.py b/var/spack/repos/builtin/packages/coral/package.py index 24bbeab5b58465..02f11692daa006 100644 --- a/var/spack/repos/builtin/packages/coral/package.py +++ b/var/spack/repos/builtin/packages/coral/package.py @@ -16,6 +16,7 @@ class Coral(CMakePackage): tags = ['hep'] + version('3.3.10', tag='CORAL_3_3_10') version('3.3.3', tag='CORAL_3_3_3') variant('binary_tag', default='auto') @@ -36,6 +37,7 @@ class Coral(CMakePackage): depends_on('libunwind') depends_on('valgrind') depends_on('oracle-instant-client') + depends_on('libtirpc') def determine_binary_tag(self): # As far as I can tell from reading the source code, `binary_tag` diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py index 27ffa35a57658b..b9eb5b416d5af7 100644 --- a/var/spack/repos/builtin/packages/coreutils/package.py +++ b/var/spack/repos/builtin/packages/coreutils/package.py @@ -16,6 +16,8 @@ class Coreutils(AutotoolsPackage, GNUMirrorPackage): homepage = 'https://www.gnu.org/software/coreutils/' gnu_mirror_path = 'coreutils/coreutils-8.26.tar.xz' + tags = ['core-packages'] + version('8.32', sha256='4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa') version('8.31', sha256='ff7a9c918edce6b4f4b2725e3f9b37b0c4d193531cac49a48b56c4d0d3a9e9fd') version('8.30', sha256='e831b3a86091496cdba720411f9748de81507798f6130adeaef872d206e1b057') diff --git a/var/spack/repos/builtin/packages/costa/package.py b/var/spack/repos/builtin/packages/costa/package.py index 97f28808c19663..38fb2cf9b99476 100644 --- a/var/spack/repos/builtin/packages/costa/package.py +++ b/var/spack/repos/builtin/packages/costa/package.py @@ -21,9 +21,10 @@ class Costa(CMakePackage): # note: The default archives produced with github do not have the archives # of the submodules. version('master', branch='master', submodules=True) - version('2.0', sha256='ef283b904b1b77b7d0de401cbdc3d7850c77368f2b57249c6eaee3017794c4b8') + version('2.0', sha256='de250197f31f7d23226c6956a687c3ff46fb0ff6c621a932428236c3f7925fe4') variant('scalapack', default=False, description='Build with ScaLAPACK API') + variant('shared', default=False, description="Build shared libraries") depends_on('cmake@3.12:', type='build') depends_on('mpi@3:') @@ -53,5 +54,6 @@ def cmake_args(self): self.define('COSTA_WITH_APPS', 'OFF'), self.define('COSTA_WITH_TESTS', 'OFF'), self.define('COSTA_WITH_PROFILING', 'OFF'), - self.define('COSTA_SCALAPACK', self.costa_scalapack_cmake_arg()) + self.define('COSTA_SCALAPACK', self.costa_scalapack_cmake_arg()), + self.define('BUILD_SHARED_LIBS', '+shared' in self.spec) ] diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 3e20e8a62c8445..523d9055e00834 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -21,6 +21,7 @@ class Cp2k(MakefilePackage, CudaPackage): maintainers = ['dev-zero'] + version('9.1', sha256='fedb4c684a98ad857cd49b69a3ae51a73f85a9c36e9cb63e3b02320c74454ce6') version('8.2', sha256='2e24768720efed1a5a4a58e83e2aca502cd8b95544c21695eb0de71ed652f20a') version('8.1', sha256='7f37aead120730234a60b2989d0547ae5e5498d93b1e9b5eb548c041ee8e7772') version('7.1', sha256='ccd711a09a426145440e666310dd01cc5772ab103493c4ae6a3470898cd0addb') @@ -60,7 +61,7 @@ class Cp2k(MakefilePackage, CudaPackage): ' with cuda_arch=35 for a K20x instead of a K40')) variant('cuda_fft', default=False, description=('Use CUDA also for FFTs in the PW part of CP2K')) - variant('cuda_blas', default=False, + variant('cuda_blas', default=False, when='@:7', # req in CP2K v8+ description=('Use CUBLAS for general matrix operations in DBCSR')) HFX_LMAX_RANGE = range(4, 8) @@ -82,11 +83,17 @@ class Cp2k(MakefilePackage, CudaPackage): with when('+openmp'): depends_on('fftw+openmp', when='^fftw') depends_on('amdfftw+openmp', when='^amdfftw') + depends_on('cray-fftw+openmp', when='^cray-fftw') depends_on('openblas threads=openmp', when='^openblas') + # The Cray compiler wrappers will automatically add libsci_mp with + # -fopenmp. Since CP2K unconditionally links blas/lapack/scalapack + # we have to be consistent. + depends_on('cray-libsci+openmp', when='^cray-libsci') with when('smm=libxsmm'): + depends_on('libxsmm@1.17:~header-only', when='@9.1:') # require libxsmm-1.11+ since 1.10 can leak file descriptors in Fortran - depends_on('libxsmm@1.11:~header-only') + depends_on('libxsmm@1.11:~header-only', when="@:8.9") # use pkg-config (support added in libxsmm-1.10) to link to libxsmm depends_on('pkgconfig', type='build') # please set variants: smm=blas by configuring packages.yaml or install @@ -108,7 +115,8 @@ class Cp2k(MakefilePackage, CudaPackage): depends_on('libxc@2.2.2:3', when='@:5', type='build') depends_on('libxc@4.0.3:4', when='@6.0:6.9', type='build') depends_on('libxc@4.0.3:4', when='@7.0:8.1') - depends_on('libxc@5.1.3:5.1', when='@8.2:') + depends_on('libxc@5.1.3:5.1', when='@8.2:8') + depends_on('libxc@5.1.7:5.1', when='@9:') with when('+mpi'): depends_on('mpi@2:') @@ -116,6 +124,7 @@ class Cp2k(MakefilePackage, CudaPackage): with when('+cosma'): depends_on('cosma+scalapack') + depends_on('cosma@2.5.1:', when='@9:') depends_on('cosma+cuda', when='+cuda') conflicts('~mpi') # COSMA support was introduced in 8+ @@ -129,6 +138,7 @@ class Cp2k(MakefilePackage, CudaPackage): depends_on('elpa@2011.12:2017.11', when='@6.0:6') depends_on('elpa@2018.05:2020.11.001', when='@7.0:8.2') depends_on('elpa@2021.05:', when='@8.3:') + depends_on('elpa@2021.11.001:', when='@9.1:') with when('+plumed'): depends_on('plumed+shared') @@ -151,7 +161,8 @@ class Cp2k(MakefilePackage, CudaPackage): depends_on('sirius~openmp', when='~openmp') depends_on('sirius@:6', when='@:7') depends_on('sirius@7.0.0:7.0', when='@8:8.2') - depends_on('sirius@7.2:', when='@8.3:') + depends_on('sirius@7.2', when='@8.3:8.9') + depends_on('sirius@7.3:', when='@9.1') conflicts('~mpi') # sirius support was introduced in 7+ conflicts('@:6') @@ -195,8 +206,8 @@ class Cp2k(MakefilePackage, CudaPackage): conflicts('+cuda', when='cuda_arch=none', msg=cuda_msg) # Fix 2- and 3-center integral calls to libint - patch("https://github.com/cp2k/cp2k/commit/5eaf864ed2bd21fb1b05a9173bb77a815ad4deda.patch", - sha256="18e58ba8fdde5c507bece48ec064f7f2b80e59d1b7cfe6b7a639e5f64f84d43f", + patch("https://github.com/cp2k/cp2k/commit/5eaf864ed2bd21fb1b05a9173bb77a815ad4deda.patch?full_index=1", + sha256="3617abb877812c4b933f601438c70f95e21c6161bea177277b1d4125fd1c0bf9", when="@8.2") @property @@ -508,6 +519,9 @@ def edit(self, spec, prefix): int(elpa.version[1]))) fcflags += ['-I{0}'.format(join_path(elpa_incdir, 'elpa'))] + if '+cuda' in spec and '+cuda' in elpa: + cppflags += ['-D__ELPA_NVIDIA_GPU'] + if spec.satisfies('+sirius'): sirius = spec['sirius'] cppflags.append('-D__SIRIUS') @@ -515,14 +529,29 @@ def edit(self, spec, prefix): libs += list(sirius.libs) if spec.satisfies('+cuda'): - cppflags += ['-D__ACC'] - libs += ['-lcudart', '-lnvrtc', '-lcuda'] - - if spec.satisfies('+cuda_blas'): - cppflags += ['-D__DBCSR_ACC=2'] + libs += [ + '-L{}'.format(spec['cuda'].libs.directories[0]), + '-L{}/stubs'.format(spec['cuda'].libs.directories[0]), + '-lcuda', '-lcudart', '-lnvrtc', '-lstdc++'] + + if spec.satisfies('@9:'): + acc_compiler_var = 'OFFLOAD_CC' + acc_flags_var = 'OFFLOAD_FLAGS' + cppflags += [ + '-D__DBCSR_ACC', + '-D__GRID_CUDA', + '-DOFFLOAD_TARGET=cuda', + ] libs += ['-lcublas'] else: - cppflags += ['-D__DBCSR_ACC'] + acc_compiler_var = 'NVCC' + acc_flags_var = 'NVFLAGS' + cppflags += ['-D__ACC'] + if spec.satisfies('+cuda_blas'): + cppflags += ['-D__DBCSR_ACC=2'] + libs += ['-lcublas'] + else: + cppflags += ['-D__DBCSR_ACC'] if spec.satisfies('+cuda_fft'): cppflags += ['-D__PW_CUDA'] @@ -616,8 +645,9 @@ def edit(self, spec, prefix): mkf.write('CPP = # {0} -E\n'.format(spack_cc)) mkf.write('AR = ar -r\n') - if spec.satisfies('+cuda'): - mkf.write('NVCC = {0}\n'.format( + if '+cuda' in spec: + mkf.write('{0} = {1}\n'.format( + acc_compiler_var, join_path(spec['cuda'].prefix, 'bin', 'nvcc'))) # Write compiler flags to file @@ -631,7 +661,7 @@ def fflags(var, lst): mkf.write(fflags('CPPFLAGS', cppflags)) mkf.write(fflags('CFLAGS', cflags)) mkf.write(fflags('CXXFLAGS', cxxflags)) - mkf.write(fflags('NVFLAGS', nvflags)) + mkf.write(fflags(acc_flags_var, nvflags)) mkf.write(fflags('FCFLAGS', fcflags)) mkf.write(fflags('LDFLAGS', ldflags)) mkf.write(fflags('LIBS', libs)) diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py index 5ae4a236d29d95..619e9addb2af8d 100644 --- a/var/spack/repos/builtin/packages/cpprestsdk/package.py +++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py @@ -18,7 +18,7 @@ class Cpprestsdk(CMakePackage): version('2.10.16', git='https://github.com/Microsoft/cpprestsdk', branch='v2.10.16', submodules=True) version('2.9.1', sha256='537358760acd782f4d2ed3a85d92247b4fc423aff9c85347dc31dbb0ab9bab16') - depends_on('boost@:1.69.0') + depends_on('boost@1.69.0: +random+chrono+locale+filesystem+system+exception+regex+thread+date_time') depends_on('openssl') # Ref: https://github.com/microsoft/cpprestsdk/commit/f9f518e4ad84577eb684ad8235181e4495299af4 diff --git a/var/spack/repos/builtin/packages/cray-fftw/package.py b/var/spack/repos/builtin/packages/cray-fftw/package.py index 4f6d71ae70c63f..56dea3253b2223 100644 --- a/var/spack/repos/builtin/packages/cray-fftw/package.py +++ b/var/spack/repos/builtin/packages/cray-fftw/package.py @@ -18,11 +18,12 @@ class CrayFftw(Package): need to load cray-mpich before cray-fftw. """ - homepage = "https://docs.nersc.gov/development/libraries/fftw/" + homepage = "https://support.hpe.com/" has_code = False # Skip attempts to fetch source that is not available - maintainers = ['haampie'] + maintainers = ['haampie', 'lukebroskop'] + version('3.3.8.12') version('3.3.8.8') version('3.3.8.7') diff --git a/var/spack/repos/builtin/packages/cray-libsci/package.py b/var/spack/repos/builtin/packages/cray-libsci/package.py index daa6fc03b50cf7..f9ac97f0e88b36 100644 --- a/var/spack/repos/builtin/packages/cray-libsci/package.py +++ b/var/spack/repos/builtin/packages/cray-libsci/package.py @@ -30,14 +30,16 @@ class CrayLibsci(Package): provides("blas") provides("lapack") - provides("scalapack") + provides("scalapack", when="+mpi") canonical_names = { 'gcc': 'GNU', 'cce': 'CRAY', 'intel': 'INTEL', 'clang': 'ALLINEA', - 'aocc': 'AOCC' + 'aocc': 'AOCC', + 'nvhpc': 'NVIDIA', + 'rocmcc': 'AMD' } @property diff --git a/var/spack/repos/builtin/packages/cray-pmi/package.py b/var/spack/repos/builtin/packages/cray-pmi/package.py new file mode 100644 index 00000000000000..910e62b5fc13a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/cray-pmi/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2022 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 import * + + +class CrayPmi(Package): + """Cray's Process Management Interface library""" + + homepage = "https://docs.nersc.gov/development/compilers/wrappers/" + has_code = False # Skip attempts to fetch source that is not available + + maintainers = ['haampie'] + + version('5.0.17') + version('5.0.16') + version('5.0.11') + + @property + def headers(self): + return find_headers('pmi', self.prefix.include, recursive=True) + + @property + def libs(self): + return find_libraries(['libpmi'], root=self.prefix, recursive=True) diff --git a/var/spack/repos/builtin/packages/crmc/package.py b/var/spack/repos/builtin/packages/crmc/package.py new file mode 100644 index 00000000000000..42d10c45e11e7d --- /dev/null +++ b/var/spack/repos/builtin/packages/crmc/package.py @@ -0,0 +1,48 @@ +# Copyright 2013-2022 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 import * + + +class Crmc(CMakePackage): + """CRMC (Cosmic Ray Monte Carlo package). CRMC is a package providing + a common interface to access the output from event generators used + to model the secondary particle production in hadronic collisons.""" + + homepage = "https://web.ikp.kit.edu/rulrich/crmc.html" + # Original URL has non-recognized certificate + is password-protected + # url = "https://devel-ik.fzk.de/wsvn/mc/crmc/tags/crmc.v1.7.0/?op=dl" + url = "https://lcgpackages.web.cern.ch/lcgpackages/tarFiles/sources/MCGeneratorsTarFiles/crmc.v1.7.0.tar.gz" + + # Version 1.7.0 has issues linking phojet, devs contacted but no response + # version('1.7.0', sha256='59086f4e654d775a4f6c3974ae89bbfd995391c4677f266881604878b47563d1') + version('1.6.0', sha256='ae2ba5aa2a483d20aa60bef35080f555b365715d1a8fae54b473c275813345c1') + version('1.5.7', sha256='ec7456c08b60a40665e9ff31d6029e0151b0cdf2ca98bd09a8b570b1e33f6053') + version('1.5.6', sha256='a546a9352dcbdb8a1df3d63530eacf16f8b64a190e224b72afd434f78388a8a0') + + depends_on('hepmc') + depends_on('boost') + depends_on('root') + + patch('https://gitlab.cern.ch/sft/lcgcmake/-/raw/master/generators/patches/crmc-1.6.0.patch', + sha256='af07d9abbf8883dfbf54959f0e971e1429c5a1c43a602afa25dc790ba9758f15', + when='@1.6.0', level=0) + patch('https://gitlab.cern.ch/sft/lcgcmake/-/raw/master/generators/patches/crmc-1.5.6.patch', + sha256='fcf767b821cca404569d558f748acb83f692d5b4aca6fd6c8473fcf06c734cf6', + when='@1.5.6:1.5.7', level=0) + + def cmake_args(self): + args = ['-D__PYTHIA__=ON', + '-D__SIBYLL__=ON', + '-D__PHOJET__=ON', + '-D__DPMJET__=ON', + '-D__QGSJETII04__=ON', + '-DCMAKE_CXX_FLAGS=-std=c++' + + self.spec['root'].variants['cxxstd'].value] + if self.spec.satisfies('@1.6.0:'): + args.append('-D__HIJING__=ON') + if self.spec.satisfies('%gcc@9:'): + args.append('-DCMAKE_Fortran_FLAGS=-fallow-argument-mismatch') + return args diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index aa76935965928b..d22c4b6b154804 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -25,6 +25,14 @@ # format returned by platform.system() and 'arch' by platform.machine() _versions = { + '11.6.2': { + 'Linux-aarch64': ('b20c014c6bba36b13c50da167ad42e9bd1cea24f3b6297b495ea129c0889f36e', 'https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux_sbsa.run'), + 'Linux-x86_64': ('99b7a73dcc52a52cef4c1fceb4a60c3015ac9b6404082c1677d9efdaba1d4593', 'https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run'), + 'Linux-ppc64le': ('869232ff8dbf295a71609738ac9e1b0079ca75597b427f1c026f42b36896afe8', 'https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux_ppc64le.run')}, + '11.6.1': { + 'Linux-aarch64': ('80586b003d58030004d465f5331dc69ee26c95a29516fb2488ff10f034139cb2', 'https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux_sbsa.run'), + 'Linux-x86_64': ('ab219afce00b74200113269866fbff75ead037bcfc23551a8338c2684c984d7e', 'https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux.run'), + 'Linux-ppc64le': ('ef762efbc00b67d572823c6ec338cc2c0cf0c096f41e6bce18e8d4501f260956', 'https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux_ppc64le.run')}, '11.6.0': { 'Linux-aarch64': ('5898579f5e59b708520883cb161089f5e4f3426158d1e9f973c49d224085d1d2', 'https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux_sbsa.run'), 'Linux-x86_64': ('1783da6d63970786040980b57fa3cb6420142159fc7d0e66f8f05c4905d98c83', 'https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run'), @@ -37,6 +45,14 @@ 'Linux-aarch64': ('6ea9d520cc956cc751a5ac54f4acc39109627f4e614dd0b1a82cc86f2aa7d8c4', 'https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda_11.5.0_495.29.05_linux_sbsa.run'), 'Linux-x86_64': ('ae0a1693d9497cf3d81e6948943e3794636900db71c98d58eefdacaf7f1a1e4c', 'https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda_11.5.0_495.29.05_linux.run'), 'Linux-ppc64le': ('95baefdc5adf165189407b119861ffb2e9800fd94d7fc81d10fb81ed36dc12db', 'https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda_11.5.0_495.29.05_linux_ppc64le.run')}, + '11.4.4': { + 'Linux-aarch64': ('c5c08531e48e8fdc2704fa1c1f7195f2c7edd2ee10a466d0e24d05b77d109435', 'https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux_sbsa.run'), + 'Linux-x86_64': ('44545a7abb4b66dfc201dcad787b5e8352e5b7ddf3e3cc5b2e9177af419c25c8', 'https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux.run'), + 'Linux-ppc64le': ('c71cd4e6c05fde11c0485369a73e7f356080e7a18f0e3ad7244e8fc03a9dd3e2', 'https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux_ppc64le.run')}, + '11.4.3': { + 'Linux-aarch64': ('e02db34a487ea3de3eec9db80efd09f12eb69d55aca686cecaeae96a9747b1d4', 'https://developer.download.nvidia.com/compute/cuda/11.4.3/local_installers/cuda_11.4.3_470.82.01_linux_sbsa.run'), + 'Linux-x86_64': ('749183821ffc051e123f12ebdeb171b263d55b86f0dd7c8f23611db1802d6c37', 'https://developer.download.nvidia.com/compute/cuda/11.4.3/local_installers/cuda_11.4.3_470.82.01_linux.run'), + 'Linux-ppc64le': ('08f29cc3ed0b3b82dd9b007186237be2352bb552f99230c450a25e768f5754ee', 'https://developer.download.nvidia.com/compute/cuda/11.4.3/local_installers/cuda_11.4.3_470.82.01_linux_ppc64le.run')}, '11.4.2': { 'Linux-aarch64': ('f2c4a52e06329606c8dfb7c5ea3f4cb4c0b28f9d3fdffeeb734fcc98daf580d8', 'https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux_sbsa.run'), 'Linux-x86_64': ('bbd87ca0e913f837454a796367473513cddef555082e4d86ed9a38659cc81f0a', 'https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux.run'), diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 56c175a3293d8b..46d0ca21818470 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -19,6 +19,8 @@ class Curl(AutotoolsPackage): executables = ['^curl$'] + version('7.82.0', sha256='46d9a0400a33408fd992770b04a44a7434b3036f2e8089ac28b57573d59d371f') + version('7.81.0', sha256='1e7a38d7018ec060f1f16df839854f0889e94e122c4cfa5d3a37c2dc56f1e258') version('7.80.0', sha256='dd0d150e49cd950aff35e16b628edf04927f0289df42883750cf952bb858189c') version('7.79.1', sha256='de62c4ab9a9316393962e8b94777a570bb9f71feb580fb4475e412f2f9387851') version('7.79.0', sha256='d607a677f473f79f96c964100327125a6204a39d835dc00dab7fc0129b959f42') @@ -78,6 +80,8 @@ class Curl(AutotoolsPackage): variant('librtmp', default=False, description='enable Rtmp support') variant('ldap', default=False, description='enable ldap support') variant('libidn2', default=False, description='enable libidn2 support') + variant('libs', default='shared,static', values=('shared', 'static'), + multi=True, description='Build shared libs, static libs or both') conflicts('+libssh', when='@:7.57') # on OSX and --with-ssh the configure steps fails with @@ -148,6 +152,8 @@ def configure_args(self): '--without-zstd', ] + args += self.enable_or_disable('libs') + # Make gnutls / openssl decide what certs are trusted. # TODO: certs for other tls options. if spec.satisfies('tls=gnutls') or spec.satisfies('tls=openssl'): diff --git a/var/spack/repos/builtin/packages/cvs/package.py b/var/spack/repos/builtin/packages/cvs/package.py index 3cc7c51c84a3fa..b7afc94d906abc 100644 --- a/var/spack/repos/builtin/packages/cvs/package.py +++ b/var/spack/repos/builtin/packages/cvs/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack import * @@ -19,4 +20,13 @@ class Cvs(AutotoolsPackage, GNUMirrorPackage): patch('https://gentoofan.org/gentoo/poly-c_overlay/dev-vcs/cvs/files/cvs-1.12.13.1-fix-gnulib-SEGV-vasnprintf.patch', sha256='e13db2acebad3ca5be5d8e0fa97f149b0f9661e4a9a731965c8226290c6413c0', when='@1.12.13') + tags = ['build-tools'] + parallel = False + executables = [r'^cvs$'] + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + match = re.search(r'\(CVS\)\s+([\d\.]+)', output) + return match.group(1) if match else None diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index 58c235c0032891..a10d0aa0f92b92 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Dakota(CMakePackage): @@ -46,6 +47,11 @@ class Dakota(CMakePackage): depends_on('python') depends_on('perl-data-dumper', type='build', when='@6.12:') depends_on('boost@:1.68.0', when='@:6.12') + + # 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, when='@:6.12') depends_on('cmake@2.8.9:', type='build') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/damaris/package.py b/var/spack/repos/builtin/packages/damaris/package.py index 859b55286c38db..e87f03e4eefde5 100644 --- a/var/spack/repos/builtin/packages/damaris/package.py +++ b/var/spack/repos/builtin/packages/damaris/package.py @@ -3,17 +3,20 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) + from spack import * class Damaris(CMakePackage): - """Damaris is a middleware for asynchronous I/O and in situ analytics + """Damaris is a middleware for I/O and in situ analytics targeting large-scale, MPI-based HPC simulations.""" homepage = "https://project.inria.fr/damaris/" git = "https://gitlab.inria.fr/Damaris/damaris.git" maintainers = ['jcbowden'] + version('master', branch='master') + version('1.6.0', tag='v1.6.0') version('1.5.0', tag='v1.5.0') version('1.3.3', tag='v1.3.3') version('1.3.2', tag='v1.3.2') @@ -25,20 +28,25 @@ class Damaris(CMakePackage): variant('catalyst', default=False, description='Enables the Catalyst visualization plugin') variant('visit', default=False, description='Enables the VisIt visualization plugin') variant('examples', default=False, description='Enables compilation and installation of the examples code') + variant('docs', default=False, description='Enables the building of dOxygen documentation') + variant('python', default=False, description='Enables building of Python enabled Damaris library - boost::python boost::numpy needed') depends_on('mpi') depends_on('cmake@3.18.0:', type=('build')) - depends_on('boost +thread+log+filesystem+date_time @1.67:') + depends_on('boost +exception+locale+system+serialization+chrono+atomic+container+regex+thread+log+filesystem+date_time @1.67:') depends_on('xsd') depends_on('xerces-c') depends_on('hdf5@1.8.20:', when='+hdf5') depends_on('paraview+python3', when='+catalyst') depends_on('visit+mpi', when='+visit') + depends_on('boost+thread+log+filesystem+date_time+python+numpy @1.67:', when='+python') def cmake_args(self): + args = [] if(not self.spec.variants['static'].value): args.extend(['-DBUILD_SHARED_LIBS=ON']) + args.extend(['-DCMAKE_CXX_COMPILER=%s' % self.spec['mpi'].mpicxx]) args.extend(['-DCMAKE_C_COMPILER=%s' % self.spec['mpi'].mpicc]) args.extend(['-DBOOST_ROOT=%s' % self.spec['boost'].prefix]) @@ -58,10 +66,15 @@ def cmake_args(self): args.extend(['-DENABLE_CATALYST:BOOL=ON']) args.extend(['-DParaView_ROOT:PATH=%s' % self.spec['catalyst'].prefix]) - if (self.spec.variants['examples'].value): args.extend(['-DENABLE_EXAMPLES:BOOL=ON']) + if (self.spec.variants['docs'].value): + args.extend(['-DENABLE_DOCS:BOOL=ON']) + + if (self.spec.variants['python'].value): + args.extend(['-DENABLE_PYTHON:BOOL=ON']) + if (self.spec.variants['visit'].value): args.extend(['-DENABLE_VISIT:BOOL=ON']) args.extend(['-DVisIt_ROOT:PATH=%s' % self.spec['visit'].prefix]) diff --git a/var/spack/repos/builtin/packages/dbow2/package.py b/var/spack/repos/builtin/packages/dbow2/package.py index d0d89a14bd3598..a74ab89364ef04 100644 --- a/var/spack/repos/builtin/packages/dbow2/package.py +++ b/var/spack/repos/builtin/packages/dbow2/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost + class Dbow2(CMakePackage): """DBoW2 is an improved version of the DBow library, an open source C++ @@ -16,7 +18,10 @@ class Dbow2(CMakePackage): version('shinsumicco', git='https://github.com/shinsumicco/DBoW2.git', branch='master') depends_on('cmake@3.0:', type='build') + # 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('opencv+calib3d+features2d+highgui+imgproc') - depends_on('boost') depends_on('dlib') depends_on('eigen', type='link') diff --git a/var/spack/repos/builtin/packages/dd4hep/package.py b/var/spack/repos/builtin/packages/dd4hep/package.py index 374defb4a399d3..017ca1ea9d9de4 100644 --- a/var/spack/repos/builtin/packages/dd4hep/package.py +++ b/var/spack/repos/builtin/packages/dd4hep/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Dd4hep(CMakePackage): @@ -24,6 +25,8 @@ class Dd4hep(CMakePackage): tags = ['hep'] version('master', branch='master') + version('1.20.1', sha256='18c18a125583c39cb808c602e052cc2379aa3a8029aa78dbb40bcc31f1deb798') + version('1.20', sha256='cf6af0c486d5c84e8c8a8e40ea16cec54d4ed78bffcef295a0eeeaedf51cab59') version('1.19', sha256='d2eccf5e8402ba7dab2e1d7236e12ee4db9b1c5e4253c40a140bf35580db1d9b') version('1.18', sha256='1e909a42b969dfd966224fa8ab1eca5aa05136baf3c00a140f2f6d812b497152') version('1.17', sha256='036a9908aaf1e13eaf5f2f43b6f5f4a8bdda8183ddc5befa77a4448dbb485826') @@ -79,8 +82,13 @@ class Dd4hep(CMakePackage): depends_on('cmake @3.12:', type='build') depends_on('ninja', type='build') depends_on('boost @1.49:') + # 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('root @6.08: +gdml +math +python') depends_on('root @6.08: +gdml +math +python +x +opengl', when="+ddeve") + extends('python') depends_on('xerces-c', when='+xercesc') depends_on('geant4@10.2.2:', when='+ddg4') @@ -89,7 +97,8 @@ class Dd4hep(CMakePackage): depends_on('intel-tbb', when='+tbb') depends_on('lcio', when="+lcio") depends_on('edm4hep', when="+edm4hep") - depends_on('py-pytest', type="test") + depends_on('podio', when="+edm4hep") + depends_on('py-pytest', type=('build', 'test')) # See https://github.com/AIDASoft/DD4hep/pull/771 conflicts('^cmake@3.16:3.17.0', when='@1.15', @@ -180,7 +189,7 @@ def check(self): # instead add custom check step that runs after installation @run_after('install') - def install_check(self): + def build_test(self): with working_dir(self.build_directory): if self.run_tests: ninja('test') diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index c89c0470f91b40..7ed644a0ca65f5 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Dealii(CMakePackage, CudaPackage): @@ -25,6 +26,7 @@ class Dealii(CMakePackage, CudaPackage): generator = 'Ninja' version('master', branch='master') + version('9.3.3', sha256='5dfb59174b341589e92b434398a1b7cc11ad053ce2315cf673f5efc5ba271a29') version('9.3.2', sha256='5341d76bfd75d3402fc6907a875513efb5fe8a8b99af688d94443c492d5713e8') version('9.3.1', sha256='a62f4676ab2dc029892251d141427fb75cbb83cddd606019f615d0dde9c61ab8') version('9.3.0', sha256='aef8c7a87510ce827dfae3bdd4ed7bff82004dc09f96fa7a65b2554f2839b931') @@ -150,6 +152,11 @@ class Dealii(CMakePackage, CudaPackage): depends_on('boost cxxstd=14', when='cxxstd=14') depends_on('boost cxxstd=17', when='cxxstd=17') depends_on('bzip2', when='@:8') + + # 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('lapack') depends_on('ninja', type='build') depends_on('suite-sparse') @@ -198,7 +205,8 @@ class Dealii(CMakePackage, CudaPackage): depends_on('slepc@:3.6.3', when='@:8.4.1+slepc+petsc+mpi') depends_on('slepc~arpack', when='+slepc+petsc+mpi+int64') depends_on('sundials@:3~pthread', when='@9.0:9.2+sundials') - depends_on('sundials@5:', when='@9.3:+sundials') + depends_on('sundials@5:5.8', when='@9.3:9.3.3+sundials') + depends_on('sundials@5:', when='@9.3.4:+sundials') # depends_on('taskflow', when='@9.3:+taskflow') depends_on('trilinos gotype=int', when='+trilinos@12.18.1:') # TODO: next line fixes concretization with trilinos and adol-c @@ -223,25 +231,25 @@ class Dealii(CMakePackage, CudaPackage): # Explicitly provide a destructor in BlockVector, # otherwise deal.II may fail to build with Intel compilers. - patch('https://github.com/dealii/dealii/commit/a89d90f9993ee9ad39e492af466b3595c06c3e25.patch', - sha256='4282b32e96f2f5d376eb34f3fddcc4615fcd99b40004cca784eb874288d1b31c', + patch('https://github.com/dealii/dealii/commit/a89d90f9993ee9ad39e492af466b3595c06c3e25.patch?full_index=1', + sha256='72304bc6c3fb4549cf53ed533a00311d12827d48817e2038efd3a8ef6c43d149', when='@9.0.1') # https://github.com/dealii/dealii/pull/7935 - patch('https://github.com/dealii/dealii/commit/f8de8c5c28c715717bf8a086e94f071e0fe9deab.patch', - sha256='61f217744b70f352965be265d2f06e8c1276685e2944ca0a88b7297dd55755da', + patch('https://github.com/dealii/dealii/commit/f8de8c5c28c715717bf8a086e94f071e0fe9deab.patch?full_index=1', + sha256='4aba56b01d816ca950b1625f436840df253f145650e3a3eba51e7f2696ec7dc0', when='@9.0.1 ^boost@1.70.0:') # Fix TBB version check # https://github.com/dealii/dealii/pull/9208 - patch('https://github.com/dealii/dealii/commit/80b13fe5a2eaefc77fa8c9266566fa8a2de91edf.patch', - sha256='6f876dc8eadafe2c4ec2a6673864fb451c6627ca80511b6e16f3c401946fdf33', + patch('https://github.com/dealii/dealii/commit/80b13fe5a2eaefc77fa8c9266566fa8a2de91edf.patch?full_index=1', + sha256='3da530766050a0cea80106684347055bdb78528a1869ce99e8fbf8fc83074fd0', when='@9.0.0:9.1.1') # Explicitly include a boost header, otherwise deal.II fails to compile # https://github.com/dealii/dealii/pull/11438 - patch('https://github.com/dealii/dealii/commit/3b815e21c4bfd82c792ba80e4d90314c8bb9edc9.patch', - sha256='5f9f411ab9336bf49d8293b9936344bad6e1cf720955b9d8e8b29883593b0ed9', + patch('https://github.com/dealii/dealii/commit/3b815e21c4bfd82c792ba80e4d90314c8bb9edc9.patch?full_index=1', + sha256='90ae9ddefe77fffd297bba6b070ab68d07306d4ef525ee994e8c49cef68f76f3', when='@9.2.0 ^boost@1.72.0:') # Check for sufficiently modern versions diff --git a/var/spack/repos/builtin/packages/delly2/package.py b/var/spack/repos/builtin/packages/delly2/package.py index dbae3c24c4b988..d6fc1d0086aa4e 100644 --- a/var/spack/repos/builtin/packages/delly2/package.py +++ b/var/spack/repos/builtin/packages/delly2/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Delly2(MakefilePackage): @@ -22,6 +23,10 @@ class Delly2(MakefilePackage): depends_on('htslib', type=('build', 'link')) depends_on('boost', type=('build', 'link')) + # 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('bcftools', type='run') def edit(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/denovogear/package.py b/var/spack/repos/builtin/packages/denovogear/package.py index 60e11ca4a833a7..581283f033014b 100644 --- a/var/spack/repos/builtin/packages/denovogear/package.py +++ b/var/spack/repos/builtin/packages/denovogear/package.py @@ -19,7 +19,7 @@ class Denovogear(CMakePackage): version('1.1.0', sha256='f818f80cd67183294c8aae312cad8311e6a9abede1f687567bb079d29f79c005') depends_on('cmake@3.1:', type=('build')) - depends_on('boost@1.47:1.60', type=('build')) + depends_on('boost@1.47:1.60 +exception+filesystem+system+serialization+graph+iostreams+regex+math+container', type=('build')) depends_on('htslib@1.2:', type=('build')) depends_on('eigen', type=('build')) depends_on('zlib', type=('link')) diff --git a/var/spack/repos/builtin/packages/dicom3tools/package.py b/var/spack/repos/builtin/packages/dicom3tools/package.py index 4a441d43a443f8..20860886502eeb 100644 --- a/var/spack/repos/builtin/packages/dicom3tools/package.py +++ b/var/spack/repos/builtin/packages/dicom3tools/package.py @@ -52,6 +52,14 @@ def build(self, spec, prefix): configure = Executable(join_path('.', 'Configure')) configure() + if spec.satisfies('%fj'): + filter_file('#define UseStandardHeadersWithoutExtension 0', + '#define UseStandardHeadersWithoutExtension 1', + 'config/generic.cf') + filter_file('#define EmitUsingStdNameSpace 0', + '#define EmitUsingStdNameSpace 1', + 'config/generic.cf') + imake = which('imake') imake('-I./config', '-DDefaultUIDRoot={0}'.format(uid_root)) make('World') diff --git a/var/spack/repos/builtin/packages/diffutils/intprops-workaround-nvc-22.1-bug.patch b/var/spack/repos/builtin/packages/diffutils/intprops-workaround-nvc-22.1-bug.patch new file mode 100644 index 00000000000000..fad04f09f8e4c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/diffutils/intprops-workaround-nvc-22.1-bug.patch @@ -0,0 +1,17 @@ +diff --git a/lib/intprops.h b/lib/intprops.h +index 9d10028..1540e3e 100644 +--- a/lib/intprops.h ++++ b/lib/intprops.h +@@ -232,7 +232,11 @@ + (A, B, P) work when P is non-null. */ + /* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +-#if 7 <= __GNUC__ && !defined __ICC ++#ifdef __EDG__ ++/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned ++ . */ ++# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 ++#elif 7 <= __GNUC__ && !defined __ICC + # define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 + #elif defined __has_builtin + # define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) diff --git a/var/spack/repos/builtin/packages/diffutils/package.py b/var/spack/repos/builtin/packages/diffutils/package.py index b350230be306c4..31bf6b4753f31d 100644 --- a/var/spack/repos/builtin/packages/diffutils/package.py +++ b/var/spack/repos/builtin/packages/diffutils/package.py @@ -12,6 +12,8 @@ class Diffutils(AutotoolsPackage, GNUMirrorPackage): """GNU Diffutils is a package of several programs related to finding differences between files.""" + tags = ['core-packages'] + executables = [r'^diff$'] homepage = "https://www.gnu.org/software/diffutils/" @@ -24,6 +26,9 @@ class Diffutils(AutotoolsPackage, GNUMirrorPackage): build_directory = 'spack-build' patch('nvhpc.patch', when='@3.7 %nvhpc') + patch('intprops-workaround-nvc-22.1-bug.patch', sha256='146b7021bb0a304a3d1c0638956c4e735c2076d292d238f2806efadc972d99e5', when='@3.8 %nvhpc') + + conflicts('%nvhpc', when='@:3.6,3.8:') depends_on('iconv') diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py index cd1c32ef04127a..20bfb05b4f3e5d 100644 --- a/var/spack/repos/builtin/packages/dihydrogen/package.py +++ b/var/spack/repos/builtin/packages/dihydrogen/package.py @@ -45,8 +45,6 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage): description='Enable ROCm/HIP language features.') variant('shared', default=True, description='Enables the build of shared libraries') - variant('docs', default=False, - description='Builds with support for building documentation') # Variants related to BLAS variant('openmp_blas', default=False, @@ -117,9 +115,6 @@ class Dihydrogen(CMakePackage, CudaPackage, ROCmPackage): depends_on('ninja', type='build') depends_on('cmake@3.17.0:', type='build') - depends_on('py-breathe', type='build', when='+docs') - depends_on('doxygen', type='build', when='+docs') - depends_on('llvm-openmp', when='%apple-clang +openmp') # TODO: Debug linker errors when NVSHMEM is built with UCX @@ -159,6 +154,10 @@ def cmake_args(self): ] if '+cuda' in spec: + if self.spec.satisfies('%clang'): + for flag in self.spec.compiler_flags['cxxflags']: + if 'gcc-toolchain' in flag: + args.append('-DCMAKE_CUDA_FLAGS=-Xcompiler={0}'.format(flag)) if spec.satisfies('^cuda@11.0:'): args.append('-DCMAKE_CUDA_STANDARD=17') else: @@ -168,6 +167,10 @@ def cmake_args(self): arch_str = ";".join(archs) args.append('-DCMAKE_CUDA_ARCHITECTURES=%s' % arch_str) + if (spec.satisfies('%cce') and + spec.satisfies('^cuda+allow-unsupported-compilers')): + args.append('-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler') + if '+cuda' in spec or '+distconv' in spec: args.append('-DcuDNN_DIR={0}'.format( spec['cudnn'].prefix)) @@ -201,6 +204,14 @@ def cmake_args(self): ' -g -fsized-deallocation -fPIC -std=c++17'.format(arch_str) ) + if self.spec.satisfies('^essl'): + # IF IBM ESSL is used it needs help finding the proper LAPACK libraries + args.extend([ + '-DLAPACK_LIBRARIES=%s;-llapack;-lblas' % + ';'.join('-l{0}'.format(lib) for lib in self.spec['essl'].libs.names), + '-DBLAS_LIBRARIES=%s;-lblas' % + ';'.join('-l{0}'.format(lib) for lib in self.spec['essl'].libs.names)]) + return args def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/dimemas/package.py b/var/spack/repos/builtin/packages/dimemas/package.py index 3a812f48c591d0..d284d9a590b60b 100644 --- a/var/spack/repos/builtin/packages/dimemas/package.py +++ b/var/spack/repos/builtin/packages/dimemas/package.py @@ -21,7 +21,7 @@ class Dimemas(AutotoolsPackage): depends_on('bison', type=('build', 'link', 'run')) depends_on('flex', type=('build', 'link', 'run')) - depends_on('boost@1.65.0+program_options cxxstd=11', type=('build', 'link')) + depends_on('boost@1.65.0+container+math+exception+program_options cxxstd=11', type=('build', 'link')) def autoreconf(self, spec, prefix): autoreconf('--install', '--verbose', '--force') diff --git a/var/spack/repos/builtin/packages/dire/package.py b/var/spack/repos/builtin/packages/dire/package.py index 775a16ed403555..cebdce2a78a224 100644 --- a/var/spack/repos/builtin/packages/dire/package.py +++ b/var/spack/repos/builtin/packages/dire/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Dire(Package): @@ -23,7 +24,11 @@ class Dire(Package): version('2.004', sha256='8cc1213b58fec744fdaa50834560a14b141de99efb2c3e3d3d47f3d6d84b179f') depends_on('zlib') - depends_on('boost') + + # 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 bb4ed840cf66ed..79752e4b3e4c90 100644 --- a/var/spack/repos/builtin/packages/direnv/package.py +++ b/var/spack/repos/builtin/packages/direnv/package.py @@ -12,6 +12,8 @@ class Direnv(Package): homepage = "https://direnv.net/" url = "https://github.com/direnv/direnv/archive/v2.11.3.tar.gz" + maintainers = ['acastanedam'] + version('2.30.2', sha256='a2ee14ebdbd9274ba8bf0896eeb94e98947a056611058dedd4dbb43167e076f3') version('2.20.0', sha256='cc72525b0a5b3c2ab9a52a3696e95562913cd431f923bcc967591e75b7541bff') version('2.11.3', sha256='2d34103a7f9645059270763a0cfe82085f6d9fe61b2a85aca558689df0e7b006') @@ -19,4 +21,4 @@ class Direnv(Package): depends_on('go', type='build') def install(self, spec, prefix): - make('install', "DESTDIR=%s" % prefix) + make('install', "PREFIX=%s" % prefix) diff --git a/var/spack/repos/builtin/packages/dmtcp/package.py b/var/spack/repos/builtin/packages/dmtcp/package.py index 9aa71363298add..f5b9c7c8d39abf 100644 --- a/var/spack/repos/builtin/packages/dmtcp/package.py +++ b/var/spack/repos/builtin/packages/dmtcp/package.py @@ -13,7 +13,9 @@ class Dmtcp(AutotoolsPackage): homepage = "http://dmtcp.sourceforge.net/" url = "https://sourceforge.net/projects/dmtcp/files/2.6.0/dmtcp-2.6.0.tar.gz/download" + git = "https://github.com/dmtcp/dmtcp.git" + version('master', branch='master') version('2.6.0', sha256='3ed62a86dd0cb9c828b93ee8c7c852d6f9c96a0efa48bcfe867521adf7bced68') version('2.5.2', sha256='0e3e5e15bd401b7b6937f2b678cd7d6a252eab0a143d5740b89cc3bebb4282be') patch('for_aarch64.patch', when='@2.6.0 target=aarch64:') diff --git a/var/spack/repos/builtin/packages/dos2unix/package.py b/var/spack/repos/builtin/packages/dos2unix/package.py index c222a6cbbb40a1..2e53c6a9a30452 100644 --- a/var/spack/repos/builtin/packages/dos2unix/package.py +++ b/var/spack/repos/builtin/packages/dos2unix/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack import * @@ -19,6 +21,8 @@ class Dos2unix(MakefilePackage): depends_on('gettext') + executables = [r'^dos2unix$'] + @property def build_targets(self): targets = [ @@ -29,3 +33,9 @@ def build_targets(self): def install(self, spec, prefix): make('prefix={0}'.format(prefix), 'install') + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + match = re.search(r'^dos2unix\s+([\d\.]+)', output) + return match.group(1) if match else None diff --git a/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py b/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py index 3480051c791c53..deece88cdb4ac9 100644 --- a/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py +++ b/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py @@ -14,6 +14,11 @@ class DotnetCoreSdk(Package): homepage = "https://www.microsoft.com/net/" + version('6.0.2', + url='https://download.visualstudio.microsoft.com/download/pr/e7acb87d-ab08-4620-9050-b3e80f688d36/e93bbadc19b12f81e3a6761719f28b47/dotnet-sdk-6.0.102-linux-x64.tar.gz', + sha256='9bdd4dacdf9a23d386f207ec19260afd36a7fb7302233c9abc0b47e65ffc3119', + preferred=True) + version('5.0.4', url='https://download.visualstudio.microsoft.com/download/pr/73a9cb2a-1acd-4d20-b864-d12797ca3d40/075dbe1dc3bba4aa85ca420167b861b6/dotnet-sdk-5.0.201-linux-x64.tar.gz', sha256='9ff77087831e8ca32719566ec9ef537e136cfc02c5ff565e53f5509cc6e7b341') diff --git a/var/spack/repos/builtin/packages/dssp/package.py b/var/spack/repos/builtin/packages/dssp/package.py index 3544dde5a43ada..6c0fcbeaac8f5b 100644 --- a/var/spack/repos/builtin/packages/dssp/package.py +++ b/var/spack/repos/builtin/packages/dssp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Dssp(AutotoolsPackage): @@ -21,6 +22,11 @@ class Dssp(AutotoolsPackage): depends_on('m4', type='build') depends_on('boost@1.48:') + # 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) + # pdb data download. # 1ALK.pdb - PDB (protein data bank) : https://www.rcsb.org/ resource( diff --git a/var/spack/repos/builtin/packages/dtcmp/package.py b/var/spack/repos/builtin/packages/dtcmp/package.py index 11e48b8964d6a0..d4682c7688b5a3 100644 --- a/var/spack/repos/builtin/packages/dtcmp/package.py +++ b/var/spack/repos/builtin/packages/dtcmp/package.py @@ -15,6 +15,7 @@ class Dtcmp(AutotoolsPackage): git = "https://github.com/LLNL/dtcmp.git" version('main', branch='main') + version('1.1.4', sha256='dd83d8cecd68e13b78b68e88675cc5847cde06742b7740e140b98f4a08127dd3') version('1.1.3', sha256='90b32cadd0ff2f4fa7fc916f8dcfdbe6918e3e285e0292a2470772478ca0aab5') version('1.1.2', sha256='76e1d1fed89bf6abf003179a7aed93350d5ce6282cb000b02a241ec802ec399d') version('1.1.1', sha256='ddf3c57cbb83515e1b7e4111b8a83f832e66376b40eee5d8a5549dd7b8446bc6') diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 6bb05594fd3098..8eef1c2f75f0e5 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -19,6 +19,7 @@ class Dyninst(CMakePackage): tags = ['e4s'] version('master', branch='master') + version('12.1.0', tag='v12.1.0') version('12.0.1', tag='v12.0.1') version('12.0.0', tag='v12.0.0') version('11.0.1', tag='v11.0.1') @@ -44,6 +45,7 @@ class Dyninst(CMakePackage): description="Patch for STAT's DySectAPI") boost_libs = '+atomic+chrono+date_time+filesystem+system+thread+timer' + '+container+random+exception' depends_on('boost@1.61.0:' + boost_libs, when='@10.1.0:') depends_on('boost@1.61.0:1.69' + boost_libs, when='@:10.0') diff --git a/var/spack/repos/builtin/packages/dysco/package.py b/var/spack/repos/builtin/packages/dysco/package.py index db47721cb89a44..70357f51246a21 100644 --- a/var/spack/repos/builtin/packages/dysco/package.py +++ b/var/spack/repos/builtin/packages/dysco/package.py @@ -16,4 +16,4 @@ class Dysco(CMakePackage): depends_on('casacore') depends_on('gsl') - depends_on('boost+date_time+python') + depends_on('boost+date_time+python+container+exception') diff --git a/var/spack/repos/builtin/packages/easi/package.py b/var/spack/repos/builtin/packages/easi/package.py new file mode 100644 index 00000000000000..d92b2ed6c706df --- /dev/null +++ b/var/spack/repos/builtin/packages/easi/package.py @@ -0,0 +1,74 @@ +# Copyright 2013-2021 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 shutil + +from spack import * +from spack.repo import GitExe + + +class Easi(CMakePackage): + """easi is a library for the Easy Initialization of models + in three (or less or more) dimensional domains. + """ + + homepage = "https://easyinit.readthedocs.io" + git = "https://github.com/SeisSol/easi.git" + + maintainers = ['ThrudPrimrose', 'ravil-mobile', 'krenzland'] + + version('develop', branch='master') + version('1.1.2', tag='v1.1.2') + + variant('asagi', default=True, description='build with ASAGI support') + variant('jit', default='impalajit', description='build with JIT support', + values=('impalajit', 'impalajit-llvm', 'lua'), + multi=False) + + depends_on('asagi +mpi +mpi3', when='+asagi') + depends_on('yaml-cpp@0.6.2') + depends_on('impalajit-llvm@1.0.0', when='jit=impalajit-llvm') + depends_on('lua@5.3.2', when='jit=lua') + depends_on('git', type='build', when='jit=impalajit') + + conflicts('jit=impalajit', when='target=aarch64:') + conflicts('jit=impalajit', when='target=ppc64:') + conflicts('jit=impalajit', when='target=ppc64le:') + conflicts('jit=impalajit', when='target=riscv64:') + + def pre_build(self): + spec = self.spec + if "jit=impalajit" in spec: + impalajir_src = join_path(self.stage.source_path, 'impalajit') + if os.path.isdir(impalajir_src): + shutil.rmtree(impalajir_src) + + git_exe = GitExe() + git_exe('clone', 'https://github.com/uphoffc/ImpalaJIT.git', impalajir_src) + with working_dir(join_path(impalajir_src, 'build'), create=True): + cmake('..', '-DCMAKE_INSTALL_PREFIX={0}'.format(self.spec.prefix)) + make() + make('install') + + def cmake_args(self): + self.pre_build() + + args = [] + args.append(self.define_from_variant('ASAGI', 'asagi')) + + with_impala = 'jit=impalajit' in self.spec + with_impala |= 'jit=impalajit-llvm' in self.spec + if with_impala: + args.append(self.define('IMPALAJIT', True)) + backend_type = 'llvm' if 'jit=impalajit-llvm' in self.spec else 'original' + args.append(self.define('IMPALAJIT_BACKEND', backend_type)) + + if 'jit=lua' in self.spec: + args.append(self.define('IMPALAJIT', False)) + args.append(self.define('LUA', True)) + + return args diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index 0791559a0b70c4..c475eee2493fb3 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -3,8 +3,35 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -# -from spack import * + +_definitions = { + # German Meteorological Service (Deutscher Wetterdienst, DWD): + 'edzw': { + 'conflicts': {'when': '@:2.19.1,2.22.0,2.24.0:'}, + 'resources': [ + { + 'when': '@2.20.0', + 'url': 'http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.20.0-1.tar.gz', + 'sha256': 'a92932f8a13c33cba65d3a33aa06c7fb4a37ed12a78e9abe2c5e966402b99af4' + }, + { + 'when': '@2.21.0', + 'url': 'http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.21.0-3.tar.bz2', + 'sha256': '046f1f6450abb3b44c31dee6229f4aab06ca0d3576e27e93e05ccb7cd6e2d9d9' + }, + { + 'when': '@2.22.1', + 'url': 'http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.22.1-1.tar.bz2', + 'sha256': 'be73102a0dcabb236bacd2a70c7b5475f673fda91b49e34df61bef0fa5ad3389' + }, + { + 'when': '@2.23.0', + 'url': 'http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.23.0-4.tar.bz2', + 'sha256': 'c5db32861c7d23410aed466ffef3ca661410d252870a3949442d3ecb176aa338' + } + ] + } +} class Eccodes(CMakePackage): @@ -28,6 +55,7 @@ class Eccodes(CMakePackage): version('2.5.0', sha256='18ab44bc444168fd324d07f7dea94f89e056f5c5cd973e818c8783f952702e4e') version('2.2.0', sha256='1a4112196497b8421480e2a0a1164071221e467853486577c4f07627a702f4c3') + variant('tools', default=False, description='Build the command line tools') variant('netcdf', default=False, description='Enable GRIB to NetCDF conversion tool') variant('jp2k', default='openjpeg', values=('openjpeg', 'jasper', 'none'), @@ -45,6 +73,21 @@ class Eccodes(CMakePackage): variant('python', default=False, description='Enable the Python 2 interface') variant('fortran', default=False, description='Enable the Fortran support') + variant('shared', default=True, + description='Build shared versions of the libraries') + + variant('definitions', + values=disjoint_sets( + ('auto',), + ('default',) + tuple(_definitions.keys()), + ).with_default('auto'), + description="List of definitions to install") + + variant('samples', + values=disjoint_sets( + ('auto',), ('default',), + ).with_default('auto'), + description="List of samples to install") depends_on('netcdf-c', when='+netcdf') # Cannot be built with openjpeg@2.0.x. @@ -66,9 +109,26 @@ class Eccodes(CMakePackage): depends_on('cmake@3.6:', type='build') depends_on('cmake@3.12:', when='@2.19:', type='build') + conflicts('+openmp', when='+pthreads', msg='Cannot enable both POSIX threads and OMP') + conflicts('+netcdf', when='~tools', + msg='Cannot enable the NetCDF conversion tool ' + 'when the command line tools are disabled') + + conflicts('~tools', when='@:2.18.0', + msg='The command line tools can be disabled ' + 'only starting version 2.19.0') + + for center, definitions in _definitions.items(): + kwargs = definitions.get('conflicts', None) + if kwargs: + conflicts('definitions={0}'.format(center), **kwargs) + for kwargs in definitions.get('resources', []): + resource(name=center, destination='spack-definitions', + placement='definitions.{0}'.format(center), **kwargs) + # Enforce linking against the specified JPEG2000 backend, see also # https://github.com/ecmwf/eccodes/commit/2c10828495900ff3d80d1e570fe96c1df16d97fb patch('openjpeg_jasper.patch', when='@:2.16') @@ -76,6 +136,140 @@ class Eccodes(CMakePackage): # CMAKE_INSTALL_RPATH must be a semicolon-separated list. patch('cmake_install_rpath.patch', when='@:2.10') + # Fix a bug preventing cmake from finding NetCDF: + patch('https://github.com/ecmwf/ecbuild/commit/3916c7d22575c45166fcc89edcbe02a6e9b81aa2.patch?full_index=1', + sha256='9dcc4affaaa850d4b7247baa939d0f9ffedea132369f1afc3f248dbf720386c9', + when='@:2.4.0+netcdf') + + @when('%nag+fortran') + def patch(self): + # A number of Fortran source files assume that the kinds of integer and + # real variables are specified in bytes. However, the NAG compiler + # accepts such code only with an additional compiler flag -kind=byte. + # We do not simply add the flag because all user applications would + # have to be compiled with this flag too, which goes against one of the + # purposes of using the NAG compiler: make sure the code does not + # contradict the Fortran standards. The following logic could have been + # implemented as regular patch files, which would, however, be quite + # large. We would also have to introduce several versions of each patch + # file to support different versions of the package. + + patch_kind_files = ['fortran/eccodes_f90_head.f90', + 'fortran/eccodes_f90_tail.f90', + 'fortran/grib_f90_head.f90', + 'fortran/grib_f90_tail.f90', + 'fortran/grib_types.f90'] + + patch_unix_ext_files = [] + + if self.run_tests: + patch_kind_files.extend([ + 'examples/F90/grib_print_data.f90', + 'examples/F90/grib_print_data_static.f90', + # Files that need patching only when the extended regression + # tests are enabled, which we disable unconditionally: + # 'examples/F90/bufr_attributes.f90', + # 'examples/F90/bufr_expanded.f90', + # 'examples/F90/bufr_get_keys.f90', + # 'examples/F90/bufr_read_scatterometer.f90', + # 'examples/F90/bufr_read_synop.f90', + # 'examples/F90/bufr_read_temp.f90', + # 'examples/F90/bufr_read_tempf.f90', + # 'examples/F90/bufr_read_tropical_cyclone.f90', + # 'examples/F90/grib_clone.f90', + # 'examples/F90/grib_get_data.f90', + # 'examples/F90/grib_nearest.f90', + # 'examples/F90/grib_precision.f90', + # 'examples/F90/grib_read_from_file.f90', + # 'examples/F90/grib_samples.f90', + # 'examples/F90/grib_set_keys.f90' + ]) + + patch_unix_ext_files.extend([ + 'examples/F90/bufr_ecc-1284.f90', + 'examples/F90/grib_set_data.f90', + 'examples/F90/grib_set_packing.f90', + # Files that need patching only when the extended regression + # tests are enabled, which we disable unconditionally: + # 'examples/F90/bufr_copy_data.f90', + # 'examples/F90/bufr_get_string_array.f90', + # 'examples/F90/bufr_keys_iterator.f90', + # 'examples/F90/get_product_kind.f90', + # 'examples/F90/grib_count_messages_multi.f90' + ]) + + kwargs = {'string': False, 'backup': False, 'ignore_absent': True} + + # Return the kind and not the size: + filter_file(r'(^\s*kind_of_double\s*=\s*)(\d{1,2})(\s*$)', + '\\1kind(real\\2)\\3', + 'fortran/grib_types.f90', **kwargs) + filter_file(r'(^\s*kind_of_\w+\s*=\s*)(\d{1,2})(\s*$)', + '\\1kind(x\\2)\\3', + 'fortran/grib_types.f90', **kwargs) + + # Replace integer kinds: + for size, r in [(2, 4), (4, 9), (8, 18)]: + filter_file(r'(^\s*integer\((?:kind=)?){0}(\).*)'.format(size), + '\\1selected_int_kind({0})\\2'.format(r), + *patch_kind_files, **kwargs) + + # Replace real kinds: + for size, p, r in [(4, 6, 37), (8, 15, 307)]: + filter_file(r'(^\s*real\((?:kind=)?){0}(\).*)'.format(size), + '\\1selected_real_kind({0}, {1})\\2'.format(p, r), + *patch_kind_files, **kwargs) + + # Enable getarg and exit subroutines: + filter_file(r'(^\s*program\s+\w+)(\s*$)', + '\\1; use f90_unix_env; use f90_unix_proc\\2', + *patch_unix_ext_files, **kwargs) + + @property + def libs(self): + libraries = [] + + query_parameters = self.spec.last_query.extra_parameters + + if 'shared' in query_parameters: + shared = True + elif 'static' in query_parameters: + shared = False + else: + shared = '+shared' in self.spec + + # Return Fortran library if requested: + return_fortran = 'fortran' in query_parameters + # Return C library if either requested or the Fortran library is not + # requested (to avoid overlinking) or the static libraries are + # requested: + return_c = 'c' in query_parameters or not (return_fortran and shared) + # Return MEMFS library only if enabled and the static libraries are + # requested: + return_memfs = '+memfs' in self.spec and not shared + + if return_fortran: + libraries.append('libeccodes_f90') + + if return_c: + libraries.append('libeccodes') + + if return_memfs: + libraries.append('libeccodes_memfs') + + libs = find_libraries( + libraries, root=self.prefix, shared=shared, recursive=True + ) + + if libs and len(libs) == len(libraries): + return libs + + msg = 'Unable to recursively locate {0} {1} libraries in {2}' + raise spack.error.NoLibrariesError( + msg.format('shared' if shared else 'static', + self.spec.name, + self.spec.prefix)) + @run_before('cmake') def check_fortran(self): if '+fortran' in self.spec and self.compiler.fc is None: @@ -83,69 +277,81 @@ def check_fortran(self): 'Fortran interface requires a Fortran compiler!') def cmake_args(self): - var_opt_list = [ - ('+pthreads', 'ECCODES_THREADS'), - ('+openmp', 'ECCODES_OMP_THREADS'), - ('+memfs', 'MEMFS'), - ('+python', - 'PYTHON2' if self.spec.satisfies('@2.20.0:') else 'PYTHON'), - ('+fortran', 'FORTRAN')] - - args = ['-DENABLE_%s=%s' % (opt, 'ON' if var in self.spec else 'OFF') - for var, opt in var_opt_list] - - args.extend( - ['-DENABLE_%s=%s' % (opt, 'ON' if self.run_tests else 'OFF') - for opt in ['TESTS', - # Examples are not installed and are - # just part of the test suite. - 'EXAMPLES']]) - - # Unconditionally disable the extended regression testing, - # which requires data downloads. - args.append('-DENABLE_EXTRA_TESTS=OFF') + jp2k = self.spec.variants['jp2k'].value - if '+netcdf' in self.spec: - args.extend(['-DENABLE_NETCDF=ON', - # Prevent overriding by environment variable - # HDF5_ROOT. - '-DHDF5_ROOT=' + self.spec['hdf5'].prefix, - # Prevent possible overriding by environment variables - # NETCDF_ROOT, NETCDF_DIR, and NETCDF_PATH. - '-DNETCDF_PATH=' + self.spec['netcdf-c'].prefix]) - else: - args.append('-DENABLE_NETCDF=OFF') + args = [ + self.define_from_variant('ENABLE_BUILD_TOOLS', 'tools'), + self.define_from_variant('ENABLE_NETCDF', 'netcdf'), + self.define('ENABLE_JPG', jp2k != 'none'), + self.define('ENABLE_JPG_LIBJASPER', jp2k == 'jasper'), + self.define('ENABLE_JPG_LIBOPENJPEG', jp2k == 'openjpeg'), + self.define_from_variant('ENABLE_PNG', 'png'), + self.define_from_variant('ENABLE_AEC', 'aec'), + self.define_from_variant('ENABLE_ECCODES_THREADS', 'pthreads'), + self.define_from_variant('ENABLE_ECCODES_OMP_THREADS', 'openmp'), + self.define_from_variant('ENABLE_MEMFS', 'memfs'), + self.define_from_variant( + 'ENABLE_PYTHON{0}'.format( + '2' if self.spec.satisfies('@2.20.0:') else ''), + 'python'), + self.define_from_variant('ENABLE_FORTRAN', 'fortran'), + self.define('BUILD_SHARED_LIBS', + 'BOTH' if '+shared' in self.spec else 'OFF'), + self.define('ENABLE_TESTS', self.run_tests), + # Examples are not installed and are just part of the test suite: + self.define('ENABLE_EXAMPLES', self.run_tests), + # Unconditionally disable the extended regression tests, since they + # download additional data (~134MB): + self.define('ENABLE_EXTRA_TESTS', False) + ] - jp2k = self.spec.variants['jp2k'].value - args.append('-DENABLE_JPG=' + - ('OFF' if jp2k == 'none' else 'ON')) - args.append('-DENABLE_JPG_LIBJASPER=' + - ('ON' if jp2k == 'jasper' else 'OFF')) - args.append('-DENABLE_JPG_LIBOPENJPEG=' + - ('ON' if jp2k == 'openjpeg' else 'OFF')) + if '+netcdf' in self.spec: + args.extend([ + # Prevent possible overriding by environment variables + # NETCDF_ROOT, NETCDF_DIR, and NETCDF_PATH: + self.define('NETCDF_PATH', self.spec['netcdf-c'].prefix), + # Prevent overriding by environment variable HDF5_ROOT: + self.define('HDF5_ROOT', self.spec['hdf5'].prefix)]) if jp2k == 'openjpeg': - args.append('-DOPENJPEG_PATH=' + self.spec['openjpeg'].prefix) + args.append(self.define('OPENJPEG_PATH', + self.spec['openjpeg'].prefix)) if '+png' in self.spec: - args.extend(['-DENABLE_PNG=ON', - '-DZLIB_ROOT=' + self.spec['zlib'].prefix]) - else: - args.append('-DENABLE_PNG=OFF') + args.append(self.define('ZLIB_ROOT', self.spec['zlib'].prefix)) if '+aec' in self.spec: - args.extend(['-DENABLE_AEC=ON', - # Prevent overriding by environment variables - # AEC_DIR and AEC_PATH. - '-DAEC_DIR=' + self.spec['libaec'].prefix]) - else: - args.append('-DENABLE_AEC=OFF') + # Prevent overriding by environment variables AEC_DIR and AEC_PATH: + args.append(self.define('AEC_DIR', self.spec['libaec'].prefix)) if '^python' in self.spec: - args.append('-DPYTHON_EXECUTABLE:FILEPATH=' + python.path) + args.append(self.define('PYTHON_EXECUTABLE', python.path)) + + definitions = self.spec.variants['definitions'].value + + if 'auto' not in definitions: + args.append(self.define('ENABLE_INSTALL_ECCODES_DEFINITIONS', + 'default' in definitions)) + + samples = self.spec.variants['samples'].value + + if 'auto' not in samples: + args.append(self.define('ENABLE_INSTALL_ECCODES_SAMPLES', + 'default' in samples)) return args + @run_after('install') + def install_extra_definitions(self): + noop = set(['auto', 'none', 'default']) + for center in self.spec.variants['definitions'].value: + if center not in noop: + center_dir = 'definitions.{0}'.format(center) + install_tree( + join_path(self.stage.source_path, + 'spack-definitions', center_dir), + join_path(self.prefix.share.eccodes, center_dir)) + def check(self): # https://confluence.ecmwf.int/display/ECC/ecCodes+installation with working_dir(self.build_directory): diff --git a/var/spack/repos/builtin/packages/ecflow/package.py b/var/spack/repos/builtin/packages/ecflow/package.py index cb0c533ba6a07c..bb61bfa59e57d4 100644 --- a/var/spack/repos/builtin/packages/ecflow/package.py +++ b/var/spack/repos/builtin/packages/ecflow/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Ecflow(CMakePackage): @@ -30,6 +31,11 @@ class Ecflow(CMakePackage): # Boost-1.7X release not working well on serialization depends_on('boost@1.53:1.69+python') depends_on('boost@1.53:1.69+pic', when='+static_boost') + + # 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('qt@5:', when='+ui') depends_on('cmake@2.12.11:', type='build') diff --git a/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py b/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py index fcaeb79b24d228..a211b3e8559e19 100644 --- a/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py +++ b/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py @@ -6,13 +6,13 @@ from spack import * -class EcpDataVisSdk(BundlePackage, CudaPackage): +class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage): """ECP Data & Vis SDK""" homepage = "https://github.com/chuckatkins/ecp-data-viz-sdk" tags = ['ecp'] - maintainers = ['chuckatkins'] + maintainers = ['chuckatkins', 'kwryankrattiger'] version('1.0') @@ -30,7 +30,6 @@ class EcpDataVisSdk(BundlePackage, CudaPackage): variant('veloc', default=False, description="Enable VeloC") # Vis - variant('sensei', default=False, description="Enable Sensei") variant('ascent', default=False, description="Enable Ascent") variant('paraview', default=False, description="Enable ParaView") variant('sz', default=False, description="Enable SZ") @@ -41,6 +40,8 @@ class EcpDataVisSdk(BundlePackage, CudaPackage): variant('cinema', default=False, description="Enable Cinema") # Outstanding build issues + variant('sensei', default=False, description="Enable Sensei") + conflicts('+sensei') variant('visit', default=False, description="Enable VisIt") conflicts('+visit') @@ -49,6 +50,16 @@ def dav_sdk_depends_on(spec, when=None, propagate=None): # Do the basic depends_on depends_on(spec, when=when) + # Strip spec string to just the base spec name + # ie. A +c ~b -> A + spec = Spec(spec).name + + if '+' in when and len(when.split()) == 1: + when_not = when.replace('+', '~') + # If the package is in the spec tree then it must + # be enabled in the SDK. + conflicts(when_not, '^' + spec) + # Skip if there is nothing to propagate if not propagate: return @@ -57,10 +68,6 @@ def dav_sdk_depends_on(spec, when=None, propagate=None): if not type(propagate) is dict: propagate = dict([(v, v) for v in propagate]) - # Strip spec string to just the base spec name - # ie. A +c ~b -> A - spec = Spec(spec).name - # Determine the base variant base_variant = '' if when: @@ -88,19 +95,23 @@ def exclude_variants(variants, exclude): ############################################################ cuda_arch_variants = ['cuda_arch={0}'.format(x) for x in CudaPackage.cuda_arch_values] + amdgpu_target_variants = ['amdgpu_target={0}'.format(x) + for x in ROCmPackage.amdgpu_targets] dav_sdk_depends_on('adios2+shared+mpi+fortran+python+blosc+sst+ssc+dataman', when='+adios2', propagate=['hdf5', 'sz', 'zfp']) - dav_sdk_depends_on('darshan-runtime+mpi', when='+darshan') + dav_sdk_depends_on('darshan-runtime+mpi', + when='+darshan', + propagate=['hdf5']) dav_sdk_depends_on('darshan-util', when='+darshan') dav_sdk_depends_on('faodel+shared+mpi network=libfabric', when='+faodel', propagate=['hdf5']) - dav_sdk_depends_on('hdf5 +shared+mpi+fortran', when='+hdf5') + dav_sdk_depends_on('hdf5@1.12: +shared+mpi+fortran', when='+hdf5') dav_sdk_depends_on('parallel-netcdf+shared+fortran', when='+pnetcdf') @@ -114,23 +125,43 @@ def exclude_variants(variants, exclude): dav_sdk_depends_on('sensei@develop +vtkio +python ~miniapps', when='+sensei', propagate=dict(propagate_to_sensei)) - dav_sdk_depends_on('ascent+shared+mpi+fortran+openmp+python+vtkh+dray', - when='+ascent') + dav_sdk_depends_on('ascent+mpi+fortran+openmp+python+shared+vtkh+dray', + when='+ascent', + propagate=['adios2'] + cuda_arch_variants) + # Need to explicitly turn off conduit hdf5_compat in order to build + # hdf5@1.12 which is required for SDK + depends_on('ascent ^conduit ~hdf5_compat', when='+ascent +hdf5') + depends_on('ascent~cuda', when='+ascent~cuda') + depends_on('ascent+cuda', when='+ascent+cuda ^vtk-m@1.7:') + # Disable configuring with @develop. This should be removed after ascent + # releases 0.8 and ascent can build with conduit@0.8: and vtk-m@1.7: + conflicts('ascent@develop') depends_on('py-cinemasci', when='+cinema') - dav_sdk_depends_on('paraview +mpi +python3 +kits', + dav_sdk_depends_on('paraview+mpi+python3+kits+shared', when='+paraview', - propagate=['hdf5', 'adios2'] + cuda_arch_variants) - # Want +shared when not using cuda - dav_sdk_depends_on('paraview ~shared +cuda', when='+paraview +cuda') - dav_sdk_depends_on('paraview +shared ~cuda', when='+paraview ~cuda') + propagate=['hdf5', 'adios2']) + # ParaView needs @5.11: in order to use cuda and be compatible with other + # SDK packages. + depends_on('paraview +cuda', when='+paraview +cuda ^paraview@5.11:') + for cuda_arch in cuda_arch_variants: + depends_on('paraview {0}'.format(cuda_arch), + when='+paraview {0} ^paraview@5.11:'.format(cuda_arch)) + depends_on('paraview ~cuda', when='+paraview ~cuda') + conflicts('paraview@master') dav_sdk_depends_on('visit', when='+visit') dav_sdk_depends_on('vtk-m+shared+mpi+openmp+rendering', when='+vtkm', propagate=['cuda'] + cuda_arch_variants) + depends_on('vtk-m +rocm', when='+vtkm +rocm ^vtk-m@1.7:') + for amdgpu_target in amdgpu_target_variants: + depends_on('vtk-m {0}'.format(amdgpu_target), + when='+vtkm {0} ^vtk-m@1.7:'.format(amdgpu_target)) + + # depends_on('vtk-m ~rocm', when='+vtkm +rocm ^vtk-m@:1.6') # +python is currently broken in sz # dav_sdk_depends_on('sz+shared+fortran+python+random_access', diff --git a/var/spack/repos/builtin/packages/edm4hep/package.py b/var/spack/repos/builtin/packages/edm4hep/package.py index 73c024337cd2ab..fc0bbe7a1132cd 100644 --- a/var/spack/repos/builtin/packages/edm4hep/package.py +++ b/var/spack/repos/builtin/packages/edm4hep/package.py @@ -16,6 +16,7 @@ class Edm4hep(CMakePackage): tags = ["hep", "key4hep"] version('master', branch='master') + version('0.4.1', sha256='122987fd5969b0f1639afa9668ac5181203746d00617ddb3bf8a2a9842758a63') version('0.4', sha256='bcb729cd4a6f5917b8f073364fc950788111e178dd16b7e5218361f459c92a24') version('0.3.2', sha256='b6a28649a4ba9ec1c4423bd1397b0a810ca97374305c4856186b506e4c00f769') version('0.3.1', sha256='eeec38fe7d72d2a72f07a63dca0a34ca7203727f67869c0abf6bef014b8b319b') @@ -33,8 +34,11 @@ class Edm4hep(CMakePackage): depends_on('python', type='build') depends_on('root@6.08:') - depends_on('podio@0.14:', when='@0.4:') + depends_on('podio@0.14.1:', when='@0.4.1:') + depends_on('podio@0.14', when='@0.4') depends_on('podio@0.13.0:0.13', when='@:0.3') + depends_on('py-jinja2', type='build') + depends_on('py-pyyaml', type='build') depends_on('hepmc@:2', type='test', when='@:0.4.0') depends_on('hepmc3', type='test', when='@0.4.1:') diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index eae3dca0e3c8e1..552827ed43b56c 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -39,6 +39,10 @@ class Eigen(CMakePackage): patch('https://gitlab.com/libeigen/eigen/-/commit/6d822a1052fc665f06dc51b4729f6a38e0da0546.diff', when='@3.3.8', sha256='62590e9b33a8f72b608a72b87147a306e7cb20766ea53c6b8e0a183fa6cb7635') + # there is a bug in 3.3.4 that provokes a compile error with the xl compiler + # See https://gitlab.com/libeigen/eigen/-/issues/1555 + patch('xlc-compilation-3.3.4.patch', when='@3.3.4%xl_r') + # From http://eigen.tuxfamily.org/index.php?title=Main_Page#Requirements # "Eigen doesn't have any dependencies other than the C++ standard # library." diff --git a/var/spack/repos/builtin/packages/eigen/xlc-compilation-3.3.4.patch b/var/spack/repos/builtin/packages/eigen/xlc-compilation-3.3.4.patch new file mode 100644 index 00000000000000..50ccd0f39f2697 --- /dev/null +++ b/var/spack/repos/builtin/packages/eigen/xlc-compilation-3.3.4.patch @@ -0,0 +1,12 @@ +diff -up /Eigen/src/Core/arch/AltiVec/PacketMath.h /Eigen/src/Core/arch/AltiVec/PacketMath.h +--- /Eigen/src/Core/arch/AltiVec/PacketMath.h ++++ /Eigen/src/Core/arch/AltiVec/PacketMath.h +@@ -1022,7 +1022,7 @@ ptranspose(PacketBlock& kern + + template<> EIGEN_STRONG_INLINE Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket, const Packet2d& elsePacket) { + Packet2l select = { ifPacket.select[0], ifPacket.select[1] }; +- Packet2bl mask = vec_cmpeq(reinterpret_cast(select), reinterpret_cast(p2l_ONE)); ++ Packet2bl mask = reinterpret_cast( vec_cmpeq(reinterpret_cast(select), reinterpret_cast(p2l_ONE)) ); + return vec_sel(elsePacket, thenPacket, mask); + } + #endif // __VSX__ diff --git a/var/spack/repos/builtin/packages/elfio/package.py b/var/spack/repos/builtin/packages/elfio/package.py index b00fd16ca263f0..d48caadd2a278d 100644 --- a/var/spack/repos/builtin/packages/elfio/package.py +++ b/var/spack/repos/builtin/packages/elfio/package.py @@ -17,6 +17,7 @@ class Elfio(CMakePackage): maintainers = ['haampie'] + version('3.10', sha256='cdc6362ede2e0c8d1d6db15d7da4b526f461d9cfae6f6337369e416a8bc60234') version('3.9', sha256='767b269063fc35aba6d361139f830aa91c45dc6b77942f082666876c1aa0be0f') version('3.8', sha256='9553ce2b8d8aa2fb43f0e9be9bcbd10cd52f40b385110ea54173889c982f9ac4') version('3.7', sha256='0af2452214c32639f8dbe520b31e03802be184581ab5ad65e99ed745274dbd5d') diff --git a/var/spack/repos/builtin/packages/enzo/package.py b/var/spack/repos/builtin/packages/enzo/package.py index 4b561fa026606e..bd8b23f836d0bd 100644 --- a/var/spack/repos/builtin/packages/enzo/package.py +++ b/var/spack/repos/builtin/packages/enzo/package.py @@ -32,7 +32,7 @@ class Enzo(MakefilePackage): patch('for_aarch64.patch', when='target=aarch64:') # https://github.com/enzo-project/enzo-dev/pull/158 - patch('https://github.com/enzo-project/enzo-dev/commit/0191ff5ad9ad2c7639d44823e84cd0115e7a2970.patch', sha256='01328a5f5fe72ac5af31661deb6891ea160264b67a470d6ce91b71b001845810', when='@2.6.1 ^hdf5@1.12.0:') + patch('https://github.com/enzo-project/enzo-dev/commit/0191ff5ad9ad2c7639d44823e84cd0115e7a2970.patch?full_index=1', sha256='f6db2fef04d3ffe4f05ef589d0593b2ab7ab6d63088abf9b76c7bacf835625c0', when='@2.6.1 ^hdf5@1.12.0:') def flag_handler(self, name, flags): if name == 'fflags': diff --git a/var/spack/repos/builtin/packages/erne/package.py b/var/spack/repos/builtin/packages/erne/package.py index 46b1d29c87dfbf..4933bbdf6a5477 100644 --- a/var/spack/repos/builtin/packages/erne/package.py +++ b/var/spack/repos/builtin/packages/erne/package.py @@ -17,7 +17,7 @@ class Erne(AutotoolsPackage): variant('mpi', default=False, description='Build with OpenMPI support') - depends_on('boost@1.40.0:', type=('build', 'link', 'run')) + depends_on('boost@1.40.0: +exception+filesystem+system+chrono+serialization+random+atomic+iostreams+regex+thread+container', type=('build', 'link', 'run')) depends_on('openmpi', type=('build', 'run'), when='+mpi') def configure_args(self): diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index d5b5a76ef62b0c..4a33e187dcdf2d 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -18,6 +18,8 @@ class Esmf(MakefilePackage): homepage = "https://www.earthsystemcog.org/projects/esmf/" url = 'https://github.com/esmf-org/esmf/archive/ESMF_8_0_1.tar.gz' + maintainers = ['climbfuji'] + version('8.2.0', sha256='3693987aba2c8ae8af67a0e222bea4099a48afe09b8d3d334106f9d7fc311485') version('8.1.1', sha256='58c2e739356f21a1b32673aa17a713d3c4af9d45d572f4ba9168c357d586dc75') version('8.0.1', sha256='9172fb73f3fe95c8188d889ee72fdadb4f978b1d969e1d8e401e8d106def1d84') diff --git a/var/spack/repos/builtin/packages/ethminer/package.py b/var/spack/repos/builtin/packages/ethminer/package.py index be28a6a4eb4929..4f6dda8097c0f6 100644 --- a/var/spack/repos/builtin/packages/ethminer/package.py +++ b/var/spack/repos/builtin/packages/ethminer/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Ethminer(CMakePackage): @@ -20,7 +21,11 @@ class Ethminer(CMakePackage): description='Build with Stratum protocol support.') depends_on('python') - depends_on('boost') + + # 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('json-c') depends_on('curl') depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/eve/package.py b/var/spack/repos/builtin/packages/eve/package.py index fb4584a46f0f59..4b46062f6f0a4f 100644 --- a/var/spack/repos/builtin/packages/eve/package.py +++ b/var/spack/repos/builtin/packages/eve/package.py @@ -9,10 +9,11 @@ class Eve(CMakePackage): """Expressive Velocity Engine - SIMD in C++ Goes Brrrr""" - homepage = "https://jfalcou.github.io/eve/" - url = "https://github.com/jfalcou/eve/archive/refs/tags/v2021.10.0.tar.gz" + homepage = "https://jfalcou.github.io/eve/html/index.html" + url = "https://github.com/jfalcou/eve/archive/refs/tags/v2022.03.0.tar.gz" maintainers = ['jfalcou'] git = 'https://github.com/jfalcou/eve.git' version('develop', branch='develop') + version('2022.03.0', sha256='8bf9faea516806e7dd468e778dcedc81c51f0b2c6a70b9c75987ce12bb759911') version('2021.10.0', sha256='580c40a8244039a700b93ea49fb0affc1c8d3c100eb6dc66368e101753f51e5c') diff --git a/var/spack/repos/builtin/packages/exago/package.py b/var/spack/repos/builtin/packages/exago/package.py index 90467485730a4d..037c26bf07644b 100644 --- a/var/spack/repos/builtin/packages/exago/package.py +++ b/var/spack/repos/builtin/packages/exago/package.py @@ -6,7 +6,7 @@ from spack import * -class Exago(CMakePackage, CudaPackage): +class Exago(CMakePackage, CudaPackage, ROCmPackage): """ExaGO is a package for solving large-scale power grid optimization problems on parallel and distributed architectures, particularly targeted for exascale machines.""" @@ -15,7 +15,9 @@ class Exago(CMakePackage, CudaPackage): git = 'https://gitlab.pnnl.gov/exasgd/frameworks/exago.git' maintainers = ['ashermancinelli', 'CameronRutherford'] - version('1.3.0', commit='58b039d746a6eac8e84b0afc01354cd58caec485', submodules=True, preferred=True) + version('1.4.1', commit='ea607c685444b5f345bfdc9a59c345f0f30adde2', submodules=True, preferred=True) + version('1.4.0', commit='4f4c3fdb40b52ace2d6ba000e7f24b340ec8e886', submodules=True) + version('1.3.0', commit='58b039d746a6eac8e84b0afc01354cd58caec485', submodules=True) version('1.2.0', commit='255a214e', submodules=True) version('1.1.2', commit='db3bb16e', submodules=True) version('1.1.1', commit='0e0a3f27', submodules=True) @@ -30,6 +32,7 @@ class Exago(CMakePackage, CudaPackage): variant('mpi', default=True, description='Enable/Disable MPI') variant('raja', default=False, description='Enable/Disable RAJA') variant('python', default=True, description='Enable/Disable Python bindings') + conflicts('+python', when='@:1.3.0', msg='Python bindings require ExaGO 1.4') # Solver options variant('hiop', default=False, description='Enable/Disable HiOp') @@ -44,6 +47,7 @@ class Exago(CMakePackage, CudaPackage): depends_on('raja', when='+raja') depends_on('raja+cuda', when='+raja+cuda') + depends_on('raja+rocm', when='+raja+rocm') depends_on('raja@0.14.0:', when='@1.1.0: +raja') depends_on('umpire', when='+raja') depends_on('umpire@6.0.0:', when='@1.1.0: +raja') @@ -65,37 +69,61 @@ class Exago(CMakePackage, CudaPackage): depends_on('hiop@0.5.3:', when='@1.3.0:+hiop') depends_on('hiop+cuda', when='+hiop+cuda') + depends_on('hiop+rocm', when='+hiop+rocm') depends_on('hiop~mpi', when='+hiop~mpi') depends_on('hiop+mpi', when='+hiop+mpi') depends_on('petsc@3.13:3.14', when='@:1.2.99') - depends_on('petsc@3.16.0', when='@1.3.0:') + depends_on('petsc@3.16.0:', when='@1.3.0:') depends_on('petsc~mpi', when='~mpi') depends_on('ipopt', when='+ipopt') + depends_on('py-mpi4py', when='@1.3.0:+mpi+python') + flag_handler = build_system_flags def cmake_args(self): args = [] spec = self.spec - args.append("-DEXAGO_RUN_TESTS=ON") - - args.append(self.define_from_variant('EXAGO_ENABLE_MPI', 'mpi')) - args.append(self.define_from_variant('EXAGO_ENABLE_RAJA', 'raja')) - args.append(self.define_from_variant('EXAGO_ENABLE_HIOP', 'hiop')) - args.append(self.define_from_variant('EXAGO_ENABLE_IPOPT', 'ipopt')) - args.append(self.define_from_variant('EXAGO_ENABLE_GPU', 'cuda')) - args.append(self.define_from_variant('EXAGO_ENABLE_CUDA', 'cuda')) - args.append(self.define_from_variant('EXAGO_ENABLE_PYTHON', 'python')) - args.append("-DPETSC_DIR='{0}'".format(spec['petsc'].prefix)) + # NOTE: If building with spack develop on a cluster, you may want to + # change the ctest launch command to use your job scheduler like so: + # + # args.append( + # self.define('EXAGO_CTEST_LAUNCH_COMMAND', 'srun -t 10:00')) + + args.extend([ + self.define('EXAGO_ENABLE_GPU', '+cuda' in spec or '+rocm' in spec), + self.define_from_variant('EXAGO_ENABLE_CUDA', 'cuda'), + self.define_from_variant('EXAGO_ENABLE_HIP', 'rocm'), + self.define('PETSC_DIR', spec['petsc'].prefix), + self.define('EXAGO_RUN_TESTS', True), + self.define_from_variant('EXAGO_ENABLE_MPI', 'mpi'), + self.define_from_variant('EXAGO_ENABLE_RAJA', 'raja'), + self.define_from_variant('EXAGO_ENABLE_HIOP', 'hiop'), + self.define_from_variant('EXAGO_ENABLE_IPOPT', 'ipopt'), + self.define_from_variant('EXAGO_ENABLE_PYTHON', 'python'), + ]) if '+cuda' in spec: cuda_arch_list = spec.variants['cuda_arch'].value - cuda_arch = cuda_arch_list[0] - if cuda_arch != 'none': + if cuda_arch_list[0] != 'none': args.append( - "-DCMAKE_CUDA_ARCHITECTURES={0}".format(cuda_arch)) + self.define('CMAKE_CUDA_ARCHITECTURES', cuda_arch_list)) + + # NOTE: if +rocm, some HIP CMake variables may not be set correctly. + # Namely, HIP_CLANG_INCLUDE_PATH. If the configure phase fails due to + # this variable being undefined, adding the following line typically + # resolves this issue: + # + # args.append( + # self.define('HIP_CLANG_INCLUDE_PATH', + # '/opt/rocm-X.Y.Z/llvm/lib/clang/14.0.0/include/')) + if '+rocm' in spec: + rocm_arch_list = spec.variants['amdgpu_target'].value + if rocm_arch_list[0] != 'none': + args.append(self.define('GPU_TARGETS', rocm_arch_list)) + args.append(self.define('AMDGPU_TARGETS', rocm_arch_list)) return args diff --git a/var/spack/repos/builtin/packages/exciting/for_aarch64.patch b/var/spack/repos/builtin/packages/exciting/for_aarch64.patch index 01e4a739396dc0..e319c3d32a1aee 100644 --- a/var/spack/repos/builtin/packages/exciting/for_aarch64.patch +++ b/var/spack/repos/builtin/packages/exciting/for_aarch64.patch @@ -1,5 +1,5 @@ ---- spack-src/src/FoX/config/config.guess.bak 2019-03-20 20:13:07.000000000 +0900 -+++ spack-src/src/FoX/config/config.guess 2020-12-22 09:36:28.448022150 +0900 +--- spack-src/external/FoX/config/config.guess.bak 2019-03-20 20:13:07.000000000 +0900 ++++ spack-src/external/FoX/config/config.guess 2020-12-22 09:36:28.448022150 +0900 @@ -832,6 +832,9 @@ arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu diff --git a/var/spack/repos/builtin/packages/exempi/package.py b/var/spack/repos/builtin/packages/exempi/package.py index c3eecd39696b5e..04d81f79f3b3fd 100644 --- a/var/spack/repos/builtin/packages/exempi/package.py +++ b/var/spack/repos/builtin/packages/exempi/package.py @@ -37,7 +37,7 @@ def patch(self): def configure_args(self): args = ['--with-boost={0}'.format(self.spec['boost'].prefix)] - if self.spec.satisfies('polatform=darwin'): + if self.spec.satisfies('platform=darwin'): args += ['--with-darwinports', '--with-fink'] return args diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index eb7b115ea377e4..41488be192d58b 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -14,8 +14,11 @@ class Expat(AutotoolsPackage): homepage = "https://libexpat.github.io/" url = "https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2" - version('2.4.4', sha256='14c58c2a0b5b8b31836514dfab41bd191836db7aa7b84ae5c47bc0327a20d64a') - # deprecate all releases before 2.4.4 because of security issues + version('2.4.6', sha256='ce317706b07cae150f90cddd4253f5b4fba929607488af5ac47bf2bc08e31f09') + # deprecate release 2.4.5 because of a regression + version('2.4.5', sha256='fbb430f964c7a2db2626452b6769e6a8d5d23593a453ccbc21701b74deabedff', deprecated=True) + # deprecate all releases before 2.4.5 because of security issues + version('2.4.4', sha256='14c58c2a0b5b8b31836514dfab41bd191836db7aa7b84ae5c47bc0327a20d64a', deprecated=True) version('2.4.3', sha256='6f262e216a494fbf42d8c22bc841b3e117c21f2467a19dc4c27c991b5622f986', deprecated=True) version('2.4.1', sha256='2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40', deprecated=True) version('2.4.0', sha256='8c59142ef88913bc0a8b6e4c58970c034210ca552e6271f52f6cd6cce3708424', deprecated=True) diff --git a/var/spack/repos/builtin/packages/express/package.py b/var/spack/repos/builtin/packages/express/package.py index de38e87d426faa..7458aa7dca740e 100644 --- a/var/spack/repos/builtin/packages/express/package.py +++ b/var/spack/repos/builtin/packages/express/package.py @@ -21,7 +21,7 @@ class Express(CMakePackage): version('1.5.2', sha256='25a63cca3dac6bd0daf04d2f0b2275e47d2190c90522bd231b1d7a875a59a52e') version('1.5.1', sha256='fa3522de9cc25f1ede22fa196928912a6da2a2038681911115ec3e4da3d61293') - depends_on('boost') + depends_on('boost+date_time+exception+filesystem+system+chrono+atomic+container+math+thread+program_options') depends_on('bamtools') depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index b7309cf58bca94..cb7eb73ddf5378 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost # typical working line with extrae 3.0.1 # ./configure @@ -50,7 +51,11 @@ class Extrae(AutotoolsPackage): depends_on("mpi") depends_on("libunwind") - depends_on("boost") + + # 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("libdwarf") depends_on("papi") depends_on("elf", type="link") diff --git a/var/spack/repos/builtin/packages/eztrace/package.py b/var/spack/repos/builtin/packages/eztrace/package.py index 9bcf88b21c83f4..b610beb29a20a8 100644 --- a/var/spack/repos/builtin/packages/eztrace/package.py +++ b/var/spack/repos/builtin/packages/eztrace/package.py @@ -6,21 +6,78 @@ from spack import * -class Eztrace(AutotoolsPackage): +class Eztrace(Package): """EZTrace is a tool to automatically generate execution traces of HPC applications.""" - homepage = "https://eztrace.gforge.inria.fr" - url = "https://gitlab.com/eztrace/eztrace/-/archive/eztrace-1.1-10/eztrace-eztrace-1.1-10.tar.gz" + homepage = "https://gitlab.com/eztrace" maintainers = ['trahay'] + git = "https://gitlab.com/eztrace/eztrace.git" - version('1.1-10', sha256='97aba8f3b3b71e8e2f7ef47e00c262234e27b9cb4a870c85c525317a83a3f0d4') + version('master', branch='master') + version('2.0-rc1', sha256='2ad322df5aeb0c668ebadbfeb3b21c8841831b2c15944d86d1d217f738fee74e') + version('1.1-13', sha256='6144d04fb62b3ccad41af0268cd921161f168d0cca3f6c210c448bb0b07be7e0') + version('1.1-10', sha256='63d1af2db38b04efa817614574f381e7536e12db06a2c75375d1795adda3d1d8') + # dependencies for eztrace 1.x and 2.x depends_on('mpi') + depends_on('opari2') + depends_on('binutils') + # eztrace 1.x dependencies + depends_on('autoconf@2.71', type='build', when="@:1") + depends_on('automake', type='build', when="@:1") + depends_on('libtool', type='build', when="@:1") # Does not work on Darwin due to MAP_POPULATE - conflicts('platform=darwin') + conflicts('platform=darwin', when='@:1') + # eztrace 2.x dependencies + depends_on('cmake@3.1:', type='build', when="@2.0:") + depends_on('otf2', when="@2.0:") + + def url_for_version(self, version): + url = "https://gitlab.com/eztrace/eztrace/-/archive/{0}/eztrace-{1}.tar.gz" + return url.format(version, version) + + @when('@2.0:') + def install(self, spec, prefix): + # Since eztrace 2.0, the build system uses CMake + spec = self.spec + args = [ + "-DCMAKE_INSTALL_PREFIX=$prefix", + "-DEZTRACE_ENABLE_MEMORY=ON", + "-DEZTRACE_ENABLE_MPI=ON", + "-DEZTRACE_ENABLE_OPENMP=ON", + "-DEZTRACE_ENABLE_POSIXIO=ON", + "-DEZTRACE_ENABLE_PTHREAD=ON", + "-DOTF2_INCLUDE_PATH=%s" % spec['otf2'].prefix.include, + "-DOTF2_LIBRARY_PATH=%s" % spec['otf2'].libs, + ] + + if(spec.satisfies('%llvm-openmp-ompt')): + args.append("-DEZTRACE_ENABLE_OMPT=ON") + + args.extend(std_cmake_args) + + with working_dir('spack-build', create=True): + cmake('..', *args) + make() + make('install') + + # Until eztrace 2.0, the build system uses autoconf + @when('@:1') + def install(self, spec, prefix): + if self.spec.satisfies('%fj'): + env.set('LDFLAGS', '--linkfortran') + self.patch() + which('bash')('bootstrap') + configure("--prefix=" + prefix, + "--with-mpi={0}".format(self.spec["mpi"].prefix)) + self.fix_libtool() + make() + make("install") + + @when('@:1') def patch(self): filter_file( '"DEFAULT_OUTFILE"', @@ -29,15 +86,7 @@ def patch(self): string=True ) - def setup_build_environment(self, env): - if self.spec.satisfies('%fj'): - env.set('LDFLAGS', '--linkfortran') - - def configure_args(self): - args = ["--with-mpi={0}".format(self.spec["mpi"].prefix)] - return args - - @run_before('build') + @when('@:1') def fix_libtool(self): if self.spec.satisfies('%fj'): libtools = ['extlib/gtg/libtool', diff --git a/var/spack/repos/builtin/packages/fairlogger/package.py b/var/spack/repos/builtin/packages/fairlogger/package.py index 133b7f3f2b858b..8f7dc95bd91560 100644 --- a/var/spack/repos/builtin/packages/fairlogger/package.py +++ b/var/spack/repos/builtin/packages/fairlogger/package.py @@ -6,6 +6,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Fairlogger(CMakePackage): @@ -48,6 +49,11 @@ class Fairlogger(CMakePackage): depends_on('git', type='build', when='@develop') depends_on('boost', when='+pretty') + + # 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, when='+pretty') conflicts('^boost@1.70:', when='^cmake@:3.14') depends_on('fmt@5.3.0:5', when='@1.6.0:1.6.1') depends_on('fmt@5.3.0:', when='@1.6.2:') diff --git a/var/spack/repos/builtin/packages/faodel/package.py b/var/spack/repos/builtin/packages/faodel/package.py index a705c558c740a1..12df7c2f542697 100644 --- a/var/spack/repos/builtin/packages/faodel/package.py +++ b/var/spack/repos/builtin/packages/faodel/package.py @@ -36,7 +36,7 @@ class Faodel(CMakePackage): variant('serializer', default='xdr', values=('xdr', 'cereal'), description='Use Cereal to serialize NNTI data structures else XDR') depends_on('mpi', when='+mpi') - depends_on('boost@1.60.0:') + depends_on('boost@1.60.0: +program_options+exception+locale+system+chrono+log+serialization+atomic+container+regex+thread+date_time') depends_on('cmake@3.8.0:', type='build') depends_on('hdf5+mpi', when='+hdf5+mpi') depends_on('hdf5~mpi', when='+hdf5~mpi') diff --git a/var/spack/repos/builtin/packages/fastjet/package.py b/var/spack/repos/builtin/packages/fastjet/package.py index 193f9ebf9b045b..de9fd106fb3d98 100644 --- a/var/spack/repos/builtin/packages/fastjet/package.py +++ b/var/spack/repos/builtin/packages/fastjet/package.py @@ -13,12 +13,17 @@ class Fastjet(AutotoolsPackage): """ homepage = "http://fastjet.fr/" - url = "http://fastjet.fr/repo/fastjet-3.3.3.tar.gz" + # The server that hosts fastjet.fr rejects range request + # which causes spack to fail during fetching. Until this is fixed, use + # a mirror instead of the upstream url + # url = "http://fastjet.fr/repo/fastjet-3.4.0.tar.gz" + url = "https://lcgpackages.web.cern.ch/tarFiles/sources/fastjet-3.3.4.tar.gz" tags = ['hep'] maintainers = ['drbenmorgan', 'vvolkl'] + version('3.3.4', sha256='432b51401e1335697c9248519ce3737809808fc1f6d1644bfae948716dddfc03') version('3.3.3', sha256='30b0a0282ce5aeac9e45862314f5966f0be941ce118a83ee4805d39b827d732b') version('3.3.2', sha256='3f59af13bfc54182c6bb0b0a6a8541b409c6fda5d105f17e03c4cce8db9963c2') version('3.3.1', sha256='76bfed9b87e5efdb93bcd0f7779e27427fbe38e05fe908c2a2e80a9ca0876c53') diff --git a/var/spack/repos/builtin/packages/fdb/package.py b/var/spack/repos/builtin/packages/fdb/package.py index 84ad81f6ef9ead..4baa8884ee02a0 100644 --- a/var/spack/repos/builtin/packages/fdb/package.py +++ b/var/spack/repos/builtin/packages/fdb/package.py @@ -47,8 +47,8 @@ class Fdb(CMakePackage): patch('metkit_1.7.0.patch', when='@:5.7.10+tools^metkit@1.7.0:') # Download test data before running a test: - patch('https://github.com/ecmwf/fdb/commit/86e06b60f9a2d76a389a5f49bedd566d4c2ad2b2.patch', - sha256='e2254577e6d84a61d394eddcf42f894582f5daaf58d8962c609e41be0e3471b3', + patch('https://github.com/ecmwf/fdb/commit/86e06b60f9a2d76a389a5f49bedd566d4c2ad2b2.patch?full_index=1', + sha256='8b4bf3a473ec86fd4d7672faa7d74292dde443719299f2ba59a2c8501d6f0906', when='@5.7.1:5.7.10+tools') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py index 9bdb7d4bb59202..5e3deb6780fb39 100644 --- a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py +++ b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py @@ -29,6 +29,7 @@ class FenicsDolfinx(CMakePackage): depends_on("mpi") depends_on("hdf5+mpi") depends_on("boost@1.7.0:+filesystem+program_options+timer") + depends_on("petsc+mpi+shared") depends_on("petsc+mpi+shared@3.15.0:", when="@0.1.0") depends_on("scotch+mpi") diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index 1fb6a041ef43e1..b6c6dddc9a2fd7 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Fenics(CMakePackage): @@ -99,9 +100,14 @@ class Fenics(CMakePackage): depends_on('boost+filesystem+program_options+system+iostreams+timer+regex+chrono') depends_on('boost+filesystem+program_options+system+iostreams+timer+regex+chrono@1.68.0', when='@:2018') + # 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('mpi', when='+mpi') - depends_on('hdf5+hl+fortran', when='+hdf5+petsc') - depends_on('hdf5+hl', when='+hdf5~petsc') + depends_on('hdf5@:1.10+hl+fortran', when='+hdf5+petsc') + depends_on('hdf5@:1.10+hl', when='+hdf5~petsc') depends_on('metis+real64', when='+parmetis') depends_on('parmetis', when='+parmetis') depends_on('scotch~metis', when='+scotch~mpi') diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index 85bc41928e4750..50a8d2b5f8f42c 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -36,8 +36,8 @@ class Ferret(Package): depends_on("curl") # Make Java dependency optional with older versions of Ferret - patch('https://github.com/NOAA-PMEL/Ferret/commit/c7eb70a0b17045c8ca7207d586bfea77a5340668.patch', - sha256='5bd581db4578c013faed375844b206fbe71f93fe9ce60f8f9f41d64abc6a5972', + patch('https://github.com/NOAA-PMEL/Ferret/commit/c7eb70a0b17045c8ca7207d586bfea77a5340668.patch?full_index=1', + sha256='6dd0a6b11c103b0097fba3da06d6e655da9770e8f568a15968d9b64a0f3c2315', level=1, working_dir='FERRET', when='@:6') resource(name='datasets', diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py index c018e57ddc388a..537921d2d70273 100644 --- a/var/spack/repos/builtin/packages/ffmpeg/package.py +++ b/var/spack/repos/builtin/packages/ffmpeg/package.py @@ -65,6 +65,7 @@ class Ffmpeg(AutotoolsPackage): variant('openssl', default=False, description='needed for https support') variant('sdl2', default=False, description='sdl2 support') variant('shared', default=True, description='build shared libraries') + variant('libx264', default=False, description='H.264 encoding') depends_on('alsa-lib', when='platform=linux') depends_on('libiconv') @@ -92,6 +93,7 @@ class Ffmpeg(AutotoolsPackage): depends_on('snappy', when='+libsnappy') depends_on('speex', when='+libspeex') depends_on('xz', when='+lzma') + depends_on('x264', when='+libx264') # TODO: enable when libxml2 header issue is resolved # conflicts('+libxml2', when='@:3') @@ -162,15 +164,19 @@ def configure_args(self): variant_opts = [ 'bzlib', + 'gpl', 'libmp3lame', 'libopenjpeg', 'libopus', 'libspeex', 'libvorbis', 'libvpx', + 'libx264', 'avresample', + 'nonfree', 'openssl', 'shared', + 'version3', ] if spec.satisfies('@2.0:'): diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 4a99e7ba4fccda..c3fabde9ca4978 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -96,6 +96,15 @@ def setup_build_environment(self, env): 'CXXFLAGS', self.spec['llvm-openmp'].headers.include_flags) env.append_flags( 'LDFLAGS', self.spec['llvm-openmp'].libs.ld_flags) + # Temporary solution similar to https://github.com/spack/spack/pull/29279/files; + # the problem was introduced in PR https://github.com/spack/spack/pull/28797, + # see comment https://github.com/spack/spack/pull/29279#issuecomment-1082555891. + # FFTW first configures libtool without MPI, and later uses it with + # MPI. libtool then calls wrong linker to create shared libraries + # (it calls `$CC` instead of `$MPICC`), and MPI symbols + # remain undefined because `-lmpi` is not passed to the linker. + if self.spec.satisfies('+mpi'): + env.append_flags('LIBS', self.spec['mpi'].libs.ld_flags) def configure(self, spec, prefix): # Base options diff --git a/var/spack/repos/builtin/packages/findutils/package.py b/var/spack/repos/builtin/packages/findutils/package.py index 080e213237e71b..1d99923b7ab8ff 100644 --- a/var/spack/repos/builtin/packages/findutils/package.py +++ b/var/spack/repos/builtin/packages/findutils/package.py @@ -12,6 +12,8 @@ class Findutils(AutotoolsPackage, GNUMirrorPackage): """The GNU Find Utilities are the basic directory searching utilities of the GNU operating system.""" + tags = ['core-packages'] + homepage = "https://www.gnu.org/software/findutils/" gnu_mirror_path = "findutils/findutils-4.8.0.tar.xz" diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py index 81ebbde3adee7c..b6572688ad58a8 100644 --- a/var/spack/repos/builtin/packages/fish/package.py +++ b/var/spack/repos/builtin/packages/fish/package.py @@ -10,12 +10,13 @@ class Fish(CMakePackage): """ homepage = 'https://fishshell.com/' - url = 'https://github.com/fish-shell/fish-shell/releases/download/3.3.1/fish-3.3.1.tar.xz' + url = 'https://github.com/fish-shell/fish-shell/releases/download/3.4.1/fish-3.4.1.tar.xz' git = 'https://github.com/fish-shell/fish-shell.git' list_url = homepage maintainers = ['funnell'] version('master', branch='master') + version('3.4.1', sha256='b6f23b3843b04db6b0a90fea1f6f0d0e40cc027b4a732098200863f2864a94ea') version('3.3.1', sha256='b5b4ee1a5269762cbbe993a4bd6507e675e4100ce9bbe84214a5eeb2b19fae89') version('3.1.2', sha256='d5b927203b5ca95da16f514969e2a91a537b2f75bec9b21a584c4cd1c7aa74ed') version('3.1.0', sha256='e5db1e6839685c56f172e1000c138e290add4aa521f187df4cd79d4eab294368') diff --git a/var/spack/repos/builtin/packages/fjcontrib/package.py b/var/spack/repos/builtin/packages/fjcontrib/package.py index 678fb33d15a69a..5acc68ef02ee26 100644 --- a/var/spack/repos/builtin/packages/fjcontrib/package.py +++ b/var/spack/repos/builtin/packages/fjcontrib/package.py @@ -16,6 +16,7 @@ class Fjcontrib(AutotoolsPackage): tags = ['hep'] + version('1.045', sha256='667f15556ca371cfaf185086fb41ac579658a233c18fb1e5153382114f9785f8') version('1.044', sha256='de3f45c2c1bed6d7567483e4a774575a504de8ddc214678bac7f64e9d2e7e7a7') version('1.043', sha256='ef0f586b19ffd12f392b7facc890a73d31fc11b9f5bb727cf3743d6eb59e9993') version('1.042', sha256='5b052e93a371c557557fa4a293cca4b08f88ccfb6c43a4df15b2a9f38c6d8831') diff --git a/var/spack/repos/builtin/packages/flann/package.py b/var/spack/repos/builtin/packages/flann/package.py index 97d4cbb6aef003..d6a7a33274f1ab 100644 --- a/var/spack/repos/builtin/packages/flann/package.py +++ b/var/spack/repos/builtin/packages/flann/package.py @@ -65,7 +65,7 @@ def url_for_version(self, version): depends_on("hdf5", when="+hdf5") # HDF5_IS_PARALLEL actually comes from hdf5+mpi # https://github.com/mariusmuja/flann/blob/06a49513138009d19a1f4e0ace67fbff13270c69/CMakeLists.txt#L108-L112 - depends_on("boost+mpi+system+serialization+thread", when="+mpi ^hdf5+mpi") + depends_on("boost+mpi+system+serialization+thread+regex+graph+chrono+exception", when="+mpi ^hdf5+mpi") # Doc deps depends_on("texlive", when="+doc") diff --git a/var/spack/repos/builtin/packages/flatbuffers/package.py b/var/spack/repos/builtin/packages/flatbuffers/package.py index 681fa863b40c47..849dcfd1b290d0 100644 --- a/var/spack/repos/builtin/packages/flatbuffers/package.py +++ b/var/spack/repos/builtin/packages/flatbuffers/package.py @@ -41,9 +41,8 @@ class Flatbuffers(CMakePackage): # Silences false positive "-Wstringop-overflow" on GCC 10+ # https://github.com/google/flatbuffers/issues/5950 # Possibly affects earlier releases but I haven't tried to apply it. - patch('https://patch-diff.githubusercontent.com/raw/google/flatbuffers/pull/' - '6020.patch', - sha256='4a9a18abc776407f3f97e02c40f349cfb24fe7ddb41df952271d894777a31c88', + patch('https://github.com/google/flatbuffers/pull/6020.patch?full_index=1', + sha256='579cb6fa4430d4304b93c7a1df7e922f3c3ec614c445032877ad328c209d5462', when='@1.12.0:%gcc@10:') @run_after('install') diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py index 7e06f18ef3463d..4f1374a21ee488 100644 --- a/var/spack/repos/builtin/packages/flecsale/package.py +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Flecsale(CMakePackage): @@ -26,6 +27,11 @@ class Flecsale(CMakePackage): depends_on("openssl") depends_on("boost~mpi", when='~mpi') depends_on("boost+mpi", when='+mpi') + + # 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("exodusii~mpi", when='~mpi') depends_on("exodusii+mpi", when='+mpi') diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py index 27d348c58c2c89..35d44f68b36e93 100644 --- a/var/spack/repos/builtin/packages/flecsi/package.py +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - from spack import * @@ -23,9 +22,8 @@ class Flecsi(CMakePackage, CudaPackage): tags = ['e4s'] - version('develop', branch='devel', submodules=False) - version('1', git="https://github.com/laristra/flecsi.git", branch='1', submodules=False, preferred=False) - version('1.4', git="https://github.com/laristra/flecsi.git", branch='1.4', submodules=False, preferred=False) + version('develop', branch='develop', submodules=False) + version('1.4.develop', git="https://github.com/laristra/flecsi.git", branch='1.4', submodules=False, preferred=False) version('1.4.2', git="https://github.com/laristra/flecsi.git", tag='v1.4.2', submodules=False, preferred=True) version('2.1.0', tag='v2.1.0', submodules=False, preferred=False) version('flecsph', git="https://github.com/laristra/flecsi.git", branch="stable/flecsph", submodules=True, preferred=False) @@ -109,6 +107,7 @@ class Flecsi(CMakePackage, CudaPackage): depends_on('kokkos@3.2.00:', when='+kokkos @2.0:') depends_on('mpich@3.4.1:', when='@2.0: ^mpich') depends_on('openmpi@4.1.0:', when='@2.0: ^openmpi') + depends_on('lanl-cmake-modules', when='@2.1.1:') conflicts('%gcc@:8', when='@2.1:') @@ -130,18 +129,19 @@ class Flecsi(CMakePackage, CudaPackage): # FleCSI@2: no longer supports flecstan conflicts('+flecstan', when='@2.0:') # FleCSI@2: integrates cinch and no longer depends on external installs + # Except for lanl-cmake-modules as of 2.1.1: but that has no submodule conflicts('+external_cinch', when='@2.0:') - # Current FleCSI@:1.9 releases do not support kokkos, omp, or cuda - conflicts('+kokkos', when='@:1.9') - conflicts('+openmp', when='@:1.9') - conflicts('+cuda', when='@:1.9') + # Current FleCSI@:1.4 releases do not support kokkos, omp, or cuda + conflicts('+kokkos', when='@:1.4.99') + conflicts('+openmp', when='@:1.4.99') + conflicts('+cuda', when='@:1.4.99') # Unit tests require flog support conflicts('+unit_tests', when='~flog') # Disallow conduit=none when using legion as a backend conflicts('^legion conduit=none', when='backend=legion') # Due to overhauls of Legion and Gasnet spackages - # flecsi@:1.9 can no longer be built with a usable legion - conflicts('backend=legion', when='@:1.9') + # flecsi@:1.4 can no longer be built with a usable legion + conflicts('backend=legion', when='@:1.4.99') def cmake_args(self): spec = self.spec @@ -150,21 +150,27 @@ def cmake_args(self): if '+external_cinch' in spec: options.append('-DCINCH_SOURCE_DIR=' + spec['cinch'].prefix) + backend_flag = '' + if spec.satisfies('@2.1.1:'): + backend_flag = 'FLECSI_BACKEND' + else: + backend_flag = 'FLECSI_RUNTIME_MODEL' + if spec.variants['backend'].value == 'legion': - options.append('-DFLECSI_RUNTIME_MODEL=legion') + options.append('-D' + backend_flag + '=legion') options.append('-DENABLE_MPI=ON') elif spec.variants['backend'].value == 'mpi': - options.append('-DFLECSI_RUNTIME_MODEL=mpi') + options.append('-D' + backend_flag + '=mpi') options.append('-DENABLE_MPI=ON') elif spec.variants['backend'].value == 'hpx': - options.append('-DFLECSI_RUNTIME_MODEL=hpx') + options.append('-D' + backend_flag + '=hpx') options.append('-DENABLE_MPI=ON') options.append('-DHPX_IGNORE_CMAKE_BUILD_TYPE_COMPATIBILITY=ON') elif spec.variants['backend'].value == 'charmpp': - options.append('-DFLECSI_RUNTIME_MODEL=charmpp') + options.append('-D' + backend_flag + '=charmpp') options.append('-DENABLE_MPI=ON') else: - options.append('-DFLECSI_RUNTIME_MODEL=serial') + options.append('-D' + backend_flag + '=serial') options.append('-DENABLE_MPI=OFF') if '+shared' in spec: diff --git a/var/spack/repos/builtin/packages/flecsph/package.py b/var/spack/repos/builtin/packages/flecsph/package.py index c40af6a86db617..2aee1a099d0187 100644 --- a/var/spack/repos/builtin/packages/flecsph/package.py +++ b/var/spack/repos/builtin/packages/flecsph/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Flecsph(CMakePackage): @@ -22,7 +23,13 @@ class Flecsph(CMakePackage): variant('test', default=True, description='Adding tests') depends_on('cmake@3.15:', type='build') + + # 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: cxxstd=17 +program_options') + depends_on('mpi') depends_on('hdf5+hl@1.8:') depends_on('flecsi@1.4.2 +external_cinch backend=mpi') diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index aaab3dc96ef96a..b70df84b0d56c4 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -49,7 +49,9 @@ class Flex(AutotoolsPackage): # - https://github.com/spack/spack/issues/8152 # - https://github.com/spack/spack/issues/6942 # - https://github.com/westes/flex/issues/241 - patch('https://github.com/westes/flex/commit/24fd0551333e7eded87b64dd36062da3df2f6380.patch', sha256='09c22e5c6fef327d3e48eb23f0d610dcd3a35ab9207f12e0f875701c677978d3', when='@2.6.4') + patch('https://github.com/westes/flex/commit/24fd0551333e7eded87b64dd36062da3df2f6380.patch?full_index=1', + sha256='f8b85a00849bfb58c9b68e177b369f1e060ed8758253ff8daa57a873eae7b7a5', + when='@2.6.4') @classmethod def determine_version(cls, exe): diff --git a/var/spack/repos/builtin/packages/flit/package.py b/var/spack/repos/builtin/packages/flit/package.py index 57605cb8ba9ab4..1c3dee89e4e7a0 100644 --- a/var/spack/repos/builtin/packages/flit/package.py +++ b/var/spack/repos/builtin/packages/flit/package.py @@ -13,7 +13,6 @@ class Flit(MakefilePackage): compiler code generation, hardware and execution environments.""" homepage = "https://pruners.github.io/flit" - url = "https://github.com/PRUNERS/FLiT" url = "https://github.com/PRUNERS/FLiT/archive/v2.1.0.tar.gz" git = "https://github.com/PRUNERS/FLiT.git" @@ -27,7 +26,7 @@ class Flit(MakefilePackage): # Add dependencies depends_on('python@3:', type='run') depends_on('py-toml', type='run') - depends_on('py-pyelftools', type='run') + depends_on('py-pyelftools', type='run', when='@:2.1.0') depends_on('gmake', type=('run', 'build')) depends_on('sqlite@3:', type='run') diff --git a/var/spack/repos/builtin/packages/flux-core/package.py b/var/spack/repos/builtin/packages/flux-core/package.py index f42208d5c4096f..a2469cea1a50f5 100644 --- a/var/spack/repos/builtin/packages/flux-core/package.py +++ b/var/spack/repos/builtin/packages/flux-core/package.py @@ -20,25 +20,27 @@ class FluxCore(AutotoolsPackage): version('master', branch='master') + version('0.35.0', sha256='28094c77d0a0d34f8fd71c9b397ae25dd7a4b138aad83f02e75c5a182c76b32b') + version('0.34.0', sha256='e045b0a4f38d1a08280c2acc7f6e03a06e3715282ff84d9a0d1037b86e0aae33') version('0.33.0', sha256='b6f07fb6c0fc36bf300852d71df527778c46517bf61e26c7f54c6978898df2f1') version('0.32.0', sha256='fabe4450ce805db547de2675afebc077e4f833d86e00a8c0dd4cd0727b374e30') version('0.31.0', sha256='a18251de2ca3522484cacfa986df934ba8f98c54586e18940ce5d2c6147a8a7f') version('0.30.0', sha256='e51fde4464140367ae4bc1b44f960675ea0a6f58eede3a561cacd8a11ca3e776') version('0.29.0', sha256='c13b40e82d66356e75208a689a495ca01f0a013e2e45ac8ea202ed8224987323') version('0.28.0', sha256='9a784def7186b0036091bd8d6d8fe5bc3425ab2927e1465e1c9ad266631c285d') - version('0.27.0', sha256='abd46d38081ba6b501adb1c111374b39d6ae72ac1aec9fbbf31943a856541d3a') - version('0.26.0', sha256='58bfd4742c59364b13cd83214e8f70735952d01793800b149cae056fddfeeff1') - version('0.25.0', sha256='3c97e21eaec51e8aa0eaee6aa8eb23246650d102a6b6a5c9943cd69e3c8e1008') - version('0.24.0', sha256='fb7e0f9a44d84144a8eaf8f42a5d7e64a4a847861d0ddc2ad8fc4908b5a9190e') - version('0.23.0', sha256='918b181be4e27c32f02d5036230212cd9235dc78dc2bde249c3651d6f75866c7') - version('0.22.0', sha256='1dd0b737199b8a40f245e6a4e1b3b28770f0ecf2f483d284232080b8b252521f') - version('0.21.0', sha256='cc1b7a46d7c1c1a3e99e8861bba0dde89a97351eabd6f1b264788bd76e64c329') - version('0.20.0', sha256='2970b9b1c389fc4a381f9e605921ce0eb6aa9339387ea741978bcffb4bd81b6f') - version('0.19.0', sha256='f45328a37d989c308c46639a9ed771f47b11184422cf5604249919fbd320d6f5') - version('0.18.0', sha256='9784bbca94177a32dbbc99728e8925bf894f3aebaa316961d6ea85df32d59545') - version('0.17.0', sha256='3f8c6cb72982028f86a96c0098cacd3a6e9de359fa1cf077380c835a20e7b7f7') - version('0.16.0', sha256='1582f7fb4d2313127418c34de7c9ce4f5fef00622d19cedca7bed929f4709f10') - version('0.15.0', sha256='51bc2eae69501f802459fc82f191eb5e8ae0b4f7e9e77ac18543a850cc8445f5') + version('0.27.0', sha256='abd46d38081ba6b501adb1c111374b39d6ae72ac1aec9fbbf31943a856541d3a', deprecated=True) + version('0.26.0', sha256='58bfd4742c59364b13cd83214e8f70735952d01793800b149cae056fddfeeff1', deprecated=True) + version('0.25.0', sha256='3c97e21eaec51e8aa0eaee6aa8eb23246650d102a6b6a5c9943cd69e3c8e1008', deprecated=True) + version('0.24.0', sha256='fb7e0f9a44d84144a8eaf8f42a5d7e64a4a847861d0ddc2ad8fc4908b5a9190e', deprecated=True) + version('0.23.0', sha256='918b181be4e27c32f02d5036230212cd9235dc78dc2bde249c3651d6f75866c7', deprecated=True) + version('0.22.0', sha256='1dd0b737199b8a40f245e6a4e1b3b28770f0ecf2f483d284232080b8b252521f', deprecated=True) + version('0.21.0', sha256='cc1b7a46d7c1c1a3e99e8861bba0dde89a97351eabd6f1b264788bd76e64c329', deprecated=True) + version('0.20.0', sha256='2970b9b1c389fc4a381f9e605921ce0eb6aa9339387ea741978bcffb4bd81b6f', deprecated=True) + version('0.19.0', sha256='f45328a37d989c308c46639a9ed771f47b11184422cf5604249919fbd320d6f5', deprecated=True) + version('0.18.0', sha256='9784bbca94177a32dbbc99728e8925bf894f3aebaa316961d6ea85df32d59545', deprecated=True) + version('0.17.0', sha256='3f8c6cb72982028f86a96c0098cacd3a6e9de359fa1cf077380c835a20e7b7f7', deprecated=True) + version('0.16.0', sha256='1582f7fb4d2313127418c34de7c9ce4f5fef00622d19cedca7bed929f4709f10', deprecated=True) + version('0.15.0', sha256='51bc2eae69501f802459fc82f191eb5e8ae0b4f7e9e77ac18543a850cc8445f5', deprecated=True) # Avoid the infinite symlink issue # This workaround is documented in PR #3543 diff --git a/var/spack/repos/builtin/packages/flux-sched/package.py b/var/spack/repos/builtin/packages/flux-sched/package.py index 7b73fa49d46096..927415c3e4ab96 100644 --- a/var/spack/repos/builtin/packages/flux-sched/package.py +++ b/var/spack/repos/builtin/packages/flux-sched/package.py @@ -39,7 +39,8 @@ class FluxSched(AutotoolsPackage): variant('cuda', default=False, description='Build dependencies with support for CUDA') - depends_on("boost+graph@1.53.0,1.59.0:") + # Needs to be seen if tis is needed once we remove the default variants + depends_on("boost+exception+filesystem+system+serialization+graph+container+regex@1.53.0,1.59.0: ") depends_on("py-pyyaml@3.10:", type=('build', 'run')) depends_on("py-jsonschema@2.3:", type=('build', 'run')) depends_on("libedit") diff --git a/var/spack/repos/builtin/packages/fms/package.py b/var/spack/repos/builtin/packages/fms/package.py index ab9ebf8d56aac9..37460cae68d441 100644 --- a/var/spack/repos/builtin/packages/fms/package.py +++ b/var/spack/repos/builtin/packages/fms/package.py @@ -25,6 +25,7 @@ class Fms(CMakePackage): 'for building static libraries') version('2022.01', sha256='a1cba1f536923f5953c28729a28e5431e127b45d6bc2c15d230939f0c02daa9b') + version('2021.04', sha256='dcb4fe80cb3b7846f7cf89b812afff09a78a10261ea048a851f28935d6b241b1') version('2021.03.01', sha256='1f70e2a57f0d01e80fceb9ca9ce9661f5c1565d0437ab67618c2c4dfea0da6e9') depends_on('netcdf-c') diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py index 7020789a145e28..62f50d97bc2707 100644 --- a/var/spack/repos/builtin/packages/fmt/package.py +++ b/var/spack/repos/builtin/packages/fmt/package.py @@ -14,6 +14,8 @@ class Fmt(CMakePackage): homepage = "https://fmt.dev/" url = "https://github.com/fmtlib/fmt/releases/download/7.1.3/fmt-7.1.3.zip" + version('8.1.1', sha256='23778bad8edba12d76e4075da06db591f3b0e3c6c04928ced4a7282ca3400e5d') + version('8.1.0', sha256='d8e9f093b2241c3a9fc3895e23231ef9de00c762cfa0a9c65e4748755bc352ae') version('8.0.1', sha256='a627a56eab9554fc1e5dd9a623d0768583b3a383ff70a4312ba68f94c9d415bf') version('7.1.3', sha256='5d98c504d0205f912e22449ecdea776b78ce0bb096927334f80781e720084c9f') version('7.1.2', sha256='4d6968ab7c01e95cc76df136755703defb985105a117b83057e4fd5d53680ea7') diff --git a/var/spack/repos/builtin/packages/folly/package.py b/var/spack/repos/builtin/packages/folly/package.py index 3d87fa55617200..ca84efed638592 100644 --- a/var/spack/repos/builtin/packages/folly/package.py +++ b/var/spack/repos/builtin/packages/folly/package.py @@ -24,11 +24,10 @@ class Folly(CMakePackage): # CMakePackage Dependency depends_on('pkgconfig', type='build') - # folly requires gcc 4.9+ and a version of boost compiled with >= C++14 - # TODO: Specify the boost components + # folly requires gcc 5+ and a version of boost compiled with >= C++14 variant('cxxstd', default='14', values=('14', '17'), multi=False, description='Use the specified C++ standard when building.') - depends_on('boost+context+container cxxstd=14', when='cxxstd=14') - depends_on('boost+context+container cxxstd=17', when='cxxstd=17') + depends_on('boost+context+container+exception+filesystem+program_options+regex+serialization+system+thread cxxstd=14', when='cxxstd=14') + depends_on('boost+context+container+exception+filesystem+program_options+regex+serialization+system+thread cxxstd=17', when='cxxstd=17') # required dependencies depends_on('gflags') diff --git a/var/spack/repos/builtin/packages/foundationdb/package.py b/var/spack/repos/builtin/packages/foundationdb/package.py index 9d93436393d85a..5d1cd06fbf6370 100644 --- a/var/spack/repos/builtin/packages/foundationdb/package.py +++ b/var/spack/repos/builtin/packages/foundationdb/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Foundationdb(CMakePackage): @@ -24,7 +25,11 @@ class Foundationdb(CMakePackage): depends_on('cmake@3.13.0:', type='build') depends_on('mono') - depends_on('boost') + + # 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) generator = 'Ninja' depends_on('ninja', type='build') diff --git a/var/spack/repos/builtin/packages/fplll/package.py b/var/spack/repos/builtin/packages/fplll/package.py index a43cf2aada7b1a..4bed5d17d58ff1 100644 --- a/var/spack/repos/builtin/packages/fplll/package.py +++ b/var/spack/repos/builtin/packages/fplll/package.py @@ -14,6 +14,7 @@ class Fplll(AutotoolsPackage): homepage = "https://github.com/fplll/fplll" url = "https://github.com/fplll/fplll/releases/download/5.4.0/fplll-5.4.0.tar.gz" + version('5.4.1', sha256='7bd887957173aa592091772c1c36f6aa606b3b2ace0d14e2c26c7463dcf2deb7') version('5.4.0', sha256='fe192a65a56439b098e26e3b7ee224dda7c2c73a58f36ef2cc6f9185ae8c482b') version('5.3.3', sha256='5e7c46c30623795feeac19cf607583b7c82b0490ceb91498f0f712789be20ccd') version('5.3.2', sha256='4d935d712d11902c60a2a5cb50b696391f4ca4a2de59b0daeca74c29024c21fe') diff --git a/var/spack/repos/builtin/packages/freebayes/package.py b/var/spack/repos/builtin/packages/freebayes/package.py index 26fa0ff3dcddfc..2121af5e98d42d 100644 --- a/var/spack/repos/builtin/packages/freebayes/package.py +++ b/var/spack/repos/builtin/packages/freebayes/package.py @@ -14,6 +14,7 @@ class Freebayes(MesonPackage): url = "https://github.com/freebayes/freebayes/releases/download/v1.3.5/freebayes-1.3.5-src.tar.gz" git = "https://github.com/ekg/freebayes.git" + version('1.3.6', sha256='6016c1e58fdf34a1f6f77b720dd8e12e13a127f7cbac9c747e47954561b437f5') version('1.3.5', sha256='7e2635690e916ed85cec36b3263e6e5357413a4f2bf3035362d9749335e8a696') version('1.1.0', commit='39e5e4bcb801556141f2da36aba1df5c5c60701f', submodules=True, deprecated=True) diff --git a/var/spack/repos/builtin/packages/freefem/package.py b/var/spack/repos/builtin/packages/freefem/package.py index 53c57b5cc15476..6e8365a2b3bbc0 100644 --- a/var/spack/repos/builtin/packages/freefem/package.py +++ b/var/spack/repos/builtin/packages/freefem/package.py @@ -15,10 +15,11 @@ class Freefem(AutotoolsPackage): """ homepage = "https://freefem.org" - url = "https://github.com/FreeFem/FreeFem-sources/archive/refs/tags/v4.9.tar.gz" + url = "https://github.com/FreeFem/FreeFem-sources/archive/refs/tags/v4.10.tar.gz" maintainers = ['corentin-dev'] + version('4.10', sha256='957994c8f24cc2a671b8c116ae530796c3a431d4157ee71a3d6aab7122e7570d') version('4.9', sha256='299ba2b73dfff578b7890f693c1e835680bf55eba87263cabd60d81909e1e0e4') version('4.8', sha256='499b1ca24d45088226a238412ea1492d9cc3eb6088866904145511469780180d') version('4.7-1', sha256='60d84424d20b5f6abaee638dc423480fc76f9c389bba1a2f23fd984e39a3fb96') diff --git a/var/spack/repos/builtin/packages/freeglut/package.py b/var/spack/repos/builtin/packages/freeglut/package.py index 5fd5ebf49ac88f..249715387516fe 100644 --- a/var/spack/repos/builtin/packages/freeglut/package.py +++ b/var/spack/repos/builtin/packages/freeglut/package.py @@ -13,6 +13,7 @@ class Freeglut(CMakePackage, SourceforgePackage): homepage = "http://freeglut.sourceforge.net/" sourceforge_mirror_path = "freeglut/freeglut-3.2.1.tar.gz" + version('3.2.2', sha256='c5944a082df0bba96b5756dddb1f75d0cd72ce27b5395c6c1dde85c2ff297a50') version('3.2.1', sha256='d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68') version('3.0.0', sha256='2a43be8515b01ea82bcfa17d29ae0d40bd128342f0930cd1f375f1ff999f76a2') @@ -26,14 +27,17 @@ class Freeglut(CMakePackage, SourceforgePackage): depends_on('xrandr') depends_on('inputproto') - # freeglut fails to build with -fno-common (default with newer compilers) + # freeglut 3.2.1 fails to build with -fno-common (default with newer compilers) # see https://bugs.gentoo.org/705840 and https://github.com/dcnieho/FreeGLUT/pull/76 patch('https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/freeglut/files/freeglut-3.2.1-gcc10-fno-common.patch?id=f9102571b69d9fc05471a592fda252681fdfdef1', sha256='898e8fb314cbe728d791e9ea69829313143cda039c008f0ca06c1b5730922aa7', - when="@3.2.1: %gcc@10.0:") + when="@3.2.1 %gcc@10.0:") patch('https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/freeglut/files/freeglut-3.2.1-gcc10-fno-common.patch?id=f9102571b69d9fc05471a592fda252681fdfdef1', sha256='898e8fb314cbe728d791e9ea69829313143cda039c008f0ca06c1b5730922aa7', - when="@3.2.1: %clang@11.0:") + when="@3.2.1 %clang@11.0:") + patch('https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/freeglut/files/freeglut-3.2.1-gcc10-fno-common.patch?id=f9102571b69d9fc05471a592fda252681fdfdef1', + sha256='898e8fb314cbe728d791e9ea69829313143cda039c008f0ca06c1b5730922aa7', + when="@3.2.1 %aocc@2.3.0:") def cmake_args(self): return [ diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index 920c35c8849099..3e463ae7494945 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -17,6 +17,7 @@ class Freetype(AutotoolsPackage): maintainers = ['michaelkuhn'] + version('2.11.1', sha256='f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b') version('2.11.0', sha256='a45c6b403413abd5706f3582f04c8339d26397c4304b78fa552f2215df64101f') version('2.10.4', sha256='5eab795ebb23ac77001cfb68b7d4d50b5d6c7469247b0b01b2c953269f658dac') version('2.10.2', sha256='e09aa914e4f7a5d723ac381420949c55c0b90b15744adce5d1406046022186ab') @@ -31,8 +32,8 @@ class Freetype(AutotoolsPackage): depends_on('libpng') depends_on('pkgconfig', type='build') - conflicts('%intel', when='@2.8:', - msg='freetype-2.8 and above cannot be built with icc (does not ' + conflicts('%intel', when='@2.8:2.10.2', + msg='freetype-2.8 to 2.10.2 cannot be built with icc (does not ' 'support __builtin_shuffle)') patch('windows.patch', when='@2.9.1') diff --git a/var/spack/repos/builtin/packages/frontistr/package.py b/var/spack/repos/builtin/packages/frontistr/package.py index 61c7458a2b0adf..f2ba22f2c274ae 100644 --- a/var/spack/repos/builtin/packages/frontistr/package.py +++ b/var/spack/repos/builtin/packages/frontistr/package.py @@ -7,18 +7,9 @@ from spack import * -class Frontistr(CMakePackage): - """Open-Source Large-Scale Parallel FEM Program for - Nonlinear Structural Analysis""" - - homepage = "https://www.frontistr.com/" - git = "https://gitlab.com/FrontISTR-Commons/FrontISTR.git" - maintainers = ['hiroshi.okuda', 'kgoto', 'morita', 'inagaki', 'michioga'] - - version('5.1.1', tag='v5.1.1') - version('5.1', tag='v5.1') - version('5.0', tag='v5.0') - version('master', tag='master') +class FrontistrBase(CMakePackage): + """Base class for building Frontistr, shared with the Fujitsu optimized version + of the package in the 'fujitsu-frontistr' package.""" variant('build_type', default='RELEASE', description='CMake build type', @@ -38,5 +29,26 @@ def cmake_args(self): define = CMakePackage.define cmake_args = [ define('WITH_ML', True), + define('REFINER_INCLUDE_PATH', + self.spec['revocap-refiner'].prefix.include), + define('REFINER_LIBRARIES', + join_path(self.spec['revocap-refiner'].prefix.lib, + 'libRcapRefiner.a')) ] return cmake_args + + +class Frontistr(FrontistrBase): + """Open-Source Large-Scale Parallel FEM Program for + Nonlinear Structural Analysis""" + + homepage = "https://www.frontistr.com/" + git = "https://gitlab.com/FrontISTR-Commons/FrontISTR.git" + maintainers = ['hiroshi.okuda', 'kgoto', 'morita', 'inagaki', 'michioga'] + + version('5.3', tag='v5.3') + version('5.2', tag='v5.2') + version('5.1.1', tag='v5.1.1') + version('5.1', tag='v5.1') + version('5.0', tag='v5.0') + version('master', tag='master') diff --git a/var/spack/repos/builtin/packages/ftjam/package.py b/var/spack/repos/builtin/packages/ftjam/package.py new file mode 100644 index 00000000000000..8563f70cf61494 --- /dev/null +++ b/var/spack/repos/builtin/packages/ftjam/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2022 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 import * + + +class Ftjam(AutotoolsPackage): + """Jam is a small open-source build tool that + can be used as a replacement for Make.""" + + homepage = "https://freetype.org/jam/" + url = "https://sourceforge.net/projects/freetype/files/ftjam/2.5.2/ftjam-2.5.2.tar.gz" + + version('2.5.2', sha256='a5d456f65477d77936e1726f5f803a2e6def18a6c6fccf5ea8528926c136abc8') + + depends_on('bison') diff --git a/var/spack/repos/builtin/packages/ftxui/package.py b/var/spack/repos/builtin/packages/ftxui/package.py new file mode 100644 index 00000000000000..a520128fb00351 --- /dev/null +++ b/var/spack/repos/builtin/packages/ftxui/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2022 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 import * + + +class Ftxui(CMakePackage): + """Functional Terminal (X) User interface. + A simple C++ library for terminal based user interfaces.""" + + homepage = "https://arthursonzogni.github.io" + url = "https://github.com/ArthurSonzogni/FTXUI/archive/refs/tags/v2.0.0.tar.gz" + + version('2.0.0', sha256='d891695ef22176f0c09f8261a37af9ad5b262dd670a81e6b83661a23abc2c54f') diff --git a/var/spack/repos/builtin/packages/fujitsu-frontistr/package.py b/var/spack/repos/builtin/packages/fujitsu-frontistr/package.py new file mode 100644 index 00000000000000..0efc12d308574b --- /dev/null +++ b/var/spack/repos/builtin/packages/fujitsu-frontistr/package.py @@ -0,0 +1,49 @@ +# Copyright 2013-2022 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 import * +from spack.pkg.builtin.frontistr import FrontistrBase + + +class FujitsuFrontistr(FrontistrBase): + """This is a fork repository of the FrontISTR tuned for A64FX.""" + + _name = 'fujitsu-frontistr' + homepage = "https://www.frontistr.com/" + url = "https://github.com/fujitsu/FrontISTR/archive/refs/tags/v5.2_tuned.tar.gz" + git = "https://github.com/fujitsu/FrontISTR" + maintainers = ['kinagaki-fj', 'kinagaki', 'm-shunji'] + + version('master', branch='fj-master') + version('5.2', sha256='ebf73a96c33ae7c9e616c99f9ce07ec90d802764dbf6abf627b0083c3bbd2b2e') + version('5.0', sha256='7a3a2dd0f834048fb71cc254c9da6c2637fb23110e79b5efaf208d6f69a5b30a') + + variant('static', default=True, description='Build with static linkage') + depends_on('metis ~shared', when='+static') + depends_on('mumps ~shared', when='+static') + depends_on('trilinos ~shared', when='+static') + + def url_for_version(self, version): + url = "https://github.com/fujitsu/FrontISTR/archive/refs/tags/v{0}_tuned.tar.gz" + return url.format(version) + + def cmake_args(self): + define = CMakePackage.define + args = super(FujitsuFrontistr, self).cmake_args() + if self.spec.satisfies('%fj'): + args.extend([ + define('CMAKE_C_FLAGS', + '-Kcmodel=large -Nlst=t -Kocl -Kfast -Kzfill -Koptmsg=2'), + define('CMAKE_CXX_FLAGS', + '-Kcmodel=large -Nlst=t -Kocl -Kfast -Kzfill -Koptmsg=2'), + define('CMAKE_Fortran_FLAGS', + '-Kcmodel=large -Nlst=t -Kocl -Kfast -Kzfill -Koptmsg=2'), + define('CMAKE_Fortran_MODDIR_FLAG', 'M'), + define('OpenMP_C_FLAGS', '-Kopenmp'), + define('OpenMP_CXX_FLAGS', '-Kopenmp'), + define('OpenMP_Fortran_FLAGS', '-Kopenmp') + ]) + return args diff --git a/var/spack/repos/builtin/packages/gate/package.py b/var/spack/repos/builtin/packages/gate/package.py index 3be0d1eb931e4b..0d20b2242f4a08 100644 --- a/var/spack/repos/builtin/packages/gate/package.py +++ b/var/spack/repos/builtin/packages/gate/package.py @@ -28,6 +28,7 @@ class Gate(CMakePackage): maintainers = ['glennpj'] + version('9.1', sha256='aaab874198500b81d45b27cc6d6a51e72cca9519910b893a5c85c8e6d3ffa4fc') version('9.0', sha256='8354f392facc0b7ae2ddf0eed61cc43136195b198ba399df25e874886b8b69cb') variant('rtk', default=False, @@ -37,7 +38,8 @@ class Gate(CMakePackage): values=('SGE', 'condor', 'openPBS', 'openmosix', 'slurm', 'xgrid'), multi=False) - depends_on('geant4@:10.6~threads') # Gate needs a non-threaded geant4 + depends_on('geant4@:10.6~threads', when='@9.0') # Gate needs a non-threaded geant4 + depends_on('geant4@:10.7~threads', when='@9.1') # Gate needs a non-threaded geant4 depends_on('root') depends_on('itk+rtk', when='+rtk') diff --git a/var/spack/repos/builtin/packages/gatetools/package.py b/var/spack/repos/builtin/packages/gatetools/package.py index 130739be11dd76..b4d88bdbc677df 100644 --- a/var/spack/repos/builtin/packages/gatetools/package.py +++ b/var/spack/repos/builtin/packages/gatetools/package.py @@ -14,6 +14,7 @@ class Gatetools(PythonPackage): maintainers = ['glennpj'] + version('0.11.2', sha256='6eef8a779278b862823ae79d6aab210db4f7889c9127b2c2e4c3a4195f9a9928') version('0.9.14', sha256='78fe864bb52fd4c6aeeee90d8f6c1bc5406ce02ac6f48712379efac606b5c006') depends_on('python@3.6:', type=('build', 'run')) @@ -28,6 +29,10 @@ class Gatetools(PythonPackage): depends_on('py-itk@5.1.0:', type=('build', 'run')) depends_on('py-uproot3', type=('build', 'run')) depends_on('py-wget', type=('build', 'run')) + depends_on('py-python-box', type=('build', 'run'), when='@0.11.2:') + depends_on('py-lz4', type=('build', 'run'), when='@0.11.2:') + depends_on('py-colorama', type=('build', 'run'), when='@0.11.2:') + depends_on('py-xxhash', type=('build', 'run'), when='@0.11.2:') depends_on('gate+rtk', type='run') # The readme.md file is not in the distribution, so fake it. diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py index c5e032624b3dea..43716f4a03eca4 100644 --- a/var/spack/repos/builtin/packages/gaudi/package.py +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Gaudi(CMakePackage): @@ -16,6 +17,7 @@ class Gaudi(CMakePackage): tags = ['hep'] version('master', branch='master') + version('36.4', sha256='1a5c27cdc21ec136b47f5805406c92268163393c821107a24dbb47bd88e4b97d') version('36.3', sha256='9ac228d8609416afe4dea6445c6b3ccebac6fab1e46121fcc3a056e24a5d6640') version('36.2', sha256='a1b4bb597941a7a5b8d60382674f0b4ca5349c540471cd3d4454efbe7b9a09b9') version('36.1', sha256='9f718c832313676249e5c3ac76ba4346978ee2328f8cdcb29176498b080402e9') @@ -47,6 +49,11 @@ class Gaudi(CMakePackage): # These dependencies are needed for a minimal Gaudi build depends_on('aida') depends_on('boost@1.67.0: +python') + + # 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('clhep') depends_on('cmake', type='build') depends_on('cppgsl') diff --git a/var/spack/repos/builtin/packages/gawk/package.py b/var/spack/repos/builtin/packages/gawk/package.py index a47b0e59a9c376..d4c2fc185c1269 100644 --- a/var/spack/repos/builtin/packages/gawk/package.py +++ b/var/spack/repos/builtin/packages/gawk/package.py @@ -24,7 +24,7 @@ class Gawk(AutotoolsPackage, GNUMirrorPackage): executables = ['^gawk$'] - tags = ['build-tools'] + tags = ['build-tools', 'core-packages'] version('5.1.1', sha256='d87629386e894bbea11a5e00515fc909dc9b7249529dad9e6a3a2c77085f7ea2') version('5.1.0', sha256='cf5fea4ac5665fd5171af4716baab2effc76306a9572988d5ba1078f196382bd') diff --git a/var/spack/repos/builtin/packages/gbl/package.py b/var/spack/repos/builtin/packages/gbl/package.py new file mode 100644 index 00000000000000..83dc307227a0d7 --- /dev/null +++ b/var/spack/repos/builtin/packages/gbl/package.py @@ -0,0 +1,31 @@ +# Copyright 2013-2022 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 import * + + +class Gbl(CMakePackage): + """General Broken Lines: Advanced track fitting library""" + + homepage = "https://www.desy.de/~kleinwrt/GBL/doc/cpp/html/" + git = "https://gitlab.desy.de/claus.kleinwort/general-broken-lines.git" + + maintainers = ['iarspider'] + tags = ['hep'] + + version('V02-04-01', commit="1061b643c6656fbf7ceba579997eb43f0a9e9d3c") + version('V02-01-03', commit="8acaade19c20e9ef23d1244a555fead6ef149c33") + + variant('root', default=True, description='Support ROOT for user I/O') + depends_on('eigen', type=('build', 'link')) + depends_on('root', type=('build', 'link'), when='+root') + + root_cmakelists_dir = 'cpp' + + def cmake_args(self): + eigen_inc = self.spec['eigen'].prefix.include.eigen3 + args = [self.define('EIGEN3_INCLUDE_DIR', eigen_inc), + self.define_from_variant('SUPPORT_ROOT', 'root')] + return args diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 487c6d9517bbe2..04c0e31ac0744c 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -113,6 +113,15 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): # https://gcc.gnu.org/install/prerequisites.html depends_on('gmp@4.3.2:') + # mawk is not sufficient for go support + depends_on('gawk@3.1.5:', type='build') + depends_on('texinfo@4.7:', type='build') + depends_on('libtool', type='build') + # dependencies required for git versions + depends_on('m4@1.4.6:', when='@master', type='build') + depends_on('automake@1.15.1:', when='@master', type='build') + depends_on('autoconf@2.69:', when='@master', type='build') + # GCC 7.3 does not compile with newer releases on some platforms, see # https://github.com/spack/spack/issues/6902#issuecomment-433030376 depends_on('mpfr@2.4.2:3.1.6', when='@:9.9') @@ -256,7 +265,7 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): if macos_version() >= Version('10.14'): # Fix system headers for Mojave SDK: # https://github.com/Homebrew/homebrew-core/pull/39041 - patch('https://raw.githubusercontent.com/Homebrew/formula-patches/master/gcc/8.3.0-xcode-bug-_Atomic-fix.patch', + patch('https://raw.githubusercontent.com/Homebrew/formula-patches/b8b8e65e/gcc/8.3.0-xcode-bug-_Atomic-fix.patch', sha256='33ee92bf678586357ee8ab9d2faddf807e671ad37b97afdd102d5d153d03ca84', when='@6:8.3') if macos_version() >= Version('10.15'): diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 8ef3dde35564f0..dbc32145a2e7ff 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -24,6 +24,7 @@ class Gdal(AutotoolsPackage): maintainers = ['adamjstewart'] + version('3.4.2', sha256='16baf03dfccf9e3f72bb2e15cd2d5b3f4be0437cdff8a785bceab0c7be557335') version('3.4.1', sha256='332f053516ca45101ef0f7fa96309b64242688a8024780a5d93be0230e42173d') version('3.4.0', sha256='ac7bd2bb9436f3fc38bc7309704672980f82d64b4d57627d27849259b8f71d5c') version('3.3.3', sha256='1e8fc8b19c77238c7f4c27857d04857b65d8b7e8050d3aac256d70fa48a21e76') @@ -128,6 +129,7 @@ class Gdal(AutotoolsPackage): depends_on('fyba', when='+sosi') depends_on('hdf', when='+hdf4') depends_on('hdf5', when='+hdf5') + depends_on('hdf5@:1.12', when='@:3.4.1 +hdf5') depends_on('kealib', when='+kea @2:') depends_on('netcdf-c', when='+netcdf') depends_on('jasper@1.900.1', patches=[patch('uuid.patch')], when='+jasper') @@ -145,9 +147,10 @@ class Gdal(AutotoolsPackage): depends_on('qhull', when='+qhull @2.1:') depends_on('opencl', when='+opencl') depends_on('poppler', when='+poppler') + depends_on('poppler@0.24:', when='@3: +poppler') depends_on('poppler@:0.63', when='@:2.3 +poppler') depends_on('poppler@:0.71', when='@:2.4 +poppler') - depends_on('poppler@0.24:', when='@3: +poppler') + depends_on('poppler@:21', when='@:3.4.1 +poppler') depends_on('proj@:4', when='+proj @2.3.0:2.3') depends_on('proj@:5', when='+proj @2.4.0:2.4') depends_on('proj@:6', when='+proj @2.5:2') @@ -159,8 +162,8 @@ class Gdal(AutotoolsPackage): depends_on('python@2.0:', type=('build', 'link', 'run'), when='@3.2:+python') depends_on('python', type=('build', 'link', 'run'), when='+python') # swig/python/setup.py - depends_on('py-setuptools@:57', type='build', when='@:3.0+python') # needs 2to3 - depends_on('py-setuptools', type='build', when='@3.1:+python') + depends_on('py-setuptools@:57', type='build', when='@:3.2+python') # needs 2to3 + depends_on('py-setuptools', type='build', when='+python') depends_on('py-numpy@1.0.0:', type=('build', 'run'), when='+python') depends_on('java@7:', type=('build', 'link', 'run'), when='@3.2:+java') depends_on('java@6:', type=('build', 'link', 'run'), when='@2.4:+java') @@ -184,8 +187,8 @@ class Gdal(AutotoolsPackage): conflicts('+pcre2', when='+pcre', msg='+pcre2 and +pcre are mutually exclusive') # https://github.com/OSGeo/gdal/issues/3782 - patch('https://github.com/OSGeo/gdal/pull/3786.patch', when='@3.3.0', level=2, - sha256='5e14c530289bfa1257277357baa8d485f852ea480152fb150d152c85af8d01f8') + patch('https://github.com/OSGeo/gdal/pull/3786.patch?full_index=1', when='@3.3.0', level=2, + sha256='9f9824296e75b34b3e78284ec772a5ac8f8ba92c17253ea9ca242caf766767ce') executables = ['^gdal-config$'] diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py index 8265be7a360383..94cbfe9c46d53a 100644 --- a/var/spack/repos/builtin/packages/gdbm/package.py +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -16,7 +16,8 @@ class Gdbm(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org.ua/software/gdbm/gdbm.html" gnu_mirror_path = "gdbm/gdbm-1.13.tar.gz" - version('1.22', sha256='f366c823a6724af313b6bbe975b2809f9a157e5f6a43612a72949138d161d762') + version('1.23', sha256='74b1081d21fff13ae4bd7c16e5d6e504a4c26f7cde1dca0d963a484174bbcacd') + version('1.22', sha256='f366c823a6724af313b6bbe975b2809f9a157e5f6a43612a72949138d161d762') version('1.21', sha256='b0b7dbdefd798de7ddccdd8edf6693a30494f7789777838042991ef107339cc2') version('1.20', sha256='3aeac05648b3482a10a2da986b9f3a380a29ad650be80b9817a435fb8114a292') version('1.19', sha256='37ed12214122b972e18a0d94995039e57748191939ef74115b1d41d8811364bc') diff --git a/var/spack/repos/builtin/packages/geant4-data/package.py b/var/spack/repos/builtin/packages/geant4-data/package.py index bad071b7d72e7d..e9c3ac269eca9d 100644 --- a/var/spack/repos/builtin/packages/geant4-data/package.py +++ b/var/spack/repos/builtin/packages/geant4-data/package.py @@ -38,98 +38,115 @@ class Geant4Data(BundlePackage): # For clarity, declare deps on a Major-Minor version basis as # they generally don't change on the patch level # Can move to declaring on a dataset basis if needed - # geant4@11.0.X - depends_on("g4ndl@4.6", when='@11.0.0:11.0') - depends_on("g4emlow@8.0", when='@11.0.0:11.0') - depends_on("g4photonevaporation@5.7", when='@11.0.0:11.0') - depends_on("g4radioactivedecay@5.6", when='@11.0.0:11.0') - depends_on("g4particlexs@4.0", when='@11.0.0:11.0') - depends_on("g4pii@1.3", when='@11.0.0:11.0') - depends_on("g4realsurface@2.2", when='@11.0.0:11.0') - depends_on("g4saiddata@2.0", when='@11.0.0:11.0') - depends_on("g4abla@3.1", when='@11.0.0:11.0') - depends_on("g4incl@1.0", when='@11.0.0:11.0') - depends_on("g4ensdfstate@2.3", when='@11.0.0:11.0') - - # geant4@10.7.X - depends_on("g4ndl@4.6", when='@10.7.0:10.7') - depends_on("g4emlow@7.13", when='@10.7.0:10.7') - depends_on("g4photonevaporation@5.7", when='@10.7.0:10.7') - depends_on("g4radioactivedecay@5.6", when='@10.7.0:10.7') - depends_on("g4particlexs@3.1.1", when='@10.7.1:10.7') - depends_on("g4particlexs@3.1", when='@10.7.0') - depends_on("g4pii@1.3", when='@10.7.0:10.7') - depends_on("g4realsurface@2.2", when='@10.7.0:10.7') - depends_on("g4saiddata@2.0", when='@10.7.0:10.7') - depends_on("g4abla@3.1", when='@10.7.0:10.7') - depends_on("g4incl@1.0", when='@10.7.0:10.7') - depends_on("g4ensdfstate@2.3", when='@10.7.0:10.7') - - # geant4@10.6.X - depends_on("g4ndl@4.6", when='@10.6.0:10.6') - depends_on("g4emlow@7.9", when='@10.6.0') - depends_on("g4emlow@7.9.1", when='@10.6.1:10.6') - depends_on("g4photonevaporation@5.5", when='@10.6.0:10.6') - depends_on("g4radioactivedecay@5.4", when='@10.6.0:10.6') - depends_on("g4particlexs@2.1", when='@10.6.0:10.6') - depends_on("g4pii@1.3", when='@10.6.0:10.6') - depends_on("g4realsurface@2.1.1", when='@10.6.0:10.6') - depends_on("g4saiddata@2.0", when='@10.6.0:10.6') - depends_on("g4abla@3.1", when='@10.6.0:10.6') - depends_on("g4incl@1.0", when='@10.6.0:10.6') - depends_on("g4ensdfstate@2.2", when='@10.6.0:10.6') - - # geant4@10.5.X - depends_on("g4ndl@4.5", when='@10.5.0:10.5') - depends_on("g4emlow@7.7", when='@10.5.0:10.5') - depends_on("g4photonevaporation@5.3", when='@10.5.0:10.5') - depends_on("g4radioactivedecay@5.3", when='@10.5.0:10.5') - depends_on("g4particlexs@1.1", when='@10.5.0:10.5') - depends_on("g4pii@1.3", when='@10.5.0:10.5') - depends_on("g4realsurface@2.1.1", when='@10.5.0:10.5') - depends_on("g4saiddata@2.0", when='@10.5.0:10.5') - depends_on("g4abla@3.1", when='@10.5.0:10.5') - depends_on("g4incl@1.0", when='@10.5.0:10.5') - depends_on("g4ensdfstate@2.2", when='@10.5.0:10.5') - - # geant4@10.4.X - depends_on("g4ndl@4.5", when='@10.4.0:10.4') - depends_on("g4emlow@7.3", when='@10.4.0:10.4') - depends_on("g4photonevaporation@5.2", when='@10.4.0:10.4') - depends_on("g4radioactivedecay@5.2", when='@10.4.0:10.4') - depends_on("g4neutronxs@1.4", when='@10.4.0:10.4') - depends_on("g4pii@1.3", when='@10.4.0:10.4') - - depends_on("g4realsurface@2.1.1", when='@10.4.2:10.4') - depends_on("g4realsurface@2.1", when='@10.4.0:10.4.1') - - depends_on("g4saiddata@1.1", when='@10.4.0:10.4') - depends_on("g4abla@3.1", when='@10.4.0:10.4') - depends_on("g4ensdfstate@2.2", when='@10.4.0:10.4') - - # geant4@10.3.X - depends_on("g4ndl@4.5", when='@10.3.0:10.3') - depends_on("g4emlow@6.50", when='@10.3.0:10.3') - - depends_on("g4photonevaporation@4.3.2", when='@10.3.1:10.3') - depends_on("g4photonevaporation@4.3", when='@10.3.0') - - depends_on("g4radioactivedecay@5.1.1", when='@10.3.1:10.3') - depends_on("g4radioactivedecay@5.1", when='@10.3.0') - - depends_on("g4neutronxs@1.4", when='@10.3.0:10.3') - depends_on("g4pii@1.3", when='@10.3.0:10.3') - depends_on("g4realsurface@1.0", when='@10.3.0:10.3') - depends_on("g4saiddata@1.1", when='@10.3.0:10.3') - depends_on("g4abla@3.0", when='@10.3.0:10.3') - depends_on("g4ensdfstate@2.1", when='@10.3.0:10.3') - - def install(self, spec, prefix): + _datasets = { + '11.0:11': [ + "g4ndl@4.6", + "g4emlow@8.0", + "g4photonevaporation@5.7", + "g4radioactivedecay@5.6", + "g4particlexs@4.0", + "g4pii@1.3", + "g4realsurface@2.2", + "g4saiddata@2.0", + "g4abla@3.1", + "g4incl@1.0", + "g4ensdfstate@2.3", + ], + '10.7.0:10.7': [ + "g4ndl@4.6", + "g4emlow@7.13", + "g4photonevaporation@5.7", + "g4radioactivedecay@5.6", + "g4pii@1.3", + "g4realsurface@2.2", + "g4saiddata@2.0", + "g4abla@3.1", + "g4incl@1.0", + "g4ensdfstate@2.3", + ], + '10.7.1:10.7': [ + "g4particlexs@3.1.1", + ], + '10.7.0': [ + "g4particlexs@3.1", + ], + '10.6.0:10.6': [ + "g4ndl@4.6", + "g4emlow@7.9", + "g4emlow@7.9.1", + "g4photonevaporation@5.5", + "g4radioactivedecay@5.4", + "g4particlexs@2.1", + "g4pii@1.3", + "g4realsurface@2.1.1", + "g4saiddata@2.0", + "g4abla@3.1", + "g4incl@1.0", + "g4ensdfstate@2.2", + ], + '10.5.0:10.5': [ + "g4ndl@4.5", + "g4emlow@7.7", + "g4photonevaporation@5.3", + "g4radioactivedecay@5.3", + "g4particlexs@1.1", + "g4pii@1.3", + "g4realsurface@2.1.1", + "g4saiddata@2.0", + "g4abla@3.1", + "g4incl@1.0", + "g4ensdfstate@2.2", + ], + '10.4.0:10.4': [ + "g4ndl@4.5", + "g4emlow@7.3", + "g4photonevaporation@5.2", + "g4radioactivedecay@5.2", + "g4neutronxs@1.4", + "g4pii@1.3", + "g4saiddata@1.1", + "g4abla@3.1", + "g4ensdfstate@2.2", + ], + '10.4.2:10.4': [ + "g4realsurface@2.1.1", + ], + '10.4.0:10.4.1': [ + "g4realsurface@2.1", + ], + '10.3.0:10.3': [ + "g4ndl@4.5", + "g4emlow@6.50", + "g4neutronxs@1.4", + "g4pii@1.3", + "g4realsurface@1.0", + "g4saiddata@1.1", + "g4abla@3.0", + "g4ensdfstate@2.1", + ], + '10.3.1:10.3': [ + "g4photonevaporation@4.3.2", + "g4radioactivedecay@5.1.1", + ], + '10.3.0': [ + "g4photonevaporation@4.3", + "g4radioactivedecay@5.1", + ], + } + + for _vers, _dsets in _datasets.items(): + _vers = '@' + _vers + for _d in _dsets: + depends_on(_d, type=('build', 'run'), when=_vers) + + @property + def datadir(self): spec = self.spec - data = '{0}-{1}'.format(self.name, self.version.dotted) - datadir = join_path(spec.prefix.share, data) + return join_path(spec.prefix.share, + '{0}-{1}'.format(self.name, self.version.dotted)) - with working_dir(datadir, create=True): + 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)) diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index acae419ed6322f..d3658bfe59fa19 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Geant4(CMakePackage): @@ -17,8 +18,11 @@ class Geant4(CMakePackage): tags = ['hep'] + executables = ['^geant4-config$'] + maintainers = ['drbenmorgan'] + version('11.0.1', sha256='fa76d0774346b7347b1fb1424e1c1e0502264a83e185995f3c462372994f84fa') version('11.0.0', sha256='04d11d4d9041507e7f86f48eb45c36430f2b6544a74c0ccaff632ac51d9644f1') version('10.7.3', sha256='8615d93bd4178d34f31e19d67bc81720af67cdab1c8425af8523858dcddcf65b', preferred=True) version('10.7.2', sha256='593fc85883a361487b17548ba00553501f66a811b0a79039276bb75ad59528cf') @@ -56,19 +60,10 @@ class Geant4(CMakePackage): depends_on('cmake@3.8:', type='build', when='@10.6.0:') depends_on('cmake@3.5:', type='build') - depends_on('geant4-data@11.0.0', type='run', when='@11.0.0') - depends_on('geant4-data@10.7.3', type='run', when='@10.7.3') - depends_on('geant4-data@10.7.2', type='run', when='@10.7.2') - depends_on('geant4-data@10.7.1', type='run', when='@10.7.1') - depends_on('geant4-data@10.7.0', type='run', when='@10.7.0') - depends_on('geant4-data@10.6.3', type='run', when='@10.6.3') - depends_on('geant4-data@10.6.2', type='run', when='@10.6.2') - depends_on('geant4-data@10.6.1', type='run', when='@10.6.1') - depends_on('geant4-data@10.6.0', type='run', when='@10.6.0') - depends_on('geant4-data@10.5.1', type='run', when='@10.5.1') - depends_on('geant4-data@10.4.3', type='run', when='@10.4.3') - depends_on('geant4-data@10.4.0', type='run', when='@10.4.0') - depends_on('geant4-data@10.3.3', type='run', when='@10.3.3') + for _vers in ["10.3.3", "10.4.0", "10.4.3", "10.5.1", "10.6.0", "10.6.1", + "10.6.2", "10.6.3", "10.7.0", "10.7.1", "10.7.2", "10.7.3", + "11.0:"]: + depends_on('geant4-data@' + _vers, type='run', when='@' + _vers) depends_on("expat") depends_on("zlib") @@ -115,6 +110,11 @@ class Geant4(CMakePackage): depends_on('boost@1.70: +python cxxstd=' + std, when='+python cxxstd=' + std) + # 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, when='+python') + # Visualization driver dependencies depends_on("gl", when='+opengl') depends_on("glu", when='+opengl') @@ -133,6 +133,53 @@ class Geant4(CMakePackage): patch('geant4-10.4.3-cxx17-removed-features.patch', level=1, when='@10.4.3 cxxstd=17') + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + # We already get the correct format + return output.strip() + + @classmethod + def determine_variants(cls, exes, version_str): + variants = [] + cxxstd = Executable(exes[0])('--cxxstd', output=str, error=str) + # output will be something like c++17, we only want the number + variants.append('cxxstd={}'.format(cxxstd[-3:])) + + def _has_feature(feature): + res = Executable(exes[0])('--has-feature', feature, output=str, error=str) + return res.strip() == 'yes' + + def _add_variant(feature, variant): + """Helper to determine whether a given feature is present and append the + corresponding variant to the list""" + if _has_feature(feature): + variants.append('+{}'.format(variant)) + else: + variants.append('~{}'.format(variant)) + + _add_variant('qt', 'qt') + _add_variant('motif', 'motif') + _add_variant('multithreading', 'threads') + _add_variant('usolids', 'vecgeom') + + if _has_feature('opengl-x11'): + variants.append('+opengl') + variants.append('+x11') + else: + variants.append('~opengl') + # raytracer-x11 could still lead to the activation of the x11 + # variant without +opengl + _add_variant('raytracer-x11', 'x11') + + # TODO: The following variants cannot be determined from geant4-config. + # - python + # - tbb + # - vtk + # Should we have a (version dependent) warning message for these? + + return ' '.join(variants) + def cmake_args(self): spec = self.spec @@ -169,8 +216,11 @@ def cmake_args(self): # geant4 libs at application runtime options.append('-DGEANT4_BUILD_TLS_MODEL=global-dynamic') - # never install the data with geant4 - options.append('-DGEANT4_INSTALL_DATA=OFF') + # Never install the data with geant4, but point to the dependent + # 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)) # Vecgeom if '+vecgeom' in spec: @@ -201,3 +251,11 @@ def cmake_args(self): 'python')) return options + + @property + def datadir(self): + dataspec = self.spec['geant4-data'] + return join_path( + dataspec.prefix.share, + '{0}-{1}'.format(dataspec.name, dataspec.version.dotted) + ) diff --git a/var/spack/repos/builtin/packages/gearshifft/package.py b/var/spack/repos/builtin/packages/gearshifft/package.py index f5ed3879f2d8e9..3d2bc53f0829ba 100644 --- a/var/spack/repos/builtin/packages/gearshifft/package.py +++ b/var/spack/repos/builtin/packages/gearshifft/package.py @@ -38,7 +38,7 @@ class Gearshifft(CMakePackage): # depends_on C++14 compiler, e.g. GCC 5.0+ depends_on('cmake@2.8.0:', type='build') - depends_on('boost@1.59.0:') + depends_on('boost@1.59.0:+system+test+program_options+thread') depends_on('cuda@8.0:', when='+cufft') depends_on('opencl@1.2:', when='+clfft') depends_on('clfft@2.12.0:', when='+clfft') diff --git a/var/spack/repos/builtin/packages/genometools/package.py b/var/spack/repos/builtin/packages/genometools/package.py index d8a12aa46197cf..3474f349a61331 100644 --- a/var/spack/repos/builtin/packages/genometools/package.py +++ b/var/spack/repos/builtin/packages/genometools/package.py @@ -11,8 +11,9 @@ class Genometools(MakefilePackage): of genome informatics) combined into a single binary named gt.""" homepage = "http://genometools.org/" - url = "https://github.com/genometools/genometools/archive/v1.6.1.tar.gz" + url = "https://github.com/genometools/genometools/archive/refs/tags/v1.6.2.tar.gz" + version('1.6.2', sha256='974825ddc42602bdce3d5fbe2b6e2726e7a35e81b532a0dc236f6e375d18adac') version('1.6.1', sha256='528ca143a7f1d42af8614d60ea1e5518012913a23526d82e434f0dad2e2d863f') version('1.5.9', sha256='bba8e043f097e7c72e823f73cb0efbd20bbd60f1ce797a0e4c0ab632b170c909') diff --git a/var/spack/repos/builtin/packages/geos/package.py b/var/spack/repos/builtin/packages/geos/package.py index 32f169924f6421..58a05bc09d7e77 100644 --- a/var/spack/repos/builtin/packages/geos/package.py +++ b/var/spack/repos/builtin/packages/geos/package.py @@ -43,8 +43,8 @@ class Geos(CMakePackage): generator = 'Ninja' - patch('https://patch-diff.githubusercontent.com/raw/libgeos/geos/pull/461.patch', - sha256='58795ae79f168851f27aa488a589796f9a7563d368ffa32e1fe315eb71699877', + patch('https://github.com/libgeos/geos/pull/461.patch?full_index=1', + sha256='ab78db7ff2e8fc89e899b8233cf77d90b24d88940dd202c4219decba479c8d35', when='@3.8:') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/gfsio/package.py b/var/spack/repos/builtin/packages/gfsio/package.py index fb5bfdab4242b9..2b034670a3e468 100644 --- a/var/spack/repos/builtin/packages/gfsio/package.py +++ b/var/spack/repos/builtin/packages/gfsio/package.py @@ -25,3 +25,9 @@ def setup_run_environment(self, env): for suffix in ('4', ''): env.set('GFSIO_LIB' + suffix, lib[0]) env.set('GFSIO_INC' + suffix, join_path(self.prefix, 'include')) + + def flag_handler(self, name, flags): + if self.spec.satisfies('%fj'): + if name == 'fflags': + flags.append('-Free') + return (None, None, flags) diff --git a/var/spack/repos/builtin/packages/gh/package.py b/var/spack/repos/builtin/packages/gh/package.py index d7ab6d419daf44..09ef4b768ec718 100644 --- a/var/spack/repos/builtin/packages/gh/package.py +++ b/var/spack/repos/builtin/packages/gh/package.py @@ -14,6 +14,12 @@ class Gh(Package): maintainers = ['lcnzg'] + version('2.5.1', sha256='89aac9c35ad875f1b17144bf9fcbfa7231554d4abce187d9277fcc83da846e4a') + version('2.5.0', sha256='4e9d1cbcdd2346cab5b7fc176cd57c07ed3628a0241fad8a48fe4df6a354b120') + version('2.4.0', sha256='3c87db4d9825a342fc55bd7f27461099dd46291aea4a4a29bb95d3c896403f94') + version('2.3.0', sha256='56bcf353adc17c386377ffcdfc980cbaff36123a1c1132ba09c3c51a7d1c9b82') + version('2.2.0', sha256='597c6c1cde4484164e9320af0481e33cfad2330a02315b4c841bdc5b7543caec') + version('2.1.0', sha256='4b353b121a0f3ddf5046f0a1ae719a0539e0cddef27cc78a1b33ad7d1d22c007') version('2.0.0', sha256='5d93535395a6684dee1d9d1d3cde859addd76f56581e0111d95a9c685d582426') version('1.14.0', sha256='1a99050644b4821477aabc7642bbcae8a19b3191e9227cd8078016d78cdd83ac') version('1.13.1', sha256='1a19ab2bfdf265b5e2dcba53c3bd0b5a88f36eff4864dcc38865e33388b600c5') diff --git a/var/spack/repos/builtin/packages/ghostscript/package.py b/var/spack/repos/builtin/packages/ghostscript/package.py index 2b48c5142dc6aa..31380f2df15a5f 100644 --- a/var/spack/repos/builtin/packages/ghostscript/package.py +++ b/var/spack/repos/builtin/packages/ghostscript/package.py @@ -49,9 +49,9 @@ class Ghostscript(AutotoolsPackage): patch('nogoto.patch', when='%fj@:4.1.0') # Related bug report: https://bugs.ghostscript.com/show_bug.cgi?id=702985 - patch("https://github.com/ArtifexSoftware/ghostpdl/commit/41ef9a0bc36b9db7115fbe9623f989bfb47bbade.patch", + patch("https://github.com/ArtifexSoftware/ghostpdl/commit/41ef9a0bc36b9db7115fbe9623f989bfb47bbade.patch?full_index=1", when='@:9.53.3^freetype@2.10.3:', - sha256="49c353106d97c40b3b2c78f72ce34e3eef66e6b04861c313f87bad11ab4189e6") + sha256="f3c2e56aa552a030c6db2923276ff2d140e39c511f92d9ef6c74a24776940af7") def url_for_version(self, version): baseurl = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs{0}/ghostscript-{1}.tar.gz" diff --git a/var/spack/repos/builtin/packages/giflib/package.py b/var/spack/repos/builtin/packages/giflib/package.py index 795dc3a625dad5..4338a2f8bfb589 100644 --- a/var/spack/repos/builtin/packages/giflib/package.py +++ b/var/spack/repos/builtin/packages/giflib/package.py @@ -44,6 +44,11 @@ def install_targets(self): targets = ['install'] + self.prefix_and_libversion_args() return targets + @property + def libs(self): + return (find_libraries(['libgif'], root=self.prefix.lib) or + find_libraries(['libgif'], root=self.prefix.lib64)) + def check(self): make('check', parallel=False) diff --git a/var/spack/repos/builtin/packages/git-annex/package.py b/var/spack/repos/builtin/packages/git-annex/package.py index cd260ffc264eb2..40f77c6731f8af 100644 --- a/var/spack/repos/builtin/packages/git-annex/package.py +++ b/var/spack/repos/builtin/packages/git-annex/package.py @@ -30,7 +30,7 @@ class GitAnnex(Package): # # Steps to find the static link e.g. for amd64: # - $ git clone https://downloads.kitenet.net/.git/ - # - $ cd git-annex + # - $ cd downloads.kitenet.net # - $ ls -l git-annex/linux/current/ # gives for example for amd64 # git-annex-standalone-amd64.tar.gz -> @@ -45,6 +45,8 @@ class GitAnnex(Package): if platform.system() == "Linux" and platform.machine() == "aarch64": # git-annex-standalone-arm64.tar.gz + version('10.20220121', sha256='3f8a50f61cb092e4e658a320b86ee7bd38238bbd1286fa462bb12797d36e1f25', + url="https://downloads.kitenet.net/.git/annex/objects/Kp/K5/SHA256E-s55243787--3f8a50f61cb092e4e658a320b86ee7bd38238bbd1286fa462bb12797d36e1f25.tar.gz/SHA256E-s55243787--3f8a50f61cb092e4e658a320b86ee7bd38238bbd1286fa462bb12797d36e1f25.tar.gz") # release 8.20210804 was not properly updated for arm64 upstream # the sha256sums of 8.20210622 and 8.20210804 were the same version('8.20210622', sha256='869f875e280db0cc3243d9d0d33492f1c3bc182053544c1d5eb0ec463125fe76', @@ -52,6 +54,8 @@ class GitAnnex(Package): elif platform.system() == "Linux": # git-annex-standalone-amd64.tar.gz + version('10.20220121', sha256='45cfaddc859d24f7e5e7eb3ab10c14a94d744705d365f26b54a50855ab1068f3', + url="https://downloads.kitenet.net/.git/annex/objects/M0/3z/SHA256E-s52034939--45cfaddc859d24f7e5e7eb3ab10c14a94d744705d365f26b54a50855ab1068f3.tar.gz/SHA256E-s52034939--45cfaddc859d24f7e5e7eb3ab10c14a94d744705d365f26b54a50855ab1068f3.tar.gz") version('8.20210804', sha256='f9d4bec06dddaeced25eec5f46360223797363e608fe37cfa93b2481f0166e1f', url="https://downloads.kitenet.net/.git/annex/objects/4M/J4/SHA256E-s51465538--f9d4bec06dddaeced25eec5f46360223797363e608fe37cfa93b2481f0166e1f.tar.gz/SHA256E-s51465538--f9d4bec06dddaeced25eec5f46360223797363e608fe37cfa93b2481f0166e1f.tar.gz") version('8.20210622', sha256='a1cef631ef2cc0c977580eacaa1294d7617727df99214920ca6e8f3172bae03e', diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py index ce1f54f0f406cf..ccd060094fbcf6 100644 --- a/var/spack/repos/builtin/packages/git-lfs/package.py +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -20,6 +20,11 @@ class GitLfs(MakefilePackage): executables = ['^git-lfs$'] + maintainers = ['sethrj'] + + version('3.1.2', sha256='5c9bc449068d0104ea124c25f596af16da85e7b5bf256bc544d8ce5f4fe231f2') + version('2.13.3', sha256='f8bd7a06e61e47417eb54c3a0db809ea864a9322629b5544b78661edab17b950') + version('2.12.1', sha256='2b2e70f1233f7efe9a010771510391a07527ec7c0af721ecf8edabac5d60f62b') version('2.11.0', sha256='8183c4cbef8cf9c2e86b0c0a9822451e2df272f89ceb357c498bfdf0ff1b36c7') version('2.10.0', sha256='07fd5c57a1039d5717dc192affbe3268ec2fd03accdca462cb504c0b4194cd23') version('2.9.0', sha256='f1963ad88747577ffeeb854649aeacaa741c59be74683da4d46b129a72d111b7') @@ -29,11 +34,16 @@ class GitLfs(MakefilePackage): version('2.7.0', sha256='1c829ddd163be2206a44edb366bd7f6d84c5afae3496687405ca9d2a5f3af07b') version('2.6.1', sha256='e17cd9d4e66d1116be32f7ddc7e660c7f8fabbf510bc01b01ec15a22dd934ead') - depends_on('go@1.5:', type='build') + depends_on('go@1.17:', type='build', when='@2.13:') + depends_on('go@1.5:', type='build', when='@:2.12') depends_on('git@1.8.2:', type='run') patch('patches/issue-10702.patch', when='@2.7.0:2.7.1') + # Mysterious syscall failures of old versions on new systems + conflicts('os=bigsur', when='@:2.11') + conflicts('os=monterey', when='@:2.11') + parallel = False @classmethod diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 916fa951739f7a..13c26823f39b0f 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -5,7 +5,6 @@ import os import re -import sys from spack import * @@ -19,6 +18,8 @@ class Git(AutotoolsPackage): homepage = "http://git-scm.com" url = "https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.12.0.tar.gz" + tags = ['build-tools'] + executables = ['^git$'] # In order to add new versions here, add a new list entry with: @@ -372,7 +373,7 @@ def configure_args(self): @run_after('configure') def filter_rt(self): - if sys.platform == 'darwin': + if self.spec.satisfies('platform=darwin'): # Don't link with -lrt; the system has no (and needs no) librt filter_file(r' -lrt$', '', 'Makefile') @@ -385,12 +386,20 @@ def build(self, spec, prefix): args.append('NO_GETTEXT=1') make(*args) + if spec.satisfies('platform=darwin'): + with working_dir('contrib/credential/osxkeychain'): + make() + def install(self, spec, prefix): args = ["install"] if '~nls' in self.spec: args.append('NO_GETTEXT=1') make(*args) + if spec.satisfies('platform=darwin'): + install('contrib/credential/osxkeychain/git-credential-osxkeychain', + join_path(prefix, "libexec", "git-core")) + @run_after('install') def install_completions(self): install_tree('contrib/completion', self.prefix.share) diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index e9d7a2a893c6a5..f54dffe9090b77 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -23,6 +23,7 @@ class Glib(Package): maintainers = ['michaelkuhn'] + version('2.70.4', sha256='ab3d176f3115dcc4e5d02db795984e04e4f4b48d836252e23e8c468e9d423c33') version('2.70.2', sha256='0551459c85cd3da3d58ddc9016fd28be5af503f5e1615a71ba5b512ac945806f') version('2.70.0', sha256='200d7df811c5ba634afbf109f14bb40ba7fde670e89389885da14e27c0840742') version('2.68.4', sha256='62fd061d08a75492617e625a73e2c05e259f831acbb8e1f8b9c81f23f7993a3b') diff --git a/var/spack/repos/builtin/packages/gluegen/cpptasks.fj.patch b/var/spack/repos/builtin/packages/gluegen/cpptasks.fj.patch new file mode 100644 index 00000000000000..67d83fa99c3640 --- /dev/null +++ b/var/spack/repos/builtin/packages/gluegen/cpptasks.fj.patch @@ -0,0 +1,266 @@ +diff --git a/src/main/java/net/sf/antcontrib/cpptasks/CompilerEnum.java b/src/main/java/net/sf/antcontrib/cpptasks/CompilerEnum.java +index e7af352..7b977c8 100644 +--- a/src/main/java/net/sf/antcontrib/cpptasks/CompilerEnum.java ++++ b/src/main/java/net/sf/antcontrib/cpptasks/CompilerEnum.java +@@ -60,6 +60,10 @@ import org.apache.tools.ant.types.EnumeratedAttribute; + * xcode.clang + * Xcode clang / llvm C compiler (via xcrun) + * ++ * fcc ++ * fcc / Fujitsu C compiler ++ * ++ * + * + * g++ + * GCC C++ compiler +@@ -69,6 +73,10 @@ import org.apache.tools.ant.types.EnumeratedAttribute; + * clang++ / llvm C++ compiler + * + * ++ * FCC ++ * FCC / Fujitsu C++ compiler ++ * ++ * + * xcode.clang++ + * Xcode clang++ / llvm C++ compiler (via xcrun) + * +@@ -209,6 +217,8 @@ public class CompilerEnum extends EnumeratedAttribute { + new ProcessorEnumValue("clang++", GccCCompiler.getCPPLangInstance()), + new ProcessorEnumValue("xcode.clang", GccCCompiler.getXCodeCLangInstance()), + new ProcessorEnumValue("xcode.clang++", GccCCompiler.getXCodeCPPLangInstance()), ++ new ProcessorEnumValue("fcc", GccCCompiler.getFccInstance()), ++ new ProcessorEnumValue("FCC", GccCCompiler.getFCCPPInstance()), + new ProcessorEnumValue("c++", GccCCompiler.getCppInstance()), + new ProcessorEnumValue("g77", GccCCompiler.getG77Instance()), + new ProcessorEnumValue("msvc", DevStudioCCompiler.getInstance()), +diff --git a/src/main/java/net/sf/antcontrib/cpptasks/LinkerEnum.java b/src/main/java/net/sf/antcontrib/cpptasks/LinkerEnum.java +index 38800ae..e57de43 100644 +--- a/src/main/java/net/sf/antcontrib/cpptasks/LinkerEnum.java ++++ b/src/main/java/net/sf/antcontrib/cpptasks/LinkerEnum.java +@@ -52,6 +52,8 @@ public class LinkerEnum extends EnumeratedAttribute { + new ProcessorEnumValue("clang++", GppLinker.getClangInstance()), + new ProcessorEnumValue("xcode.clang", GccLinker.getXcodeClangInstance()), + new ProcessorEnumValue("xcode.clang++", GppLinker.getXcodeClangInstance()), ++ new ProcessorEnumValue("fcc", GccLinker.getFccInstance()), ++ new ProcessorEnumValue("FCC", GppLinker.getFccInstance()), + new ProcessorEnumValue("ld", LdLinker.getInstance()), + new ProcessorEnumValue("ar", GccLibrarian.getInstance()), + new ProcessorEnumValue("msvc", DevStudioLinker.getInstance()), +diff --git a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java +index da6de52..585b6dd 100644 +--- a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java ++++ b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java +@@ -75,6 +75,14 @@ public final class GccCCompiler extends GccCompatibleCCompiler { + sourceExtensions, headerExtensions, false, + false, new GccCCompiler("clang++", sourceExtensions, headerExtensions, false, + true, null, false, null), false, null); ++ private static final GccCCompiler fccInstance = new GccCCompiler("fcc", ++ sourceExtensions, headerExtensions, false, ++ false, new GccCCompiler("fcc", sourceExtensions, headerExtensions, false, ++ true, null, false, null), false, null); ++ private static final GccCCompiler fccppInstance = new GccCCompiler("FCC", ++ sourceExtensions, headerExtensions, false, ++ false, new GccCCompiler("FCC", sourceExtensions, headerExtensions, false, ++ true, null, false, null), false, null); + /** + * Gets c++ adapter + */ +@@ -111,6 +119,18 @@ public final class GccCCompiler extends GccCompatibleCCompiler { + public static GccCCompiler getCPPLangInstance() { + return cpplangInstance; + } ++ /** ++ * Gets fcc adapter ++ */ ++ public static GccCCompiler getFccInstance() { ++ return fccInstance; ++ } ++ /** ++ * Gets FCC adapter ++ */ ++ public static GccCCompiler getFCCPPInstance() { ++ return fccppInstance; ++ } + /** + * Gets XCode clang adapter + */ +diff --git a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java +index f9c51ef..94ac8c2 100644 +--- a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java ++++ b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java +@@ -41,16 +41,22 @@ public class GccLinker extends GnuLinker { + private static final GccLinker clangInstance = new GccLinker("clang", objFiles, + discardFiles, "", "", false, null); + private static final GccLinker xcodeClangInstance = new GccLinker(clangInstance, true); ++ private static final GccLinker fccInstance = new GccLinker("fcc", objFiles, ++ discardFiles, "", "", false, null); + + private static final GccLinker dllLinker = new GccLinker("gcc", objFiles, + discardFiles, "lib", ".so", false, new GccLinker("gcc", objFiles, discardFiles, "lib", ".so", true, null)); + private static final GccLinker dllClangLinker = new GccLinker("clang", objFiles, + discardFiles, "lib", ".so", false, new GccLinker("clang", objFiles, discardFiles, "lib", ".so", true, null)); ++ private static final GccLinker dllFccLinker = new GccLinker("fcc", objFiles, ++ discardFiles, "lib", ".so", false, new GccLinker("fcc", objFiles, discardFiles, "lib", ".so", true, null)); + + private static final GccLinker arLinker = new GccLinker("gcc", objFiles, + discardFiles, "lib", ".a", false, new GccLinker("gcc", objFiles, discardFiles, "lib", ".a", true, null)); + private static final GccLinker arClangLinker = new GccLinker("clang", objFiles, + discardFiles, "lib", ".a", false, new GccLinker("clang", objFiles, discardFiles, "lib", ".a", true, null)); ++ private static final GccLinker arFccLinker = new GccLinker("fcc", objFiles, ++ discardFiles, "lib", ".a", false, new GccLinker("fcc", objFiles, discardFiles, "lib", ".a", true, null)); + + private static final GccLinker machBundleLinker = new GccLinker("gcc", + objFiles, discardFiles, "lib", ".bundle", false, null); +@@ -76,6 +82,9 @@ public class GccLinker extends GnuLinker { + public static GccLinker getClangInstance() { + return clangInstance; + } ++ public static GccLinker getFccInstance() { ++ return fccInstance; ++ } + public static GccLinker getXcodeClangInstance() { + return xcodeClangInstance; + } +@@ -102,10 +111,18 @@ public class GccLinker extends GnuLinker { + return dllClangLinker; + } + @Override ++ protected final GnuLinker getStaticDllFccLinker() { ++ return dllFccLinker; ++ } ++ @Override + protected final GnuLinker getStaticArLinker() { + return arLinker; + } + @Override ++ protected final GnuLinker getStaticArFccLinker() { ++ return arFccLinker; ++ } ++ @Override + protected final GnuLinker getStaticArClangLinker() { + return arClangLinker; + } +@@ -114,6 +131,10 @@ public class GccLinker extends GnuLinker { + return clangInstance; + } + @Override ++ protected final GnuLinker getStaticFccInstance() { ++ return fccInstance; ++ } ++ @Override + protected final GnuLinker getStaticXcodeClangInstance() { + return xcodeClangInstance; + } +diff --git a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GnuLinker.java b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GnuLinker.java +index f6d477f..9ad9894 100644 +--- a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GnuLinker.java ++++ b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GnuLinker.java +@@ -35,6 +35,9 @@ public abstract class GnuLinker extends AbstractLdLinker { + protected abstract GnuLinker getStaticArLinker(); + protected abstract GnuLinker getStaticArClangLinker(); + protected abstract GnuLinker getStaticClangInstance(); ++ protected abstract GnuLinker getStaticDllFccLinker(); ++ protected abstract GnuLinker getStaticArFccLinker(); ++ protected abstract GnuLinker getStaticFccInstance(); + protected abstract GnuLinker getStaticXcodeClangInstance(); + protected abstract GnuLinker getStaticMachBundleLinker(); + protected abstract GnuLinker getStaticMachClangBundleLinker(); +@@ -129,24 +132,24 @@ public abstract class GnuLinker extends AbstractLdLinker { + if (isDarwin()) { + return isGNU() ? getStaticMachArLinker() : ( isXcodeRun() ? getStaticXcodeMachArClangLinker() : getStaticMachArClangLinker() ); + } else { +- return isGNU() ? getStaticArLinker() : getStaticArClangLinker(); ++ return isGNU() ? getStaticArLinker() : (isCLANG()? getStaticArClangLinker(): getStaticArFccLinker()); + } + } + if (type.isPluginModule()) { + if (isDarwin()) { + return isGNU() ? getStaticMachBundleLinker() : ( isXcodeRun() ? getStaticXcodeMachClangBundleLinker() : getStaticMachClangBundleLinker() ); + } else { +- return isGNU() ? getStaticDllLinker() : getStaticDllClangLinker(); ++ return isGNU() ? getStaticDllLinker() : (isCLANG()? getStaticDllClangLinker(): getStaticDllFccLinker()); + } + } + if (type.isSharedLibrary()) { + if (isDarwin()) { + return isGNU() ? getStaticMachDllLinker() : ( isXcodeRun() ? getStaticXcodeMachDllClangLinker() : getStaticMachDllClangLinker() ); + } else { +- return isGNU() ? getStaticDllLinker() : getStaticDllClangLinker(); ++ return isGNU() ? getStaticDllLinker() : (isCLANG()? getStaticDllClangLinker(): getStaticDllFccLinker()); + } + } + return isGNU() ? getStaticInstance() : ( isXcodeRun() ? getStaticXcodeClangInstance() : getStaticClangInstance() ) ; + } + +-} +\ No newline at end of file ++} +diff --git a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java +index 833556e..ac8b688 100644 +--- a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java ++++ b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java +@@ -46,6 +46,8 @@ public class GppLinker extends GnuLinker { + discardFiles, "", "", false, false, null); + private static final GppLinker clangInstance = new GppLinker("clang", objFiles, + discardFiles, "", "", false, false, null); ++ private static final GppLinker fccInstance = new GppLinker("fcc", objFiles, ++ discardFiles, "", "", false, false, null); + private static final GppLinker xcodeClangInstance = new GppLinker(clangInstance, true); + + private static final GppLinker dllLinker = new GppLinker("gcc", objFiles, +@@ -54,6 +56,9 @@ public class GppLinker extends GnuLinker { + private static final GppLinker dllClangLinker = new GppLinker("clang", objFiles, + discardFiles, "lib", ".so", false, false, new GppLinker("clang", objFiles, + discardFiles, "lib", ".so", false, true, null)); ++ private static final GppLinker dllFccLinker = new GppLinker("fcc", objFiles, ++ discardFiles, "lib", ".so", false, false, new GppLinker("fcc", objFiles, ++ discardFiles, "lib", ".so", false, true, null)); + + private static final GppLinker arLinker = new GppLinker("gcc", objFiles, + discardFiles, "lib", ".a", false, false, new GppLinker("gcc", objFiles, +@@ -61,6 +66,9 @@ public class GppLinker extends GnuLinker { + private static final GppLinker arClangLinker = new GppLinker("clang", objFiles, + discardFiles, "lib", ".a", false, false, new GppLinker("clang", objFiles, + discardFiles, "lib", ".a", false, true, null)); ++ private static final GppLinker arFccLinker = new GppLinker("fcc", objFiles, ++ discardFiles, "lib", ".a", false, false, new GppLinker("fcc", objFiles, ++ discardFiles, "lib", ".a", false, true, null)); + + private static final GppLinker machBundleLinker = new GppLinker("gcc", + objFiles, discardFiles, "lib", ".bundle", false, false, null); +@@ -86,6 +94,9 @@ public class GppLinker extends GnuLinker { + public static GppLinker getClangInstance() { + return clangInstance; + } ++ public static GppLinker getFccInstance() { ++ return fccInstance; ++ } + public static GppLinker getXcodeClangInstance() { + return xcodeClangInstance; + } +@@ -112,6 +123,10 @@ public class GppLinker extends GnuLinker { + return dllClangLinker; + } + @Override ++ protected final GnuLinker getStaticDllFccLinker() { ++ return dllFccLinker; ++ } ++ @Override + protected final GnuLinker getStaticArLinker() { + return arLinker; + } +@@ -124,6 +139,14 @@ public class GppLinker extends GnuLinker { + return clangInstance; + } + @Override ++ protected final GnuLinker getStaticArFccLinker() { ++ return arFccLinker; ++ } ++ @Override ++ protected final GnuLinker getStaticFccInstance() { ++ return fccInstance; ++ } ++ @Override + protected final GnuLinker getStaticXcodeClangInstance() { + return xcodeClangInstance; + } diff --git a/var/spack/repos/builtin/packages/gluegen/javalib.aarch64.patch b/var/spack/repos/builtin/packages/gluegen/javalib.aarch64.patch new file mode 100644 index 00000000000000..f73fea7d04d758 --- /dev/null +++ b/var/spack/repos/builtin/packages/gluegen/javalib.aarch64.patch @@ -0,0 +1,13 @@ +diff --git a/make/gluegen-cpptasks-base.xml b/make/gluegen-cpptasks-base.xml +index a3b231e..98190a9 100755 +--- a/make/gluegen-cpptasks-base.xml ++++ b/make/gluegen-cpptasks-base.xml +@@ -1460,7 +1460,7 @@ + + + +- ++ + + + diff --git a/var/spack/repos/builtin/packages/gluegen/package.py b/var/spack/repos/builtin/packages/gluegen/package.py new file mode 100644 index 00000000000000..b4dcf8cf74175a --- /dev/null +++ b/var/spack/repos/builtin/packages/gluegen/package.py @@ -0,0 +1,76 @@ +# Copyright 2013-2022 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 import * + + +class Gluegen(Package): + """GlueGen is a tool which automatically generates the Java and JNI code + necessary to call C libraries. """ + + homepage = "https://jogamp.org/gluegen/www/" + git = "https://github.com/WadeWalker/gluegen.git" + + version('java-11-fixes', branch='java-11-fixes', submodules=True) + + # ant optional jar file to execute antlr tasks + resource(name='ant-optional', sha256='89ea82846b9ff4f4a5d51c7b5504e30462c64ddb990b014af5ded93b7d5e2b82', + url='https://repo1.maven.org/maven2/ant/optional/1.5.4/optional-1.5.4.jar', + placement='ant-optional', expand=False) + + # source file of jogadm version cpptask to support Fujitsu compiler + resource(name='cpptasks', git='http://jogamp.org/cgit/ant-cpptasks.git', when='%fj') + + depends_on('ant', type='build') + depends_on('java@11', type=('build', 'run')) + + # Change java library directory for java11 + patch('javalib.aarch64.patch', when='target=aarch64:') + + # patch for build with Fujitsu Compiler + patch('cpptasks.fj.patch', working_dir='ant-cpptasks', when='%fj') + + phases = ['build', 'install'] + + compiler_mapping = {'gcc': 'gcc', 'clang': 'clang', 'fj': 'fcc'} + + def build(self, spec, prefix): + ant = spec['ant'].command + cname = spec.compiler.name + compiler = self.compiler_mapping.get(cname, 'gcc') + antarg = ['-Dgcc.compat.compiler={0}'.format(compiler)] + + if self.spec.satisfies('%fj'): + with working_dir('ant-cpptasks'): + ant() + copy(join_path('ant-cpptasks', 'target', 'lib', 'cpptasks.jar'), + join_path('make', 'lib')) + + with working_dir('make'): + ant(*antarg) + + def install(self, spec, prefix): + install_tree('build', prefix.build) + install(join_path('ant-optional', 'optional-1.5.4.jar'), prefix.build) + install_tree('make', prefix.make) + filter_file('..', prefix, join_path(prefix.make, 'build.xml'), + string=True) + + def setup_build_environment(self, env): + env.prepend_path('CLASSPATH', + join_path(self.stage.source_path, + 'ant-optional', 'optional-1.5.4.jar')) + + def setup_run_environment(self, env): + class_paths = find(prefix.build, '*.jar') + classpath = os.pathsep.join(class_paths) + env.prepend_path('CLASSPATH', classpath) + + def setup_dependent_build_environment(self, env, dependent_spec): + class_paths = find(prefix.build, '*.jar') + classpath = os.pathsep.join(class_paths) + env.prepend_path('CLASSPATH', classpath) diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py index 67c01b3ce5fa08..40a2608ea21fff 100644 --- a/var/spack/repos/builtin/packages/gmp/package.py +++ b/var/spack/repos/builtin/packages/gmp/package.py @@ -14,6 +14,7 @@ class Gmp(AutotoolsPackage, GNUMirrorPackage): gnu_mirror_path = "gmp/gmp-6.1.2.tar.bz2" version('6.2.1', sha256='eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c') + version('6.2.0', sha256='f51c99cb114deb21a60075ffb494c1a210eb9d7cb729ed042ddb7de9534451ea') version('6.1.2', sha256='5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2') version('6.1.1', sha256='a8109865f2893f1373b0a8ed5ff7429de8db696fc451b1036bd7bdf95bbeffd6') version('6.1.0', sha256='498449a994efeba527885c10405993427995d3f86b8768d8cdf8d9dd7c6b73e8') diff --git a/var/spack/repos/builtin/packages/gnuradio/package.py b/var/spack/repos/builtin/packages/gnuradio/package.py index 31c43c0d37404e..5ae88b66c91d75 100644 --- a/var/spack/repos/builtin/packages/gnuradio/package.py +++ b/var/spack/repos/builtin/packages/gnuradio/package.py @@ -4,6 +4,9 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost + + class Gnuradio(CMakePackage): """GNU Radio is a free & open-source software development toolkit that provides signal processing blocks to implement software @@ -30,6 +33,11 @@ class Gnuradio(CMakePackage): depends_on('log4cpp@1.0:') # https://github.com/gnuradio/gnuradio/pull/3566 depends_on('boost@1.53:1.72') + + # 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('py-numpy', type=('build', 'run')) depends_on('py-click', type=('build', 'run')) depends_on('py-pyyaml', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index 3f4f54c22fe9c7..2549d526a0df4a 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -35,6 +35,10 @@ class GoBootstrap(Package): depends_on('git', type=('build', 'link', 'run')) + conflicts('os=monterey', msg="go-bootstrap won't build on new macOS") + conflicts('target=aarch64:', when='platform=darwin', + msg='Go bootstrap is too old for Apple Silicon') + def patch(self): if self.spec.satisfies('@:1.4.3'): # NOTE: Older versions of Go attempt to download external files that have diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 4330b1fa714d0e..36a345eafc1f7d 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os -import platform import re import llnl.util.tty as tty @@ -43,10 +42,11 @@ class Go(Package): maintainers = ['alecbcs'] - version('1.17.3', sha256='705c64251e5b25d5d55ede1039c6aa22bea40a7a931d14c370339853643c3df0') - version('1.17.2', sha256='2255eb3e4e824dd7d5fcdc2e7f84534371c186312e546fb1086a34c17752f431') - version('1.17.1', sha256='49dc08339770acd5613312db8c141eaf61779995577b89d93b541ef83067e5b1') - version('1.17', sha256='3a70e5055509f347c0fb831ca07a2bf3b531068f349b14a3c652e9b5b67beb5d') + version('1.17.7', sha256='c108cd33b73b1911a02b697741df3dea43e01a5c4e08e409e8b3a0e3745d2b4d') + version('1.17.3', sha256='705c64251e5b25d5d55ede1039c6aa22bea40a7a931d14c370339853643c3df0', deprecated=True) + version('1.17.2', sha256='2255eb3e4e824dd7d5fcdc2e7f84534371c186312e546fb1086a34c17752f431', deprecated=True) + version('1.17.1', sha256='49dc08339770acd5613312db8c141eaf61779995577b89d93b541ef83067e5b1', deprecated=True) + version('1.17', sha256='3a70e5055509f347c0fb831ca07a2bf3b531068f349b14a3c652e9b5b67beb5d', deprecated=True) version('1.16.10', sha256='a905472011585e403d00d2a41de7ced29b8884309d73482a307f689fd0f320b5') version('1.16.9', sha256='0a1cc7fd7bd20448f71ebed64d846138850d5099b18cf5cc10a4fc45160d8c3d') version('1.16.6', sha256='a3a5d4bc401b51db065e4f93b523347a4d343ae0c0b08a65c3423b05a138037d') @@ -128,12 +128,7 @@ class Go(Package): provides('golang') depends_on('git', type=('build', 'link', 'run')) - # TODO: Make non-c self-hosting compilers feasible without backflips - # should be a dep on external go compiler - if platform.machine() == 'aarch64': - depends_on('gcc languages=go', type='build') - else: - depends_on('go-bootstrap', type='build') + depends_on('go-bootstrap', type='build') # https://github.com/golang/go/issues/17545 patch('time_test.patch', when='@1.6.4:1.7.4') @@ -142,6 +137,9 @@ class Go(Package): # The fix for this issue has been merged into the 1.8 tree. patch('misc-cgo-testcshared.patch', level=0, when='@1.6.4:1.7.5') + # Unrecognized option '-fno-lto' + conflicts('%gcc@:4', when='@1.17:') + @classmethod def determine_version(cls, exe): output = Executable(exe)('version', output=str, error=str) diff --git a/var/spack/repos/builtin/packages/goma/package.py b/var/spack/repos/builtin/packages/goma/package.py new file mode 100644 index 00000000000000..5730fbced28dca --- /dev/null +++ b/var/spack/repos/builtin/packages/goma/package.py @@ -0,0 +1,81 @@ +# Copyright 2013-2022 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 import * + + +class Goma(CMakePackage): + """A Full-Newton Finite Element Program for Free and Moving Boundary Problems with + Coupled Fluid/Solid Momentum, Energy, Mass, and Chemical Species Transport """ + + homepage = "https://www.gomafem.com" + url = "https://github.com/goma/goma/archive/v7.0.0.tar.gz" + git = "https://github.com/goma/goma.git" + + maintainers = ['wortiz'] + + version('7.0.4', commit='27b2cb2477fa92f9457597f588c137de2572ef69') + version('7.0.0', commit='5166896f273e5853e1f32885e20f68317b24979c') + version('main', branch='main') + version('develop', branch='develop') + + # Problem size variants + variant('max_conc', default='4', values=('4', '8', '10', '15', '20'), + description="Set internal maximum number of species") + variant('max_external_field', default='4', values=('4', '8', '10', '15', '20'), + description="Set internal maximum number of external fields") + variant('max_prob_var', default='15', values=('10', '15', '20', '25', '28', '34', '40', '46', '64'), + description="Set internal maximum number of active equations") + variant('mde', default='27', values=('8', '9', '10', '16', '20', '27', '54'), + description="Set internal maximum DOF per element") + + # Floating point checks + variant('check_finite', default=True, description="Enable finite computation check") + variant('fpe', default=False, description="Enable floating point exception") + + # Optional third party libraries + variant('arpack-ng', default=True, description="Build with ARPACK support") + variant('metis', default=True, description="Build with metis decomposition") + variant('omega-h', default=True, description="Build with Omega_h support") + variant('petsc', default=True, description="Build with PETSc solver support") + variant('sparse', default=True, description="Build with legacy sparse solver") + variant('suite-sparse', default=True, description="Build with UMFPACK support") + + # Required dependencies + depends_on('mpi') + depends_on('seacas+applications') + depends_on('trilinos+mpi+epetra+aztec+amesos+stratimikos+teko+mumps+superlu-dist+ml~exodus') + + # Optional dependencies + depends_on('arpack-ng', when='+arpack-ng') + depends_on('metis', when='+metis') + depends_on('omega-h+mpi', when='+omega-h') + depends_on('petsc+hypre+mpi~exodusii', when='+petsc') + depends_on('sparse', when='+sparse') + depends_on('suite-sparse', when='+suite-sparse') + + def cmake_args(self): + args = [] + + # Problem sizes + args.append(self.define_from_variant('MAX_CONC', 'max_conc')) + args.append( + self.define_from_variant('MAX_EXTERNAL_FIELD', 'max_external_field')) + args.append(self.define_from_variant('MAX_PROB_VAR', 'max_prob_var')) + args.append(self.define_from_variant('MDE', 'mde')) + + # Floating point error checks + args.append(self.define_from_variant('CHECK_FINITE', 'check_finite')) + args.append(self.define_from_variant('FP_EXCEPT', 'fpe')) + + # Configure optional libraries + args.append(self.define_from_variant('ENABLE_ARPACK', 'arpack-ng')) + args.append(self.define_from_variant('ENABLE_METIS', 'metis')) + args.append(self.define_from_variant('ENABLE_OMEGA_H', 'omega-h')) + args.append(self.define_from_variant('ENABLE_PETSC', 'petsc')) + args.append(self.define_from_variant('ENABLE_SPARSE', 'sparse')) + args.append(self.define_from_variant('ENABLE_UMFPACK', 'suite-sparse')) + + return args diff --git a/var/spack/repos/builtin/packages/gotcha/package.py b/var/spack/repos/builtin/packages/gotcha/package.py index 85a685f1efc061..8bd6a638a43c27 100644 --- a/var/spack/repos/builtin/packages/gotcha/package.py +++ b/var/spack/repos/builtin/packages/gotcha/package.py @@ -23,8 +23,8 @@ class Gotcha(CMakePackage): variant('test', default=False, description='Build tests for Gotcha') patch( - 'https://github.com/LLNL/GOTCHA/commit/e82b4a1ecb634075d8f5334b796c888c86da0427.patch', - sha256='9f7814fd3c3362c156bc617c755e7e50c2f9125ed4540e36f60e4d93884f1ce6', + 'https://github.com/LLNL/GOTCHA/commit/e82b4a1ecb634075d8f5334b796c888c86da0427.patch?full_index=1', + sha256='3f05e61b00a1cd53ebc489e9ca5dc70b9767068bba30dba973cdbef9b14774e6', when='@0.0.2:1.0.2') def configure_args(self): diff --git a/var/spack/repos/builtin/packages/gource/package.py b/var/spack/repos/builtin/packages/gource/package.py index 33bd385f1b96a4..1c719637e27203 100644 --- a/var/spack/repos/builtin/packages/gource/package.py +++ b/var/spack/repos/builtin/packages/gource/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Gource(AutotoolsPackage): @@ -23,6 +24,11 @@ class Gource(AutotoolsPackage): depends_on('freetype@2.0:') depends_on('pcre') depends_on('boost@1.46:+filesystem+system') + + # 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('glew') depends_on('jpeg') depends_on('libpng') diff --git a/var/spack/repos/builtin/packages/gpi-space/package.py b/var/spack/repos/builtin/packages/gpi-space/package.py index 79e3a1707d9c8b..ab329761b050f0 100644 --- a/var/spack/repos/builtin/packages/gpi-space/package.py +++ b/var/spack/repos/builtin/packages/gpi-space/package.py @@ -24,6 +24,7 @@ class GpiSpace(CMakePackage): maintainers = ["mzeyen1985", "tiberot", "rumach", "mrahn", "acastanedam"] version("latest", branch="main") + version('22.03', sha256='b01500b9480452aee865a0ef98cf40864f847b7e22ea572f9a6f0f5ac2ae9a1a') version('21.12.1', sha256='6c49aca95a32e66fa1e34bef542c2f380e91f86c9c2b3b0d98921901bab7abce') version('21.12', sha256='51794e2b593b8d1dc7d6310e17744842919bf44205b2cb7a79de2f2bbac3352a') version('21.09', sha256='7f3861c2bfec15a4da46378ea38b304e1462ed315cd315b81ab2c2a8ba50dd3e') @@ -48,7 +49,7 @@ class GpiSpace(CMakePackage): type=("build", "run")) depends_on("pkgconf", type="build") - depends_on("boost@1.62.0:1.63.0 +coroutine +context cxxstd=14") + depends_on("boost@1.62.0:1.63.0 +atomic +chrono +coroutine +context +date_time +filesystem +iostreams +program_options +random +regex +serialization +test +timer cxxstd=14") depends_on("hwloc@1.10: +libudev ~shared ~libxml2") depends_on("libssh2@1.7:") depends_on("openssl@0.9:") diff --git a/var/spack/repos/builtin/packages/gplates/package.py b/var/spack/repos/builtin/packages/gplates/package.py index 5bd6f39d4bf861..79ec2f9ad1eba4 100644 --- a/var/spack/repos/builtin/packages/gplates/package.py +++ b/var/spack/repos/builtin/packages/gplates/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Gplates(CMakePackage): @@ -37,6 +38,10 @@ class Gplates(CMakePackage): # There were changes to Boost's optional in 1.61 that make the build fail. depends_on('boost+python@1.34:1.60') depends_on('python@2.0:2') + # 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) # When built in parallel, headers are not generated before they are used # (specifically, ViewportWindowUi.h) with the Makefiles generator. diff --git a/var/spack/repos/builtin/packages/graphblast/package.py b/var/spack/repos/builtin/packages/graphblast/package.py index fe0abbe3be8f86..bfdb090ec1293d 100644 --- a/var/spack/repos/builtin/packages/graphblast/package.py +++ b/var/spack/repos/builtin/packages/graphblast/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Graphblast(MakefilePackage, CudaPackage): @@ -19,6 +20,11 @@ class Graphblast(MakefilePackage, CudaPackage): depends_on('boost +program_options') + # 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) + # This package is confirmed to compile with: # gcc@:5.4.0,7.5.0 , boost@1.58.0:1.60.0 , cuda@9: diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index f71fa2527a6d8e..8dbdfcd58d908b 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -139,6 +139,9 @@ def autoreconf(self, spec, prefix): bash('./autogen.sh', 'NOCONFIG') def setup_build_environment(self, env): + # Set MACOSX_DEPLOYMENT_TARGET to 10.x due to old configure + super(Graphviz, self).setup_build_environment(env) + if '+quartz' in self.spec: env.set('OBJC', self.compiler.cc) diff --git a/var/spack/repos/builtin/packages/groff/package.py b/var/spack/repos/builtin/packages/groff/package.py index 43b21c1c761e50..2e03233e81f317 100644 --- a/var/spack/repos/builtin/packages/groff/package.py +++ b/var/spack/repos/builtin/packages/groff/package.py @@ -17,6 +17,8 @@ class Groff(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org/software/groff/" gnu_mirror_path = "groff/groff-1.22.3.tar.gz" + tags = ['build-tools'] + version('1.22.4', sha256='e78e7b4cb7dec310849004fa88847c44701e8d133b5d4c13057d876c1bad0293') version('1.22.3', sha256='3a48a9d6c97750bfbd535feeb5be0111db6406ddb7bb79fc680809cda6d828a5') @@ -25,7 +27,7 @@ class Groff(AutotoolsPackage, GNUMirrorPackage): # See brew scripts for groff for guidance: # https://github.com/Homebrew/homebrew-core/blob/master/Formula/groff.rb # Seems troublesome...netpbm requires groff? - variant('pdf', default=True, description='Build the `gropdf` executable.') + variant('pdf', default=False, description='Build the `gropdf` executable.') variant('x', default=False, description='Enable set of graphical options') variant('uchardet', default=True, description='Builds preconv with uchardet library for ' diff --git a/var/spack/repos/builtin/packages/gunrock/package.py b/var/spack/repos/builtin/packages/gunrock/package.py index 9ca07e79331342..b64df72c2d949f 100644 --- a/var/spack/repos/builtin/packages/gunrock/package.py +++ b/var/spack/repos/builtin/packages/gunrock/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Gunrock(CMakePackage, CudaPackage): @@ -52,6 +53,11 @@ class Gunrock(CMakePackage, CudaPackage): depends_on('googletest', when='+google_tests') depends_on('lcov', when='+code_coverage') depends_on('boost@1.58.0:', when='+boost') + + # 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, when='+boost') depends_on('metis', when='+metis') conflicts('cuda_arch=none', when='+cuda', diff --git a/var/spack/repos/builtin/packages/gurobi/package.py b/var/spack/repos/builtin/packages/gurobi/package.py index 0184bf39dba248..3c0b9a792ffb09 100644 --- a/var/spack/repos/builtin/packages/gurobi/package.py +++ b/var/spack/repos/builtin/packages/gurobi/package.py @@ -20,11 +20,12 @@ class Gurobi(Package): # to set up a mirror, see # https://spack.readthedocs.io/en/latest/mirrors.html - homepage = "https://www.gurobi.com/index" + homepage = "https://www.gurobi.com" manual_download = True maintainers = ['glennpj'] + version('9.5.1', sha256='fa82859d33f08fb8aeb9da66b0fbd91718ed573c534f571aa52372c9deb891da') version('9.1.2', sha256='7f60bd675f79476bb2b32cd632aa1d470f8246f2b033b7652d8de86f6e7e429b') version('7.5.2', '01f6dbb8d165838cca1664a1a14e4a85') @@ -35,9 +36,7 @@ class Gurobi(Package): license_url = 'http://www.gurobi.com/downloads/download-center' extends('python') - depends_on('python@2.7,3.6:', type=('build', 'run')) - depends_on('py-pip', type='build') - depends_on('py-wheel', type='build') + depends_on('python@2.7,3.6:') def url_for_version(self, version): return "file://{0}/gurobi{1}_linux64.tar.gz".format(os.getcwd(), version) @@ -58,5 +57,5 @@ def install(self, spec, prefix): @run_after('install') def gurobipy(self): with working_dir('linux64'): - args = std_pip_args + ['--prefix=' + self.prefix, '.'] - pip(*args) + python = which('python') + python('setup.py', 'install', '--prefix={0}'.format(self.prefix)) diff --git a/var/spack/repos/builtin/packages/h5z-zfp/Makefile.0.7.0.patch b/var/spack/repos/builtin/packages/h5z-zfp/Makefile.0.7.0.patch new file mode 100644 index 00000000000000..2f82ac7c5b6817 --- /dev/null +++ b/var/spack/repos/builtin/packages/h5z-zfp/Makefile.0.7.0.patch @@ -0,0 +1,11 @@ +--- spack-src/src/Makefile.orig 2022-02-02 17:42:03.000000000 +0900 ++++ spack-src/src/Makefile 2022-02-02 17:42:34.000000000 +0900 +@@ -54,7 +54,7 @@ + $(INSTALL) libh5zzfp.a $(PREFIX)/lib + $(INSTALL) -m 644 H5Zzfp.h H5Zzfp_lib.h H5Zzfp_plugin.h H5Zzfp_props.h $(PREFIX)/include + ifneq ($(FC),) +- $(INSTALL) -m 644 H5Zzfp_props_f.mod $(PREFIX)/include ++ $(INSTALL) -m 644 *.[mM][oO][dD] $(PREFIX)/include + endif + + clean: diff --git a/var/spack/repos/builtin/packages/h5z-zfp/config.make.0.7.0.patch b/var/spack/repos/builtin/packages/h5z-zfp/config.make.0.7.0.patch new file mode 100644 index 00000000000000..e163292acc690b --- /dev/null +++ b/var/spack/repos/builtin/packages/h5z-zfp/config.make.0.7.0.patch @@ -0,0 +1,11 @@ +--- spack-src/config.make.orig 2017-06-09 21:15:21.000000000 +0900 ++++ spack-src/config.make 2022-02-02 17:04:31.000000000 +0900 +@@ -16,6 +16,8 @@ + H5Z_ZFP_BASE := ../src + else ifeq ($(PWD_BASE),H5Z-ZFP) + H5Z_ZFP_BASE := ./src ++else ++ H5Z_ZFP_BASE := ./src + endif + H5Z_ZFP_PLUGIN := $(H5Z_ZFP_BASE)/plugin + H5Z_ZFP_VERSINFO := $(shell grep '^\#define H5Z_FILTER_ZFP_VERSION_[MP]' $(H5Z_ZFP_BASE)/H5Zzfp_plugin.h | cut -d' ' -f3 | tr '\n' '.' | cut -d'.' -f-3 2>/dev/null) diff --git a/var/spack/repos/builtin/packages/h5z-zfp/config.make.patch b/var/spack/repos/builtin/packages/h5z-zfp/config.make.patch new file mode 100644 index 00000000000000..4879a1b755cb96 --- /dev/null +++ b/var/spack/repos/builtin/packages/h5z-zfp/config.make.patch @@ -0,0 +1,46 @@ +diff --git a/config.make b/config.make +index d782bd1..1c53ab8 100644 +--- a/config.make ++++ b/config.make +@@ -128,18 +128,37 @@ ZFP_INC = $(ZFP_HOME)/inc + else + ZFP_INC = $(ZFP_HOME)/include + endif ++ifeq ($(wildcard $(ZFP_HOME)/lib),) ++ZFP_LIB = $(ZFP_HOME)/lib64 ++else + ZFP_LIB = $(ZFP_HOME)/lib ++endif ++ ++# Check if specified individually the HDF5 include directory, ++# library directory and bin directory separated by commas, i.e. HDF5_HOME=INC,LIB,BIN + +-HDF5_INC = $(HDF5_HOME)/include +-HDF5_LIB = $(HDF5_HOME)/lib +-HDF5_BIN = $(HDF5_HOME)/bin ++ifneq (,$(findstring ",",$(HDF5_HOME))) ++ HDF5_INC = $(shell echo $(HDF5_HOME) | awk -F'[,]' '{print $$1}') ++ HDF5_LIB = $(shell echo $(HDF5_HOME) | awk -F'[,]' '{print $$2}') ++ HDF5_BIN = $(shell echo $(HDF5_HOME) | awk -F'[,]' '{print $$3}') ++ MAKEVARS = ++else ++ HDF5_INC = $(HDF5_HOME)/include ++ ifeq ($(wildcard $(HDF5_HOME)/lib),) ++ HDF5_LIB = $(HDF5_HOME)/lib64 ++ else ++ HDF5_LIB = $(HDF5_HOME)/lib ++ endif ++ HDF5_BIN = $(HDF5_HOME)/bin ++ MAKEVARS = HDF5_HOME=$(HDF5_HOME) ++endif + + ifeq ($(PREFIX),) + PREFIX := $(shell pwd)/install + endif + INSTALL ?= install + +-MAKEVARS = ZFP_HOME=$(ZFP_HOME) HDF5_HOME=$(HDF5_HOME) PREFIX=$(PREFIX) ++MAKEVARS += ZFP_HOME=$(ZFP_HOME) PREFIX=$(PREFIX) + + .SUFFIXES: + .SUFFIXES: .c .F90 .h .o .mod diff --git a/var/spack/repos/builtin/packages/h5z-zfp/fj.patch b/var/spack/repos/builtin/packages/h5z-zfp/fj.patch new file mode 100644 index 00000000000000..fd3ff5c76d06c7 --- /dev/null +++ b/var/spack/repos/builtin/packages/h5z-zfp/fj.patch @@ -0,0 +1,23 @@ +--- spack-src/config.make.org 2022-02-01 18:43:23.000000000 +0900 ++++ spack-src/config.make 2022-02-01 18:42:54.000000000 +0900 +@@ -106,6 +106,11 @@ + SOEXT ?= so + SHFLAG ?= -qmkshrobj + PREPATH = -Wl,-R, ++else ifneq ($(findstring fcc, $(CC)),) ++ CFLAGS += -KPIC ++ SOEXT ?= so ++ SHFLAG ?= -shared ++ PREPATH = -Wl,-rpath, + endif + + ifneq ($(findstring gfortran, $(FC)),) +@@ -118,6 +123,8 @@ + FCFLAGS += -qpic + else ifneq ($(findstring bgxlf_r, $(FC)),) + FCFLAGS += -qpic ++else ifneq ($(findstring frt, $(FC)),) ++ FCFLAGS += -KPIC + else ifneq ($(findstring f77, $(FC)),) + # some makefile versions set FC=f77 if FC is not set + FC = diff --git a/var/spack/repos/builtin/packages/h5z-zfp/package.py b/var/spack/repos/builtin/packages/h5z-zfp/package.py index ad4756711dbd43..70820a629b3e7f 100644 --- a/var/spack/repos/builtin/packages/h5z-zfp/package.py +++ b/var/spack/repos/builtin/packages/h5z-zfp/package.py @@ -12,27 +12,42 @@ class H5zZfp(MakefilePackage): homepage = "https://h5z-zfp.readthedocs.io/en/latest" git = "https://github.com/LLNL/H5Z-ZFP.git" + url = "https://github.com/LLNL/H5Z-ZFP/archive/refs/tags/v1.0.1.tar.gz" version('develop', branch='master') - version('0.8.0', commit='af165c4') - version('0.7.0', commit='58ac811') + version('1.0.1', sha256='b9ed91dab8e2ef82dc6706b4242c807fb352875e3b21c217dd00782dd1a22b24') + version('0.8.0', sha256='a5eb089191369a5e929c51ec9e5da107afaee39c6ab3b7ad693c454319ab9217') + version('0.7.0', sha256='f728b0bcb9e9cf8bafe05909ab02fec39415635d275e98b661176f69d34f87b3') variant('fortran', default=True, description='Enable Fortran support') depends_on('hdf5+fortran', when='+fortran') depends_on('hdf5', when='~fortran') + depends_on('mpi', when='^hdf5+mpi') depends_on('zfp bsws=8') + patch('https://github.com/LLNL/H5Z-ZFP/commit/983a1870cefff5fdb643898a14eda855c2c231e4.patch?full_index=1', + sha256='07a53b8b0d4c1df62a3f9f21b30ad0eb90f26b38eb6cacc0de6482fd8f5daea2', when='@1.0.1') + patch('config.make.patch', when='@0.7.0:0.8.0') + patch('config.make.0.7.0.patch', when='@0.7.0') + patch('Makefile.0.7.0.patch', when='@0.7.0') + patch('fj.patch', when='@0.7.0: %fj') + @property def make_defs(self): + cc = spack_cc + fc = spack_fc + if '^hdf5+mpi' in self.spec: + cc = self.spec['mpi'].mpicc + fc = self.spec['mpi'].mpifc make_defs = [ 'PREFIX=%s' % prefix, - 'CC=%s' % spack_cc, + 'CC=%s' % cc, 'HDF5_HOME=%s' % self.spec['hdf5'].prefix, 'ZFP_HOME=%s' % self.spec['zfp'].prefix] - if '+fortran' in self.spec and spack_fc: - make_defs += ['FC=%s' % spack_fc] + if '+fortran' in self.spec and fc: + make_defs += ['FC=%s' % fc] else: make_defs += ['FC='] diff --git a/var/spack/repos/builtin/packages/hadoop-xrootd/package.py b/var/spack/repos/builtin/packages/hadoop-xrootd/package.py new file mode 100644 index 00000000000000..1a7838d6a66ae6 --- /dev/null +++ b/var/spack/repos/builtin/packages/hadoop-xrootd/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2022 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 import * + + +class HadoopXrootd(MavenPackage): + """Connector between Hadoop and XRootD protocols (EOS compatible).""" + + homepage = "https://gitlab.cern.ch/db/hadoop-xrootd" + url = "https://lcgpackages.web.cern.ch/tarFiles/sources/hadoop-xrootd-v1.0.7.tar.gz" + + maintainers = ['haralmha'] + + version('1.0.7', sha256='9a129dc14b3dc139aa4da7543f6392a5c80b41fea6bb9f6cd27db5acf6f5471f') + + depends_on('hadoop') + depends_on('xrootd') + + def build_args(self): + xrootd_prefix = self.spec['xrootd'].prefix + return [ + '-Dxrootd.include.path={0}/include/xrootd'.format(xrootd_prefix) + ] diff --git a/var/spack/repos/builtin/packages/hbase/package.py b/var/spack/repos/builtin/packages/hbase/package.py index 3c3af42dfbc7c3..cb430f04028470 100644 --- a/var/spack/repos/builtin/packages/hbase/package.py +++ b/var/spack/repos/builtin/packages/hbase/package.py @@ -18,13 +18,14 @@ class Hbase(Package): list_url = "https://archive.apache.org/dist/hbase" list_depth = 1 + version('2.4.9', sha256='ed282a165fe0910b27d143f3ea21d552110bc155fd5456250a05dc51b0f0b6bd') version('2.2.5', sha256='25d08f8f038d9de5beb43dfb0392e8a8b34eae7e0f2670d6c2c172abc3855194') version('2.2.4', sha256='ec91b628352931e22a091a206be93061b6bf5364044a28fb9e82f0023aca3ca4') version('2.2.3', sha256='ea8fa72aa6220e038e30bd7c439d181b10bd7225383f7f2d224ebb5f5397310a') version('2.2.2', sha256='97dcca3a031925a379a0ee6bbfb6007533fb4fdb982c23345e5fc04d6c52bebc') version('2.1.8', sha256='d8296e8405b1c39c73f0dd03fc6b4d2af754035724168fd56e8f2a0ff175ad90') - depends_on('java@8', type='run') + depends_on('java@8:', type='run') def install(self, spec, prefix): install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/hdf5-vol-log/package.py b/var/spack/repos/builtin/packages/hdf5-vol-log/package.py index 0a4c6d59db6cdd..edd8420ec876ca 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-log/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-log/package.py @@ -13,9 +13,11 @@ class Hdf5VolLog(AutotoolsPackage): homepage = 'https://github.com/DataLib-ECP/vol-log-based' url = 'https://github.com/DataLib-ECP/vol-log-based' git = 'https://github.com/DataLib-ECP/vol-log-based.git' - maintainers = ['hyoklee'] + maintainers = ['hyoklee', 'lrknox'] - version('master', commit='28b854e50c53166010d97eccdc23f7f3ef6a5b03') + version('master-1.1', branch='master') + + version('1.1.0', commit='ca146fa7d320ec5c0b397669b330c78fceeabb57') depends_on('hdf5@1.13.0:') depends_on('autoconf', type='build') diff --git a/var/spack/repos/builtin/packages/hdf5/fortran-kinds-2.patch b/var/spack/repos/builtin/packages/hdf5/fortran-kinds-2.patch new file mode 100644 index 00000000000000..caee520103e773 --- /dev/null +++ b/var/spack/repos/builtin/packages/hdf5/fortran-kinds-2.patch @@ -0,0 +1,24 @@ +From 598df49b738fd99df9f2671e4e967fd9c33ae8a9 Mon Sep 17 00:00:00 2001 +From: Seth R Johnson +Date: Wed, 16 Feb 2022 20:38:03 -0500 +Subject: [PATCH] Close file to work around GCC11.2/macOS12 bug + +--- + m4/aclocal_fc.f90 | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/m4/aclocal_fc.f90 b/m4/aclocal_fc.f90 +index e9a11c0ab5..bfda49aa40 100644 +--- a/m4/aclocal_fc.f90 ++++ b/m4/aclocal_fc.f90 +@@ -151,6 +151,7 @@ PROGRAM FC_AVAIL_KINDS + WRITE(8,'(I0)') max_decimal_prec + WRITE(8,'(I0)') num_ikinds + WRITE(8,'(I0)') num_rkinds ++ CLOSE(8) + END PROGRAM FC_AVAIL_KINDS + !---- END ----- Determine the available KINDs for REALs and INTEGERs + +-- +2.32.0 + diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 47af3ea830733c..72f2494a5a6a6f 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -36,32 +36,33 @@ class Hdf5(CMakePackage): version('develop-1.8', branch='hdf5_1_8') # Odd versions are considered experimental releases + version('1.13.1', sha256='051655873105112f7aeccd5f59ab21f35f7f4907f06921ae61aaf1ef1c71fd53') version('1.13.0', sha256='3049faf900f0c52e09ea4cddfb83af057615f2fc1cc80eb5202dd57b09820115') # Even versions are maintenance versions version('1.12.1', sha256='79c66ff67e666665369396e9c90b32e238e501f345afd2234186bfb8331081ca', preferred=True) - version('1.12.0', sha256='a62dcb276658cb78e6795dd29bf926ed7a9bc4edf6e77025cd2c689a8f97c17a') - version('1.10.8', sha256='d341b80d380dd763753a0ebe22915e11e87aac4e44a084a850646ff934d19c80') - version('1.10.7', sha256='7a1a0a54371275ce2dfc5cd093775bb025c365846512961e7e5ceaecb437ef15') - version('1.10.6', sha256='5f9a3ee85db4ea1d3b1fa9159352aebc2af72732fc2f58c96a3f0768dba0e9aa') - version('1.10.5', sha256='6d4ce8bf902a97b050f6f491f4268634e252a63dadd6656a1a9be5b7b7726fa8') - version('1.10.4', sha256='8f60dc4dd6ab5fcd23c750d1dc5bca3d0453bdce5c8cdaf0a4a61a9d1122adb2') - version('1.10.3', sha256='b600d7c914cfa80ae127cd1a1539981213fee9994ac22ebec9e3845e951d9b39') - version('1.10.2', sha256='bfec1be8c366965a99812cf02ddc97e4b708c1754fccba5414d4adccdc073866') - version('1.10.1', sha256='048a9d149fb99aaa1680a712963f5a78e9c43b588d0e79d55e06760ec377c172') - version('1.10.0-patch1', sha256='6e78cfe32a10e6e0629393cdfddf6cfa536571efdaf85f08e35326e1b4e9eff0') - version('1.10.0', sha256='81f6201aba5c30dced5dcd62f5d5477a2790fd5850e02ac514ca8bf3e2bb375a') - version('1.8.22', sha256='8406d96d9355ef8961d2739fb8fd5474ad4cdf52f3cfac657733defd9709bfaa') - version('1.8.21', sha256='87d8c82eba5cf766d97cd06c054f4639c1049c4adeaa3a79f77f8bd374f80f37') - version('1.8.19', sha256='a4335849f19fae88c264fd0df046bc321a78c536b2548fc508627a790564dc38') - version('1.8.18', sha256='cdb195ad8d9e6782acf24b2488061289f615628c2ccda8457b0a0c3fb7a8a063') - version('1.8.17', sha256='d9cda297ee76ade9881c4208987939250d397bae6252d0ccb66fa7d24d67e263') - version('1.8.16', sha256='ed17178abd9928a7237f30370189ba767b9e39e0db45917c2ac4665eb9cb4771') - version('1.8.15', sha256='4e963216b7d32469596bc1321a8c3f6e0c278dcbbdb7be6414c63c081b34c275') - version('1.8.14', sha256='1dbefeeef7f591897c632b2b090db96bb8d35ad035beaa36bc39cb2bc67e0639') - version('1.8.13', sha256='82f6b38eec103b4fccfbf14892786e0c27a8135d3252d8601cf5bf20066d38c1') - version('1.8.12', sha256='b5cccea850096962b5fd9e96f22c4f47d2379224bb41130d9bc038bb6c37dfcb') - version('1.8.10', sha256='4813b79c5fb8701a625b9924b8203bc7154a77f9b826ad4e034144b4056a160a') + version('1.12.0', sha256='a62dcb276658cb78e6795dd29bf926ed7a9bc4edf6e77025cd2c689a8f97c17a', preferred=True) + version('1.10.8', sha256='d341b80d380dd763753a0ebe22915e11e87aac4e44a084a850646ff934d19c80', preferred=True) + version('1.10.7', sha256='7a1a0a54371275ce2dfc5cd093775bb025c365846512961e7e5ceaecb437ef15', preferred=True) + version('1.10.6', sha256='5f9a3ee85db4ea1d3b1fa9159352aebc2af72732fc2f58c96a3f0768dba0e9aa', preferred=True) + version('1.10.5', sha256='6d4ce8bf902a97b050f6f491f4268634e252a63dadd6656a1a9be5b7b7726fa8', preferred=True) + version('1.10.4', sha256='8f60dc4dd6ab5fcd23c750d1dc5bca3d0453bdce5c8cdaf0a4a61a9d1122adb2', preferred=True) + version('1.10.3', sha256='b600d7c914cfa80ae127cd1a1539981213fee9994ac22ebec9e3845e951d9b39', preferred=True) + version('1.10.2', sha256='bfec1be8c366965a99812cf02ddc97e4b708c1754fccba5414d4adccdc073866', preferred=True) + version('1.10.1', sha256='048a9d149fb99aaa1680a712963f5a78e9c43b588d0e79d55e06760ec377c172', preferred=True) + version('1.10.0-patch1', sha256='6e78cfe32a10e6e0629393cdfddf6cfa536571efdaf85f08e35326e1b4e9eff0', preferred=True) + version('1.10.0', sha256='81f6201aba5c30dced5dcd62f5d5477a2790fd5850e02ac514ca8bf3e2bb375a', preferred=True) + version('1.8.22', sha256='8406d96d9355ef8961d2739fb8fd5474ad4cdf52f3cfac657733defd9709bfaa', preferred=True) + version('1.8.21', sha256='87d8c82eba5cf766d97cd06c054f4639c1049c4adeaa3a79f77f8bd374f80f37', preferred=True) + version('1.8.19', sha256='a4335849f19fae88c264fd0df046bc321a78c536b2548fc508627a790564dc38', preferred=True) + version('1.8.18', sha256='cdb195ad8d9e6782acf24b2488061289f615628c2ccda8457b0a0c3fb7a8a063', preferred=True) + version('1.8.17', sha256='d9cda297ee76ade9881c4208987939250d397bae6252d0ccb66fa7d24d67e263', preferred=True) + version('1.8.16', sha256='ed17178abd9928a7237f30370189ba767b9e39e0db45917c2ac4665eb9cb4771', preferred=True) + version('1.8.15', sha256='4e963216b7d32469596bc1321a8c3f6e0c278dcbbdb7be6414c63c081b34c275', preferred=True) + version('1.8.14', sha256='1dbefeeef7f591897c632b2b090db96bb8d35ad035beaa36bc39cb2bc67e0639', preferred=True) + version('1.8.13', sha256='82f6b38eec103b4fccfbf14892786e0c27a8135d3252d8601cf5bf20066d38c1', preferred=True) + version('1.8.12', sha256='b5cccea850096962b5fd9e96f22c4f47d2379224bb41130d9bc038bb6c37dfcb', preferred=True) + version('1.8.10', sha256='4813b79c5fb8701a625b9924b8203bc7154a77f9b826ad4e034144b4056a160a', preferred=True) variant('shared', default=True, description='Builds a shared version of the library') @@ -108,6 +109,8 @@ class Hdf5(CMakePackage): conflicts('+java', when='@:1.9') # The Java wrappers cannot be built without shared libs. conflicts('+java', when='~shared') + # Fortran fails built with shared for old HDF5 versions + conflicts('+fortran', when='+shared@:1.8.15') # There are several officially unsupported combinations of the features: # 1. Thread safety is not guaranteed via high-level C-API but in some cases @@ -162,6 +165,14 @@ class Hdf5(CMakePackage): patch('fortran-kinds.patch', when='@1.10.7') + # This patch may only be needed with GCC11.2 on macOS, but it's valid for + # any of the head HDF5 versions as of 12/2021. Since it's impossible to + # tell what Fortran version is part of a mixed apple-clang toolchain on + # macOS (which is the norm), and this might be an issue for other compilers + # as well, we just apply it to all platforms. + # See https://github.com/HDFGroup/hdf5/issues/1157 + patch('fortran-kinds-2.patch', when='@1.10.8,1.12.1') + # The argument 'buf_size' of the C function 'h5fget_file_image_c' is # declared as intent(in) though it is modified by the invocation. As a # result, aggressive compilers such as Fujitsu's may do a wrong @@ -466,7 +477,25 @@ def _check_install(self): print("Checking HDF5 installation...") checkdir = "spack-check" with working_dir(checkdir, create=True): - source = r""" + # Because the release number in a develop branch is not fixed, + # only the major and minor version numbers are compared. + # Otherwise all 3 numbers are checked. + if 'develop' in str(spec.version.up_to(3)): + source = r""" +#include +#include +#include +int main(int argc, char **argv) { + unsigned majnum, minnum, relnum; + herr_t herr = H5get_libversion(&majnum, &minnum, &relnum); + assert(!herr); + printf("HDF5 version %d.%d %u.%u\n", H5_VERS_MAJOR, H5_VERS_MINOR, + majnum, minnum); + return 0; +} +""" + else: + source = r""" #include #include #include @@ -482,6 +511,12 @@ def _check_install(self): expected = """\ HDF5 version {version} {version} """.format(version=str(spec.version.up_to(3))) + if 'develop' in expected: + # Remove 'develop-' from the version in spack for checking + # version against the version in the HDF5 code. + expected = """\ +HDF5 version {version} {version} +""".format(version=str(spec.version.up_to(3)).partition("-")[2]) with open("check.c", 'w') as f: f.write(source) if '+mpi' in spec: @@ -513,6 +548,10 @@ def _check_install(self): def _test_check_versions(self): """Perform version checks on selected installed package binaries.""" spec_vers_str = 'Version {0}'.format(self.spec.version) + if 'develop' in spec_vers_str: + # Remove 'develop-' from the version in spack for checking + # version against the version in the HDF5 code. + spec_vers_str = spec_vers_str.partition("-")[2] exes = [ 'h5copy', 'h5diff', 'h5dump', 'h5format_convert', 'h5ls', diff --git a/var/spack/repos/builtin/packages/heaptrack/package.py b/var/spack/repos/builtin/packages/heaptrack/package.py index 7e1760cc237245..8ad47854115a9b 100644 --- a/var/spack/repos/builtin/packages/heaptrack/package.py +++ b/var/spack/repos/builtin/packages/heaptrack/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Heaptrack(CMakePackage): @@ -16,6 +17,11 @@ class Heaptrack(CMakePackage): version('1.1.0', sha256='bd247ac67d1ecf023ec7e2a2888764bfc03e2f8b24876928ca6aa0cdb3a07309') depends_on('boost@1.41:') + + # 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('cmake@2.8.9:', type='build') depends_on('elfutils') depends_on('libunwind') diff --git a/var/spack/repos/builtin/packages/helics/package.py b/var/spack/repos/builtin/packages/helics/package.py index 2f188884e23fe3..1e0e945c4b45e3 100644 --- a/var/spack/repos/builtin/packages/helics/package.py +++ b/var/spack/repos/builtin/packages/helics/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Helics(CMakePackage): @@ -56,6 +57,11 @@ class Helics(CMakePackage): depends_on('git', type='build', when='@master:') depends_on('cmake@3.4:', type='build') depends_on('boost@1.70:', type='build', when='+boost') + + # 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, type='build', when='+boost') depends_on('swig@3.0:', type='build', when='+swig') depends_on('libzmq@4.3:', when='+zmq') diff --git a/var/spack/repos/builtin/packages/hepmcanalysis/package.py b/var/spack/repos/builtin/packages/hepmcanalysis/package.py index 860c6c71bc6b86..168316f894c1ba 100644 --- a/var/spack/repos/builtin/packages/hepmcanalysis/package.py +++ b/var/spack/repos/builtin/packages/hepmcanalysis/package.py @@ -22,17 +22,14 @@ class Hepmcanalysis(MakefilePackage): depends_on('root') depends_on('clhep') - variant('cxxstd', - default='11', - values=('11', '14', '17'), - multi=False, - description='Use the specified C++ standard when building.') - patch('lcg.patch') - def edit(self, spec, prefix): + def patch(self): + filter_file(r"TDirectory::CurrentDirectory\(\)", + r"gDirectory", + "src/baseAnalysis.cc") filter_file(r"CXXFLAGS(.*)", r"CXXFLAGS\1 -std=c++" + - self.spec.variants['cxxstd'].value, "config.mk") + self.spec['root'].variants['cxxstd'].value, "config.mk") def setup_build_environment(self, env): env.set("HepMCdir", self.spec['hepmc'].prefix) diff --git a/var/spack/repos/builtin/packages/herwig3/package.py b/var/spack/repos/builtin/packages/herwig3/package.py index 30e5e4de57b9f8..277cff89307fc8 100644 --- a/var/spack/repos/builtin/packages/herwig3/package.py +++ b/var/spack/repos/builtin/packages/herwig3/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Herwig3(AutotoolsPackage): @@ -23,7 +24,11 @@ class Herwig3(AutotoolsPackage): depends_on('lhapdf') depends_on('lhapdfsets') depends_on('thepeg@2.2.1', when='@7.2.1') - depends_on('boost') + + # 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('python', type=('build', 'run')) depends_on('gsl') depends_on('fastjet') diff --git a/var/spack/repos/builtin/packages/herwigpp/package.py b/var/spack/repos/builtin/packages/herwigpp/package.py index 945d23a48084f8..32f3f3cf14259a 100644 --- a/var/spack/repos/builtin/packages/herwigpp/package.py +++ b/var/spack/repos/builtin/packages/herwigpp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Herwigpp(AutotoolsPackage): @@ -19,10 +20,17 @@ class Herwigpp(AutotoolsPackage): patch('herwig++-2.7.1.patch', when='@2.7.1', level=0) depends_on('gsl') - depends_on('boost') + + # 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('fastjet') depends_on('thepeg@1.9.2', when='@2.7.1') + def setup_build_environment(self, env): + env.prepend_path('LD_LIBRARY_PATH', self.spec['thepeg'].prefix.lib.ThePEG) + def configure_args(self): args = ['--with-gsl=' + self.spec['gsl'].prefix, '--with-thepeg=' + self.spec['thepeg'].prefix, diff --git a/var/spack/repos/builtin/packages/hicops/package.py b/var/spack/repos/builtin/packages/hicops/package.py new file mode 100644 index 00000000000000..ccd52af0e07fa7 --- /dev/null +++ b/var/spack/repos/builtin/packages/hicops/package.py @@ -0,0 +1,113 @@ +# Copyright 2013-2022 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 import * + + +class Hicops(CMakePackage): + """HiCOPS is a software framework for accelerating database peptide search + workflows on supercomputers. HiCOPS provided algorithm-independent + parallelizations and optimizations can be extended into new HPC database search + algorithms or scalably accelerate the existing ones. + """ + + homepage = "https://hicops.github.io/index" + git = "https://github.com/hicops/hicops.git" + maintainers = ['pcdslab', 'mhaseeb123', 'nessiecancode'] + + version('release', branch='release') + version('develop', branch='develop') + + # Build Options + variant('mpi', default=True, + description='Enable MPI support.') + variant('timemory', default=False, + description='Enable timemory interface. Requires timemory ' + 'installation.') + variant('mpip', default=False, + description='Enables the MPIP data_tracker via Timemory. ' + 'Requires timemory installation.') + variant('tailfit', default=True, + description='Use the tailfit method instead of Gumbelfit ' + 'for e-value computation.') + variant('progress', default=True, + description='Display HiCOPS progress marks.') + variant('seqlen', default='60', + description='Allowed maximum peptide sequence length.', + values=int, multi=False) + variant('qalen', default='100', + description='Maximum number of top K peaks to keep when ' + 'spectrum preprocess.', values=int, + multi=False) + variant('qchunk', default='10000', + description='Max size of each batch extracted from the ' + 'dataset.', values=int, multi=False) + variant('hyperscore', default='100', + description='Maximum allowed hyperscore computed.', + values=int, multi=False) + variant('shdpeaks', default='80', + description='Maximum shared b- or y-ions allowed.', + values=int, multi=False) + variant('cxx_std', default='14', + description='C++ standard', values=('14', '17'), + multi=False) + + depends_on('py-numpy') + depends_on('py-python-dateutil') + depends_on('py-setuptools') + depends_on('py-bottleneck') + depends_on('py-pyparsing') + depends_on('py-subprocess32') + depends_on('py-six') + depends_on('py-setuptools-scm') + depends_on('py-et-xmlfile') + depends_on('py-argparse') + depends_on('py-cython') + depends_on('py-cycler') + depends_on('py-pytz') + depends_on('py-kiwisolver') + depends_on('py-numexpr') + depends_on('py-matplotlib') + depends_on('py-jdcal') + depends_on('py-pandas') + depends_on('py-openpyxl') + depends_on('python@3.7:3.9') + depends_on('boost') + depends_on('mpich') + depends_on('git', type='build', when='@release') + depends_on('git', type='build', when='@develop') + depends_on('cmake@3.11:', type='build') + depends_on('pkgconf', type='build') + # TODO: Add timemory and mpip depends_on() + + conflicts('+timemory') + # Build failing when added. Creating a conflict as a workaround + conflicts('%gcc@:7.2.0') + conflicts('+mpip -timemory') + conflicts('+mpip -mpi') + + def setup_run_environment(self, env): + env.prepend_path('PATH', self.prefix.tools) + env.prepend_path('PATH', self.prefix.bin.tools) + env.set('HICOPS_INSTALL', self.prefix) + env.prepend_path('INCLUDE', self.prefix.include) + + def cmake_args(self): + args = [ + self.define('USE_MPI', True), + self.define('CMAKE_INSTALL_PREFIX', self.prefix), + self.define_from_variant('USE_TIMEMORY', 'timemory'), + self.define_from_variant('USE_MPIP_LIBRARY', 'mpip'), + self.define_from_variant('TAILFIT', 'tailfit'), + self.define_from_variant('PROGRESS', 'progress'), + self.define_from_variant('MAX_SEQ_LEN', 'seqlen'), + self.define_from_variant('QALEN', 'qalen'), + self.define_from_variant('QCHUNK', 'qchunk'), + self.define_from_variant('MAX_HYPERSCORE', 'hyperscore'), + self.define_from_variant('MAX_SHDPEAKS', 'shdpeaks'), + self.define_from_variant('CMAKE_CXX_STANDARD', 'cxx_std') + ] + + return args diff --git a/var/spack/repos/builtin/packages/highfive/package.py b/var/spack/repos/builtin/packages/highfive/package.py index b173b81a07990d..63d373ab2a05ca 100644 --- a/var/spack/repos/builtin/packages/highfive/package.py +++ b/var/spack/repos/builtin/packages/highfive/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Highfive(CMakePackage): @@ -28,6 +29,11 @@ class Highfive(CMakePackage): variant('mpi', default=True, description='Support MPI') depends_on('boost @1.41:', when='+boost') + + # 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, when='+boost') depends_on('hdf5') depends_on('hdf5 +mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/hiop/package.py b/var/spack/repos/builtin/packages/hiop/package.py index 0cf87c975ba007..cbe258aabe0e8c 100644 --- a/var/spack/repos/builtin/packages/hiop/package.py +++ b/var/spack/repos/builtin/packages/hiop/package.py @@ -18,6 +18,7 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): maintainers = ['ashermancinelli', 'CameronRutherford'] # Most recent tagged snapshot is the preferred version when profiling. + version('0.5.4', commit='a37a7a677884e95d1c0ad37936aef3778fc91c3e') version('0.5.3', commit='698e8d0fdc0ff9975d8714339ff8c782b70d85f9') version('0.5.2', commit='662ad76dee1f501f648a8bec9a490cb5881789e9') version('0.5.1', commit='6789bbb55824e68e428c2df1009d647af81f9cf1') @@ -64,12 +65,19 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): depends_on('magma+cuda', when='+cuda') depends_on('magma+rocm', when='+rocm') - depends_on('magma@2.5.4:', when='@0.4:+cuda') - depends_on('magma@2.6.1:', when='@0.4.6:+cuda') - depends_on('magma@2.5.4:', when='@0.4:+rocm') - depends_on('magma@2.6.1:', when='@0.4.6:+rocm') - depends_on('raja+openmp', when='+raja') + # Depends on Magma when +rocm or +cuda + magma_ver_constraints = ( + ('2.5.4', '0.4'), + ('2.6.1', '0.4.6'), + ('2.6.2', '0.5.4'), + ) + for (magma_v, hiop_v) in magma_ver_constraints: + depends_on('magma@{0}:'.format(magma_v), when='@{0}:+cuda'.format(hiop_v)) + depends_on('magma@{0}:'.format(magma_v), when='@{0}:+rocm'.format(hiop_v)) + + depends_on('raja', when='+raja') + depends_on('raja+openmp', when='+raja~cuda~rocm') depends_on('raja@0.14.0:', when='@0.5.0:+raja') depends_on('raja+cuda', when='+raja+cuda') depends_on('raja+rocm', when='+raja+rocm') @@ -98,15 +106,19 @@ def cmake_args(self): args = [] spec = self.spec - if spec.satisfies('+rocm') or spec.satisfies('+cuda'): - args.append('-DHIOP_USE_GPU=ON') - args.append('-DHIOP_USE_MAGMA=ON') + use_gpu = '+cuda' in spec or '+rocm' in spec + + if use_gpu: + args.extend([ + self.define('HIOP_USE_GPU', True), + self.define('HIOP_USE_MAGMA', True), + self.define('HIOP_MAGMA_DIR', spec['magma'].prefix), + ]) args.extend([ self.define('HIOP_BUILD_STATIC', True), self.define('LAPACK_FOUND', True), self.define('LAPACK_LIBRARIES', spec['lapack'].libs + spec['blas'].libs), - self.define('HIOP_USE_HIP', False), self.define_from_variant('HIOP_BUILD_SHARED', 'shared'), self.define_from_variant('HIOP_USE_MPI', 'mpi'), self.define_from_variant('HIOP_DEEPCHECKS', 'deepchecking'), @@ -120,6 +132,12 @@ def cmake_args(self): self.define_from_variant('HIOP_TEST_WITH_BSUB', 'jsrun'), ]) + # NOTE: If building with spack develop on a cluster, you may want to + # change the ctest launch command to use your job scheduler like so: + # + # args.append( + # self.define('HIOP_CTEST_LAUNCH_COMMAND', 'srun -t 10:00')) + if '+mpi' in spec: args.extend([ self.define('MPI_HOME', spec['mpi'].prefix), @@ -127,17 +145,34 @@ def cmake_args(self): self.define('MPI_CXX_COMPILER', spec['mpi'].mpicxx), self.define('MPI_Fortran_COMPILER', spec['mpi'].mpifc), ]) + # NOTE: On Cray platforms, libfabric is occasionally not picked up + # by Spack, causing HiOp's CMake code to fail to find MPI Fortran + # libraries. If this is the case, adding the following lines may + # resolve the issue. Searching /CMakeFiles/CMakeError.log + # for MPI Fortran errors is the fastest way to check for this error. + # + # args.append( + # self.define('MPI_Fortran_LINK_FLAGS', + # '-L/path/to/libfabric/lib64/ -lfabric')) if '+cuda' in spec: cuda_arch_list = spec.variants['cuda_arch'].value - cuda_arch = cuda_arch_list[0] - if cuda_arch != 'none': - args.extend([ - self.define('HIOP_NVCC_ARCH', 'sm_{0}'.format(cuda_arch)), - self.define('CMAKE_CUDA_ARCHITECTURES', cuda_arch), - ]) - if '+magma' in spec: - args.append(self.define('HIOP_MAGMA_DIR', spec['magma'].prefix)) + if cuda_arch_list[0] != 'none': + args.append(self.define('CMAKE_CUDA_ARCHITECTURES', cuda_arch_list)) + + # NOTE: if +rocm, some HIP CMake variables may not be set correctly. + # Namely, HIP_CLANG_INCLUDE_PATH. If the configure phase fails due to + # this variable being undefined, adding the following line typically + # resolves this issue: + # + # args.append( + # self.define('HIP_CLANG_INCLUDE_PATH', + # '/opt/rocm-X.Y.Z/llvm/lib/clang/14.0.0/include/')) + if '+rocm' in spec: + rocm_arch_list = spec.variants['amdgpu_target'].value + if rocm_arch_list[0] != 'none': + args.append(self.define('GPU_TARGETS', rocm_arch_list)) + args.append(self.define('AMDGPU_TARGETS', rocm_arch_list)) if '+kron' in spec: args.append(self.define('HIOP_UMFPACK_DIR', spec['suite-sparse'].prefix)) diff --git a/var/spack/repos/builtin/packages/hip-rocclr/package.py b/var/spack/repos/builtin/packages/hip-rocclr/package.py index 20c58ba808dd86..7d000cf4694e35 100644 --- a/var/spack/repos/builtin/packages/hip-rocclr/package.py +++ b/var/spack/repos/builtin/packages/hip-rocclr/package.py @@ -26,6 +26,8 @@ def url_for_version(self, version): return url.format(version) version('master', branch='main') + version('5.0.2', sha256='34decd84652268dde865f38e66f8fb4750a08c2457fea52ad962bced82a03e5e') + version('5.0.0', sha256='6b72faf8819628a5c109b2ade515ab9009606d10f11316f0d7e4c4c998d7f724') version('4.5.2', sha256='6581916a3303a31f76454f12f86e020fb5e5c019f3dbb0780436a8f73792c4d1') version('4.5.0', sha256='ca8d6305ff0e620d9cb69ff7ac3898917db9e9b6996a7320244b48ab6511dd8e') version('4.3.1', sha256='bda52c65f03a69a9d8ab1a118d45646d76843249fb975d67e5141e63fa3acc79') @@ -42,12 +44,13 @@ def url_for_version(self, version): variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') depends_on('cmake@3:', type='build') - depends_on('mesa18~llvm@18.3: swr=none', type='link') + depends_on('gl@4.5:', type='link') depends_on('libelf', type='link', when="@3.7.0:3.8.0") depends_on('numactl', type='link', when="@3.7.0:") for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) depends_on('comgr@' + ver, when='@' + ver) @@ -66,6 +69,8 @@ def url_for_version(self, version): # Add opencl sources thru the below for d_version, d_shasum in [ + ('5.0.2', '3edb1992ba28b4a7f82dd66fbd121f62bd859c1afb7ceb47fa856bd68feedc95'), + ('5.0.0', '2aa3a628b336461f83866c4e76225ef5338359e31f802987699d6308515ae1be'), ('4.5.2', '96b43f314899707810db92149caf518bdb7cf39f7c0ad86e98ad687ffb0d396d'), ('4.5.0', '3a163aed24619b3faf5e8ba17325bdcedd1667a904ea20914ac6bdd33fcdbca8'), ('4.3.1', '7f98f7d4707b4392f8aa7017aaca9e27cb20263428a1a81fb7ec7c552e60c4ca'), diff --git a/var/spack/repos/builtin/packages/hip/0010-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.0.patch b/var/spack/repos/builtin/packages/hip/0010-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.0.patch new file mode 100644 index 00000000000000..e2801bf47b93b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/hip/0010-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.0.patch @@ -0,0 +1,79 @@ +diff --git a/bin/hipcc b/bin/hipcc +index 7b84067..9acccc0 100755 +--- a/bin/hipcc ++++ b/bin/hipcc +@@ -605,7 +605,8 @@ if($HIP_PLATFORM eq "amd"){ + $targetsStr = $ENV{HCC_AMDGPU_TARGET}; + } elsif (not $isWindows) { + # Else try using rocm_agent_enumerator +- $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator"; ++ $ROCMINFO_PATH = $ENV{'ROCMINFO_PATH'} // $ROCM_PATH; ++ $ROCM_AGENT_ENUM = "${ROCMINFO_PATH}/bin/rocm_agent_enumerator"; + $targetsStr = `${ROCM_AGENT_ENUM} -t GPU`; + $targetsStr =~ s/\n/,/g; + } +diff --git a/hipamd/CMakeLists.txt b/hipamd/CMakeLists.txt +index 3c6ee26..39f4310 100755 +--- a/hipamd/CMakeLists.txt ++++ b/hipamd/CMakeLists.txt +@@ -88,7 +88,19 @@ string(REPLACE "-" ";" VERSION_LIST ${HIP_VERSION_PATCH_GITHASH}) + list(GET VERSION_LIST 0 HIP_VERSION_PATCH) + set(HIP_VERSION_GITDATE 0) + +-find_package(Git) ++# only look for git when we have a git repo ++if (IS_DIRECTORY "${PROJECT_SOURCE_DIR}/.git") ++ find_package(Git) ++endif() ++ ++set(HIP_PACKAGING_VERSION_PATCH "0") ++set(HIP_VERSION_GITDATE "0") ++set(HIP_VERSION_PATCH "0") ++set(HIP_VERSION_GITHASH "0") ++set(HIP_VERSION_PATCH_GITHASH "0") ++set (HIP_LIB_VERSION_PATCH "0") ++set(HIP_VERSION_BUILD_ID 0) ++set(HIP_VERSION_BUILD_NAME "") + + # FIXME: Two different version strings used. + # Below we use UNIX commands, not compatible with Windows. +@@ -136,9 +148,6 @@ if(GIT_FOUND) + else() + set(HIP_PACKAGING_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH}) + endif() +-else() +- # FIXME: Some parts depend on this being set. +- set(HIP_PACKAGING_VERSION_PATCH "0") + endif() + + ## Debian package specific variables +@@ -181,7 +190,7 @@ set (HIP_LIB_VERSION_MINOR ${HIP_VERSION_MINOR}) + if (${ROCM_PATCH_VERSION} ) + set (HIP_LIB_VERSION_PATCH ${ROCM_PATCH_VERSION}) + else () +- set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH}) ++ set (HIP_LIB_VERSION_PATCH "0") + endif () + set (HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}") + if (DEFINED ENV{ROCM_RPATH}) +diff --git a/hipamd/hip-config.cmake.in b/hipamd/hip-config.cmake.in +index 274e3f1..2d024a8 100755 +--- a/hipamd/hip-config.cmake.in ++++ b/hipamd/hip-config.cmake.in +@@ -215,7 +215,7 @@ if(HIP_RUNTIME MATCHES "rocclr") + + if(NOT WIN32) + set_target_properties(hip::device PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" ++ INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + ) + endif() +@@ -286,7 +286,6 @@ if(HIP_COMPILER STREQUAL "clang") + if(CLANGRT_BUILTINS-NOTFOUND) + message(FATAL_ERROR "clangrt builtins lib not found") + else() +- set_property(TARGET hip::host APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}") + set_property(TARGET hip::device APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}") + endif() + endif() diff --git a/var/spack/repos/builtin/packages/hip/0011-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.2.patch b/var/spack/repos/builtin/packages/hip/0011-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.2.patch new file mode 100644 index 00000000000000..9308e8635c534d --- /dev/null +++ b/var/spack/repos/builtin/packages/hip/0011-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.2.patch @@ -0,0 +1,78 @@ +diff --git a/bin/hipcc.pl b/bin/hipcc.pl +index 7b84067..9acccc0 100755 +--- a/bin/hipcc.pl ++++ b/bin/hipcc.pl +@@ -605,7 +605,8 @@ if($HIP_PLATFORM eq "amd"){ + $targetsStr = $ENV{HCC_AMDGPU_TARGET}; + } elsif (not $isWindows) { + # Else try using rocm_agent_enumerator +- $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator"; ++ $ROCMINFO_PATH = $ENV{'ROCMINFO_PATH'} // $ROCM_PATH; ++ $ROCM_AGENT_ENUM = "${ROCMINFO_PATH}/bin/rocm_agent_enumerator"; + $targetsStr = `${ROCM_AGENT_ENUM} -t GPU`; + $targetsStr =~ s/\n/,/g; + } +diff --git a/hipamd/CMakeLists.txt b/hipamd/CMakeLists.txt +index 20b45aa..d463d1a 100755 +--- a/hipamd/CMakeLists.txt ++++ b/hipamd/CMakeLists.txt +@@ -90,7 +90,18 @@ string(REPLACE "-" ";" VERSION_LIST ${HIP_VERSION_PATCH_GITHASH}) + list(GET VERSION_LIST 0 HIP_VERSION_PATCH) + set(HIP_VERSION_GITDATE 0) + +-find_package(Git) ++if (IS_DIRECTORY "${PROJECT_SOURCE_DIR}/.git") ++ find_package(Git) ++endif() ++ ++set(HIP_PACKAGING_VERSION_PATCH "0") ++set(HIP_VERSION_GITDATE "0") ++set(HIP_VERSION_PATCH "0") ++set(HIP_VERSION_GITHASH "0") ++set(HIP_VERSION_PATCH_GITHASH "0") ++set (HIP_LIB_VERSION_PATCH "0") ++set(HIP_VERSION_BUILD_ID 0) ++set(HIP_VERSION_BUILD_NAME "") + + # FIXME: Two different version strings used. + # Below we use UNIX commands, not compatible with Windows. +@@ -138,9 +149,6 @@ if(GIT_FOUND) + else() + set(HIP_PACKAGING_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH}) + endif() +-else() +- # FIXME: Some parts depend on this being set. +- set(HIP_PACKAGING_VERSION_PATCH "0") + endif() + + ## Debian package specific variables +@@ -183,7 +191,7 @@ set (HIP_LIB_VERSION_MINOR ${HIP_VERSION_MINOR}) + if (${ROCM_PATCH_VERSION} ) + set (HIP_LIB_VERSION_PATCH ${ROCM_PATCH_VERSION}) + else () +- set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH}) ++ set (HIP_LIB_VERSION_PATCH "0") + endif () + set (HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}") + if (DEFINED ENV{ROCM_RPATH}) +diff --git a/hipamd/hip-config.cmake.in b/hipamd/hip-config.cmake.in +index 274e3f1..2d024a8 100755 +--- a/hipamd/hip-config.cmake.in ++++ b/hipamd/hip-config.cmake.in +@@ -215,7 +215,7 @@ if(HIP_RUNTIME MATCHES "rocclr") + + if(NOT WIN32) + set_target_properties(hip::device PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" ++ INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + ) + endif() +@@ -286,7 +286,6 @@ if(HIP_COMPILER STREQUAL "clang") + if(CLANGRT_BUILTINS-NOTFOUND) + message(FATAL_ERROR "clangrt builtins lib not found") + else() +- set_property(TARGET hip::host APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}") + set_property(TARGET hip::device APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}") + endif() + endif() diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index b0e19373d4ef64..dec070e97e4bc2 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -16,10 +16,12 @@ class Hip(CMakePackage): homepage = "https://github.com/ROCm-Developer-Tools/HIP" git = "https://github.com/ROCm-Developer-Tools/HIP.git" - url = "https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] version('master', branch='master') + version('5.0.2', sha256='e23601e6f4f62083899ea6356fffbe88d1deb20fa61f2c970e3c0474cd8886ca') + version('5.0.0', sha256='ae12fcda2d955f04a51c9e794bdb0fa96539cda88b6de8e377850e68e7c2a781') version('4.5.2', sha256='c2113dc3c421b8084cd507d91b6fbc0170765a464b71fb0d96bb875df368f160') version('4.5.0', sha256='4026f31fb4f8050e9aa9d4294f29c3410bfb38422dbbae4236ccd65fed4d55b2') version('4.3.1', sha256='955311193819f487f9a2d64bffe07c4b8c3a0dc644dc3ad984f7c66a325bdd6f') @@ -37,13 +39,13 @@ class Hip(CMakePackage): depends_on('cmake@3:', type='build') depends_on('perl@5.10:', type=('build', 'run')) - depends_on('mesa18~llvm@18.3:') + depends_on('gl@4.5:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1']: depends_on('hip-rocclr@' + ver, when='@' + ver) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) depends_on('comgr@' + ver, when='@' + ver) @@ -57,6 +59,8 @@ class Hip(CMakePackage): # Add hip-amd sources thru the below for d_version, d_shasum in [ + ('5.0.2', '80e7268dd22eba0f2f9222932480dede1d80e56227c0168c6a0cc8e4f23d3b76'), + ('5.0.0', 'cbd95a577abfd7cbffee14a4848f7789a417c6e5e5a713f42eb75d7948abcdf9'), ('4.5.2', 'b6f35b1a1d0c466b5af28e26baf646ae63267eccc4852204db1e0c7222a39ce2'), ('4.5.0', '7b93ab64d6894ff9b5ba0be35e3ed8501d6b18a2a14223d6311d72ab8a9cdba6') ]: @@ -71,6 +75,8 @@ class Hip(CMakePackage): ) # Add opencl sources thru the below for d_version, d_shasum in [ + ('5.0.2', '3edb1992ba28b4a7f82dd66fbd121f62bd859c1afb7ceb47fa856bd68feedc95'), + ('5.0.0', '2aa3a628b336461f83866c4e76225ef5338359e31f802987699d6308515ae1be'), ('4.5.2', '96b43f314899707810db92149caf518bdb7cf39f7c0ad86e98ad687ffb0d396d'), ('4.5.0', '3a163aed24619b3faf5e8ba17325bdcedd1667a904ea20914ac6bdd33fcdbca8') ]: @@ -84,6 +90,8 @@ class Hip(CMakePackage): when='@{0}'.format(d_version) ) for d_version, d_shasum in [ + ('5.0.2', '34decd84652268dde865f38e66f8fb4750a08c2457fea52ad962bced82a03e5e'), + ('5.0.0', '6b72faf8819628a5c109b2ade515ab9009606d10f11316f0d7e4c4c998d7f724'), ('4.5.2', '6581916a3303a31f76454f12f86e020fb5e5c019f3dbb0780436a8f73792c4d1'), ('4.5.0', 'ca8d6305ff0e620d9cb69ff7ac3898917db9e9b6996a7320244b48ab6511dd8e') ]: @@ -102,7 +110,9 @@ class Hip(CMakePackage): # of the package. With the following patch we should never hit code that # uses the ROCM_PATH variable again; just to be sure we set it to an empty # string. - patch('0001-Make-it-possible-to-specify-the-package-folder-of-ro.patch', when='@3.5.0:') + patch('0001-Make-it-possible-to-specify-the-package-folder-of-ro.patch', when='@3.5.0:4.5.3') + patch('0010-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.0.patch', when='@5.0.0') + patch('0011-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.5.0.2.patch', when='@5.0.2') # See https://github.com/ROCm-Developer-Tools/HIP/pull/2141 patch('0002-Fix-detection-of-HIP_CLANG_ROOT.patch', when='@:3.9.0') @@ -112,7 +122,7 @@ class Hip(CMakePackage): patch('0003-Improve-compilation-without-git-repo.3.10.0.patch', when='@3.10.0:4.0.0') patch('0003-Improve-compilation-without-git-repo.4.1.0.patch', when='@4.1.0') patch('0003-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host.4.2.0.patch', when='@4.2.0:4.3.2') - patch('0009-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host_disabletests.4.5.0.patch', when='@4.5.0:') + patch('0009-Improve-compilation-without-git-repo-and-remove-compiler-rt-linkage-for-host_disabletests.4.5.0.patch', when='@4.5.0:4.5.3') # See https://github.com/ROCm-Developer-Tools/HIP/pull/2219 patch('0004-Drop-clang-rt-builtins-linking-on-hip-host.3.7.0.patch', when='@3.7.0:3.9.0') patch('0004-Drop-clang-rt-builtins-linking-on-hip-host.3.10.0.patch', when='@3.10.0:4.1.0') diff --git a/var/spack/repos/builtin/packages/hipblas/hipblas-link-clients-blas-5.0.0.patch b/var/spack/repos/builtin/packages/hipblas/hipblas-link-clients-blas-5.0.0.patch new file mode 100644 index 00000000000000..6c96b61943da50 --- /dev/null +++ b/var/spack/repos/builtin/packages/hipblas/hipblas-link-clients-blas-5.0.0.patch @@ -0,0 +1,26 @@ +diff --git a/clients/benchmarks/CMakeLists.txt b/clients/benchmarks/CMakeLists.txt +index f2f5428..7d5a6f8 100644 +--- a/clients/benchmarks/CMakeLists.txt ++++ b/clients/benchmarks/CMakeLists.txt +@@ -94,7 +94,7 @@ if(LINK_BLIS) + endif() + + if (NOT WIN32) +- target_link_libraries( hipblas-bench PRIVATE hipblas_fortran_client roc::hipblas cblas lapack) ++ target_link_libraries( hipblas-bench PRIVATE hipblas_fortran_client roc::hipblas cblas lapack blas) + endif() + + if(LINK_BLIS) +diff --git a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt +index 9328055..188b7bc 100644 +--- a/clients/gtest/CMakeLists.txt ++++ b/clients/gtest/CMakeLists.txt +@@ -156,7 +156,7 @@ if (NOT WIN32) + target_link_libraries( hipblas-test PRIVATE hipblas_fortran_client roc::hipblas cblas lapack) + endif() + +-target_link_libraries( hipblas-test PRIVATE roc::hipblas cblas lapack ${GTEST_LIBRARIES} ) ++target_link_libraries( hipblas-test PRIVATE roc::hipblas cblas lapack blas ${GTEST_LIBRARIES} ) + + if(LINK_BLIS) + target_link_libraries( hipblas-test PRIVATE ${BLIS_LIBRARY} ) diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index 895fb8ff7515cf..fbbe821c1f9db1 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack import * @@ -12,10 +14,13 @@ class Hipblas(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipBLAS" git = "https://github.com/ROCmSoftwarePlatform/hipBLAS.git" - url = "https://github.com/ROCmSoftwarePlatform/hipBLAS/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipBLAS/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['libhipblas.so'] + version('5.0.2', sha256='201772bfc422ecb2c50e898dccd7d3d376cf34a2b795360e34bf71326aa37646') + version('5.0.0', sha256='63cffe748ed4a86fc80f408cb9e8a9c6c55c22a2b65c0eb9a76360b97bbb9d41') version('4.5.2', sha256='82dd82a41bbadbb2a91a2a44a5d8e0d2e4f36d3078286ed4db3549b1fb6d6978') version('4.5.0', sha256='187777ed49cc7c496c897e8ba80532d458c9afbc51a960e45f96923ad896c18e') version('4.3.1', sha256='7b1f774774de5fa3d2b777e3a262328559d56165c32aa91b002505694362e7b2') @@ -36,20 +41,34 @@ class Hipblas(CMakePackage): depends_on('boost@1.64.0:1.76.0 cxxstd=14', type='test') patch('link-clients-blas.patch', when='@4.3.0:4.3.2') - patch('link-clients-blas-4.5.0.patch', when='@4.5.0:') + patch('link-clients-blas-4.5.0.patch', when='@4.5.0:4.5.2') + patch('hipblas-link-clients-blas-5.0.0.patch', when='@5.0.0:') def check(self): exe = join_path(self.build_directory, 'clients', 'staging', 'hipblas-test') self.run_test(exe) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocsolver@' + ver, when='@' + ver) depends_on('rocblas@' + ver, type='link', when='@' + ver) depends_on('comgr@' + ver, type='build', when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) + @classmethod + def determine_version(cls, lib): + match = re.search(r'lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)', + lib) + if match: + ver = '{0}.{1}.{2}'.format(int(match.group(1)), + int(match.group(2)), + int(match.group(3))) + else: + ver = None + return ver + def cmake_args(self): args = [ # Make sure find_package(HIP) finds the module. diff --git a/var/spack/repos/builtin/packages/hipcub/package.py b/var/spack/repos/builtin/packages/hipcub/package.py index 551839895c2456..8bea9b10cd4c75 100644 --- a/var/spack/repos/builtin/packages/hipcub/package.py +++ b/var/spack/repos/builtin/packages/hipcub/package.py @@ -11,10 +11,12 @@ class Hipcub(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipCUB" git = "https://github.com/ROCmSoftwarePlatform/hipCUB.git" - url = "https://github.com/ROCmSoftwarePlatform/hipCUB/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipCUB/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='22effb18f2c38d76fa379f14c9f9ee7a11987a5d1ae4a7e837af87232c8c9183') + version('5.0.0', sha256='09c4f1b88aa5f50f04043d379e4960dab556e0fbdf8e25ab03d02a07c1ff7b2f') version('4.5.2', sha256='bec9ba1a6aa0475475ee292e54807accc839ed001338275f48da13e3bfb77514') version('4.5.0', sha256='5902fae0485789f1d1cc6b8e81d9f1b39338170d3139844d5edf0d324f9694c9') version('4.3.1', sha256='20fcd34323c541c182655b7ff6dc6ff268c0127596f0d9993884621c2b14b67a') @@ -34,7 +36,8 @@ class Hipcub(CMakePackage): depends_on('numactl', type='link', when='@3.7.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocprim@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) diff --git a/var/spack/repos/builtin/packages/hipfft/package.py b/var/spack/repos/builtin/packages/hipfft/package.py index 34cc0763a04890..89f5d447d5cfd7 100644 --- a/var/spack/repos/builtin/packages/hipfft/package.py +++ b/var/spack/repos/builtin/packages/hipfft/package.py @@ -16,12 +16,14 @@ class Hipfft(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipFFT" git = "https://github.com/ROCmSoftwarePlatform/hipFFT.git" - url = "https://github.com/ROCmSoftwarePlatform/hipfft/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipfft/archive/rocm-5.0.0.tar.gz" maintainers = ['arjun-raj-kuppala', 'srekolam'] version('master', branch='master') + version('5.0.2', sha256='9ef64694f5def0d6fb98dc89e46d7a3f7d005a61348ac0b52184a3b8e84c2383') + version('5.0.0', sha256='867d0bdc6c9769c6cebc0c4594b24d5f3504157cdcef97a6a1668dd493ca6a15') version('4.5.2', sha256='32ba6a5f50cfede3777a43794371ffb1363302131d8a0382d96df90ed7bc911a') version('4.5.0', sha256='96636713bc6cdafbd5a9c1e98e816895448960c86b380fc0c3c9ffa28f670844') version('4.3.1', sha256='429cfd40415856da8f5c2c321b612800d6826ee121df5a4e6d1596cad5b51727') @@ -33,7 +35,8 @@ class Hipfft(CMakePackage): depends_on('cmake@3:', type='build') - for ver in ['4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + for ver in ['4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('rocfft@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/hipfort/package.py b/var/spack/repos/builtin/packages/hipfort/package.py index 87a7ca9b192a93..227e4bf32b45fd 100644 --- a/var/spack/repos/builtin/packages/hipfort/package.py +++ b/var/spack/repos/builtin/packages/hipfort/package.py @@ -11,10 +11,12 @@ class Hipfort(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipfort" git = "https://github.com/ROCmSoftwarePlatform/hipfort.git" - url = "https://github.com/ROCmSoftwarePlatform/hipfort/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipfort/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='fcee6e62482ab15f365681dbc12bd9ae26b0fab2f2848a3c14de8ec63004a7aa') + version('5.0.0', sha256='af0f332fec082a03ca0403618ab20d31baadf3103e3371db9edc39dc9474ef4c') version('4.5.2', sha256='14599d027b57189c6734b04ace7792d2ae5c409cf7983c0970b086fb4e634dd8') version('4.5.0', sha256='48626dfb15bb5dcb044c9e1d4dc4b0654a2cd0abfc69485aa285dc20d7f40d51') version('4.3.1', sha256='279a35edbc0c22fa930a4355e663a86adf4d0316c5b1b6b9ccc6ee5c19c8c2e4') @@ -31,7 +33,8 @@ class Hipfort(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, type='build', when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) diff --git a/var/spack/repos/builtin/packages/hipify-clang/package.py b/var/spack/repos/builtin/packages/hipify-clang/package.py index 5f263bcde79df5..57e05de86f83d0 100644 --- a/var/spack/repos/builtin/packages/hipify-clang/package.py +++ b/var/spack/repos/builtin/packages/hipify-clang/package.py @@ -12,11 +12,13 @@ class HipifyClang(CMakePackage): homepage = "https://github.com/ROCm-Developer-Tools/HIPIFY" git = "https://github.com/ROCm-Developer-Tools/HIPIFY.git" - url = "https://github.com/ROCm-Developer-Tools/HIPIFY/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/HIPIFY/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='master') + version('5.0.2', sha256='812bccfeb044483a1c7df89f45843afcb28d8146f348c792f082b693cbff3984') + version('5.0.0', sha256='06fbb3259b6d014bc24fb3c05f71026bc39ae564559d40f2ca37236044c7ba17') version('4.5.2', sha256='f0d401e634642a1d6659b9163a38661ee38da1e1aceabb1f16f78f8fce048a4e') version('4.5.0', sha256='1f6e1bd4b9d64eed67f519c453fa65b362a20583df1f35fd09d08de831f3c8de') version('4.3.1', sha256='c5754f7c2c68ea4f65cc0ffc1e8ccc30634181525b25c10817e07eaa75ca8157') @@ -34,5 +36,6 @@ class HipifyClang(CMakePackage): depends_on('cmake@3.5:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('llvm-amdgpu@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 9e105fb16938ae..af244e49c21e05 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -16,16 +16,18 @@ class Hipsolver(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipSOLVER" git = "https://github.com/ROCmSoftwarePlatform/hipSOLVER.git" - url = "https://github.com/ROCmSoftwarePlatform/hipSOLVER/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipSOLVER/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam'] + version('5.0.2', sha256='cabeada451686ed7904a452c5f8fd3776721507db1c06f426cd8d7189ff4a441') + version('5.0.0', sha256='c59a5783dbbcb6a601c0e73d85d4a64d6d2c8f46009c01cb2b9886323f11e02b') version('4.5.2', sha256='9807bf1da0da25940b546cf5d5d6064d46d837907e354e10c6eeb2ef7c296a93') version('4.5.0', sha256='ee1176e977736a6e6fcba507fe6f56fcb3cefd6ba741cceb28464ea8bc476cd8') variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') - for ver in ['4.5.0', '4.5.2']: + for ver in ['4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocblas@' + ver, when='@' + ver) depends_on('rocsolver@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/hipsparse/package.py b/var/spack/repos/builtin/packages/hipsparse/package.py index 3f4eb9c6d8ed0a..849b653975a9a4 100644 --- a/var/spack/repos/builtin/packages/hipsparse/package.py +++ b/var/spack/repos/builtin/packages/hipsparse/package.py @@ -12,10 +12,12 @@ class Hipsparse(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipSPARSE" git = "https://github.com/ROCmSoftwarePlatform/hipSPARSE.git" - url = "https://github.com/ROCmSoftwarePlatform/hipSPARSE/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipSPARSE/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + version('5.0.2', sha256='a266e8b3bbdea04617260f51b3d85cc672af6ca417cae0812d04fd9702429c47') + version('5.0.0', sha256='0a1754508e06d3a6b17593a71a3c57a3e25d3b46d88573098fda11442853196c') version('4.5.2', sha256='81ca24491fbf2bc8e5aa477a6c38776877579ac9f4241ddadeca76a579a7ebb5') version('4.5.0', sha256='1049c490fc2008d701a16d14e11004e3bc5b4da993aa48b117e3c44be5677e3c') version('4.3.1', sha256='e5757b5213b880237ae0f24616088f79c449c2955cf2133642dbbc9c655f4691') @@ -35,12 +37,13 @@ class Hipsparse(CMakePackage): depends_on('git', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('rocsparse@' + ver, when='@' + ver) for ver in ['3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocprim@' + ver, when='@' + ver) patch('e79985dccde22d826aceb3badfc643a3227979d2.patch', when='@3.5.0') diff --git a/var/spack/repos/builtin/packages/hisea/package.py b/var/spack/repos/builtin/packages/hisea/package.py index af6fc9f6212586..25f566fa6652ed 100644 --- a/var/spack/repos/builtin/packages/hisea/package.py +++ b/var/spack/repos/builtin/packages/hisea/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Hisea(MakefilePackage): @@ -16,7 +17,10 @@ class Hisea(MakefilePackage): version('2017.12.26', sha256='3c6ddfb8490a327cc5f9e45f64cd4312abc6ef5719661ce8892db8a20a1e9c5e', url='https://github.com/lucian-ilie/HISEA/tarball/39e01e98caa0f2101da806ca59306296effe789c') - depends_on('boost') + # 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) def patch(self): if self.spec.target.family == 'aarch64': diff --git a/var/spack/repos/builtin/packages/hohqmesh/package.py b/var/spack/repos/builtin/packages/hohqmesh/package.py index d14958f0b48837..298044e64535fc 100644 --- a/var/spack/repos/builtin/packages/hohqmesh/package.py +++ b/var/spack/repos/builtin/packages/hohqmesh/package.py @@ -15,6 +15,7 @@ class Hohqmesh(CMakePackage): maintainers = ['fluidnumerics-joe'] + version('1.2.1', sha256='b1b13a680c3ef6b8d6a8d05406f68c1ff641c26f69c468ccf2d7bed8d556dd7e') version('1.1.0', sha256='5fdb75157d9dc29bba55e6ae9dc2be71294754204f4f0912795532ae66aada10') version('1.0.1', sha256='8435f13c96d714a287f3c24392330047e2131d53fafe251a77eba365bd2b3141') version('1.0.0', sha256='3800e63975d0a61945508f13fb76d5e2145c0260440484252b6b81aa0bfe076d') diff --git a/var/spack/repos/builtin/packages/hpcg/package.py b/var/spack/repos/builtin/packages/hpcg/package.py index 19d9ce80e8d4d1..99111059f9018c 100644 --- a/var/spack/repos/builtin/packages/hpcg/package.py +++ b/var/spack/repos/builtin/packages/hpcg/package.py @@ -23,8 +23,8 @@ class Hpcg(AutotoolsPackage): variant('openmp', default=True, description='Enable OpenMP support') - patch('https://github.com/hpcg-benchmark/hpcg/commit/e9e0b7e6cae23e1f30dd983c2ce2d3bd34d56f75.patch', sha256='23b9de83042eb7a8207fdddcfa79ae2cc1a17e8e623e2224c7751d7c328ee482', when='%gcc@9:') - patch('https://github.com/hpcg-benchmark/hpcg/commit/e9e0b7e6cae23e1f30dd983c2ce2d3bd34d56f75.patch', sha256='23b9de83042eb7a8207fdddcfa79ae2cc1a17e8e623e2224c7751d7c328ee482', when='%aocc') + patch('https://github.com/hpcg-benchmark/hpcg/commit/e9e0b7e6cae23e1f30dd983c2ce2d3bd34d56f75.patch?full_index=1', sha256='722c13837b287e979442f8372274aa5910a290aa39f1ed1ff646116be08dcae9', when='%gcc@9:') + patch('https://github.com/hpcg-benchmark/hpcg/commit/e9e0b7e6cae23e1f30dd983c2ce2d3bd34d56f75.patch?full_index=1', sha256='722c13837b287e979442f8372274aa5910a290aa39f1ed1ff646116be08dcae9', when='%aocc') depends_on('mpi@1.1:') diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index d6a0d5062be3ff..3961446b9d9510 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -131,8 +131,8 @@ class Hpctoolkit(AutotoolsPackage): # Fix the build for old revs with gcc 10.x. patch('gcc10-enum.patch', when='@2020.01.01:2020.08 %gcc@10.0:') - patch('https://github.com/HPCToolkit/hpctoolkit/commit/511afd95b01d743edc5940c84e0079f462b2c23e.patch', - sha256='fd0fd7419f66a1feba8046cff9df7f27abce8629ee2708b8a9daa12c1b51243c', + patch('https://github.com/HPCToolkit/hpctoolkit/commit/511afd95b01d743edc5940c84e0079f462b2c23e.patch?full_index=1', + sha256='c8371b929f45dafae37d2ef17880fcfb86de893beebaec501a282bc04b61ef64', when='@2019.08.01:2021.03 %gcc@11.0:') flag_handler = AutotoolsPackage.build_system_flags diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py index 565e7053ed1fb0..303884351b6ed2 100644 --- a/var/spack/repos/builtin/packages/hpx/package.py +++ b/var/spack/repos/builtin/packages/hpx/package.py @@ -7,6 +7,7 @@ import sys from spack import * +from spack.pkg.builtin.boost import Boost class Hpx(CMakePackage, CudaPackage, ROCmPackage): @@ -83,7 +84,7 @@ class Hpx(CMakePackage, CudaPackage, ROCmPackage): # Other dependecies depends_on('hwloc') - depends_on('boost') + depends_on(Boost.with_default_variants) for cxxstd in cxxstds: depends_on( "boost cxxstd={0}".format(map_cxxstd(cxxstd)), @@ -146,6 +147,10 @@ class Hpx(CMakePackage, CudaPackage, ROCmPackage): # Patches and one-off conflicts + # Certain Asio headers don't compile with nvcc from 1.17.0 onwards with + # C++17. Starting with CUDA 11.3 they compile again. + conflicts("asio@1.17.0:", when="+cuda cxxstd=17 ^cuda@:11.2") + # Boost and HIP don't work together in certain versions: # https://github.com/boostorg/config/issues/392. Boost 1.78.0 and HPX 1.8.0 # both include a fix. diff --git a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py index 115956502ea1d4..9afcec0593eb3e 100644 --- a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py @@ -4,6 +4,8 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack import * @@ -15,12 +17,14 @@ class HsaRocrDev(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/ROCR-Runtime" git = "https://github.com/RadeonOpenCompute/ROCR-Runtime.git" - url = "https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-4.5.2.tar.gz" + url = "https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] version('master', branch='master') + version('5.0.2', sha256='94ce313f3b37e6571778dc6865d73dafa798cbaf4de63b5307382c4a2418e99f') + version('5.0.0', sha256='61644365ea2b09fa7ec22f3dbdb74f2b6b1daa34b180138da9e0c856006a373e') version('4.5.2', sha256='d99eddedce0a97d9970932b64b0bb4743e47d2740e8db0288dbda7bec3cefa80') version('4.5.0', sha256='fbf550f243dddfef46a716e360b77c43886fed3eef67215ab9dab1c82f3851ca') version('4.3.1', sha256='85fbd1645120b71635844090ce8bd9f7af0a3d1065d5fae476879f99ba0c0475') @@ -43,10 +47,11 @@ class HsaRocrDev(CMakePackage): # Note, technically only necessary when='@3.7: +image', but added to all # to work around https://github.com/spack/spack/issues/23951 depends_on('xxd', when='+image', type='build') - depends_on('libelf@0.8:', type='link') + depends_on('elf', type='link') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2', 'master']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('llvm-amdgpu@' + ver, when='@' + ver) # allow standalone rocm-device-libs (useful for aomp) @@ -61,7 +66,11 @@ class HsaRocrDev(CMakePackage): def cmake_args(self): spec = self.spec - libelf_include = spec['libelf'].prefix.include.libelf + # hsa-rocr-dev wants the directory containing the header files, but + # libelf adds an extra path (include/libelf) compared to elfutils + libelf_include = os.path.dirname( + find_headers('libelf', spec['elf'].prefix.include, recursive=True)[0]) + args = [ self.define('LIBELF_INCLUDE_DIRS', libelf_include), self.define_from_variant('BUILD_SHARED_LIBS', 'shared') diff --git a/var/spack/repos/builtin/packages/hsakmt-roct/0001-Remove-compiler-support-libraries-and-libudev-as-req.patch b/var/spack/repos/builtin/packages/hsakmt-roct/0001-Remove-compiler-support-libraries-and-libudev-as-req.patch new file mode 100644 index 00000000000000..b0a04e3e84278f --- /dev/null +++ b/var/spack/repos/builtin/packages/hsakmt-roct/0001-Remove-compiler-support-libraries-and-libudev-as-req.patch @@ -0,0 +1,34 @@ +From 423bfb21eee3f75c5a116a88f7903a7dfb9ff89c Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels +Date: Thu, 10 Feb 2022 13:50:55 +0100 +Subject: [PATCH] Remove compiler support libraries and libudev as required + dependencies + +--- + CMakeLists.txt | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 077ab51..0af642e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -187,16 +187,6 @@ target_link_libraries ( ${HSAKMT_TARGET} + ) + + target_compile_options(${HSAKMT_TARGET} PRIVATE ${DRM_CFLAGS} ${HSAKMT_C_FLAGS}) +-if(NOT DISTRO_ID MATCHES "ubuntu") +- find_library(LIBGCC NAMES libgcc_s.so.1 REQUIRED) +- message(STATUS "LIBGCC:" ${LIBGCC}) +- target_link_libraries( ${HSAKMT_TARGET} PRIVATE ${LIBGCC} ) +-else() +- find_library(UDEV NAMES libudev.so libudev.a REQUIRED) +- message(STATUS "UDEV:" ${UDEV}) +- find_package(ZLIB REQUIRED) +- target_link_libraries( ${HSAKMT_TARGET} PRIVATE ${ZLIB} ${UDEV} ) +-endif() + + ## Define default paths and packages. + if( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT ) +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/hsakmt-roct/package.py b/var/spack/repos/builtin/packages/hsakmt-roct/package.py index 30a1c10d5ab327..1b07f7738d9342 100644 --- a/var/spack/repos/builtin/packages/hsakmt-roct/package.py +++ b/var/spack/repos/builtin/packages/hsakmt-roct/package.py @@ -14,11 +14,13 @@ class HsakmtRoct(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" git = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface.git" - url = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='master') + version('5.0.2', sha256='f2a27ac18aada1dc0dba6455beb7dd7d88a4457c1917024ea372fecb03356e97') + version('5.0.0', sha256='1d803572eac0d6186260b5671268bad7513aa9433f9c2e99f14c8bf766c02122') version('4.5.2', sha256='fb8e44226b9e393baf51bfcb9873f63ce7e4fcf7ee7f530979cf51857ea4d24b') version('4.5.0', sha256='620b39959e0ee5d709b8cf6eb3cc06c8356d72838343756230c638899b10bb9a') version('4.3.1', sha256='9d0727e746d4ae6e2709e3534d91046640be511a71c027f47db25e529fe3b4d4') @@ -40,6 +42,10 @@ class HsakmtRoct(CMakePackage): depends_on('numactl') depends_on('libdrm', when='@4.5.0:') + # See https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/issues/72 + # and https://github.com/spack/spack/issues/28398 + patch('0001-Remove-compiler-support-libraries-and-libudev-as-req.patch', when='@4.5.0:') + @property def install_targets(self): if self.version == Version('3.5.0'): diff --git a/var/spack/repos/builtin/packages/hssp/package.py b/var/spack/repos/builtin/packages/hssp/package.py index 98b17147586814..13746e0ab4f06c 100644 --- a/var/spack/repos/builtin/packages/hssp/package.py +++ b/var/spack/repos/builtin/packages/hssp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Hssp(AutotoolsPackage): @@ -35,6 +36,11 @@ class Hssp(AutotoolsPackage): depends_on('m4', type='build') depends_on('boost@1.48:') + # 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) + def configure_args(self): args = [ "--with-boost=%s" % self.spec['boost'].prefix] diff --git a/var/spack/repos/builtin/packages/hto4l/package.py b/var/spack/repos/builtin/packages/hto4l/package.py new file mode 100644 index 00000000000000..4a1eeb5bfbeb7a --- /dev/null +++ b/var/spack/repos/builtin/packages/hto4l/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2022 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 import * + + +class Hto4l(MakefilePackage): + """Hto4l is an event generator for the SM Higgs decay into 4 charged leptons + up to NLOPS electroweak accuracy and in presence of dimension-6 operators.""" + + homepage = "https://www2.pv.infn.it/~hepcomplex/hto4l.html" + url = "http://www2.pv.infn.it/~hepcomplex/releases/hto4l/Hto4l-v2.02.tar.bz2" + + maintainers = ['haralmha'] + + version('2.02', sha256='1a7061689ddaf6bde1f12032479c529a9787d7b038ed55a0325398bd531aadf6') + + depends_on('gsl') + + @when('@2.02') + def patch(self): + filter_file(r'FFLAGS = -O1 -g -ffixed-line-length-none ' + + r'-fno-range-check \$\(DEF\)QUAD=0 \$\(DEF\)U77EXT=0', + 'FFLAGS = -O1 -g -ffixed-line-length-none -std=legacy ' + + '-fno-range-check $(DEF)QUAD=0 $(DEF)U77EXT=0', + 'LoopTools-2.10/makefile-lxplus') + filter_file(r'-mkdir \$\(PREFIX\)', '-mkdir -p $(PREFIX)', + 'LoopTools-2.10/makefile-lxplus') + filter_file(r'-mkdir \$\(LIBDIR\) \$\(BINDIR\) \$\(INCLUDEDIR\)', + '-mkdir -p $(LIBDIR) $(BINDIR) $(INCLUDEDIR)', + 'LoopTools-2.10/makefile-lxplus') + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('Hto4l', prefix.bin) diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index fb5fe02453a770..995f027e5b8eeb 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -32,6 +32,7 @@ class Hwloc(AutotoolsPackage): executables = ['^hwloc-bind$'] version('master', branch='master') + version('2.7.1', sha256='4cb0a781ed980b03ad8c48beb57407aa67c4b908e45722954b9730379bc7f6d5') version('2.7.0', sha256='d9b23e9b0d17247e8b50254810427ca8a9857dc868e2e3a049f958d7c66af374') version('2.6.0', sha256='9aa7e768ed4fd429f488466a311ef2191054ea96ea1a68657bc06ffbb745e59f') version('2.5.0', sha256='38aa8102faec302791f6b4f0d23960a3ffa25af3af6af006c64dbecac23f852c') @@ -40,6 +41,8 @@ class Hwloc(AutotoolsPackage): version('2.3.0', sha256='155480620c98b43ddf9ca66a6c318b363ca24acb5ff0683af9d25d9324f59836') version('2.2.0', sha256='2defba03ddd91761b858cbbdc2e3a6e27b44e94696dbfa21380191328485a433') version('2.1.0', sha256='1fb8cc1438de548e16ec3bb9e4b2abb9f7ce5656f71c0906583819fcfa8c2031') + version('2.0.4', sha256='efadca880f5a59c6d5d6f7bc354546aa6f780d77cc2e139634c3de9564e7ce1f') + version('2.0.3', sha256='64def246aaa5b3a6e411ce10932a22e2146c3031b735c8f94739534f06ad071c') version('2.0.2', sha256='27dcfe42e3fb3422b72ce48b48bf601c0a3e46e850ee72d9bdd17b5863b6e42c') version('2.0.1', sha256='f1156df22fc2365a31a3dc5f752c53aad49e34a5e22d75ed231cd97eaa437f9d') version('2.0.0', sha256='a0d425a0fc7c7e3f2c92a272ffaffbd913005556b4443e1887d2e1718d902887') diff --git a/var/spack/repos/builtin/packages/hybrid-lambda/package.py b/var/spack/repos/builtin/packages/hybrid-lambda/package.py index 25534013bff088..3ae4ded6bbe516 100644 --- a/var/spack/repos/builtin/packages/hybrid-lambda/package.py +++ b/var/spack/repos/builtin/packages/hybrid-lambda/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class HybridLambda(AutotoolsPackage): @@ -27,7 +28,11 @@ class HybridLambda(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('m4', type='build') - depends_on('boost') + + # 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('cppunit', type='test') build_directory = 'src' diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py index 00b72ff97ed4aa..9dd14c001de956 100644 --- a/var/spack/repos/builtin/packages/hydrogen/package.py +++ b/var/spack/repos/builtin/packages/hydrogen/package.py @@ -69,6 +69,8 @@ class Hydrogen(CMakePackage, CudaPackage, ROCmPackage): depends_on('cmake@3.21.0:', type='build', when='@1.5.2:') depends_on('cmake@3.17.0:', type='build', when='@:1.5.1') + depends_on('cmake@3.22.0:', type='build', when='%cce') + depends_on('mpi') depends_on('hwloc@1.11:') depends_on('hwloc +cuda +nvml', when='+cuda') @@ -146,7 +148,7 @@ def cmake_args(self): enable_gpu_fp16 = ('+cuda' in spec and '+half' in spec) args = [ - '-DCMAKE_CXX_STANDARD=14', + '-DCMAKE_CXX_STANDARD=17', '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON', '-DCMAKE_INSTALL_MESSAGE:STRING=LAZY', '-DBUILD_SHARED_LIBS:BOOL=%s' % ('+shared' in spec), @@ -166,12 +168,20 @@ def cmake_args(self): ] if '+cuda' in spec: + if self.spec.satisfies('%clang'): + for flag in self.spec.compiler_flags['cxxflags']: + if 'gcc-toolchain' in flag: + args.append('-DCMAKE_CUDA_FLAGS=-Xcompiler={0}'.format(flag)) args.append('-DCMAKE_CUDA_STANDARD=14') archs = spec.variants['cuda_arch'].value if archs != 'none': arch_str = ";".join(archs) args.append('-DCMAKE_CUDA_ARCHITECTURES=%s' % arch_str) + if (spec.satisfies('%cce') and + spec.satisfies('^cuda+allow-unsupported-compilers')): + args.append('-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler') + if '+rocm' in spec: args.extend([ '-DCMAKE_CXX_FLAGS=-std=c++17', @@ -206,8 +216,12 @@ def cmake_args(self): elif 'blas=accelerate' in spec: args.extend(['-DHydrogen_USE_ACCELERATE:BOOL=TRUE']) elif 'blas=essl' in spec: + # IF IBM ESSL is used it needs help finding the proper LAPACK libraries args.extend([ - '-DHydrogen_USE_ESSL:BOOL=%s' % ('blas=essl' in spec)]) + '-DLAPACK_LIBRARIES=%s;-llapack;-lblas' % + ';'.join('-l{0}'.format(lib) for lib in self.spec['essl'].libs.names), + '-DBLAS_LIBRARIES=%s;-lblas' % + ';'.join('-l{0}'.format(lib) for lib in self.spec['essl'].libs.names)]) if '+omp_taskloops' in spec: args.extend([ diff --git a/var/spack/repos/builtin/packages/hyperscan/package.py b/var/spack/repos/builtin/packages/hyperscan/package.py index 130e0d3951d4b0..0337f727b931e7 100644 --- a/var/spack/repos/builtin/packages/hyperscan/package.py +++ b/var/spack/repos/builtin/packages/hyperscan/package.py @@ -6,6 +6,7 @@ import platform from spack import * +from spack.pkg.builtin.boost import Boost _versions = { 'v5.2.1': { @@ -27,6 +28,9 @@ class Hyperscan(CMakePackage): if pkg: version(ver, sha256=pkg[0], url=pkg[1]) - depends_on('boost') + # 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('pcre') depends_on('ragel', type='build') diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index d4dc0d6a39dc2b..cc665b7d5c4f34 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -9,7 +9,7 @@ from spack import * -class Hypre(AutotoolsPackage, CudaPackage): +class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage): """Hypre is a library of high performance preconditioners that features parallel multigrid methods for both structured and unstructured grid problems.""" @@ -24,6 +24,7 @@ class Hypre(AutotoolsPackage, CudaPackage): test_requires_compiler = True version('develop', branch='master') + version('2.24.0', sha256='f480e61fc25bf533fc201fdf79ec440be79bb8117650627d1f25151e8be2fdb5') version('2.23.0', sha256='8a9f9fb6f65531b77e4c319bf35bfc9d34bf529c36afe08837f56b635ac052e2') version('2.22.1', sha256='c1e7761b907c2ee0098091b69797e9be977bff8b7fd0479dc20cad42f45c4084') version('2.22.0', sha256='2c786eb5d3e722d8d7b40254f138bef4565b2d4724041e56a8fa073bda5cfbb5') @@ -92,7 +93,9 @@ class Hypre(AutotoolsPackage, CudaPackage): depends_on('superlu-dist', when='+superlu-dist+mpi') conflicts('+cuda', when='+int64') - conflicts('+unified-memory', when='~cuda') + conflicts('+rocm', when='+int64') + conflicts('+rocm', when='@:2.20') + conflicts('+unified-memory', when='~cuda~rocm') conflicts('+gptune', when='~mpi') # Patch to build shared libraries on Darwin does not apply to @@ -139,6 +142,10 @@ def configure_args(self): if '+fortran' in spec: os.environ['F77'] = spec['mpi'].mpif77 configure_args.append('--with-MPI') + configure_args.append('--with-MPI-lib-dirs={0}'.format( + spec['mpi'].prefix.lib)) + configure_args.append('--with-MPI-include={0}'.format( + spec['mpi'].prefix.include)) else: configure_args.append('--without-MPI') @@ -175,7 +182,13 @@ def configure_args(self): configure_args.extend([ '--with-cuda', '--enable-curand', + '--enable-cusparse', ]) + cuda_arch_vals = spec.variants['cuda_arch'].value + if cuda_arch_vals: + cuda_arch_sorted = list(sorted(cuda_arch_vals, reverse=True)) + cuda_arch = cuda_arch_sorted[0] + configure_args.append('--with-gpu-arch={0}'.format(cuda_arch)) # New in 2.21.0: replaces --enable-cub if '@2.21.0:' in spec: configure_args.append('--enable-device-memory-pool') @@ -187,10 +200,29 @@ def configure_args(self): configure_args.extend([ '--without-cuda', '--disable-curand', + '--disable-cusparse', ]) if '@:2.20.99' in spec: configure_args.append('--disable-cub') + if '+rocm' in spec: + configure_args.extend([ + '--with-hip', + '--enable-rocrand', + '--enable-rocsparse', + ]) + rocm_arch_vals = spec.variants['amdgpu_target'].value + if rocm_arch_vals: + rocm_arch_sorted = list(sorted(rocm_arch_vals, reverse=True)) + rocm_arch = rocm_arch_sorted[0] + configure_args.append('--with-gpu-arch={0}'.format(rocm_arch)) + else: + configure_args.extend([ + '--without-hip', + '--disable-rocrand', + '--disable-rocsparse', + ]) + if '+unified-memory' in spec: configure_args.append('--enable-unified-memory') @@ -209,10 +241,6 @@ def setup_build_environment(self, env): if '+cuda' in spec: env.set('CUDA_HOME', spec['cuda'].prefix) env.set('CUDA_PATH', spec['cuda'].prefix) - cuda_arch = spec.variants['cuda_arch'].value - if cuda_arch: - arch_sorted = list(sorted(cuda_arch, reverse=True)) - env.set('HYPRE_CUDA_SM', arch_sorted[0]) # In CUDA builds hypre currently doesn't handle flags correctly env.append_flags( 'CXXFLAGS', '-O2' if '~debug' in spec else '-g') diff --git a/var/spack/repos/builtin/packages/hztool/package.py b/var/spack/repos/builtin/packages/hztool/package.py new file mode 100644 index 00000000000000..ccbcaec9353d5a --- /dev/null +++ b/var/spack/repos/builtin/packages/hztool/package.py @@ -0,0 +1,36 @@ +# Copyright 2013-2022 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 import * + + +class Hztool(AutotoolsPackage): + """HZTool is a library of routines which will allow you to reproduce an + experimental result using the four-vector final state from Monte Carlo + generators.""" + + homepage = "https://hztool.hepforge.org" + url = "https://hztool.hepforge.org/downloads/?f=hztool-4.3.2.tar.gz" + list_url = "https://hztool.hepforge.org/downloads/" + + maintainers = ['wdconinc'] + + tags = ['hep'] + + version('4.3.2', sha256='2a8d334abd96a7a9f70d53cfbb46f35902ccd1108861333a87542f8357152fd4') + version('4.3', sha256='af1a302c16e9f0bfbfdd77a486a5f47553d81d1d049bc83cc72321ba285af264') + version('4.2', sha256='87b74b2e424a1e6bd990cc12a0bfcba15854a6451ffa20aff8dc4bdfed559160') + version('4.1', sha256='a24b5d483d1dacaa991958956e838601a426133c74885b3aa2fc27c98b42d22a') + version('4.0', sha256='e6f6955159da46156bf9182f61754a59dd14e407d40c2448e3f821d55bf963a0') + + def patch(self): + filter_file('-fno-automatic', + '-fno-automatic -fallow-argument-mismatch', + 'configure.ac') + + def configure_args(self): + args = [] + args.append('--disable-docs') + return args diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py index 55a6249082e176..124251761640e7 100644 --- a/var/spack/repos/builtin/packages/ibmisc/package.py +++ b/var/spack/repos/builtin/packages/ibmisc/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Ibmisc(CMakePackage): @@ -46,6 +47,11 @@ class Ibmisc(CMakePackage): depends_on('py-numpy', when='+python', type=('build', 'run')) depends_on('boost', when='+boost') + # 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, when='+boost') + # Build dependencies depends_on('doxygen', type='build') diff --git a/var/spack/repos/builtin/packages/icet/package.py b/var/spack/repos/builtin/packages/icet/package.py index f69636aef862ce..0684942fd0368c 100644 --- a/var/spack/repos/builtin/packages/icet/package.py +++ b/var/spack/repos/builtin/packages/icet/package.py @@ -17,10 +17,15 @@ class Icet(CMakePackage): version('develop', branch='master') version('2.1.1', sha256='04cc5b7aa5b3ec95b255febdcfc2312e553ce3db5ca305526803d5737561ec32') + variant('opengl', default=False, description="Use opengl") + variant('shared', default=True, description='Enable shared library') + depends_on('mpi') + depends_on('gl', when="+opengl") def cmake_args(self): - return ['-DICET_USE_OPENGL:BOOL=OFF'] + return [self.define_from_variant("ICET_USE_OPENGL", "opengl"), + self.define_from_variant("BUILD_SHARED_LIBS", "shared")] def setup_dependent_build_environment(self, env, dependent_spec): """Work-around for ill-placed CMake modules""" diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index 25391144f352e4..abd09a6229b19e 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -38,8 +38,8 @@ class Icu4c(AutotoolsPackage): conflicts('%gcc@:4', when='@67.1:', msg="Older GCC compilers have immature C++11 support") - patch('https://github.com/unicode-org/icu/commit/ddfc30860354cbcb78c2c0bcf800be5ab44a9e4f.patch', - sha256='dfc501d78ddfabafe09dc1a7aa70f96b799164b18f6a57d616a9d48aaf989333', + patch('https://github.com/unicode-org/icu/commit/ddfc30860354cbcb78c2c0bcf800be5ab44a9e4f.patch?full_index=1', + sha256='6be0b8068b0f5047dad7f4f6f655529304f1abbc551c93223c6f41dafc1e8acc', level=2, when='@58.0:59') configure_directory = 'source' diff --git a/var/spack/repos/builtin/packages/imp/package.py b/var/spack/repos/builtin/packages/imp/package.py index c3704f915796de..8ba8ff661dbd75 100644 --- a/var/spack/repos/builtin/packages/imp/package.py +++ b/var/spack/repos/builtin/packages/imp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Imp(CMakePackage): @@ -17,5 +18,10 @@ class Imp(CMakePackage): depends_on('python@2.7:') depends_on('swig') depends_on('boost@1.40:') + + # 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('hdf5') depends_on('eigen') diff --git a/var/spack/repos/builtin/packages/impalajit-llvm/package.py b/var/spack/repos/builtin/packages/impalajit-llvm/package.py new file mode 100644 index 00000000000000..b812da1a4fadea --- /dev/null +++ b/var/spack/repos/builtin/packages/impalajit-llvm/package.py @@ -0,0 +1,32 @@ +# Copyright 2013-2021 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 import * + + +class ImpalajitLlvm(CMakePackage): + """Impala is a calculator-like language. This is a fork of + the original ImpalaJIT project and was enhanced with LLVM JIT. + Impala acts as a backend for `easi` project. + """ + + homepage = "https://github.com/ravil-mobile/ImpalaJIT" + git = "https://github.com/ravil-mobile/ImpalaJIT" + + maintainers = ['ravil-mobile'] + + version('develop', branch='master') + version('1.0.0', tag='v1.0.0') + + variant('shared', default=True, description='build as a shared library') + + depends_on('llvm@10.0.0:11.1.0') + depends_on('z3') + + def cmake_args(self): + args = [] + args.append(self.define_from_variant('SHARED_LIB', 'shared')) + return args diff --git a/var/spack/repos/builtin/packages/intel-gtpin/package.py b/var/spack/repos/builtin/packages/intel-gtpin/package.py new file mode 100644 index 00000000000000..6b9ea61736f4c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/intel-gtpin/package.py @@ -0,0 +1,77 @@ +# Copyright 2013-2022 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 import * + + +class IntelGtpin(Package): + """Intel(R) GtPin is a dynamic binary instrumentation framework for GEN + (Intel(R) graphics) Architecture. It is a unique SW platform for + profiling a code running on GEN Execution Units (EUs). GTPin + includes a binary instrumentation engine for Intel(R) GPUs EUs, along + with an API for developing analysis tools, and many sample + tools. GTPin allows you to capture a range of dynamic profiling + data at the finest granularity of the specific GPU EU instruction. + GTPin supports both compute and graphics workloads. It operates on + regular, real-world GPU applications, as well as on pre-captured + API streams. The technology enables fast and accurate dynamic + analysis of the code that is executing on the GPU EUs. GTPin opens + up new opportunities to perform dynamic, low level workload and HW + analysis on an Intel(R) GPU, with greater efficiency than other + current solutions. Some of the GTPin capabilities are integrated + into Intel(R) VTune(TM) Profiler, Intel(R) Advisor, and the Intel(R) + Graphics Performance Analyzers (Intel(R) GPA). + + GTPin is available, along with a set of analysis tools based on + the GTPin framework. It also enables more advanced users to + develop their own analysis tools. GTPin can analyze any GPU + application. It also collects dynamic profiling data which the + application executes on the GPU. + """ + + homepage = "https://www.intel.com/content/www/us/en/developer/articles/tool/gtpin.html" + url = "https://downloadmirror.intel.com/686383/external-gtpin-2.19-linux.tar.xz" + + maintainers = ['rashawnlk'] + + version('2.19', sha256='996cdfbcf7fbe736407d063e0ed1794e51bf31a72b50cf733a407af71118a304', + url='https://downloadmirror.intel.com/686383/external-gtpin-2.19-linux.tar.xz') + + version('2.13', sha256='d715a55074147b73d51583bf684660b40f871e38e29af2bfc14dfe070fcbbada', + url='https://downloadmirror.intel.com/682776/external-gtpin-2.13-linux.tar.bz2') + version('2.12', sha256='432f1365bf4b3ff5847bb1059fb468ce6c7237ccd1489fbe8005f48e5a11e218', + url='https://downloadmirror.intel.com/682777/external-gtpin-2.12-linux.tar.bz2') + version('2.11.4', sha256='57f4d3aa67e8b7eb8a2456a4a770e60af770c599180cb2b6c3c8addd37311093', + url='https://downloadmirror.intel.com/682779/external-gtpin-2.11.4-linux.tar.bz2') + + depends_on('patchelf', type='build') + + # Gtpin only runs on linux/cray x86_64. + conflicts('platform=darwin', msg='intel-gtpin only runs on linux/cray') + conflicts('target=ppc64:', msg='intel-gtpin only runs on x86_64') + conflicts('target=ppc64le:', msg='intel-gtpin only runs on x86_64') + conflicts('target=aarch64:', msg='intel-gtpin only runs on x86_64') + + # The gtbin tar file installs into Bin, Include, Lib directories. + @property + def command(self): + return Executable(self.prefix.Bin.gtpin) + + @property + def headers(self): + return find_headers('gtpin', self.prefix.Include) + + @property + def libs(self): + return find_libraries('libgtpin', self.prefix.Lib, recursive=True) + + # The gtpin binary uses libraries from its own Lib directory but + # doesn't set rpath. + def install(self, spec, prefix): + patchelf = spec['patchelf'].command + patchelf('--set-rpath', join_path('$ORIGIN', '..', 'Lib', 'intel64'), + join_path('Bin', 'gtpin')) + + install_tree('.', prefix) 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 de7147dd352266..fda025f0e3b4fa 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py @@ -75,6 +75,8 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.set('MPIF90', join_path(dir, 'mpif90')) env.set('MPIFC', join_path(dir, 'mpifc')) + env.set('I_MPI_ROOT', self.component_path) + @property def headers(self): include_path = join_path(self.component_path, 'include') diff --git a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py index 9d5ca422d39e15..5554d8f5f13a79 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -11,7 +11,9 @@ class IntelParallelStudio(IntelPackage): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - maintainers = ['rscohn2', 'danvev'] + maintainers = ['rscohn2'] + + depends_on('patchelf', type='build') # As of 2016, the product comes in three "editions" that vary by scope. # diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index d6263a20224b82..301bfa0768a8eb 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -12,7 +12,10 @@ class Intel(IntelPackage): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - maintainers = ['rscohn2', 'danvev'] + # Robert Cohn + maintainers = ['rscohn2'] + + depends_on('patchelf', type='build') # Same as in ../intel-parallel-studio/package.py, Composer Edition, # but the version numbering in Spack differs. diff --git a/var/spack/repos/builtin/packages/ior/package.py b/var/spack/repos/builtin/packages/ior/package.py index e16ed6d60d6365..a4ed34922de014 100644 --- a/var/spack/repos/builtin/packages/ior/package.py +++ b/var/spack/repos/builtin/packages/ior/package.py @@ -33,8 +33,8 @@ class Ior(AutotoolsPackage): # The build for 3.2.0 fails if hdf5 is enabled # See https://github.com/hpc/ior/pull/124 - patch('https://github.com/hpc/ior/commit/1dbca5c293f95074f9887ddb2043fa984670fb4d.patch', - sha256='f28d6638a74a09e147e9fa870930e54a82ff580d1c232add47a67c375e255ada', + patch('https://github.com/hpc/ior/commit/1dbca5c293f95074f9887ddb2043fa984670fb4d.patch?full_index=1', + sha256='ce7fa0eabf408f9b712c478a08aa62d68737d213901707ef8cbfc3aec02e2713', when='@3.2.0 +hdf5') @run_before('autoreconf') diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index 84d2a648d16e6c..8ef7cc6280fca7 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -77,7 +77,7 @@ def configure_args(self): "coin_skip_warn_cxxflags=yes", ] - if spec.satisfies('@:3.12.10'): + if spec.satisfies('@:3.12.13'): args.extend([ "--with-lapack-lib={0}".format(lapack_lib), "--with-lapack-incdir={0}".format(lapack_dir.include), @@ -90,24 +90,35 @@ def configure_args(self): ]) if '+mumps' in spec: - # Add directory with fake MPI headers in sequential MUMPS - # install to header search path mumps_dir = spec['mumps'].prefix mumps_flags = "-ldmumps -lmumps_common -lpord -lmpiseq" mumps_libcmd = "-L%s " % mumps_dir.lib + mumps_flags - args.extend([ - "--with-mumps-incdir=%s" % mumps_dir.include, - "--with-mumps-lib=%s" % mumps_libcmd]) + if spec.satisfies('@:3.12.13'): + args.extend([ + "--with-mumps-incdir=%s" % mumps_dir.include, + "--with-mumps-lib=%s" % mumps_libcmd]) + else: + args.extend([ + "--with-mumps", + "--with-mumps-lflags=%s" % mumps_libcmd, + "--with-mumps-cflags=%s" % mumps_dir.include]) if 'coinhsl' in spec: - args.extend([ - '--with-hsl-lib=%s' % spec['coinhsl'].libs.ld_flags, - '--with-hsl-incdir=%s' % spec['coinhsl'].prefix.include]) + if spec.satisfies('@:3.12.13'): + args.extend([ + '--with-hsl-lib=%s' % spec['coinhsl'].libs.ld_flags, + '--with-hsl-incdir=%s' % spec['coinhsl'].prefix.include]) + else: + args.extend([ + "--with-hsl", + "--with-hsl-lflags=%s" % spec['coinhsl'].libs.ld_flags, + "--with-hsl-cflags=%s" % spec['coinhsl'].prefix.include]) if 'metis' in spec: - args.extend([ - '--with-metis-lib=%s' % spec['metis'].libs.ld_flags, - '--with-metis-incdir=%s' % spec['metis'].prefix.include]) + if spec.satisfies('@:3.12.13'): + args.extend([ + '--with-metis-lib=%s' % spec['metis'].libs.ld_flags, + '--with-metis-incdir=%s' % spec['metis'].prefix.include]) # The IPOPT configure file states that '--enable-debug' implies # '--disable-shared', but adding '--enable-shared' overrides diff --git a/var/spack/repos/builtin/packages/iq-tree/package.py b/var/spack/repos/builtin/packages/iq-tree/package.py index e8a7243f99b00a..3e4d926671ee9a 100644 --- a/var/spack/repos/builtin/packages/iq-tree/package.py +++ b/var/spack/repos/builtin/packages/iq-tree/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class IqTree(CMakePackage): @@ -26,7 +27,10 @@ class IqTree(CMakePackage): # Depends on Eigen3 and zlib - depends_on("boost") + # 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("eigen") depends_on("zlib") depends_on('mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/itk/package.py b/var/spack/repos/builtin/packages/itk/package.py index 739e1e6c73ea8e..1a916dfc65101f 100644 --- a/var/spack/repos/builtin/packages/itk/package.py +++ b/var/spack/repos/builtin/packages/itk/package.py @@ -24,7 +24,8 @@ class Itk(CMakePackage): maintainers = ['glennpj'] - version('5.2.1', sha256='192d41bcdd258273d88069094f98c61c38693553fd751b54f8cda308439555db') + version('5.3rc02', sha256='163aaf4a6cecd5b70ff718c1a986c746581797212fd1b629fa81f12ae4756d14') + version('5.2.1', sha256='192d41bcdd258273d88069094f98c61c38693553fd751b54f8cda308439555db', preferred=True) version('5.2.0', sha256='12c9cf543cbdd929330322f0a704ba6925a13d36d01fc721a74d131c0b82796e') version('5.1.2', sha256='f1e5a78e11125348f68f655c6b89b617c3a8b2c09f710081f621054811a70c98') version('5.1.1', sha256='39e2a63840054361b728878a35b21bbe38374682ffb4b5c4f8f8f7514dedb58e') @@ -32,6 +33,8 @@ class Itk(CMakePackage): variant('review', default=False, description='enable modules under review') variant('rtk', default=False, description='build the RTK (Reconstruction Toolkit module') + variant('minc', default=False, + description='enable support for MINC files') # TODO: This will not work if the resource is pulled from a spack mirror. # The build process will checkout the appropriate commit but it needs to be @@ -70,6 +73,8 @@ def cmake_args(self): force('ITK_USE_MKL', use_mkl), from_variant('Module_ITKReview', 'review'), from_variant('Module_RTK', 'rtk'), + from_variant('Module_ITKIOMINC', 'minc'), + from_variant('Module_ITKIOTransformMINC', 'minc') ] if not use_mkl: diff --git a/var/spack/repos/builtin/packages/iwyu/package.py b/var/spack/repos/builtin/packages/iwyu/package.py index 93418330ff4590..6ab395f8bc601f 100644 --- a/var/spack/repos/builtin/packages/iwyu/package.py +++ b/var/spack/repos/builtin/packages/iwyu/package.py @@ -3,7 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * +import archspec class Iwyu(CMakePackage): @@ -16,6 +16,7 @@ class Iwyu(CMakePackage): maintainers = ['sethrj'] + version('0.17', sha256='eca7c04f8b416b6385ed00e33669a7fa4693cd26cb72b522cde558828eb0c665') version('0.16', sha256='8d6fc9b255343bc1e5ec459e39512df1d51c60e03562985e0076036119ff5a1c') version('0.15', sha256='2bd6f2ae0d76e4a9412f468a5fa1af93d5f20bb66b9e7bf73479c31d789ac2e2') version('0.14', sha256='43184397db57660c32e3298a6b1fd5ab82e808a1f5ab0591d6745f8d256200ef') @@ -25,6 +26,7 @@ class Iwyu(CMakePackage): patch('iwyu-013-cmake.patch', when='@0.13:0.14') + depends_on('llvm+clang@13.0:13', when='@0.17') depends_on('llvm+clang@12.0:12', when='@0.16') depends_on('llvm+clang@11.0:11', when='@0.15') depends_on('llvm+clang@10.0:10', when='@0.14') @@ -32,8 +34,10 @@ class Iwyu(CMakePackage): depends_on('llvm+clang@8.0:8', when='@0.12') depends_on('llvm+clang@7.0:7', when='@0.11') - # iwyu uses X86AsmParser - depends_on('llvm targets=x86') + # iwyu uses X86AsmParser so must have the x86 target on non-x86 arch + _arches = set(str(x.family) for x in archspec.cpu.TARGETS.values()) + for _arch in _arches - set(['x86', 'x86_64']): + depends_on('llvm targets=x86', when='arch={0}:'.format(_arch)) @when('@0.14:') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/jali/package.py b/var/spack/repos/builtin/packages/jali/package.py index 859e0e658c7a80..7e204f39911caf 100644 --- a/var/spack/repos/builtin/packages/jali/package.py +++ b/var/spack/repos/builtin/packages/jali/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Jali(CMakePackage): @@ -18,7 +19,7 @@ class Jali(CMakePackage): maintainers = ['raovgarimella'] version('master', branch='master') - version('1.1.6', sha256='1321c0ca847bb74f760398a25eeb640d09f87764d3527737d9b84d7ce601d163') + version('1.1.6', sha256='a2f4e4f238c60ea78486e0c9ea5b3e2cdd9d91c2ae5ea006a1d33a12e9eafa3a') version('1.1.5', sha256='4f18f3e8b50f20a89918e99596a7226c215944d84df642bc1fb2d6c31464b95b') version('1.1.4', sha256='135ab02be1487fcdfb039613cbed630bce336d581a66468c66209db0a9d8a104') version('1.1.1', sha256='c96c000b3893ea7f15bbc886524476dd466ae145e77deedc27e412fcc3541207') @@ -32,7 +33,10 @@ class Jali(CMakePackage): depends_on('mpi') - depends_on('boost', when='@:1.1.5') + # 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, when='@:1.1.5') depends_on('mstk@3.3.5: +exodusii+parallel~use_markers partitioner=all', when='+mstk') diff --git a/var/spack/repos/builtin/packages/jogl/noxf86vm.patch b/var/spack/repos/builtin/packages/jogl/noxf86vm.patch new file mode 100644 index 00000000000000..dac2a82eafe59e --- /dev/null +++ b/var/spack/repos/builtin/packages/jogl/noxf86vm.patch @@ -0,0 +1,53 @@ +diff --git a/make/build-nativewindow.xml b/make/build-nativewindow.xml +index 6c9405cfd..140416bba 100644 +--- a/make/build-nativewindow.xml ++++ b/make/build-nativewindow.xml +@@ -446,19 +446,16 @@ + + + +- + + + + + +- + + + + + +- + + + +@@ -470,7 +467,6 @@ + + + +- + + + +diff --git a/src/nativewindow/native/x11/Xmisc.h b/src/nativewindow/native/x11/Xmisc.h +index d8868f802..fb7f5f758 100644 +--- a/src/nativewindow/native/x11/Xmisc.h ++++ b/src/nativewindow/native/x11/Xmisc.h +@@ -39,9 +39,6 @@ + #include + #include + +-#if !defined(__sun_obsolete) && !defined(_HPUX) +-#include +-#else + Bool XF86VidModeGetGammaRampSize( + Display* /* dpy */, + int /* screen */, +@@ -63,6 +60,5 @@ Bool XF86VidModeSetGammaRamp( + unsigned short* /* green array */, + unsigned short* /* blue array */ + ); +-#endif /* defined(__sun_obsolete) || defined(_HPUX) */ + + #endif /* Xmisc_h */ diff --git a/var/spack/repos/builtin/packages/jogl/package.py b/var/spack/repos/builtin/packages/jogl/package.py new file mode 100644 index 00000000000000..1f351f2e61d55f --- /dev/null +++ b/var/spack/repos/builtin/packages/jogl/package.py @@ -0,0 +1,71 @@ +# Copyright 2013-2022 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 import * + + +class Jogl(Package): + """JOGL provides full access to the APIs in the OpenGL specification + as well as nearly all vendor extensions.""" + + homepage = "https://jogamp.org/jogl/www/" + git = "https://github.com/WadeWalker/jogl.git" + + version('java-11-fixes', branch='java-11-fixes', submodules=True) + + depends_on('ant', type='build') + depends_on('java', type=('build', 'run')) + depends_on('gluegen', type=('build', 'run')) + depends_on('gl', type='link') + depends_on('glu', type='link') + depends_on('libxcursor', type='link') + + # Xfree86 Video mode extentions is deprecated + patch('noxf86vm.patch') + + phases = ['edit', 'build', 'install'] + + def edit(self, spec, prefix): + common = join_path('make', 'build-common.xml') + filter_file('../../gluegen', spec['gluegen'].prefix, common) + for target in ['nativewindow', 'jogl', 'newt']: + conf = join_path('make', 'build-{0}.xml'.format(target)) + filter_file(r'syslibset dir="\${env.TARGET_PLATFORM_ROOT}[^"]*"', + 'syslibset', conf) + filter_file('/usr/include', spec['libxcursor'].prefix.include, + conf) + + compiler_mapping = {'gcc': 'gcc', 'clang': 'clang', 'fj': 'fcc'} + + def build(self, spec, prefix): + cname = spec.compiler.name + compiler = self.compiler_mapping.get(cname, 'gcc') + ant = spec['ant'].command + antarg = ['-Dcommon.gluegen.build.done=true', + '-Dgcc.compat.compiler={0}'.format(compiler)] + with working_dir('make'): + ant(*antarg) + + def install(self, spec, prefix): + mkdirp(prefix.lib) + with working_dir(join_path('build', 'jar')): + install('*.jar', prefix.lib) + with working_dir(join_path('build', 'lib')): + install('*.so', prefix.lib) + + def setup_build_environment(self, env): + env.unset('CLASSPATH') + + def setup_run_environment(self, env): + class_paths = find(prefix.lib, '*.jar') + classpath = os.pathsep.join(class_paths) + env.prepend_path('CLASSPATH', classpath) + + def setup_dependent_build_environment(self, env, dependent_spec): + class_paths = find(prefix.lib, '*.jar') + classpath = os.pathsep.join(class_paths) + env.prepend_path('CLASSPATH', classpath) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 5223a5a3cef289..b8bda7e53517e4 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -26,6 +26,7 @@ class Julia(MakefilePackage): maintainers = ['glennpj', 'vchuravy', 'haampie'] version('master', branch='master') + version('1.7.2', sha256='0847943dd65001f3322b00c7dc4e12f56e70e98c6b798ccbd4f02d27ce161fef') version('1.7.1', sha256='17d298e50e4e3dd897246ccebd9f40ce5b89077fa36217860efaec4576aa718e') version('1.7.0', sha256='8e870dbef71bc72469933317a1a18214fd1b4b12f1080784af7b2c56177efcb4') version('1.6.5', sha256='b70ae299ff6b63a9e9cbf697147a48a31b4639476d1947cb52e4201e444f23cb') @@ -53,18 +54,22 @@ class Julia(MakefilePackage): with when('@1.7.0:1.7'): # libssh2.so.1, libpcre2-8.so.0, mbedtls.so.13, mbedcrypto.so.5, mbedx509.so.1 - # openlibm.so.3, (todo: complete this list for upperbounds...) - depends_on('llvm@12.0.1') + # openlibm.so.3 + depends_on('libblastrampoline@3.0.0:3') + depends_on('libgit2@1.1.0:1.1') + depends_on('libssh2@1.9.0:1.9') depends_on('libuv@1.42.0') + depends_on('llvm@12.0.1') depends_on('mbedtls@2.24.0:2.24') depends_on('openlibm@0.7.0:0.7', when='+openlibm') - depends_on('libblastrampoline@3.0.0:3') with when('@1.6.0:1.6'): # libssh2.so.1, libpcre2-8.so.0, mbedtls.so.13, mbedcrypto.so.5, mbedx509.so.1 # openlibm.so.3, (todo: complete this list for upperbounds...) - depends_on('llvm@11.0.1') + depends_on('libgit2@1.1.0:1.1') + depends_on('libssh2@1.9.0:1.9') depends_on('libuv@1.39.0') + depends_on('llvm@11.0.1') depends_on('mbedtls@2.24.0:2.24') depends_on('openlibm@0.7.0:0.7', when='+openlibm') @@ -118,7 +123,11 @@ class Julia(MakefilePackage): patch('use-add-rpath.patch') # Fix gfortran abi detection https://github.com/JuliaLang/julia/pull/44026 - patch('fix-gfortran.patch', when='@1.7.0:1.7.1') + patch('fix-gfortran.patch', when='@1.7.0:1.7.2') + + # Don't make julia run patchelf --set-rpath on llvm (presumably this should've + # only applied to libllvm when it's vendored by julia). + patch('revert-fix-rpath-of-libllvm.patch', when='@1.7.0:1.7') def patch(self): # The system-libwhich-libblastrampoline.patch causes a rebuild of docs as it diff --git a/var/spack/repos/builtin/packages/julia/revert-fix-rpath-of-libllvm.patch b/var/spack/repos/builtin/packages/julia/revert-fix-rpath-of-libllvm.patch new file mode 100644 index 00000000000000..5920bfff11028c --- /dev/null +++ b/var/spack/repos/builtin/packages/julia/revert-fix-rpath-of-libllvm.patch @@ -0,0 +1,31 @@ +From 34b177cef31f8e6cd9e5251f7b0a8ea07a0fa328 Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels +Date: Sat, 26 Mar 2022 10:51:55 +0100 +Subject: [PATCH] Revert "Merge pull request #42788 from + JuliaLang/vc/freebsd_fix" + +This reverts commit 57f6f27e07258c8dccd06b405259ebfe448c16e7, reversing +changes made to 13310eb4f0e40b8b2e7d77749fbf262f8029cf0f. +--- + Makefile | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/Makefile b/Makefile +index ec308a74f6..7cbb77ea06 100644 +--- a/Makefile ++++ b/Makefile +@@ -369,11 +369,6 @@ ifeq ($(BUNDLE_DEBUG_LIBS),1) + endif + endif + +- # Set rpath for LLVM.so which is `$ORIGIN/../lib` moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD +-ifneq (,$(findstring $(OS),Linux FreeBSD)) +- $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libLLVM.$(SHLIB_EXT) +-endif +- + + ifneq ($(LOADER_BUILD_DEP_LIBS),$(LOADER_INSTALL_DEP_LIBS)) + # Next, overwrite relative path to libjulia-internal in our loader if $$(LOADER_BUILD_DEP_LIBS) != $$(LOADER_INSTALL_DEP_LIBS) +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/kahip/package.py b/var/spack/repos/builtin/packages/kahip/package.py index f1def0ce86ae8b..ecedfb5412b399 100644 --- a/var/spack/repos/builtin/packages/kahip/package.py +++ b/var/spack/repos/builtin/packages/kahip/package.py @@ -23,17 +23,24 @@ class Kahip(CMakePackage): """ homepage = 'http://algo2.iti.kit.edu/documents/kahip/index.html' - url = 'https://github.com/KaHIP/KaHIP/archive/v3.11.tar.gz' + url = 'https://github.com/KaHIP/KaHIP/archive/v3.14.tar.gz' git = 'https://github.com/KaHIP/KaHIP.git' maintainers = ["ma595"] version('develop', branch='master') + version('3.14', sha256='9da04f3b0ea53b50eae670d6014ff54c0df2cb40f6679b2f6a96840c1217f242') + version('3.13', sha256='fae21778a4ce8e59ccb98e5cbb6c01f0af7e594657d21f6c0eb2c6e74398deb1') + version('3.12', sha256='df923b94b552772d58b4c1f359b3f2e4a05f7f26ab4ebd00a0ab7d2579f4c257') version('3.11', sha256='347575d48c306b92ab6e47c13fa570e1af1e210255f470e6aa12c2509a8c13e3') version('2.00', sha256='1cc9e5b12fea559288d377e8b8b701af1b2b707de8e550d0bda18b36be29d21d', url='https://algo2.iti.kit.edu/schulz/software_releases/KaHIP_2.00.tar.gz', deprecated=True) + variant('deterministic', default=False, when='@3.13:', description='Compile with the deterministic seed') + variant('metis', default=False, description='metis support') + depends_on('scons', type='build', when='@2:2.10') depends_on('argtable') depends_on('mpi') # Note: upstream package only tested on openmpi + depends_on("metis", when="@3.12: +metis") conflicts('%apple-clang') conflicts('%clang') @@ -62,8 +69,12 @@ def patch(self): for f in files: filter_file('NCORES=.*', 'NCORES={0}'.format(make_jobs), f) + @when("@3.13:") + def cmake_args(self): + return [self.define_from_variant('DETERMINISTIC_PARHIP', 'deterministic')] + @when("@:2.10") - def cmake(self, spac, prefix): + def cmake(self, spec, prefix): pass @when("@:2.10") diff --git a/var/spack/repos/builtin/packages/kakoune/package.py b/var/spack/repos/builtin/packages/kakoune/package.py new file mode 100644 index 00000000000000..ef406214f4448d --- /dev/null +++ b/var/spack/repos/builtin/packages/kakoune/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2021 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 import * + + +class Kakoune(MakefilePackage): + """mawww's experiment for a better code editor.""" + + homepage = "https://www.kakoune.org" + url = "https://github.com/mawww/kakoune/releases/download/v2021.11.08/kakoune-2021.11.08.tar.bz2" + + maintainers = ['Bambi'] + + version('2021.11.08', sha256='aa30889d9da11331a243a8f40fe4f6a8619321b19217debac8f565e06eddb5f4') + + depends_on('ncurses') + + conflicts('%gcc@:8', when='@2021.11.08', msg='GCC version must be at least 9.0!') + + build_targets = ['all', 'man'] + + def edit(self, spec, prefix): + env['PREFIX'] = prefix diff --git a/var/spack/repos/builtin/packages/kallisto/package.py b/var/spack/repos/builtin/packages/kallisto/package.py index 6bae8b89c7c374..dabdd4ce94c6cd 100644 --- a/var/spack/repos/builtin/packages/kallisto/package.py +++ b/var/spack/repos/builtin/packages/kallisto/package.py @@ -13,6 +13,7 @@ class Kallisto(CMakePackage): homepage = "https://pachterlab.github.io/kallisto" url = "https://github.com/pachterlab/kallisto/archive/v0.43.1.tar.gz" + version('0.48.0', sha256='1797ac4d1f0771e3f1f25dd7972bded735fcb43f853cf52184d3d9353a6269b0') version('0.46.2', sha256='c447ca8ddc40fcbd7d877d7c868bc8b72807aa8823a8a8d659e19bdd515baaf2') version('0.43.1', sha256='7baef1b3b67bcf81dc7c604db2ef30f5520b48d532bf28ec26331cb60ce69400') diff --git a/var/spack/repos/builtin/packages/kea/package.py b/var/spack/repos/builtin/packages/kea/package.py index 0c6d5d9495379b..45635016087895 100644 --- a/var/spack/repos/builtin/packages/kea/package.py +++ b/var/spack/repos/builtin/packages/kea/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Kea(AutotoolsPackage): @@ -19,4 +20,8 @@ class Kea(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('log4cplus') - depends_on('boost') + + # 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) diff --git a/var/spack/repos/builtin/packages/keepassxc/package.py b/var/spack/repos/builtin/packages/keepassxc/package.py index 43bafd233067c0..1fcb6bb6cda384 100644 --- a/var/spack/repos/builtin/packages/keepassxc/package.py +++ b/var/spack/repos/builtin/packages/keepassxc/package.py @@ -16,6 +16,8 @@ class Keepassxc(CMakePackage): maintainers = ['cessenat'] version('master', branch='master') + version('2.7.0', sha256='83be76890904cd6703343fa097d68bcfdd99bb525cf518fa62a7df9293026aa7') + version('2.6.6', sha256='3603b11ac39b289c47fac77fa150e05fd64b393d8cfdf5732dc3ef106650a4e2') version('2.6.4', sha256='e536e2a71c90fcf264eb831fb1a8b518ee1b03829828f862eeea748d3310f82b') variant('build_type', default='Release', @@ -53,6 +55,7 @@ class Keepassxc(CMakePackage): # These are required to build Auto-Type, Yubikey and browser integration support. depends_on('libxi', type='link', when='+autotype') depends_on('libxtst', type='link', when='+autotype') + depends_on('botan@2:', when='@2.7.0:') def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/kicad/package.py b/var/spack/repos/builtin/packages/kicad/package.py index 5203e03e6f5e22..e2bca15c3be171 100644 --- a/var/spack/repos/builtin/packages/kicad/package.py +++ b/var/spack/repos/builtin/packages/kicad/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost + class Kicad(CMakePackage): """KiCad is an open source software suite for Electronic Design @@ -24,6 +26,11 @@ class Kicad(CMakePackage): depends_on('gl') depends_on('glm') depends_on('boost@1.56:') + + # 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('oce+X11') depends_on('swig', type='build') depends_on('curl') diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 16d7d6ecd92b6f..aea3eca8b09295 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -4,6 +4,8 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os.path +from llnl.util import tty + from spack import * @@ -47,6 +49,9 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): conflicts("+rocm", when="@:3.0") conflicts("+sycl", when="@:3.3") + # https://github.com/spack/spack/issues/29052 + conflicts("@:3.5.00 +sycl", when="%dpcpp@2022.0.0") + tpls_variants = { 'hpx': [False, 'Whether to enable the HPX library'], 'hwloc': [False, 'Whether to enable the HWLOC library'], @@ -133,6 +138,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): "72": 'volta72', "75": 'turing75', "80": 'ampere80', + "86": 'ampere86', } cuda_arches = spack_cuda_arch_map.values() conflicts("+cuda", when="cuda_arch=none") @@ -288,7 +294,21 @@ def cmake_args(self): return options - test_script_relative_path = "scripts/spack_test" + test_script_relative_path = join_path('scripts', 'spack_test') + + # TODO: Replace this method and its 'get' use for cmake path with + # join_path(self.spec['cmake'].prefix.bin, 'cmake') once stand-alone + # tests can access build dependencies through self.spec['cmake']. + def cmake_bin(self, set=True): + """(Hack) Set/get cmake dependency path.""" + filepath = join_path(self.install_test_root, 'cmake_bin_path.txt') + if set: + with open(filepath, 'w') as out_file: + cmake_bin = join_path(self.spec['cmake'].prefix.bin, 'cmake') + out_file.write('{0}\n'.format(cmake_bin)) + elif os.path.isfile(filepath): + with open(filepath, 'r') as in_file: + return in_file.read().strip() @run_after('install') def setup_build_tests(self): @@ -307,28 +327,43 @@ def setup_build_tests(self): "-DSPACK_PACKAGE_INSTALL_DIR:PATH={0}".format(self.prefix)] cmake(*cmake_args) self.cache_extra_test_sources(cmake_out_path) + self.cmake_bin(set=True) - def build_tests(self): + def build_tests(self, cmake_path): """Build test.""" - cmake_path = join_path(self.install_test_root, - self.test_script_relative_path, 'out') + cmake_bin = self.cmake_bin(set=False) + + if not cmake_bin: + tty.msg('Skipping kokkos test: cmake_bin_path.txt not found') + return + cmake_args = [cmake_path, '-DEXECUTABLE_OUTPUT_PATH=' + cmake_path] - cmake(*cmake_args) - make() - def run_tests(self): + if not self.run_test(cmake_bin, + options=cmake_args, + purpose='Generate the Makefile'): + tty.warn('Skipping kokkos test: failed to generate Makefile') + return + + if not self.run_test('make', + purpose='Build test software'): + tty.warn('Skipping kokkos test: failed to build test') + + def run_tests(self, cmake_path): """Run test.""" - reason = 'Checking ability to execute.' - run_path = join_path(self.install_test_root, - self.test_script_relative_path, 'out') - self.run_test('make', [run_path, 'test'], [], installed=False, purpose=reason) + if not self.run_test('make', + options=[cmake_path, 'test'], + purpose='Checking ability to execute.'): + tty.warn('Failed to run kokkos test') def test(self): # Skip if unsupported version - cmake_path = join_path(self.install_test_root, + cmake_path = join_path(self.test_suite.current_test_cache_dir, self.test_script_relative_path, 'out') + if not os.path.exists(cmake_path): - print('Skipping smoke tests: {0} is missing'.format(cmake_path)) + tty.warn('Skipping smoke tests: {0} is missing'.format(cmake_path)) return - self.build_tests() - self.run_tests() + + self.build_tests(cmake_path) + self.run_tests(cmake_path) diff --git a/var/spack/repos/builtin/packages/krb5/package.py b/var/spack/repos/builtin/packages/krb5/package.py index cc58e4edec64b1..04b9a065d6c35c 100644 --- a/var/spack/repos/builtin/packages/krb5/package.py +++ b/var/spack/repos/builtin/packages/krb5/package.py @@ -14,6 +14,7 @@ class Krb5(AutotoolsPackage): list_url = "https://kerberos.org/dist/krb5/" list_depth = 1 + version('1.19.3', sha256='56d04863cfddc9d9eb7af17556e043e3537d41c6e545610778676cf551b9dcd0') version('1.19.2', sha256='10453fee4e3a8f8ce6129059e5c050b8a65dab1c257df68b99b3112eaa0cdf6a') version('1.18.2', sha256='c6e4c9ec1a98141c3f5d66ddf1a135549050c9fab4e9a4620ee9b22085873ae0') version('1.18.1', sha256='02a4e700f10936f937cd1a4c303cab8687a11abecc6107bd4b706b9329cd5400') @@ -26,6 +27,7 @@ class Krb5(AutotoolsPackage): depends_on('bison', type='build') depends_on('openssl@:1') + depends_on('gettext') variant( 'shared', default=True, @@ -68,3 +70,11 @@ def configure_args(self): args.append('--disable-static') return args + + def setup_build_environment(self, env): + env.prepend_path('LD_LIBRARY_PATH', self.spec['gettext'].prefix.lib) + + def flag_handler(self, name, flags): + if name == 'ldlibs': + flags.append('-lintl') + return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 3c658676e950df..fabf745a44522b 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -21,6 +21,19 @@ class Lammps(CMakePackage, CudaPackage): tags = ['ecp', 'ecp-apps'] version('master', branch='master') + version('20220107', sha256='fbf6c6814968ae0d772d7b6783079ff4f249a8faeceb39992c344969e9f1edbb') + version('20211214', sha256='9f7b1ee2394678c1a6baa2c158a62345680a952eee251783e3c246b3f12db4c9') + version('20211027', sha256='c06f682fcf9d5921ca90c857a104e90fba0fe65decaac9732745e4da49281938') + version('20210929.2', sha256='26586c1e82356b60e40359ee474818003c7788214bfe2bfe9128a3dbe5200b4d') + version('20210929.1', sha256='3b792e20864bf88b855332486996f2c540deabb4e3507e48fa4ee96ad79615ec') + version('20210929', sha256='5132f332b582be3006510562ef10bac9ef76d760f34fc08a2af556416c57cf4c') + version('20210920', sha256='e3eba96933c1dd3177143c7ac837cae69faceba196948fbad2970425db414d8c') + version('20210831', sha256='532c42576a79d72682deaf43225ca773ed9f9e35deb484a82f91905b6cba23ec') + version('20210730', sha256='c5e998c8282a835d2bcba4fceffe3cecdf9aed9bdf79fa9c945af573e632f6e7') + version('20210728', sha256='6b844d2c3f7170a59d36fbf761483aa0c63d95eda254d00fe4d10542403abe36') + version('20210702', sha256='4fdd8ca2dbde8809c0048716650b73ae1f840e22ebe24b25f6f7a499377fea57') + version('20210514', sha256='74d9c4386f2181b15a024314c42b7a0b0aaefd3b4b947aeca00fe07e5b2f3317') + version('20210408', sha256='1645147b7777de4f616b8232edf0b597868084f969c777fa0a757949c3f71f56') version('20210310', sha256='25708378dbeccf794bc5045aceb84380bf4a3ca03fc8e5d150a26ca88d371474') version('20201029', sha256='759705e16c1fedd6aa6e07d028cc0c78d73c76b76736668420946a74050c3726') version('20200721', sha256='845bfeddb7b667799a1a5dbc166b397d714c3d2720316604a979d3465b4190a9') @@ -55,9 +68,14 @@ class Lammps(CMakePackage, CudaPackage): version('20170901', sha256='5d88d4e92f4e0bb57c8ab30e0d20de556830af820223778b9967bec2184efd46') def url_for_version(self, version): - vdate = dt.datetime.strptime(str(version), "%Y%m%d") - return "https://github.com/lammps/lammps/archive/patch_{0}.tar.gz".format( - vdate.strftime("%d%b%Y").lstrip('0')) + split_ver = str(version).split('.') + vdate = dt.datetime.strptime(split_ver[0], "%Y%m%d") + if len(split_ver) < 2: + update = "" + else: + update = "_update{0}".format(split_ver[1]) + return "https://github.com/lammps/lammps/archive/patch_{0}{1}.tar.gz".format( + vdate.strftime("%d%b%Y").lstrip('0'), update) supported_packages = ['asphere', 'body', 'class2', 'colloid', 'compress', 'coreshell', 'dipole', 'granular', 'kspace', @@ -157,8 +175,8 @@ def url_for_version(self, version): patch("lib.patch", when="@20170901") patch("660.patch", when="@20170922") - patch("https://github.com/lammps/lammps/commit/562300996285fdec4ef74542383276898555af06.patch", - sha256="7e1610dad4d8203b45ca6dc2c1f97d02a40f98a5e9778f51a3dbcc30ea1dc717", + patch("https://github.com/lammps/lammps/commit/562300996285fdec4ef74542383276898555af06.patch?full_index=1", + sha256="e6f1b62bbfdc79d632f4cea98019202d0dd25aa4ae61a70df1164cb4f290df79", when="@20200721 +cuda") root_cmakelists_dir = 'cmake' @@ -179,6 +197,7 @@ def cmake_args(self): mpi_prefix, 'ON' if '+mpi' in spec else 'OFF'), self.define_from_variant('BUILD_OMP', 'openmp'), + '-DENABLE_TESTING=ON' ] if spec.satisfies('+cuda'): args.append('-DPKG_GPU=ON') diff --git a/var/spack/repos/builtin/packages/landsfcutil/package.py b/var/spack/repos/builtin/packages/landsfcutil/package.py index c27ca85a337d2c..9a6a3d1115e831 100644 --- a/var/spack/repos/builtin/packages/landsfcutil/package.py +++ b/var/spack/repos/builtin/packages/landsfcutil/package.py @@ -27,3 +27,9 @@ def setup_run_environment(self, env): env.set('LANDSFCUTIL_LIB' + suffix, lib[0]) env.set('LANDSFCUTIL_INC' + suffix, join_path(self.prefix, 'include_' + suffix)) + + def flag_handler(self, name, flags): + if self.spec.satisfies('%fj'): + if name == 'fflags': + flags.append('-Free') + return (None, None, flags) diff --git a/var/spack/repos/builtin/packages/lastz/package.py b/var/spack/repos/builtin/packages/lastz/package.py index f87845b9f8ecf7..114dd2facafbca 100644 --- a/var/spack/repos/builtin/packages/lastz/package.py +++ b/var/spack/repos/builtin/packages/lastz/package.py @@ -11,7 +11,7 @@ class Lastz(MakefilePackage): homepage = "https://lastz.github.io/lastz" url = "https://github.com/lastz/lastz/archive/1.04.00.tar.gz" - + version('1.04.15', sha256='46a5cfb1fd41911a36fce5d3a2721ebfec9146952943b302e78b0dfffddd77f8') version('1.04.03', sha256='c58ed8e37c4b0e82492b3a2b3e12447a3c40286fb8358906d19f10b0a713e9f4') version('1.04.00', sha256='a4c2c7a77430387e96dbc9f5bdc75874334c672be90f5720956c0f211abf9f5a') diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py index 40ba35214d6fa2..86c7c940bdf542 100644 --- a/var/spack/repos/builtin/packages/launchmon/package.py +++ b/var/spack/repos/builtin/packages/launchmon/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Launchmon(AutotoolsPackage): @@ -24,7 +25,11 @@ class Launchmon(AutotoolsPackage): depends_on('libgcrypt') depends_on('libgpg-error') depends_on("elf", type='link') - depends_on("boost") + + # 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("spectrum-mpi", when='arch=ppc64le') patch('launchmon-char-conv.patch', when='@1.0.2') diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index ed36e3799901dc..b27b30bebfbfb1 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -52,11 +52,9 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage): variant('distconv', default=False, description='Builds with support for spatial, filter, or channel ' 'distributed convolutions') - variant('docs', default=False, description='Builds with support for building documentation') variant('dtype', default='float', description='Type for floating point representation of weights', values=('float', 'double')) - variant('extras', default=False, description='Add python modules for LBANN related tools') variant('fft', default=False, description='Support for FFT operations') variant('half', default=False, description='Builds with support for FP16 precision data types') @@ -91,7 +89,6 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage): conflicts('~hwloc', when='+al') conflicts('~cuda', when='+nvshmem') conflicts('+cuda', when='+rocm', msg='CUDA and ROCm support are mutually exclusive') - conflicts('+extras', when='~pfe', msg='Python extras require the Python front end support') conflicts('~vision', when='@0.91:0.101') conflicts('~numpy', when='@0.91:0.101') @@ -106,8 +103,8 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage): conflicts('+gold', when='platform=darwin', msg="gold does not work on Darwin") conflicts('+lld', when='platform=darwin', msg="lld does not work on Darwin") + depends_on('cmake@3.17.0:', type='build') depends_on('cmake@3.21.0:', type='build', when='@0.103:') - depends_on('cmake@3.17.0:', type='build', when='@:0.102') # Specify the correct versions of Hydrogen depends_on('hydrogen@:1.3.4', when='@0.95:0.100') @@ -193,15 +190,19 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage): '+imgcodecs +imgproc +jpeg +png +tiff +fast-math ~cuda', when='+vision') - # Note that for Power systems we want the environment to add +powerpc - depends_on('opencv@4.1.0: +powerpc', when='+vision arch=ppc64le:') + # Note that for Power systems we want the environment to add +powerpc + # When using a GCC compiler + depends_on('opencv@4.1.0: +powerpc', when='+vision %gcc arch=ppc64le:') depends_on('cnpy', when='+numpy') depends_on('nccl', when='@0.94:0.98.2 +cuda') - depends_on('conduit@0.4.0: +hdf5~hdf5_compat', when='@0.94:0 +conduit') - depends_on('conduit@0.5.0:0.6 +hdf5~hdf5_compat', when='@0.100:0.101 +conduit') - depends_on('conduit@0.6.0: +hdf5~hdf5_compat', when='@:0.90,0.99:') + # Note that conduit defaults to +fortran +parmetis +python, none of which are + # necessary by LBANN: you may want to disable those options in your + # packages.yaml + depends_on('conduit@0.4.0: +hdf5', when='@0.94:0 +conduit') + depends_on('conduit@0.5.0:0.6 +hdf5', when='@0.100:0.101 +conduit') + depends_on('conduit@0.6.0: +hdf5', when='@:0.90,0.99:') # LBANN can use Python in two modes 1) as part of an extensible framework # and 2) to drive the front end model creation and launch @@ -215,23 +216,10 @@ class Lbann(CMakePackage, CudaPackage, ROCmPackage): extends("python", when='+pfe') depends_on('py-setuptools', type='build', when='+pfe') depends_on('py-argparse', type='run', when='@:0.90,0.99: +pfe ^python@:2.6,3.0:3.1') - depends_on('py-configparser', type='run', when='@:0.90,0.99: +pfe +extras') - depends_on('py-graphviz@0.10.1:', type='run', when='@:0.90,0.99: +pfe +extras') - depends_on('py-matplotlib@3.0.0:', type='run', when='@:0.90,0.99: +pfe +extras') - depends_on('py-numpy@1.16.0:', type=('build', 'run'), when='@:0.90,0.99: +pfe +extras') - depends_on('py-onnx@1.3.0:', type='run', when='@:0.90,0.99: +pfe +extras') - depends_on('py-pandas@0.24.1:', type='run', when='@:0.90,0.99: +pfe +extras') - depends_on('py-texttable@1.4.0:', type='run', when='@:0.90,0.99: +pfe +extras') - depends_on('py-pytest', type='test', when='@:0.90,0.99: +pfe') depends_on('py-protobuf+cpp@3.10.0', type=('build', 'run'), when='@:0.90,0.99: +pfe') depends_on('protobuf+shared@3.10.0', when='@:0.90,0.99:') - depends_on('py-breathe', type='build', when='+docs') - depends_on('py-sphinx-rtd-theme', type='build', when='+docs') - depends_on('doxygen', type='build', when='+docs') - depends_on('py-m2r', type='build', when='+docs') - depends_on('cereal') depends_on('catch2', type=('build', 'test')) depends_on('clara') @@ -324,6 +312,10 @@ def cmake_args(self): '-Dprotobuf_MODULE_COMPATIBLE=ON']) if '+cuda' in spec: + if self.spec.satisfies('%clang'): + for flag in self.spec.compiler_flags['cxxflags']: + if 'gcc-toolchain' in flag: + args.append('-DCMAKE_CUDA_FLAGS=-Xcompiler={0}'.format(flag)) if spec.satisfies('^cuda@11.0:'): args.append('-DCMAKE_CUDA_STANDARD=17') else: @@ -333,6 +325,10 @@ def cmake_args(self): arch_str = ";".join(archs) args.append('-DCMAKE_CUDA_ARCHITECTURES=%s' % arch_str) + if (spec.satisfies('%cce') and + spec.satisfies('^cuda+allow-unsupported-compilers')): + args.append('-DCMAKE_CUDA_FLAGS=-allow-unsupported-compiler') + if spec.satisfies('@:0.90') or spec.satisfies('@0.95:'): args.append( '-DHydrogen_DIR={0}/CMake/hydrogen'.format( @@ -410,6 +406,14 @@ def cmake_args(self): arch_str, cxxflags_str) ) + # IF IBM ESSL is used it needs help finding the proper LAPACK libraries + if self.spec.satisfies('^essl'): + args.extend([ + '-DLAPACK_LIBRARIES=%s;-llapack;-lblas' % + ';'.join('-l{0}'.format(lib) for lib in self.spec['essl'].libs.names), + '-DBLAS_LIBRARIES=%s;-lblas' % + ';'.join('-l{0}'.format(lib) for lib in self.spec['essl'].libs.names)]) + return args @when('@0.91:0.93') diff --git a/var/spack/repos/builtin/packages/lcgenv/package.py b/var/spack/repos/builtin/packages/lcgenv/package.py new file mode 100644 index 00000000000000..a6ecda4a67ffaa --- /dev/null +++ b/var/spack/repos/builtin/packages/lcgenv/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class Lcgenv(Package): + """This package provides environment for packages in SFT LCG releases.""" + + homepage = "https://gitlab.cern.ch/GENSER/lcgenv" + url = "https://gitlab.cern.ch/GENSER/lcgenv/-/archive/v1.3.19/lcgenv-v1.3.19.tar.gz" + + maintainers = ['haralmha'] + + version('1.3.19', sha256='b091743705cf84ff5de60487f2f73cbf9d10676577cd1d99bbde00d3616d0751') + + def install(self, spec, prefix): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/lhapdf/package.py b/var/spack/repos/builtin/packages/lhapdf/package.py index 1723b9eb22fa4c..5c5f08912d3df9 100644 --- a/var/spack/repos/builtin/packages/lhapdf/package.py +++ b/var/spack/repos/builtin/packages/lhapdf/package.py @@ -11,24 +11,30 @@ class Lhapdf(AutotoolsPackage): used for evaluating PDFs from discretised data files. """ homepage = "https://lhapdf.hepforge.org/" - url = "https://lhapdf.hepforge.org/downloads/?f=LHAPDF-6.2.3.tar.gz" + git = "https://gitlab.com/hepcedar/lhapdf" + # the tarballs from hepforge include bundled cython sources + # that may break the build when using incompatible python versions + # thus use the release tarball from gitlab that does not include lhapdf.cxx + url = "https://gitlab.com/hepcedar/lhapdf/-/archive/lhapdf-6.4.0/lhapdf-lhapdf-6.4.0.tar.gz" tags = ['hep'] - version('6.3.0', sha256='ed4d8772b7e6be26d1a7682a13c87338d67821847aa1640d78d67d2cef8b9b5d') - version('6.2.3', sha256='d6e63addc56c57b6286dc43ffc56d901516f4779a93a0f1547e14b32cfd82dd1') + version('6.4.0', sha256='155702c36df46de30c5f7fa249193a9a0eea614191de1606301e06cd8062fc29') + version('6.3.0', sha256='864468439c7662bbceed6c61c7132682ec83381a23c9c9920502fdd7329dd816') + version('6.2.3', sha256='37200a1ab70247250a141dfed7419d178f9a83bd23a4f8a38e203d4e27b41308') + + variant('python', default=True, description="Build python bindings") depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('m4', type='build') - depends_on('python', type=('build', 'run')) - depends_on('py-cython', type='build') - depends_on('py-setuptools', type='build') - - extends('python') + extends('python', when='+python') + depends_on('py-cython', type='build', when='+python') + depends_on('py-setuptools', type='build', when='+python') def configure_args(self): args = ['FCFLAGS=-O3', 'CFLAGS=-O3', 'CXXFLAGS=-O3'] + args.extend(self.enable_or_disable('python')) return args diff --git a/var/spack/repos/builtin/packages/libblastrampoline/package.py b/var/spack/repos/builtin/packages/libblastrampoline/package.py index cbdd1d896214ef..4d70ad1acc5cdd 100644 --- a/var/spack/repos/builtin/packages/libblastrampoline/package.py +++ b/var/spack/repos/builtin/packages/libblastrampoline/package.py @@ -15,6 +15,7 @@ class Libblastrampoline(MakefilePackage): maintainers = ['haampie', 'giordano'] + version('5.0.2', sha256='2e96fa62957719351da3e4dff8cd0949449073708f5564dae0a224a556432356') version('5.0.1', sha256='1066b4d157276e41ca66ca94f0f8c2900c221b49da2df3c410e6f8bf1ce9b488') # v5.0.0 contains a bug, fixed in v5.0.1, which causes segmentation faults version('5.0.0', sha256='20f434add7d9ae4503bb7a61e320ad1aea8e8371f53b1e32dc691e4701080658', deprecated=True) diff --git a/var/spack/repos/builtin/packages/libbsd/package.py b/var/spack/repos/builtin/packages/libbsd/package.py index 0d69de135ab2e8..ecd167b21bc72d 100644 --- a/var/spack/repos/builtin/packages/libbsd/package.py +++ b/var/spack/repos/builtin/packages/libbsd/package.py @@ -19,6 +19,7 @@ class Libbsd(AutotoolsPackage): "https://mirrors.dotsrc.org/pub/mirrors/exherbo/libbsd-0.9.1.tar.xz" ] + version('0.11.5', sha256='1a9c952525635c1bb6770cb22e969b938d8e6a9d7912362b98ee8370599b0efd') version('0.11.3', sha256='ff95cf8184151dacae4247832f8d4ea8800fa127dbd15033ecfe839f285b42a1') version('0.11.2', sha256='9a7fbe60924d40ce4322a00b6f70be07b3704479b2bca1210dd1564924930ff5') version('0.11.1', sha256='0d018e78f85d7d724740a28408f0bf346b7bbe5dc1c7256fb21e640e2a3d5205') diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py index 3d578d4367b64d..3b13f66a46bf5f 100644 --- a/var/spack/repos/builtin/packages/libbson/package.py +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -15,6 +15,7 @@ class Libbson(Package): maintainers = ['michaelkuhn'] + version('1.21.0', sha256='840ff79480070f98870743fbb332e2c10dd021b6b9c952d08010efdda4d70ee4') version('1.17.6', sha256='8644deec7ae585e8d12566978f2017181e883f303a028b5b3ccb83c91248b150') version('1.17.5', sha256='4b15b7e73a8b0621493e4368dc2de8a74af381823ae8f391da3d75d227ba16be') version('1.17.0', sha256='90aa23a3f92be0a076fe0b903b68276a7973d4e472929943069f503d5ab50cb9') diff --git a/var/spack/repos/builtin/packages/libcudf/package.py b/var/spack/repos/builtin/packages/libcudf/package.py index 3d365895313f5e..d32e6f03e8e029 100644 --- a/var/spack/repos/builtin/packages/libcudf/package.py +++ b/var/spack/repos/builtin/packages/libcudf/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Libcudf(CMakePackage): @@ -18,7 +19,11 @@ class Libcudf(CMakePackage): depends_on('cmake@3.14:', type='build') depends_on('cuda@10.0:') - depends_on('boost') + + # 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('arrow+cuda+orc+parquet') depends_on('librmm') depends_on('dlpack') diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index 987a5929a50685..8d94031fbbe215 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -6,13 +6,20 @@ from spack import * -class Libdrm(AutotoolsPackage): +class Libdrm(Package): """A userspace library for accessing the DRM, direct rendering manager, on Linux, BSD and other systems supporting the ioctl interface.""" homepage = "https://dri.freedesktop.org/libdrm/" - url = "https://dri.freedesktop.org/libdrm/libdrm-2.4.59.tar.gz" + url = "https://dri.freedesktop.org/libdrm/libdrm-2.4.101.tar.xz" + list_url = "https://dri.freedesktop.org/libdrm/" + maintainers = ['wdconinc'] + + version('2.4.110', sha256='eecee4c4b47ed6d6ce1a9be3d6d92102548ea35e442282216d47d05293cf9737') + version('2.4.109', sha256='629352e08c1fe84862ca046598d8a08ce14d26ab25ee1f4704f993d074cb7f26') + version('2.4.108', sha256='a1d7948cbc536763fde14b4beb5e4da7867607966d4cf46301087e8b8fe3d6a0') + version('2.4.107', sha256='c554cef03b033636a975543eab363cc19081cb464595d3da1ec129f87370f888') version('2.4.100', sha256='6a5337c054c0c47bc16607a21efa2b622e08030be4101ef4a241c5eb05b6619b') version('2.4.81', sha256='64036c5e0668fdc2b820dcc0ebab712f44fd2c2147d23dc5a6e003b19f0d3e9f') version('2.4.75', sha256='a411bff814b4336c8908dcbd045cd89fdc7afedc75b795d897d462e467cbb01d') @@ -20,12 +27,49 @@ class Libdrm(AutotoolsPackage): version('2.4.59', sha256='ed9d03a92c2d80e6310cc350db3430620f1659ae084a07c6824cee7bc81ae8fa') version('2.4.33', sha256='bd2a8fecf28616f2157ca33ede691c139cc294ed2d0c4244b62ca7d22e98e5a4') + variant('docs', default=False, description="Build man pages") + depends_on('pkgconfig', type='build') - depends_on('docbook-xml', type='build') - depends_on('docbook-xsl', type='build') depends_on('libpciaccess@0.10:') depends_on('libpthread-stubs') + # 2.4.90 is the first version to use meson, spack defaults to meson since + # 2.4.101. + depends_on('meson', type='build', when='@2.4.101:') + + # >= 2.4.104 uses reStructuredText for man pages. + with when('@2.4.104: +docs'): + depends_on('py-docutils', type='build') + + # < 2.4.104 uses docbook for man pages. + with when('@:2.4.103 +docs'): + depends_on('docbook-xml', type='build') + depends_on('docbook-xsl', type='build') + depends_on('libxslt', type='build') + + def url_for_version(self, version): + if version <= Version('2.4.100'): + return self.list_url + 'libdrm-%s.tar.gz' % version + else: + return self.list_url + 'libdrm-%s.tar.xz' % version + + def meson_args(self): + return [ + '-Dman-pages=' + ('true' if '+docs' in self.spec else 'false') + ] + + def install(self, spec, prefix): + with working_dir('spack-build', create=True): + args = [] + args.extend(std_meson_args) + args.extend(self.meson_args()) + meson('..', *args) + ninja('-v') + if self.run_tests: + ninja('test') + ninja('install') + + @when('@:2.4.100') def configure_args(self): args = [] args.append('--enable-static') @@ -33,6 +77,18 @@ def configure_args(self): # Needed to fix build for spack/spack#1740, but breaks newer # builds/compilers args.append('LIBS=-lrt') - if self.spec.satisfies('%gcc@10.0.0:') or self.spec.satisfies('%clang@12.0.0:'): + if (self.spec.satisfies('%gcc@10.0.0:') or + self.spec.satisfies('%clang@11.0.0:') or + self.spec.satisfies('%aocc@2.3.0:')): args.append('CFLAGS=-fcommon') return args + + @when('@:2.4.100') + 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') diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py index f43562f3e5e75b..f41a98aee7365a 100644 --- a/var/spack/repos/builtin/packages/libfabric/package.py +++ b/var/spack/repos/builtin/packages/libfabric/package.py @@ -75,8 +75,8 @@ class Libfabric(AutotoolsPackage): # For version 1.9.0: # headers: fix forward-declaration of enum fi_collective_op with C++ - patch('https://github.com/ofiwg/libfabric/commit/2e95b0efd85fa8a3d814128e34ec57ffd357460e.patch', - sha256='71f06e8bf0adeccd425b194ac524e4d596469e9dab9e7a4f8bb209e6b9a454f4', + patch('https://github.com/ofiwg/libfabric/commit/2e95b0efd85fa8a3d814128e34ec57ffd357460e.patch?full_index=1', + sha256='456693e28bb1fc41a0bbb94b97ae054e7d28f81ca94795d7f294243da58c6376', when='@1.9.0') depends_on('rdma-core', when='fabrics=verbs') diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py index 9d7f0fbf3fd56b..963f44b37b5aab 100644 --- a/var/spack/repos/builtin/packages/libffi/package.py +++ b/var/spack/repos/builtin/packages/libffi/package.py @@ -6,16 +6,17 @@ from spack import * -class Libffi(AutotoolsPackage, SourcewarePackage): +class Libffi(AutotoolsPackage): """The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time.""" homepage = "https://sourceware.org/libffi/" - sourceware_mirror_path = "libffi/libffi-3.2.1.tar.gz" + url = "https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz" - version('3.3', sha256='72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056') - version('3.2.1', sha256='d06ebb8e1d9a22d19e38d63fdb83954253f39bedc5d46232a05645685722ca37') + version('3.4.2', sha256='540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620') + version('3.3', url='https://sourceware.org/pub/libffi/libffi-3.3.tar.gz', sha256='72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056') + version('3.2.1', url='https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz', sha256='d06ebb8e1d9a22d19e38d63fdb83954253f39bedc5d46232a05645685722ca37') patch('clang-powerpc-3.2.1.patch', when='@3.2.1%clang platform=linux') # ref.: https://github.com/libffi/libffi/pull/561 diff --git a/var/spack/repos/builtin/packages/libfive/package.py b/var/spack/repos/builtin/packages/libfive/package.py index 06f9cbe2449662..f1c9bb77dec3f2 100644 --- a/var/spack/repos/builtin/packages/libfive/package.py +++ b/var/spack/repos/builtin/packages/libfive/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Libfive(CMakePackage): @@ -19,6 +20,11 @@ class Libfive(CMakePackage): depends_on('pkgconfig', type='build') depends_on('cmake@3.12:', type='build') depends_on('boost@1.65:') + + # 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('eigen@3.3.0:') depends_on('libpng') depends_on('python@3:', when='+python', type=('link', 'run')) diff --git a/var/spack/repos/builtin/packages/libfuse/package.py b/var/spack/repos/builtin/packages/libfuse/package.py index 84f8506366155f..5790b46cf8feef 100644 --- a/var/spack/repos/builtin/packages/libfuse/package.py +++ b/var/spack/repos/builtin/packages/libfuse/package.py @@ -51,10 +51,10 @@ def url_for_version(self, version): patch('0001-Do-not-run-install-script.patch', when='@3: ~system_install') patch('https://src.fedoraproject.org/rpms/fuse3/raw/0519b7bf17c4dd1b31ee704d49f8ed94aa5ba6ab/f/fuse3-gcc11.patch', sha256='3ad6719d2393b46615b5787e71778917a7a6aaa189ba3c3e0fc16d110a8414ec', when='@3: %gcc@11:') - patch('https://github.com/libfuse/libfuse/commit/6d55007027dfe7b75a74899f497f075046cc5404.patch', sha256='d8c54ae932f2e7179dd05081a4a8e7aefd23553a0ef354fa25b1456386d96932', when='@:2') - patch('https://github.com/libfuse/libfuse/commit/5d38afc8a5b4a2a6e27aad7a1840046e99cd826d.patch', sha256='7f3e8e54966aca8cb64096bea2cbd4d2679b47f9c1355fe9d442ba8464d74372', when='@:2') + patch('https://github.com/libfuse/libfuse/commit/6d55007027dfe7b75a74899f497f075046cc5404.patch?full_index=1', sha256='2e265d31628175ce9dcea1ca2e423fdbed9469e2ace6b24a7fe7a72cb54b1da9', when='@:2') + patch('https://github.com/libfuse/libfuse/commit/5d38afc8a5b4a2a6e27aad7a1840046e99cd826d.patch?full_index=1', sha256='6b7ea8451d29944adb2fdc1bd119c93e74fe54431b1315f148a071015343ec1a', when='@:2') # https://bugs.gentoo.org/803923 - patch('https://github.com/libfuse/libfuse/commit/5a43d0f724c56f8836f3f92411e0de1b5f82db32.patch', sha256='1e8b0a1b2bbaa335d92a3c46e31c928dcd53abe011214a0cbbfa7c11a3a68f1a', when='@:2') + patch('https://github.com/libfuse/libfuse/commit/5a43d0f724c56f8836f3f92411e0de1b5f82db32.patch?full_index=1', sha256='94d5c6d9785471147506851b023cb111ef2081d1c0e695728037bbf4f64ce30a', when='@:2') executables = ['^fusermount3?$'] diff --git a/var/spack/repos/builtin/packages/libgeotiff/package.py b/var/spack/repos/builtin/packages/libgeotiff/package.py index 117b579fa3b8d8..a376fe399e00a7 100644 --- a/var/spack/repos/builtin/packages/libgeotiff/package.py +++ b/var/spack/repos/builtin/packages/libgeotiff/package.py @@ -36,11 +36,11 @@ class Libgeotiff(AutotoolsPackage): # Patches required to fix rounding issues in unit tests # https://github.com/OSGeo/libgeotiff/issues/16 - patch('https://github.com/OSGeo/libgeotiff/commit/7cb9b68ea72fb2a6023bb98796fd3ba6dc7b64a1.patch', - sha256='9485efc0a62a02207d34ac0c4d22e421c975b6ce85397c5e557c0105a232aaa3', + patch('https://github.com/OSGeo/libgeotiff/commit/7cb9b68ea72fb2a6023bb98796fd3ba6dc7b64a1.patch?full_index=1', + sha256='bae1441ba8cd1d4e94b8d6a080db64b768dd537faa7e2fb8c04133f68e71d304', level=2, when='@1.5.0:1.5.1') - patch('https://github.com/OSGeo/libgeotiff/commit/4b41ca6ce332f0c21504c2da3da850275d9da5ae.patch', - sha256='e0d45d3c34bf92df2d1d140957f110dc84759420e68a97e1e3d6ab90c81777d8', + patch('https://github.com/OSGeo/libgeotiff/commit/4b41ca6ce332f0c21504c2da3da850275d9da5ae.patch?full_index=1', + sha256='b368cdf5755f2ddf69d974bf86691440dcc861c41d86280780626f5a31f33b13', level=2, when='@1.5.0:1.5.1') # Patch required to fix absolute path issue in unit tests # https://github.com/OSGeo/libgeotiff/issues/16 diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py index 4fe053f3b44a65..4e6dc628397d28 100644 --- a/var/spack/repos/builtin/packages/libgit2/package.py +++ b/var/spack/repos/builtin/packages/libgit2/package.py @@ -18,6 +18,11 @@ class Libgit2(CMakePackage): maintainers = ["AndrewGaspar"] + version('1.4.2', sha256='901c2b4492976b86477569502a41c31b274b69adc177149c02099ea88404ef19') + version('1.4.1', sha256='fccd371a271133e29d002dd207490d22a0c9b06992b874b8edb8366532a94f54') + version('1.4.0', sha256='9051e75964350054d5e3f9339bc4d1fb56ac14949710e3860f98f07a0433fa25') + version('1.3.0', sha256='192eeff84596ff09efb6b01835a066f2df7cd7985e0991c79595688e6b36444e') + version('1.2.0', sha256='701a5086a968a46f25e631941b99fc23e4755ca2c56f59371ce1d94b9a0cc643') version('1.1.1', sha256='13a525373f64c711a00a058514d890d1512080265f98e0935ab279393f21a620') version('1.1.0', sha256='41a6d5d740fd608674c7db8685685f45535323e73e784062cf000a633d420d1e') version('1.0.1', sha256='1775427a6098f441ddbaa5bd4e9b8a043c7401e450ed761e69a415530fea81d2') diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index c0cc56cc214163..e90f8dcea0f574 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -31,6 +31,7 @@ def configure_args(self): args = ['--enable-extra-encodings'] args += self.enable_or_disable('libs') + args.append('--with-pic') # A hack to patch config.guess in the libcharset sub directory copy('./build-aux/config.guess', diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 2609c7fce6f303..efc6cb2f567454 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost TUNE_VARIANTS = ( 'none', @@ -56,7 +57,11 @@ class Libint(AutotoolsPackage): depends_on('libtool', type='build') # Libint 2 dependencies - depends_on('boost', when='@2:') + + # 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, when='@2:') depends_on('gmp', when='@2:') for tvariant in TUNE_VARIANTS[1:]: diff --git a/var/spack/repos/builtin/packages/libkml/package.py b/var/spack/repos/builtin/packages/libkml/package.py index 1a0ec1b92dd979..4e981a0bf093aa 100644 --- a/var/spack/repos/builtin/packages/libkml/package.py +++ b/var/spack/repos/builtin/packages/libkml/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Libkml(CMakePackage): @@ -26,6 +27,11 @@ class Libkml(CMakePackage): # See DEPENDENCIES depends_on('cmake@2.8:', type='build') depends_on('boost@1.44.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('expat@2.1.0:') depends_on('minizip@1.2.8:') depends_on('uriparser') diff --git a/var/spack/repos/builtin/packages/liblas/package.py b/var/spack/repos/builtin/packages/liblas/package.py index f1a3bff59d0724..d5284d8b75cea1 100644 --- a/var/spack/repos/builtin/packages/liblas/package.py +++ b/var/spack/repos/builtin/packages/liblas/package.py @@ -24,10 +24,11 @@ class Liblas(CMakePackage): variant('geotiff', default=True, description='Build with GeoTIFF for enhanced performance') variant('laszip', default=False, description='Build with LasZip') - depends_on('libgeotiff') - depends_on('boost@:1.69.0') - depends_on('laszip', when='+laszip') - depends_on('gdal', when='+gdal') + depends_on('cmake@2.6:', type='build') + depends_on('libgeotiff@1.3:', when='+geotiff') + depends_on('boost@1.42:1.72+program_options+thread+system+iostreams+filesystem') + depends_on('laszip@2.0.1:', when='+laszip') + depends_on('gdal@1.7:', when='+gdal') def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/libluv/package.py b/var/spack/repos/builtin/packages/libluv/package.py index 11700d3a66217b..62f58a9a6aefcb 100644 --- a/var/spack/repos/builtin/packages/libluv/package.py +++ b/var/spack/repos/builtin/packages/libluv/package.py @@ -14,6 +14,7 @@ class Libluv(CMakePackage): homepage = "https://github.com/luvit/luv" url = "https://github.com/luvit/luv/releases/download/1.36.0-0/luv-1.36.0-0.tar.gz" + version('1.43.0-0', sha256='567a6f3dcdcf8a9b54ddc57ffef89d1e950d72832b85ee81c8c83a9d4e0e9de2') version('1.36.0-0', sha256='f2e7eb372574f25c6978c1dc74280d22efdcd7df2dda4a286c7fe7dceda26445') depends_on('lua', type='link') diff --git a/var/spack/repos/builtin/packages/libmd/package.py b/var/spack/repos/builtin/packages/libmd/package.py index 58c5d6a90b0060..6e15ae44a651e2 100644 --- a/var/spack/repos/builtin/packages/libmd/package.py +++ b/var/spack/repos/builtin/packages/libmd/package.py @@ -16,6 +16,7 @@ class Libmd(AutotoolsPackage): maintainers = ['haampie'] + version('1.0.4', sha256='f51c921042e34beddeded4b75557656559cf5b1f2448033b4c1eec11c07e530f') version('1.0.3', sha256='5a02097f95cc250a3f1001865e4dbba5f1d15554120f95693c0541923c52af4a') version('1.0.2', sha256='dc66b8278f82e7e1bf774fbd4bc83a0348e8f27afa185b2c2779cfcb3da25013') version('1.0.1', sha256='e14eeb931cf85330f95ff822262d3033125488dfb2f867441e36e2d2c4a34c71') diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py index bdb7a16935f746..9c567e64844f69 100644 --- a/var/spack/repos/builtin/packages/libmesh/package.py +++ b/var/spack/repos/builtin/packages/libmesh/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Libmesh(AutotoolsPackage): @@ -79,6 +80,11 @@ class Libmesh(AutotoolsPackage): 'variant.') depends_on('boost', when='+boost') + + # 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, when='+boost') depends_on('eigen', when='+eigen') depends_on('hdf5+mpi', when='+hdf5+mpi') depends_on('mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/libogg/package.py b/var/spack/repos/builtin/packages/libogg/package.py index 22871150a5a557..3401919e116fce 100644 --- a/var/spack/repos/builtin/packages/libogg/package.py +++ b/var/spack/repos/builtin/packages/libogg/package.py @@ -19,6 +19,6 @@ class Libogg(AutotoolsPackage): # Backport a patch that fixes an unsigned typedef problem on macOS: # https://github.com/xiph/ogg/pull/64 - patch('https://github.com/xiph/ogg/commit/c8fca6b4a02d695b1ceea39b330d4406001c03ed.patch', - sha256='c66dcf5dd775752148e664b262f98ea9fda7ed204ed40d64e3769c036e3c2c98', + patch('https://github.com/xiph/ogg/commit/c8fca6b4a02d695b1ceea39b330d4406001c03ed.patch?full_index=1', + sha256='0f4d289aecb3d5f7329d51f1a72ab10c04c336b25481a40d6d841120721be485', when='@1.3.4 platform=darwin') diff --git a/var/spack/repos/builtin/packages/libpipeline/package.py b/var/spack/repos/builtin/packages/libpipeline/package.py index 726252e1cbbd90..8ee4d93dc6d48c 100644 --- a/var/spack/repos/builtin/packages/libpipeline/package.py +++ b/var/spack/repos/builtin/packages/libpipeline/package.py @@ -11,9 +11,11 @@ class Libpipeline(AutotoolsPackage): in a flexible and convenient way.""" homepage = "http://libpipeline.nongnu.org/" - url = "https://git.savannah.nongnu.org/cgit/libpipeline.git/snapshot/libpipeline-1.4.2.tar.gz" + git = "https://gitlab.com/cjwatson/libpipeline" + url = "https://download.savannah.nongnu.org/releases/libpipeline/libpipeline-1.5.5.tar.gz" - version('1.4.2', sha256='ac8b103b281ff63129c4fa6a8cc40bb5863e3a4266343d6e3bb5788de1ede488') + version('1.5.5', sha256='0c8367f8b82bb721b50647a647115b6e62a37e3b2e954a9685e4d933f30c00cc') + version('1.4.2', sha256='fef1fc9aa40ce8796f18cd1aecd888a9484a9556c8b0f8d07c863578277679be') depends_on('pkgconfig', type='build') depends_on('check', type='test') diff --git a/var/spack/repos/builtin/packages/libpulsar/package.py b/var/spack/repos/builtin/packages/libpulsar/package.py index b85b6a1d030772..1cf72125de8eaf 100644 --- a/var/spack/repos/builtin/packages/libpulsar/package.py +++ b/var/spack/repos/builtin/packages/libpulsar/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Libpulsar(CMakePackage): @@ -19,7 +20,11 @@ class Libpulsar(CMakePackage): sha256='5bf8e5115075e12c848a9e4474cd47067c3200f7ff13c45f624f7383287e8e5e') depends_on('zstd') - depends_on('boost') + + # 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('protobuf') depends_on('pkgconfig') depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/librom/package.py b/var/spack/repos/builtin/packages/librom/package.py index 7c577de33674c2..d144e0bb6fcba0 100644 --- a/var/spack/repos/builtin/packages/librom/package.py +++ b/var/spack/repos/builtin/packages/librom/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost + class Librom(AutotoolsPackage): """libROM: library for computing large-scale reduced order models""" @@ -20,7 +22,11 @@ class Librom(AutotoolsPackage): depends_on('perl') depends_on('graphviz') depends_on('doxygen') - depends_on('boost') + + # 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) def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/libtermkey/package.py b/var/spack/repos/builtin/packages/libtermkey/package.py index 1ed33202df6575..c1c45a9b343566 100644 --- a/var/spack/repos/builtin/packages/libtermkey/package.py +++ b/var/spack/repos/builtin/packages/libtermkey/package.py @@ -11,6 +11,7 @@ class Libtermkey(Package): homepage = "http://www.leonerd.org.uk/code/libtermkey/" url = "http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.18.tar.gz" + version('0.22', sha256='6945bd3c4aaa83da83d80a045c5563da4edd7d0374c62c0d35aec09eb3014600') version('0.18', sha256='239746de41c845af52bb3c14055558f743292dd6c24ac26c2d6567a5a6093926') version('0.17', sha256='68949364ed5eaad857b3dea10071cde74b00b9f236dfbb702169f246c3cef389') version('0.16', sha256='6c8136efa5d0b3277014a5d4519ea81190079c82656b7db1655a1bd147326a70') @@ -18,7 +19,8 @@ class Libtermkey(Package): version('0.14', sha256='3d114d4509499b80a583ea39cd35f18268aacf4a7bbf56c142cd032632005c79') depends_on('libtool', type='build') - depends_on('ncurses') + depends_on('unibilium') + depends_on('pkgconfig') def install(self, spec, prefix): make() diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index 7f392457e77427..5bde7d3ab690da 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -56,16 +56,24 @@ class Libtiff(AutotoolsPackage): conflicts('+webp', when='@:4.0.9') # https://gitlab.com/libtiff/libtiff/-/merge_requests/243 - patch('no-include-root.patch', when='@4.3.0') + patch('no-include-root.patch', when='@4.3.0 platform=darwin') - depends_on('automake', when='@4.3.0', type='build') - depends_on('autoconf', when='@4.3.0', type='build') - depends_on('libtool', when='@4.3.0', type='build') - depends_on('m4', when='@4.3.0', type='build') + depends_on('gl', when='@4.3.0 platform=darwin') + depends_on('glu', when='@4.3.0 platform=darwin') + depends_on('freeglut', when='@4.3.0 platform=darwin') + depends_on('libsm', when='@4.3.0 platform=darwin') + depends_on('libice', when='@4.3.0 platform=darwin') + depends_on('libxi', when='@4.3.0 platform=darwin') + depends_on('libx11', when='@4.3.0 platform=darwin') + + depends_on('automake', when='@4.3.0 platform=darwin', type='build') + depends_on('autoconf', when='@4.3.0 platform=darwin', type='build') + depends_on('libtool', when='@4.3.0 platform=darwin', type='build') + depends_on('m4', when='@4.3.0 platform=darwin', type='build') @property def force_autoreconf(self): - return self.spec.satisfies('@4.3.0') + return self.spec.satisfies('@4.3.0 platform=darwin') def patch(self): # Remove flags not recognized by the NVIDIA compiler diff --git a/var/spack/repos/builtin/packages/libtree/package.py b/var/spack/repos/builtin/packages/libtree/package.py index 1ef1f422ab84bf..1d1ec53e8bfa4a 100644 --- a/var/spack/repos/builtin/packages/libtree/package.py +++ b/var/spack/repos/builtin/packages/libtree/package.py @@ -15,6 +15,9 @@ class Libtree(MakefilePackage): maintainers = ['haampie'] version('master', branch='master') + version('3.1.0', sha256='8057edb2dd77b0acf6ceab6868741993979dccd41fc41a58bde743f11666d781') + version('3.0.3', sha256='7e4589b617775cb3a2b4b8fe03f80b81e43ef16046d680f1517ce52d7be9893f') + version('3.0.2', sha256='f07c9cf3394cacd1eab15d42b97b9b6787d8bd3b7f6746fe0f39e7d951eebaac') version('3.0.1', sha256='20d3cd66f5c74058de9dd594af8ffd639c795d27ab435c588a3cd43911c1604f') version('3.0.0', sha256='6f7b069a8e5d86741e18a4c8a7e835ac530ae012dfc9509e00ffa694aa6818b1') version('2.0.0', sha256='099e85d8ba3c3d849ce05b8ba2791dd25cd042a813be947fb321b0676ef71883') @@ -56,7 +59,7 @@ def install(self, spec, prefix): # header only dependencies depends_on('cpp-termcolor', when='@2.0.0:2', type='build') depends_on('cxxopts', when='@2.0.0:2', type='build') - depends_on('elfio', when='@2.0.0:2', type='build') + depends_on('elfio@:3.9', when='@2.0.0:2', type='build') def cmake_args(self): tests_enabled = 'ON' if self.run_tests else 'OFF' diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index b72fbfa58ec31d..0070b29b79c959 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -16,7 +16,9 @@ class Libunwind(AutotoolsPackage): maintainers = ['mwkrentel'] version('master', branch='master') - version('1.5-head', branch='v1.5-stable') + 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') @@ -62,10 +64,11 @@ class Libunwind(AutotoolsPackage): # The libunwind releases contain the autotools generated files, # but the git repo snapshots do not. - depends_on('autoconf', type='build', when='@master,1.5-head') - depends_on('automake', type='build', when='@master,1.5-head') - depends_on('libtool', type='build', when='@master,1.5-head') - depends_on('m4', type='build', when='@master,1.5-head') + reconf_versions = '@master,1.5-stable,1.6-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) + depends_on('m4', type='build', when=reconf_versions) depends_on('xz', type='link', when='+xz') depends_on('zlib', type='link', when='+zlib') diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py index f4af05008bb725..494fa78a48c048 100644 --- a/var/spack/repos/builtin/packages/libuv/package.py +++ b/var/spack/repos/builtin/packages/libuv/package.py @@ -5,22 +5,33 @@ class Libuv(AutotoolsPackage): """Multi-platform library with a focus on asynchronous IO""" homepage = "https://libuv.org" - url = "https://github.com/libuv/libuv/archive/v1.9.0.tar.gz" + url = "https://dist.libuv.org/dist/v1.44.1/libuv-v1.44.1-dist.tar.gz" - version('1.42.0', sha256='371e5419708f6aaeb8656671f89400b92a9bba6443369af1bb70bcd6e4b3c764') - version('1.41.1', sha256='62c29d1d76b0478dc8aaed0ed1f874324f6cd2d6ff4cb59a44026c09e818cd53') - version('1.41.0', sha256='6cfeb5f4bab271462b4a2cc77d4ecec847fdbdc26b72019c27ae21509e6f94fa') - version('1.40.0', sha256='70fe1c9ba4f2c509e8166c0ca2351000237da573bb6c82092339207a9715ba6b') - version('1.39.0', sha256='dc7b21f1bb7ef19f4b42c5ea058afabe51132d165da18812b70fb319659ba629') - version('1.38.1', sha256='2177fca2426ac60c20f654323656e843dac4f568d46674544b78f416697bd32c') - version('1.25.0', sha256='ce3036d444c3fb4f9a9e2994bec1f4fa07872b01456998b422ce918fdc55c254') - version('1.10.0', sha256='50f4ed57d65af4ab634e2cbdd90c49213020e15b4d77d3631feb633cbba9239f') - version('1.9.0', sha256='f8b8272a0d80138b709d38fad2baf771899eed61e7f9578d17898b07a1a2a5eb') + version('1.44.1', sha256='b7293cefb470e17774dcf5d62c4c969636172726155b55ceef5092b7554863cc') + version('1.44.0', sha256='6c52494401cfe8d08fb4ec245882f0bd4b1572b5a8e79d6c418b855422a1a27d') + version('1.43.0', sha256='90d72bb7ae18de2519d0cac70eb89c319351146b90cd3f91303a492707e693a4') + version('1.42.0', sha256='43129625155a8aed796ebe90b8d4c990a73985ec717de2b2d5d3a23cfe4deb72') + version('1.41.1', sha256='65db0c7f2438bc8cd48865de282bf6670027f3557d6e3cb62fb65b2e350a687d') + version('1.41.0', sha256='1184533907e1ddad9c0dcd30a5abb0fe25288c287ff7fee303fff7b9b2d6eb6e') + version('1.40.0', sha256='61a90db95bac00adec1cc5ddc767ebbcaabc70242bd1134a7a6b1fb1d498a194') + version('1.39.0', sha256='5c52de5bdcfb322dbe10f98feb56e45162e668ad08bc28ab4b914d4f79911697') + version('1.38.1', sha256='0ece7d279e480fa386b066130a562ad1a622079d43d1c30731f2f66cd3f5c647') + version('1.25.0', sha256='0e927ddc0f1c83899000a63e9286cac5958222f8fb5870a49b0c81804944a912') + version('1.10.0', sha256='0307a0eec6caddd476f9cad39e18fdd6f22a08aa58103c4b0aead96d638be15e') + version('1.9.0', sha256='d595b2725abcce851c76239aab038adc126c58714cfb572b2ebb2d21b3593842') - depends_on('automake', type='build') - depends_on('autoconf', type='build') - depends_on('libtool', type='build') - depends_on('m4', type='build') + def url_for_version(self, version): + if version < Version('1.44.0'): + url = "https://dist.libuv.org/dist/v{0}/libuv-v{0}.tar.gz" + else: + # From 1.44 on, the `-dist` download includes a configure script + url = "https://dist.libuv.org/dist/v{0}/libuv-v{0}-dist.tar.gz" + return url.format(version, version) + + depends_on('automake', type='build', when='@:1.43.0') + depends_on('autoconf', type='build', when='@:1.43.0') + depends_on('libtool', type='build', when='@:1.43.0') + depends_on('m4', type='build', when='@:1.43.0') # Tries to build an Objective-C file with GCC's C frontend # https://github.com/libuv/libuv/issues/2805 @@ -28,8 +39,8 @@ class Libuv(AutotoolsPackage): msg='libuv does not compile with GCC on macOS yet, use clang. ' 'See: https://github.com/libuv/libuv/issues/2805') + @when('@:1.43') def autoreconf(self, spec, prefix): # This is needed because autogen.sh generates on-the-fly # an m4 macro needed during configuration - bash = which("bash") - bash('autogen.sh') + Executable('./autogen.sh')() diff --git a/var/spack/repos/builtin/packages/libyogrt/package.py b/var/spack/repos/builtin/packages/libyogrt/package.py index b596c405b41664..b9d2d6583e3e3d 100644 --- a/var/spack/repos/builtin/packages/libyogrt/package.py +++ b/var/spack/repos/builtin/packages/libyogrt/package.py @@ -14,6 +14,7 @@ class Libyogrt(AutotoolsPackage): homepage = "https://github.com/LLNL/libyogrt" url = "https://github.com/LLNL/libyogrt/releases/download/1.21/libyogrt-1.21.tar.gz" + version('1.27', sha256='c57ce60770b61aa20bc83fe34ff52b5e444964338df3786f282d0d9bcdd26138') version('1.24', sha256='36695030e72b24b1f22bfcfe42bfd1d3c87f9c0eea5e94ce0120782581ea522f') version('1.23', sha256='c95e7a6be29c0d1ac1b673b0ba1d4e5781981722f93d0da99ae62ff3b5f35b5f') version('1.22', sha256='38e7d1ea3fa030f0169197aa96cde9f01caa595a590764ef1cb2ae07379cb711') @@ -26,7 +27,7 @@ class Libyogrt(AutotoolsPackage): version('1.20-2', sha256='bf22a82ab3bfede780be3fb6c132cc354234f8d57d3cccd58fe594f074ed7f95') # libyogrt supports the following schedulers: - # lcrm, lsf, moab, slurm, AIX+slurm + # flux, lcrm, lsf, moab, slurm, AIX+slurm # however, only slurm exists in spack # libyogrt's build system is smart enough to detect the system scheduler @@ -35,9 +36,13 @@ class Libyogrt(AutotoolsPackage): variant('scheduler', default='system', description="Select scheduler integration", - values=['system', 'slurm', 'lsf'], multi=False) - depends_on('slurm', when='scheduler=slurm') + values=['system', 'flux', 'lsf', 'slurm'], multi=False) + depends_on('flux-core@0.21.0:', when='scheduler=flux') depends_on('lsf', when='scheduler=lsf') + depends_on('slurm', when='scheduler=slurm') + + # support for flux added in libyogrt 1.27 + conflicts('scheduler=flux', when='@:1.26') conflicts('scheduler=lsf', when='@:1.22') @@ -62,6 +67,8 @@ def configure_args(self): # to use, the user does not need to specify them args.append('--with-lsf') args.append('LIBS=-llsf -lrt -lnsl') + elif sched == "flux": + args.append('--with-flux=%s' % (self.spec['flux-core'].prefix)) elif sched != "system": args.append('--with-%s=%s' % (sched, self.spec[sched].prefix)) diff --git a/var/spack/repos/builtin/packages/libzmq/package.py b/var/spack/repos/builtin/packages/libzmq/package.py index 1827f986e3fde6..e65cefbe283f88 100644 --- a/var/spack/repos/builtin/packages/libzmq/package.py +++ b/var/spack/repos/builtin/packages/libzmq/package.py @@ -3,7 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * +import sys class Libzmq(AutotoolsPackage): @@ -34,10 +34,10 @@ class Libzmq(AutotoolsPackage): variant("drafts", default=False, description="Build and install draft classes and methods") - variant("docs", default=True, + variant("docs", default=False, description="Build documentation") - variant("libbsd", default=True, + variant("libbsd", when='@4.3.3:', default=(sys.platform != 'darwin'), description="Use strlcpy from libbsd " + "(will use own implementation if false)") @@ -51,13 +51,12 @@ class Libzmq(AutotoolsPackage): depends_on('docbook-xml', type='build', when='+docs') depends_on('docbook-xsl', type='build', when='+docs') - depends_on('libbsd', when='@4.3.3: platform=linux +libbsd') - depends_on('libbsd', when='@4.3.3: platform=cray +libbsd') + depends_on('libbsd', when='+libbsd') conflicts('%gcc@8:', when='@:4.2.2') # Fix aggressive compiler warning false positive - patch('https://github.com/zeromq/libzmq/commit/92b2c38a2c51a1942a380c7ee08147f7b1ca6845.patch', sha256='8ebde83ee148989f9118d36ebaf256532627b8a6e7a486842110623331972edb', when='@4.2.3:4.3.4 %gcc@11:') + patch('https://github.com/zeromq/libzmq/commit/92b2c38a2c51a1942a380c7ee08147f7b1ca6845.patch?full_index=1', sha256='310b8aa57a8ea77b7ac74debb3bf928cbafdef5e7ca35beaac5d9c61c7edd239', when='@4.2.3:4.3.4 %gcc@11:') def url_for_version(self, version): if version <= Version('4.1.4'): diff --git a/var/spack/repos/builtin/packages/liggghts/package.py b/var/spack/repos/builtin/packages/liggghts/package.py index d1b2040d324aee..9e72fbfde83b07 100644 --- a/var/spack/repos/builtin/packages/liggghts/package.py +++ b/var/spack/repos/builtin/packages/liggghts/package.py @@ -13,7 +13,7 @@ class Liggghts(MakefilePackage): """Discrete element method particle simulation.""" homepage = 'https://www.cfdem.com/media/DEM/docu/Manual.html' url = 'https://github.com/CFDEMproject/LIGGGHTS-PUBLIC/archive/3.8.0.tar.gz' - git = 'git@github.com:CFDEMproject/LIGGGHTS-PUBLIC.git' + git = 'ssh://git@github.com/CFDEMproject/LIGGGHTS-PUBLIC.git' version('3.8.0', sha256='9cb2e6596f584463ac2f80e3ff7b9588b7e3638c44324635b6329df87b90ab03') diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index bcc97eb6229449..8386089e8a6bcb 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -35,16 +35,16 @@ class Likwid(Package): version('4.3.1', sha256='4b40a96717da54514274d166f9b71928545468091c939c1d74109733279eaeb1') version('4.3.0', sha256='86fc5f82c80fcff1a643394627839ec79f1ca2bcfad30000eb7018da592588b4') - patch('https://github.com/RRZE-HPC/likwid/commit/e0332ace8fe8ca7dcd4b4477a25e37944f173a5c.patch', + patch('https://github.com/RRZE-HPC/likwid/commit/e0332ace8fe8ca7dcd4b4477a25e37944f173a5c.patch?full_index=1', when='@5.0.1', - sha256='c3b8f939a46b425665577ce764d4fba080a23cab5999c53db71655fd54d7e0b1') - patch('https://github.com/RRZE-HPC/likwid/commit/d2d0ef333b5e0997d7c80fc6ac1a473b5e47d084.patch', + sha256='13211de1b9f256b547e1565240c2c9d063855b17d70bd7379442789aa3424246') + patch('https://github.com/RRZE-HPC/likwid/commit/d2d0ef333b5e0997d7c80fc6ac1a473b5e47d084.patch?full_index=1', when='@4.3.4', - sha256='636cbf40669261fdb36379d67253be2b731cfa7b6d610d232767d72fbdf08bc0') + sha256='f14cd6bc5870e4665fe465dabaff965a5fdee19c6d669a1ec5ce2b143dcdde4b') patch('https://github.com/RRZE-HPC/likwid/files/5341379/likwid-lua5.1.patch.txt', when='@5.0.2^lua@5.1', sha256='bc56253c1e3436b5ba7bf4c5533d0391206900c8663c008f771a16376975e416') - patch('https://github.com/RRZE-HPC/likwid/releases/download/v5.1.0/likwid-mpirun-5.1.0.patch', + patch('https://github.com/RRZE-HPC/likwid/releases/download/v5.1.0/likwid-mpirun-5.1.0.patch?full_index=1', when='@5.1.0', sha256='62da145da0a09de21020f9726290e1daf7437691bab8a92d7254bc192d5f3061') variant('fortran', default=True, description='with fortran interface') diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/llvm-version-suffix-macro.patch b/var/spack/repos/builtin/packages/llvm-amdgpu/llvm-version-suffix-macro.patch deleted file mode 100644 index 62e9684386b345..00000000000000 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/llvm-version-suffix-macro.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/llvm/include/llvm/Config/llvm-config.h.cmake b/llvm/include/llvm/Config/llvm-config.h.cmake -index 4493bb65d444..e2b3c61b3c33 100644 ---- a/llvm/include/llvm/Config/llvm-config.h.cmake -+++ b/llvm/include/llvm/Config/llvm-config.h.cmake -@@ -74,6 +74,9 @@ - /* Patch version of the LLVM API */ - #define LLVM_VERSION_PATCH ${LLVM_VERSION_PATCH} - -+/* LLVM version suffix */ -+#cmakedefine LLVM_VERSION_SUFFIX "${LLVM_VERSION_SUFFIX}" -+ - /* LLVM version string */ - #define LLVM_VERSION_STRING "${PACKAGE_VERSION}" - diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index 10893376ad3195..74c60e9c013fd3 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -15,12 +15,14 @@ class LlvmAmdgpu(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/llvm-project" git = "https://github.com/RadeonOpenCompute/llvm-project.git" - url = "https://github.com/RadeonOpenCompute/llvm-project/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/llvm-project/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] version('master', branch='amd-stg-open') + version('5.0.2', sha256='99a14394b406263576ed3d8d10334de7c78d42b349109f375d178b11492eecaf') + version('5.0.0', sha256='bca2db4aaab71541cac588d6a708fde60f0ebe744809bde8a3847044a1a77413') version('4.5.2', sha256='36a4f7dd961cf373b743fc679bdf622089d2a905de2cfd6fd6c9e7ff8d8ad61f') version('4.5.0', sha256='b71451bf26650ba06c0c5c4c7df70f13975151eaa673ef0cc77c1ab0000ccc97') version('4.3.1', sha256='b53c6b13be7d77dc93a7c62e4adbb414701e4e601e1af2d1e98da4ee07c9837f') @@ -36,7 +38,7 @@ class LlvmAmdgpu(CMakePackage): variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') variant('rocm-device-libs', default=True, description='Build ROCm device libs as external LLVM project instead of a standalone spack package.') - variant('openmp', default=True, description='Enable OpenMP') + variant('openmp', default=False, description='Enable OpenMP') variant( 'llvm_dylib', default=False, @@ -63,18 +65,14 @@ class LlvmAmdgpu(CMakePackage): # openmp dependencies depends_on("perl-data-dumper", type=("build"), when='+openmp') depends_on("hwloc", when='+openmp') - depends_on('libelf', type='link', when='+openmp') + depends_on('elf', type='link', when='+openmp') # Will likely only be fixed in LLVM 12 upstream patch('fix-system-zlib-ncurses.patch', when='@3.5.0:3.8.0') patch('fix-ncurses-3.9.0.patch', when='@3.9.0:4.0.0') # This is already fixed in upstream but not in 4.2.0 rocm release - patch('fix-spack-detection-4.2.0.patch', when='@4.2.0:') - - # Add LLVM_VERSION_SUFFIX - # https://reviews.llvm.org/D115818 - patch('llvm-version-suffix-macro.patch', when='@:4.3.2') + patch('fix-spack-detection-4.2.0.patch', when='@4.2.0:4.5.2') conflicts('^cmake@3.19.0') @@ -83,6 +81,8 @@ class LlvmAmdgpu(CMakePackage): # Add device libs sources so they can be an external LLVM project for d_version, d_shasum in [ + ('5.0.2', '49cfa8f8fc276ba27feef40546788a2aabe259a924a97af8bef24e295d19aa5e'), + ('5.0.0', '83ed7aa1c9322b4fc1f57c48a63fc7718eb4195ee6fde433009b4bc78cb363f0'), ('4.5.2', '50e9e87ecd6b561cad0d471295d29f7220e195528e567fcabe2ec73838979f61'), ('4.5.0', '78412fb10ceb215952b5cc722ed08fa82501b5848d599dc00744ae1bdc196f77'), ('4.3.1', 'a7291813168e500bfa8aaa5d1dccf5250764ddfe27535def01b51eb5021d4592'), @@ -112,6 +112,12 @@ class LlvmAmdgpu(CMakePackage): when='@master +rocm-device-libs' ) + def setup_dependent_build_environment(self, env, dependent_spec): + # LLVM-amdgpu is always based off of a pre-release version of LLVM. + # Set the version suffix to denote this fact for downstream projects. + env.append_flags('CXXFLAGS', '-DLLVM_VERSION_SUFFIX=git') + env.append_flags('CFLAGS', '-DLLVM_VERSION_SUFFIX=git') + def cmake_args(self): llvm_projects = [ 'clang', @@ -120,22 +126,22 @@ def cmake_args(self): 'compiler-rt' ] args = [] - if self.spec.satisfies('@4.3.0:4.5.0'): - llvm_projects.append('libcxx') - llvm_projects.append('libcxxabi') - + if self.spec.satisfies('@4.3.0:'): args = [ - self.define('LIBCXX_ENABLE_SHARED', 'OFF'), - self.define('LIBCXX_ENABLE_STATIC', 'ON'), - self.define('LIBCXX_INSTALL_LIBRARY', 'OFF'), - self.define('LIBCXX_INSTALL_HEADERS', 'OFF'), - self.define('LIBCXXABI_ENABLE_SHARED', 'OFF'), - self.define('LIBCXXABI_ENABLE_STATIC', 'ON'), - self.define('LIBCXXABI_INSTALL_STATIC_LIBRARY', 'OFF'), self.define('LLVM_ENABLE_Z3_SOLVER', 'OFF'), self.define('LLLVM_ENABLE_ZLIB', 'ON'), - self.define('CLANG_DEFAULT_LINKER', 'lld'), + self.define('CLANG_DEFAULT_LINKER', 'lld') ] + if self.spec.satisfies('@4.3.0:4.5.2'): + llvm_projects.append('libcxx') + llvm_projects.append('libcxxabi') + args.append(self.define('LIBCXX_ENABLE_SHARED', 'OFF')) + args.append(self.define('LIBCXX_ENABLE_STATIC', 'ON')) + args.append(self.define('LIBCXX_INSTALL_LIBRARY', 'OFF')) + args.append(self.define('LIBCXX_INSTALL_HEADERS', 'OFF')) + args.append(self.define('LIBCXXABI_ENABLE_SHARED', 'OFF')) + args.append(self.define('LIBCXXABI_ENABLE_STATIC', 'ON')) + args.append(self.define('LIBCXXABI_INSTALL_STATIC_LIBRARY', 'OFF')) if '+openmp' in self.spec: llvm_projects.append('openmp') @@ -143,7 +149,10 @@ def cmake_args(self): args.extend([self.define('LLVM_ENABLE_PROJECTS', ';'.join(llvm_projects))]) if self.spec.satisfies('@4.5.0:'): - args.extend([self.define('PACKAGE_VENDOR', 'AMD')]) + args.append(self.define('PACKAGE_VENDOR', 'AMD')) + + if self.spec.satisfies('@5.0.0:'): + args.append(self.define('CLANG_ENABLE_AMDCLANG', 'ON')) # Enable rocm-device-libs as a external project if '+rocm-device-libs' in self.spec: diff --git a/var/spack/repos/builtin/packages/llvm-doe/package.py b/var/spack/repos/builtin/packages/llvm-doe/package.py index e056236412d174..8877fc45755e9b 100644 --- a/var/spack/repos/builtin/packages/llvm-doe/package.py +++ b/var/spack/repos/builtin/packages/llvm-doe/package.py @@ -32,7 +32,7 @@ class LlvmDoe(CMakePackage, CudaPackage): version('doe', branch='doe', preferred=True) version('upstream', branch='llvm.org/main') version('bolt', branch='bolt/main') - version('clacc', branch='clacc/master') + version('develop.clacc', branch='clacc/main') version('pragma-clang-loop', branch='sollve/pragma-clang-loop') version('pragma-omp-tile', branch='sollve/pragma-omp-tile') version('13.0.0', branch='llvm.org/llvmorg-13.0.0') diff --git a/var/spack/repos/builtin/packages/llvm/llvm-version-suffix-macro.patch b/var/spack/repos/builtin/packages/llvm/llvm-version-suffix-macro.patch deleted file mode 100644 index 62e9684386b345..00000000000000 --- a/var/spack/repos/builtin/packages/llvm/llvm-version-suffix-macro.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/llvm/include/llvm/Config/llvm-config.h.cmake b/llvm/include/llvm/Config/llvm-config.h.cmake -index 4493bb65d444..e2b3c61b3c33 100644 ---- a/llvm/include/llvm/Config/llvm-config.h.cmake -+++ b/llvm/include/llvm/Config/llvm-config.h.cmake -@@ -74,6 +74,9 @@ - /* Patch version of the LLVM API */ - #define LLVM_VERSION_PATCH ${LLVM_VERSION_PATCH} - -+/* LLVM version suffix */ -+#cmakedefine LLVM_VERSION_SUFFIX "${LLVM_VERSION_SUFFIX}" -+ - /* LLVM version string */ - #define LLVM_VERSION_STRING "${PACKAGE_VERSION}" - diff --git a/var/spack/repos/builtin/packages/llvm/llvm12-thread.patch b/var/spack/repos/builtin/packages/llvm/llvm12-thread.patch new file mode 100644 index 00000000000000..bbe3c253e93fbe --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm/llvm12-thread.patch @@ -0,0 +1,31 @@ +diff --git a/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake b/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake +index e3c2a580396e..5f76992d193e 100644 +--- a/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake ++++ b/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake +@@ -249,3 +249,6 @@ if (NOT LIBOMPTARGET_CUDA_TOOLKIT_ROOT_DIR_PRESET AND + endif() + endif() + endif() ++ ++find_package(Threads REQUIRED) ++set(OPENMP_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT}) +diff --git a/openmp/libomptarget/src/CMakeLists.txt b/openmp/libomptarget/src/CMakeLists.txt +index 15e6c3bbaf1f..3e5a73504a08 100644 +--- a/openmp/libomptarget/src/CMakeLists.txt ++++ b/openmp/libomptarget/src/CMakeLists.txt +@@ -30,6 +30,7 @@ if(OPENMP_STANDALONE_BUILD OR (NOT OPENMP_ENABLE_LIBOMPTARGET_PROFILING)) + add_library(omptarget SHARED ${LIBOMPTARGET_SRC_FILES}) + target_link_libraries(omptarget + ${CMAKE_DL_LIBS} ++ ${OPENMP_PTHREAD_LIB} + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports") + else() + set(LLVM_LINK_COMPONENTS +@@ -37,6 +38,7 @@ else() + ) + add_llvm_library(omptarget SHARED ${LIBOMPTARGET_SRC_FILES} + LINK_LIBS ${CMAKE_DL_LIBS} ++ ${OPENMP_PTHREAD_LIB} + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports" + ) + target_compile_definitions(omptarget PUBLIC OMPTARGET_PROFILE_ENABLED) diff --git a/var/spack/repos/builtin/packages/llvm/llvm13-fujitsu.patch b/var/spack/repos/builtin/packages/llvm/llvm13-fujitsu.patch new file mode 100644 index 00000000000000..aa215bcffaa226 --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm/llvm13-fujitsu.patch @@ -0,0 +1,15 @@ +--- spack-src/libcxx/include/__config.org 2022-02-03 14:36:11.000000000 +0900 ++++ spack-src/libcxx/include/__config 2022-02-04 08:39:59.000000000 +0900 +@@ -52,7 +52,11 @@ + # elif __cplusplus <= 201703L + # define _LIBCPP_STD_VER 17 + # elif __cplusplus <= 202002L +-# define _LIBCPP_STD_VER 20 ++# if defined(__FUJITSU) || defined(__CLANG_FUJITSU) ++# define _LIBCPP_STD_VER 17 ++# else ++# define _LIBCPP_STD_VER 20 ++# endif + # else + # define _LIBCPP_STD_VER 21 // current year, or date of c++2b ratification + # endif diff --git a/var/spack/repos/builtin/packages/llvm/llvm13-thread.patch b/var/spack/repos/builtin/packages/llvm/llvm13-thread.patch new file mode 100644 index 00000000000000..0067a930373e36 --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm/llvm13-thread.patch @@ -0,0 +1,19 @@ +--- spack-src/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake.org 2022-02-08 14:58:13.000000000 +0900 ++++ spack-src/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake 2022-02-08 13:58:53.000000000 +0900 +@@ -276,4 +276,5 @@ + endif() + endif() + +-set(OPENMP_PTHREAD_LIB ${LLVM_PTHREAD_LIB}) ++find_package(Threads REQUIRED) ++set(OPENMP_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT}) +--- spack-src/openmp/libomptarget/src/CMakeLists.txt.org 2022-02-09 08:49:35.000000000 +0900 ++++ spack-src/openmp/libomptarget/src/CMakeLists.txt 2022-02-09 08:50:18.000000000 +0900 +@@ -36,6 +36,7 @@ + endif() + target_link_libraries(omptarget PRIVATE + ${CMAKE_DL_LIBS} ++ ${OPENMP_PTHREAD_LIB} + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports") + + # Install libomptarget under the lib destination folder. diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index d8a55b6a7c9f44..773598c36cc87e 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -35,6 +35,8 @@ class Llvm(CMakePackage, CudaPackage): # fmt: off version('main', branch='main') + version('14.0.0', sha256='87b1a068b370df5b79a892fdb2935922a8efb1fddec4cc506e30fe57b6a1d9c4') + version('13.0.1', sha256='09c50d558bd975c41157364421820228df66632802a4a6a7c9c17f86a7340802') version('13.0.0', sha256='a1131358f1f9f819df73fa6bff505f2c49d176e9eef0a3aedd1fdbce3b4630e8') version('12.0.1', sha256='66b64aa301244975a4aea489f402f205cde2f53dd722dad9e7b77a0459b4c8df') version('12.0.0', sha256='8e6c99e482bb16a450165176c2d881804976a2d770e0445af4375e78a1fbf19c') @@ -170,6 +172,7 @@ class Llvm(CMakePackage, CudaPackage): variant('version_suffix', default='none', description="Add a symbol suffix") variant('z3', default=False, description='Use Z3 for the clang static analyzer') + provides('libllvm@14', when='@14.0.0:14') provides('libllvm@13', when='@13.0.0:13') provides('libllvm@12', when='@12.0.0:12') provides('libllvm@11', when='@11.0.0:11') @@ -203,8 +206,10 @@ class Llvm(CMakePackage, CudaPackage): depends_on("libelf", when="+cuda") # libomptarget depends_on("libffi", when="+cuda") # libomptarget - # ncurses dependency + # llvm-config --system-libs libraries. depends_on("ncurses+termlib") + depends_on("zlib") + depends_on("libxml2") # lldb dependencies depends_on("swig", when="+lldb") @@ -235,6 +240,8 @@ class Llvm(CMakePackage, CudaPackage): conflicts("%gcc@:5.0", when="@8:") # clang/lib: a lambda parameter cannot shadow an explicitly captured entity conflicts("%clang@8:", when="@:4") + # Internal compiler error on gcc 8.4 on aarch64 https://bugzilla.redhat.com/show_bug.cgi?id=1958295 + conflicts('%gcc@8.4:8.4.9', when='@12: target=aarch64:') # When these versions are concretized, but not explicitly with +libcxx, these # conflicts will enable clingo to set ~libcxx, making the build successful: @@ -344,9 +351,12 @@ class Llvm(CMakePackage, CudaPackage): patch('llvm-gcc11.patch', when='@9:11%gcc@11:') - # Add LLVM_VERSION_SUFFIX - # https://reviews.llvm.org/D115818 - patch('llvm-version-suffix-macro.patch', when='@:13.0.0') + # add -lpthread to build OpenMP libraries with Fujitsu compiler + patch('llvm12-thread.patch', when='@12 %fj') + patch('llvm13-thread.patch', when='@13 %fj') + + # avoid build failed with Fujitsu compiler + patch('llvm13-fujitsu.patch', when='@13 %fj') # The functions and attributes below implement external package # detection for LLVM. See: @@ -476,6 +486,11 @@ def f77(self): result = os.path.join(self.spec.prefix.bin, 'flang') return result + @property + def libs(self): + return LibraryList(self.llvm_config("--libfiles", "all", + result="list")) + @run_before('cmake') def codesign_check(self): if self.spec.satisfies("+code_signing"): @@ -721,9 +736,10 @@ def llvm_config(self, *args, **kwargs): if not kwargs.get('output'): kwargs['output'] = str ret = lc(*args, **kwargs) - if kwargs.get('output') == "list": + if kwargs.get('result') == "list": return ret.split() - return ret + else: + return ret def get_llvm_targets_to_build(spec): diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 196789a5a593e4..89f1ed1ea1db0e 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -45,7 +45,7 @@ class Lmod(AutotoolsPackage): version('6.4.1', sha256='a260b4e42269a80b517c066ba8484658362ea095e80767a2376bbe33d9b070a5') version('6.3.7', sha256='55ddb52cbdc0e2e389b3405229336df9aabfa582c874f5df2559ea264e2ee4ae') - depends_on('lua@5.1:') + depends_on('lua+shared@5.1:') depends_on('lua-luaposix', type=('build', 'run')) depends_on('lua-luafilesystem', type=('build', 'run')) depends_on('tcl', type=('build', 'link', 'run')) diff --git a/var/spack/repos/builtin/packages/lordec/package.py b/var/spack/repos/builtin/packages/lordec/package.py index ede05850da914f..571a59d2390aee 100644 --- a/var/spack/repos/builtin/packages/lordec/package.py +++ b/var/spack/repos/builtin/packages/lordec/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Lordec(MakefilePackage): @@ -24,6 +25,10 @@ def url_for_version(self, version): return "https://gite.lirmm.fr/lordec/lordec-releases/uploads/800a96d81b3348e368a0ff3a260a88e1/lordec-src_0.9.tar.bz2" depends_on('boost@1.48.0:1.64.0', type=['build', 'link']) + # 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('gatb-core@1.4.1:', type=['build', 'link', 'run']) depends_on('zlib', type=['build', 'link']) diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py index 07369ffe2b9239..608dd258dfb623 100644 --- a/var/spack/repos/builtin/packages/lwgrp/package.py +++ b/var/spack/repos/builtin/packages/lwgrp/package.py @@ -15,6 +15,7 @@ class Lwgrp(AutotoolsPackage): git = "https://github.com/LLNL/lwgrp.git" version('main', branch='main') + version('1.0.5', sha256='16b579e13b8a5218f4fe1b8715f6aafb09133a0cefbcd6b2eaf73802955dee6b') version('1.0.4', sha256='0c933df7658660a0225f8e3a940eb2621efa4421397859417c8d90d906d4e90a') version('1.0.3', sha256='20b2fc3908bfdf04d1c177f86e227a147214cd155c548b3dd75e54c78e1c1c47') version('1.0.2', sha256='c9d4233946e40f01efd0b4644fd9224becec51b9b5f8cbf45f5bac3129b5b536') diff --git a/var/spack/repos/builtin/packages/lwtnn/package.py b/var/spack/repos/builtin/packages/lwtnn/package.py new file mode 100644 index 00000000000000..4352a76c0ac2cc --- /dev/null +++ b/var/spack/repos/builtin/packages/lwtnn/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class Lwtnn(CMakePackage): + """Lightweight Trained Neural Network.""" + + homepage = "https://github.com/lwtnn/lwtnn" + url = "https://github.com/lwtnn/lwtnn/archive/refs/tags/v2.12.1.tar.gz" + + maintainers = ['haralmha'] + + version('2.12.1', sha256='b820e698d4ed60737e646ca87a42354e8ac548403348b7f2940e8fda1c0f8203') + + depends_on('boost@1.54:') + depends_on('eigen@:3.3.99', when='@:2.12.1') diff --git a/var/spack/repos/builtin/packages/madx/package.py b/var/spack/repos/builtin/packages/madx/package.py new file mode 100644 index 00000000000000..5cb8dd76f10bc7 --- /dev/null +++ b/var/spack/repos/builtin/packages/madx/package.py @@ -0,0 +1,44 @@ +# Copyright 2013-2021 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 import * + + +class Madx(CMakePackage): + """MAD-X (Methodical Accelerator Design) is an application + for designing particle accelerators.""" + + homepage = "https://github.com/MethodicalAcceleratorDesign/MAD-X" + url = "https://github.com/MethodicalAcceleratorDesign/MAD-X/archive/refs/tags/5.07.00.tar.gz" + git = "https://github.com/MethodicalAcceleratorDesign/MAD-X.git" + + maintainers = ['wdconinc'] + + # Supported MAD-X versions + version('5.08.01', sha256='89c943fcb474344a4f7d28de98e8eae0aec40f779bf908daff79043bf3520555') + version('5.08.00', sha256='0b3fe2aca8899289ef7bfb98d745f13b8c4082e239f54f2662c9cad8d1e63a53') + version('5.07.00', sha256='77c0ec591dc3ea76cf57c60a5d7c73b6c0d66cca1fa7c4eb25a9071e8fc67e60') + + variant('x11', default=True, description='Turn on plotting using X11') + + # patch for gcc-11 to avoid error due to variable shadowing + patch('https://github.com/MethodicalAcceleratorDesign/MAD-X/commit/e7a434290df675b894f70026ce0c7c217330cce5.patch?full_index=1', + sha256='d09c26f10b6b69d2cb209fee317f90804d92b419026d5181007559119daf33f6', + when='@:5.07.00') + + depends_on('cmake@2.8:', type='build') + + depends_on("libx11") + depends_on("zlib") + + def cmake_args(self): + args = [ + self.define('MADX_STATIC', False), # Turn on for static linking + self.define('MADX_LAPACK', True), # Use system blas/lapack installation + self.define('MADX_NTPSA', True), # Build with NTPSA + self.define('MADX_ONLINE', False), # Build with Online model + self.define_from_variant('MADX_X11', 'x11'), # Turn on plotting using X11 + ] + return args diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 00ca752d3643d4..3a2b91b8e427be 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -7,6 +7,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Magics(CMakePackage): @@ -72,7 +73,11 @@ class Magics(CMakePackage): # https://github.com/OSGeo/PROJ/wiki/proj.h-adoption-status depends_on('proj@:5', when='@:4.2.6') depends_on('proj@6:', when='@4.3:') - depends_on('boost') + + # 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('expat') # Magics (at least up to version 2.34.3) should directly and diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index b9d26fa2906c24..08c4b3cf77dc14 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -23,7 +23,8 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage): test_requires_compiler = True version('master', branch='master') - version('2.6.1', sha256='6cd83808c6e8bc7a44028e05112b3ab4e579bcc73202ed14733f66661127e213') + version('2.6.2rc1', commit='5959b8783e45f1809812ed96ae762f38ee701972') + version('2.6.1', sha256='6cd83808c6e8bc7a44028e05112b3ab4e579bcc73202ed14733f66661127e213', preferred=True) version('2.6.0', sha256='50cdd384f44f06a34469e7125f8b2ffae13c1975d373c3f1510d91be2b7638ec') version('2.5.4', sha256='7734fb417ae0c367b418dea15096aef2e278a423e527c615aab47f0683683b67') version('2.5.3', sha256='c602d269a9f9a3df28f6a4f593be819abb12ed3fa413bba1ff8183de721c5ef6') @@ -57,28 +58,50 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage): # https://bitbucket.org/icl/magma/issues/25/error-cusparsesolveanalysisinfo_t-does-not conflicts('^cuda@11:', when='@:2.5.3') + # Many cuda_arch values are not yet recognized by MAGMA's CMakeLists.txt + for target in [10, 11, 12, 13, 21, 32, 52, 53, 61, 62, 72, 86]: + conflicts('cuda_arch={}'.format(target)) + + # Some cuda_arch values had support added recently + conflicts('cuda_arch=37', when='@:2.5') + conflicts('cuda_arch=60', when='@:2.2') + conflicts('cuda_arch=70', when='@:2.2') + conflicts('cuda_arch=75', when='@:2.5.0') + conflicts('cuda_arch=80', when='@:2.5.3') + patch('ibm-xl.patch', when='@2.2:2.5.0%xl') patch('ibm-xl.patch', when='@2.2:2.5.0%xl_r') patch('magma-2.3.0-gcc-4.8.patch', when='@2.3.0%gcc@:4.8') patch('magma-2.5.0.patch', when='@2.5.0') patch('magma-2.5.0-cmake.patch', when='@2.5.0') patch('cmake-W.patch', when='@2.5.0:%nvhpc') - patch('sm_37.patch', when='@2.5.4 cuda_arch=37') @run_before('cmake') - def generate_cuda(self): - if '@master' in self.spec: - backend = 'cuda' - cuda_arch = self.spec.variants['cuda_arch'].value - gpu_target = ' '.join('sm_{0}'.format(i) for i in cuda_arch) - if '+rocm' in self.spec: - backend = 'hip' - gpu_target = self.spec.variants['amdgpu_target'].value - with open('make.inc', 'w') as inc: - inc.write('FORT = true\n') - inc.write('GPU_TARGET = %s\n' % gpu_target) - inc.write('BACKEND = %s\n' % backend) - make('generate') + def generate_gpu_config(self): + """If not an official release, a generation step is required to build""" + spec = self.spec + + # 2.6.2rc1 is not an official release + should_generate = ('@master' in spec) or ('@2.6.2rc1' in spec) + + if not should_generate: + return + + backend = 'cuda' if '+cuda' in spec else 'hip' + + gpu_target = '' + if '+cuda' in spec: + cuda_archs = spec.variants['cuda_arch'].value + gpu_target = ' '.join('sm_{0}'.format(i) for i in cuda_archs) + else: + gpu_target = spec.variants['amdgpu_target'].value + + with open('make.inc', 'w') as inc: + inc.write('FORT = true\n') + inc.write('GPU_TARGET = {0}\n'.format(gpu_target)) + inc.write('BACKEND = {0}\n'.format(backend)) + + make('generate') def cmake_args(self): spec = self.spec @@ -154,7 +177,7 @@ def cache_test_sources(self): self.cache_extra_test_sources([self.test_src_dir]) def test(self): - test_dir = join_path(self.install_test_root, self.test_src_dir) + test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir) with working_dir(test_dir, create=False): pkg_config_path = '{0}/lib/pkgconfig'.format(self.prefix) with spack.util.environment.set_env(PKG_CONFIG_PATH=pkg_config_path): diff --git a/var/spack/repos/builtin/packages/magma/sm_37.patch b/var/spack/repos/builtin/packages/magma/sm_37.patch deleted file mode 100644 index 0d7eaf0dcefea4..00000000000000 --- a/var/spack/repos/builtin/packages/magma/sm_37.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- a/CMakeLists.txt 2021-06-19 15:53:21.028881552 +0000 -+++ b/CMakeLists.txt 2021-06-19 15:54:09.204228276 +0000 -@@ -132,7 +132,7 @@ - endif() - - if (GPU_TARGET MATCHES Kepler) -- set( GPU_TARGET "${GPU_TARGET} sm_30 sm_35" ) -+ set( GPU_TARGET "${GPU_TARGET} sm_30 sm_35 sm_37" ) - endif() - - if (GPU_TARGET MATCHES Maxwell) -@@ -182,6 +182,15 @@ - message( STATUS " compile for CUDA arch 3.5 (Kepler)" ) - endif() - -+ if (GPU_TARGET MATCHES sm_37) -+ if (NOT MIN_ARCH) -+ set( MIN_ARCH 300 ) -+ endif() -+ set( NV_SM ${NV_SM} -gencode arch=compute_37,code=sm_37 ) -+ set( NV_COMP -gencode arch=compute_37,code=compute_37 ) -+ message( STATUS " compile for CUDA arch 3.7 (Kepler)" ) -+ endif() -+ - if (GPU_TARGET MATCHES sm_50) - if (NOT MIN_ARCH) - set( MIN_ARCH 500 ) diff --git a/var/spack/repos/builtin/packages/mallocmc/package.py b/var/spack/repos/builtin/packages/mallocmc/package.py index 874f14e4a51152..f0dea06ec5131c 100644 --- a/var/spack/repos/builtin/packages/mallocmc/package.py +++ b/var/spack/repos/builtin/packages/mallocmc/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mallocmc(CMakePackage): @@ -34,4 +35,9 @@ class Mallocmc(CMakePackage): depends_on('cmake@2.8.12.2:', type='build') depends_on('boost@1.48.0:', type='link') + + # 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, type='link') depends_on('cuda@5.0:', type='link') diff --git a/var/spack/repos/builtin/packages/man-db/package.py b/var/spack/repos/builtin/packages/man-db/package.py index 1e2696cf963902..c91f494facff8c 100644 --- a/var/spack/repos/builtin/packages/man-db/package.py +++ b/var/spack/repos/builtin/packages/man-db/package.py @@ -13,14 +13,18 @@ class ManDb(AutotoolsPackage): flat-text whatis databases.""" homepage = "https://www.nongnu.org/man-db/" - url = "https://git.savannah.nongnu.org/cgit/man-db.git/snapshot/man-db-2.7.6.1.tar.gz" + git = "https://gitlab.com/cjwatson/man-db" + url = "https://download.savannah.nongnu.org/releases/man-db/man-db-2.10.1.tar.xz" - version('2.7.6.1', sha256='dd913662e341fc01e6721878b6cbe1001886cc3bfa6632b095937bba3238c779') + version('2.10.1', sha256='2ffd8f2e80122fe72e60c740c851e6a3e15c9a7921185eb4752c1c672824bed6') + version('2.7.6.1', sha256='08edbc52f24aca3eebac429b5444efd48b9b90b9b84ca0ed5507e5c13ed10f3f') - depends_on('autoconf') - depends_on('automake') + depends_on('pkgconf', type='build') depends_on('gettext') - depends_on('libpipeline') + depends_on('libpipeline@1.5.0:', when='@2.8.0:') + depends_on('libpipeline@1.4.0:', when='@2.7.1:') + depends_on('libpipeline@1.3.0:', when='@2.6.7:') + depends_on('libpipeline@1.1.0:', when='@2.6.0:') depends_on('flex') depends_on('gdbm') depends_on('groff', type=('build', 'link', 'run')) @@ -38,3 +42,6 @@ def configure_args(self): '--with-systemdtmpfilesdir={0}/tmp'.format(self.prefix) ] return args + + def install(self, spec, prefix): + make('install', 'DESTDIR=%s' % prefix) diff --git a/var/spack/repos/builtin/packages/mapnik/package.py b/var/spack/repos/builtin/packages/mapnik/package.py index c0cfa45ba41775..d51618917c26cc 100644 --- a/var/spack/repos/builtin/packages/mapnik/package.py +++ b/var/spack/repos/builtin/packages/mapnik/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mapnik(AutotoolsPackage): @@ -21,6 +22,11 @@ class Mapnik(AutotoolsPackage): depends_on('python', type=('build', 'run')) depends_on('boost@:1.72.0 +regex+filesystem+system+icu+program_options cxxstd=11', when='@3.0.23') depends_on('boost@:1.69.0 +regex+filesystem+system+icu+program_options cxxstd=11', when='@3.0.22') + + # 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('icu4c') depends_on('zlib') depends_on('freetype') diff --git a/var/spack/repos/builtin/packages/mariadb-c-client/package.py b/var/spack/repos/builtin/packages/mariadb-c-client/package.py index 0e565317cd2c91..12f1aa210ff241 100644 --- a/var/spack/repos/builtin/packages/mariadb-c-client/package.py +++ b/var/spack/repos/builtin/packages/mariadb-c-client/package.py @@ -22,6 +22,7 @@ class MariadbCClient(CMakePackage): list_url = "https://downloads.mariadb.com/Connectors/c/" list_depth = 1 + version('3.2.6', sha256='9c22fff9d18db7ebdcb63979882fb6b68d2036cf2eb62f043eac922cd36bdb91') version('3.1.13', sha256='0271a5edfd64b13bca5937267474e4747d832ec62e169fc2589d2ead63746875') version('3.1.9', sha256='108d99bf2add434dcb3bd9526ba1d89a2b9a943b62dcd9d0a41fcbef8ffbf2c7') version('3.1.6', sha256='d266bb67df83c088c4fb05392713d2504c67be620894cedaf758a9561c116720') @@ -60,8 +61,8 @@ class MariadbCClient(CMakePackage): depends_on('krb5') # patch needed for cmake-3.20 - patch('https://github.com/mariadb-corporation/mariadb-connector-c/commit/242cab8c.patch', - sha256='bcfa0a73a34654495f5dea3cecdcb7de911c7c2446240aeaa674a4b2ab46f58c', when='@:3.1.12') + patch('https://github.com/mariadb-corporation/mariadb-connector-c/commit/242cab8c.patch?full_index=1', + sha256='760fd19cd8d4d756a0799ed9110cfd2898237e43835fefe3668079c5b87fc36d', when='@:3.1.12') def url_for_version(self, version): url = "https://downloads.mariadb.com/Connectors/c/connector-c-{0}/mariadb-connector-c-{1}-src.tar.gz" diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py index e117e72b46a6a9..0e4a10e46375d5 100644 --- a/var/spack/repos/builtin/packages/mariadb/package.py +++ b/var/spack/repos/builtin/packages/mariadb/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mariadb(CMakePackage): @@ -20,6 +21,7 @@ class Mariadb(CMakePackage): homepage = "https://mariadb.org/about/" url = "http://ftp.hosteurope.de/mirror/archive.mariadb.org/mariadb-10.2.8/source/mariadb-10.2.8.tar.gz" + version('10.8.2', sha256='14e0f7f8817a41bbcb5ebdd2345a9bd44035fde7db45c028b6d4c35887ae956c') version('10.4.12', sha256='fef1e1d38aa253dd8a51006bd15aad184912fce31c446bb69434fcde735aa208') version('10.4.8', sha256='10cc2c3bdb76733c9c6fd1e3c6c860d8b4282c85926da7d472d2a0e00fffca9b') version('10.4.7', sha256='c8e6a6d0bb4f22c416ed675d24682a3ecfa383c5283efee70c8edf131374d817') @@ -35,7 +37,10 @@ class Mariadb(CMakePackage): provides('mariadb-client') provides('mysql-client') - depends_on('boost') + # 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('cmake@2.6:', type='build') depends_on('pkgconfig', type='build') depends_on('bison', type='build') @@ -57,10 +62,10 @@ class Mariadb(CMakePackage): conflicts('%gcc@9.1.0:', when='@:5.5') # patch needed for cmake-3.20 - patch('https://github.com/mariadb-corporation/mariadb-connector-c/commit/242cab8c.patch', - sha256='bcfa0a73a34654495f5dea3cecdcb7de911c7c2446240aeaa674a4b2ab46f58c', + patch('https://github.com/mariadb-corporation/mariadb-connector-c/commit/242cab8c.patch?full_index=1', + sha256='760fd19cd8d4d756a0799ed9110cfd2898237e43835fefe3668079c5b87fc36d', working_dir='libmariadb', - when='@10.2.8:') + when='@10.2.8:10.4.12') def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/masurca/package.py b/var/spack/repos/builtin/packages/masurca/package.py index d29cce3a8e64a8..896cc0155dec88 100644 --- a/var/spack/repos/builtin/packages/masurca/package.py +++ b/var/spack/repos/builtin/packages/masurca/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Masurca(Package): @@ -20,7 +21,11 @@ class Masurca(Package): version('3.2.9', sha256='795ad4bd42e15cf3ef2e5329aa7e4f2cdeb7e186ce2e350a45127e319db2904b') depends_on('perl', type=('build', 'run')) - depends_on('boost') + + # 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('zlib') patch('arm.patch', when='target=aarch64:') diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index 69acbc0089b7fa..3cc7d7a4e8a481 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -75,6 +75,10 @@ def setup_build_environment(self, env): if 'shared' in self.spec.variants['libs'].value: env.set('SHARED', 'yes') + if '%nvhpc' in self.spec: + # -Wno-format-nonliteral is not supported. + env.set('WARNING_CFLAGS', '-Wall -Wextra -Wformat=2') + def build(self, spec, prefix): make('no_test') diff --git a/var/spack/repos/builtin/packages/meraculous/package.py b/var/spack/repos/builtin/packages/meraculous/package.py index 04ffd9fe07afec..e20a4f6c3dd2c4 100644 --- a/var/spack/repos/builtin/packages/meraculous/package.py +++ b/var/spack/repos/builtin/packages/meraculous/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Meraculous(CMakePackage, SourceforgePackage): @@ -19,6 +20,11 @@ class Meraculous(CMakePackage, SourceforgePackage): depends_on('perl', type=('build', 'run')) depends_on('boost@1.5.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('gnuplot@3.7:') depends_on('perl-log-log4perl', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/mercury/package.py b/var/spack/repos/builtin/packages/mercury/package.py index c0756f9a43b868..4a39ea90f4e1eb 100644 --- a/var/spack/repos/builtin/packages/mercury/package.py +++ b/var/spack/repos/builtin/packages/mercury/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mercury(CMakePackage): @@ -53,7 +54,16 @@ class Mercury(CMakePackage): # openpa dependency is removed in 2.1.0 depends_on('openpa@1.0.3:', when='@:2.0.1%gcc@:4.8') depends_on('boost@1.48:', when='+boostsys') + + # 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, when='+boostsys') depends_on('boost', when='@:0.9') # internal boost headers were added in 1.0.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, when='@:0.9') depends_on('ucx+thread_multiple', when='+ucx') # Fix CMake check_symbol_exists diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index f935543f2fd8ab..3168e66e089627 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -44,16 +44,14 @@ class Mesa(MesonPackage): depends_on('zlib@1.2.3:') # Internal options - variant('llvm', default=True, description="Enable LLVM.") + variant('llvm', default=False, description="Enable LLVM.") _SWR_AUTO_VALUE = 'auto' _SWR_ENABLED_VALUES = (_SWR_AUTO_VALUE, 'avx', 'avx2', 'knl', 'skx') _SWR_DISABLED_VALUES = ('none',) variant('swr', default=_SWR_AUTO_VALUE, values=_SWR_DISABLED_VALUES + _SWR_ENABLED_VALUES, - multi=True, + multi=True, when='+llvm', description="Enable the SWR driver.") - for swr_enabled_value in _SWR_ENABLED_VALUES: - conflicts('~llvm', when='swr={0}'.format(swr_enabled_value)) # Front ends variant('osmesa', default=True, description="Enable the OSMesa frontend.") @@ -103,6 +101,9 @@ class Mesa(MesonPackage): # OpenGL ES requires OpenGL conflicts('~opengl +opengles') + # https://gitlab.freedesktop.org/mesa/mesa/-/issues/5455 + conflicts('llvm@13.0.0:', when='@:21.3.1 +llvm') + # requires native to be added to llvm_modules when using gallium swrast patch('https://cgit.freedesktop.org/mesa/mesa/patch/meson.build?id=054dd668a69acc70d47c73abe4646e96a1f23577', sha256='36096a178070e40217945e12d542dfe80016cb897284a01114d616656c577d73', when='@21.0.0:21.0.3') diff --git a/var/spack/repos/builtin/packages/mesa18/package.py b/var/spack/repos/builtin/packages/mesa18/package.py index bc18121b3ad5f0..0cbd8296fe40a1 100644 --- a/var/spack/repos/builtin/packages/mesa18/package.py +++ b/var/spack/repos/builtin/packages/mesa18/package.py @@ -41,8 +41,9 @@ class Mesa18(AutotoolsPackage): depends_on('ncurses+termlib') # Internal options - variant('llvm', default=True, description="Enable LLVM.") - variant('swr', values=any_combination_of('avx', 'avx2', 'knl', 'skx'), + variant('llvm', default=False, description="Enable LLVM.") + _SWR_ENABLED_VALUES = ('avx', 'avx2', 'knl', 'skx') + variant('swr', values=any_combination_of(*_SWR_ENABLED_VALUES), description="Enable the SWR driver.") # conflicts('~llvm', when='~swr=none') diff --git a/var/spack/repos/builtin/packages/meshtool/package.py b/var/spack/repos/builtin/packages/meshtool/package.py index fa377c40abecc8..8d189600e8295e 100644 --- a/var/spack/repos/builtin/packages/meshtool/package.py +++ b/var/spack/repos/builtin/packages/meshtool/package.py @@ -16,6 +16,7 @@ class Meshtool(MakefilePackage): version('master', branch='master') # Version to use with openCARP releases + version('oc9.0', commit='6c5cfbd067120901f15a04bf63beec409bda6dc9') version('oc8.2', commit='6c5cfbd067120901f15a04bf63beec409bda6dc9') version('oc8.1', commit="6c5cfbd067120901f15a04bf63beec409bda6dc9") version('oc7.0', commit="6c5cfbd067120901f15a04bf63beec409bda6dc9") diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py index c6cf68830de5d7..646ae33957a98e 100644 --- a/var/spack/repos/builtin/packages/meson/package.py +++ b/var/spack/repos/builtin/packages/meson/package.py @@ -14,8 +14,12 @@ class Meson(PythonPackage): homepage = "https://mesonbuild.com/" url = "https://github.com/mesonbuild/meson/archive/0.49.0.tar.gz" + tags = ['build-tools'] + maintainers = ['michaelkuhn'] + version('0.61.2', sha256='33cd555314a94d52acfbb3f6f44d4e61c4ad0bfec7acf4301be7e40bb969b3a8') + version('0.60.3', sha256='6c191a9b4049e0c9a2a7d1275ab635b91f6ffec1912d75df4c5ec6acf35f74fe') version('0.60.0', sha256='5672a560fc4094c88ca5b8be0487e099fe84357e5045f5aecf1113084800e6fd') version('0.59.2', sha256='e6d5ccd503d41f938f6cfc4dc9e7326ffe28acabe091b1ff0c6535bdf09732dd') version('0.59.1', sha256='f256eb15329a6064f8cc1f23b29de1fa8d21e324f939041e1a4efe77cf1362ef') diff --git a/var/spack/repos/builtin/packages/metabat/package.py b/var/spack/repos/builtin/packages/metabat/package.py index d0e37532a92e7d..1d7082b646a42a 100644 --- a/var/spack/repos/builtin/packages/metabat/package.py +++ b/var/spack/repos/builtin/packages/metabat/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Metabat(CMakePackage): @@ -21,6 +22,11 @@ class Metabat(CMakePackage): depends_on('cmake', type='build', when='@2.13:') depends_on('boost@1.55.0:', type=('build', 'run')) + + # 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, type=('build', 'run')) depends_on('perl', type='run') depends_on('zlib', type='link') depends_on('ncurses', type='link') diff --git a/var/spack/repos/builtin/packages/metall/package.py b/var/spack/repos/builtin/packages/metall/package.py index ffad5e2822a055..3e9f3276bb9d7f 100644 --- a/var/spack/repos/builtin/packages/metall/package.py +++ b/var/spack/repos/builtin/packages/metall/package.py @@ -3,13 +3,15 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost + class Metall(CMakePackage): """A Persistent Memory Allocator For Data-Centric Analytics""" homepage = "https://github.com/LLNL/metall" git = "https://github.com/LLNL/metall.git" - url = "https://github.com/LLNL/metall/archive/v0.17.tar.gz" + url = "https://github.com/LLNL/metall/archive/refs/tags/v0.19.tar.gz" maintainers = ['KIwabuchi', 'rogerpearce', 'mayagokhale'] @@ -18,6 +20,8 @@ class Metall(CMakePackage): version('master', branch='master') version('develop', branch='develop') + version('0.19', sha256='541f428d4a7e629e1e60754f9d5f5e84fe973d421b2647f5ed2ec25b977ddd56') + version('0.18', sha256='cd1fee376d0523d43e43b92c43731d45a2c4324278a071a5f626f400afecef24') version('0.17', sha256='8de6ec2a430a141a2ad465ccd40ba9d0eb0c57d9f2f2de657fe837a73c466e61') version('0.16', sha256='190fa6936cbbfad1844659eb1fcfd1ad8c5880f60e76e223e33c506d371ea3a3') version('0.15', sha256='a1ea475ce1297b0c4cdf450544dc60ecf1b0a30c548b08ba77ccda5585df7248') @@ -37,6 +41,11 @@ class Metall(CMakePackage): # to run test (adds a call to 'make test' to the build) depends_on('googletest %gcc@8.1.0:', type=('test')) + # 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, type=('build', 'link')) + def cmake_args(self): if self.run_tests: args = ['-DBUILD_TEST=ON', '-DSKIP_DOWNLOAD_GTEST=ON'] @@ -45,11 +54,6 @@ def cmake_args(self): args = ['-DINSTALL_HEADER_ONLY=ON'] return args - # Set environmental variables for the build step - # setup_environment() was replaced by setup_build_environment()? - # (https://github.com/spack/spack/pull/11115) - # This page has not been updated? - # https://spack-tutorial.readthedocs.io/en/latest/tutorial_advanced_packaging.html def setup_build_environment(self, env): # Configure the directories for test if self.run_tests: diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index b47a788e926cf1..0fa5c7f3b76f80 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -335,7 +335,9 @@ def yes_no(varstr): '/usr/lib64', '/usr/lib', '/usr/local/lib64', - '/usr/local/lib'] + '/usr/local/lib', + '/usr/lib/x86_64-linux-gnu', + ] def is_sys_lib_path(dir): return dir in sys_lib_paths diff --git a/var/spack/repos/builtin/packages/mgis/package.py b/var/spack/repos/builtin/packages/mgis/package.py index 8006e5ce2bbdc6..7cbd960db93d7f 100644 --- a/var/spack/repos/builtin/packages/mgis/package.py +++ b/var/spack/repos/builtin/packages/mgis/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mgis(CMakePackage): @@ -64,8 +65,13 @@ class Mgis(CMakePackage): depends_on('tfel@master', when="@master") depends_on('boost+python+numpy', when='+python', type=('build', 'link', 'run')) + # 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, when='+python') depends_on('py-numpy', when='+python', type=('build', 'link', 'run')) + extends('python', when='+python') def patch(self): diff --git a/var/spack/repos/builtin/packages/migraphx/package.py b/var/spack/repos/builtin/packages/migraphx/package.py index b6eea433788d21..75b41ff251adf2 100644 --- a/var/spack/repos/builtin/packages/migraphx/package.py +++ b/var/spack/repos/builtin/packages/migraphx/package.py @@ -15,6 +15,8 @@ class Migraphx(CMakePackage): maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='3ef48ac03b909d1a1aa1f91f365ce64af2ce66635b6efb5ad0b207dc51ff2fd6') + version('5.0.0', sha256='779a91ccfa4c2576251189f0c646ff7707c3646319c7d5dd137872beb52d2953') version('4.5.2', sha256='ecfd9a8e7967076f056d5b6a90b22f8919b82226443769b181193f16ebf58b83') version('4.5.0', sha256='8d243a48406af7f960c03bc28a16fad931de8e008ae848799adae504cc5f1355') version('4.3.1', sha256='e0b04da37aed937a2b2218059c189559a15460c191b5e9b00c7366c81c90b06e') @@ -53,7 +55,7 @@ def url_for_version(self, version): depends_on('py-pybind11@2.6:', type='build', when='@4.1.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('llvm-amdgpu@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/minc-toolkit/package.py b/var/spack/repos/builtin/packages/minc-toolkit/package.py index be63cf6a7f8fcc..5dfc62f19322d9 100644 --- a/var/spack/repos/builtin/packages/minc-toolkit/package.py +++ b/var/spack/repos/builtin/packages/minc-toolkit/package.py @@ -21,6 +21,12 @@ class MincToolkit(CMakePackage): description="Build visual tools (Display, register, etc.)") depends_on('perl') + # included Perl packages are not added to the Perl path by default. + # rather than inheriting from both CMakePackage and PerlPackage, + # it seems clean just to add them as dependencies: + depends_on('perl-text-format', type=('build', 'run')) + depends_on('perl-getopt-tabular', type=('build', 'run')) + depends_on('perl-mni-perllib', type=('build', 'run')) depends_on('flex', type='build') depends_on('bison', type='build') depends_on('zlib', type='link') @@ -31,7 +37,7 @@ def cmake_args(self): self.define_from_variant('MT_BUILD_VISUAL_TOOLS', 'visualisation'), # newer ANTs packaged separately "-DMT_BUILD_ANTS=OFF", - # build error; should package newer c3d separately + # newer c3d packaged separately "-DMT_BUILD_C3D=OFF", # should be packaged separately with newer ITK "-DMT_BUILD_ELASTIX=OFF" diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index c79c8ea8c2546c..922074d098dfb8 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class MiopenHip(CMakePackage): @@ -12,10 +13,12 @@ class MiopenHip(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/MIOpen" git = "https://github.com/ROCmSoftwarePlatform/MIOpen.git" - url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='e73c18c6e0791d6ca8958508d899072ce12fc6c27cf78792d0c2a5c7e34427be') + version('5.0.0', sha256='4a46a2bdd11a2597c83cdb0c5e208b81728fab2ff7c585dabfca5aa05ee7a4f7') version('4.5.2', sha256='cb49bdf215ed9881755239b6312d72f829c1a0edf510e6d1fbb206c41f5406fc') version('4.5.0', sha256='be2f5ce962e15e62d427978422498c0ddf821b91fd40777a1ba915a2794d6fda') version('4.3.1', sha256='1fb2fd8b24f984174ec5338a58b7964e128b74dafb101373a41c8ed33955251a') @@ -33,6 +36,11 @@ class MiopenHip(CMakePackage): depends_on('cmake@3:', type='build') depends_on('pkgconfig', type='build') + + # 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.67.0:1.73.0') depends_on('bzip2') depends_on('sqlite') @@ -42,7 +50,8 @@ class MiopenHip(CMakePackage): patch('0001-Add-rocm-path-and-rocm-device-lib-path-flags.patch', when='@3.9.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('rocm-clang-ocl@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/miopen-opencl/package.py b/var/spack/repos/builtin/packages/miopen-opencl/package.py index bfe3a13f309d38..9b5c3c0126e0a6 100644 --- a/var/spack/repos/builtin/packages/miopen-opencl/package.py +++ b/var/spack/repos/builtin/packages/miopen-opencl/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class MiopenOpencl(CMakePackage): @@ -12,10 +13,12 @@ class MiopenOpencl(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/MIOpen" git = "https://github.com/ROCmSoftwarePlatform/MIOpen.git" - url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='e73c18c6e0791d6ca8958508d899072ce12fc6c27cf78792d0c2a5c7e34427be') + version('5.0.0', sha256='4a46a2bdd11a2597c83cdb0c5e208b81728fab2ff7c585dabfca5aa05ee7a4f7') version('4.5.2', sha256='cb49bdf215ed9881755239b6312d72f829c1a0edf510e6d1fbb206c41f5406fc') version('4.5.0', sha256='be2f5ce962e15e62d427978422498c0ddf821b91fd40777a1ba915a2794d6fda') version('4.3.1', sha256='1fb2fd8b24f984174ec5338a58b7964e128b74dafb101373a41c8ed33955251a') @@ -33,6 +36,11 @@ class MiopenOpencl(CMakePackage): depends_on('cmake@3:', type='build') depends_on('boost@1.67.0:1.73.0', type='link') + + # 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, type='link') depends_on('pkgconfig', type='build') depends_on('bzip2', type='link') depends_on('sqlite', type='link') @@ -40,13 +48,15 @@ class MiopenOpencl(CMakePackage): depends_on('miopengemm@1.1.6', type='link', when='@3.5.0') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('rocm-opencl@' + ver, when='@' + ver) for ver in ['3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('miopengemm@' + ver, when='@' + ver) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/miopengemm/package.py b/var/spack/repos/builtin/packages/miopengemm/package.py index de7f2e04ce14c8..ed523729d51259 100644 --- a/var/spack/repos/builtin/packages/miopengemm/package.py +++ b/var/spack/repos/builtin/packages/miopengemm/package.py @@ -12,7 +12,7 @@ class Miopengemm(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM" git = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM.git" - url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] @@ -22,6 +22,8 @@ def url_for_version(self, version): url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-{0}.tar.gz" return url.format(version) + version('5.0.2', sha256='64a6bf7c902af63d85563e29361763e9daa1fd3699490a91c222b057673612cc') + version('5.0.0', sha256='122cfb4e79476092e84f73f48540701c90fb87e0dc20cdf39f202d92e9ff5544') version('4.5.2', sha256='e778e0ccb123cd637ac459b2aecdf0fdead158580479bc0adfc9a28879e1d1c9') version('4.5.0', sha256='54ec908109a91f9022b61e63e3a1b9706cdcf133ba6fb3b39a65ca0e79be7747') version('4.3.1', sha256='0aee2281d9b8c625e9bda8efff3067237d6155a53f6c720dcb4e3b3ec8bf8d14') @@ -42,6 +44,7 @@ def url_for_version(self, version): depends_on('rocm-opencl@3.5.0', when='@1.1.6') for ver in ['3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('rocm-opencl@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/mira/package.py b/var/spack/repos/builtin/packages/mira/package.py index 0722a6cfdcacd5..ebc2ca45e77153 100644 --- a/var/spack/repos/builtin/packages/mira/package.py +++ b/var/spack/repos/builtin/packages/mira/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mira(AutotoolsPackage): @@ -16,6 +17,11 @@ class Mira(AutotoolsPackage): version('4.0.2', sha256='a32cb2b21e0968a5536446287c895fe9e03d11d78957554e355c1080b7b92a80') depends_on('boost@1.46:') + + # 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('expat@2.0.1:') depends_on('gperftools') diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py index b284b0b1e85afe..376a0e1514aa51 100644 --- a/var/spack/repos/builtin/packages/mivisionx/package.py +++ b/var/spack/repos/builtin/packages/mivisionx/package.py @@ -13,7 +13,7 @@ class Mivisionx(CMakePackage): homepage = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX" git = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX.git" - url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] @@ -24,6 +24,8 @@ def url_for_version(self, version): url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-{0}.tar.gz" return url.format(version) + version('5.0.2', sha256='da730c2347b7f2d0cb7a262f8305750988f18e9f1eb206cf297bacaab2f6b408') + version('5.0.0', sha256='935113feb71eced2b5f21fffc2a90a188b4ef2fe009c50f0445504cb27fbc58c') version('4.5.2', sha256='26fd7fbd2e319bf4a8657900ad2f81bba1ae66745c2ba95f2f87e33903cfe69c') version('4.5.0', sha256='518834893d3fcdb7ecff179b3f3992ca1aacb30b6d95711c74918abb6f80b925') version('4.3.1', sha256='d77d63c0f148870dcd2a39a823e94b28adef9e84d2c37dfc3b05db5de4d7af83') @@ -71,13 +73,15 @@ def flag_handler(self, name, flags): depends_on('miopen-opencl@3.5.0', when='@1.7') depends_on('miopengemm@1.1.6', when='@1.7') depends_on('openssl', when='@4.0.0:') + conflicts('^cmake@3.22:', when='@:5.0.0') for ver in ['3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-opencl@' + ver, when='@' + ver) depends_on('miopengemm@' + ver, when='@' + ver) depends_on('miopen-opencl@' + ver, when='@' + ver) - for ver in ['4.5.0', '4.5.2']: + for ver in ['4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('miopen-hip@' + ver, when='@' + ver) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/mmg/package.py b/var/spack/repos/builtin/packages/mmg/package.py index cb5c7cd8a37c19..55744c3452928a 100644 --- a/var/spack/repos/builtin/packages/mmg/package.py +++ b/var/spack/repos/builtin/packages/mmg/package.py @@ -26,6 +26,7 @@ class Mmg(CMakePackage): homepage = "https://www.mmgtools.org/" url = "https://github.com/MmgTools/mmg/archive/v5.3.13.tar.gz" + version('5.6.0', sha256='bbf9163d65bc6e0f81dd3acc5a51e4a8c47a7fdae849abc26277e01154fe2437') version('5.5.2', sha256='58e3b866101e6f0686758e16bcf9fb5fb06c85184533fc5054ef1c8adfd4be73') version('5.4.0', sha256='2b5cc505018859856766be901797ff5d4789f89377038a0211176a5571039750') version('5.3.13', sha256='d9a5925b69b0433f942ab2c8e55659d9ccea758743354b43d54fdf88a6c3c191') @@ -33,17 +34,17 @@ class Mmg(CMakePackage): variant('shared', default=True, description='Enables the build of shared libraries') variant('scotch', default=True, description='Enable SCOTCH library support') variant('doc', default=False, description='Build documentation') + variant('vtk', default=False, when='@5.5.0:', description='Enable VTK I/O support') depends_on('scotch', when='+scotch') depends_on('doxygen', when='+doc') + depends_on('vtk', when='+vtk') def cmake_args(self): args = [] - if '+scotch' in self.spec: - args.append('-DUSE_SCOTCH=ON') - else: - args.append('-DUSE_SCOTCH=OFF') + args.append(self.define_from_variant('USE_SCOTCH', 'scotch')) + args.append(self.define_from_variant('USE_VTK', 'vtk')) if '+shared' in self.spec: args.append('-DLIBMMG3D_SHARED=ON') diff --git a/var/spack/repos/builtin/packages/mochi-margo/package.py b/var/spack/repos/builtin/packages/mochi-margo/package.py index 4907a5c6746602..ab48b52dd9343b 100644 --- a/var/spack/repos/builtin/packages/mochi-margo/package.py +++ b/var/spack/repos/builtin/packages/mochi-margo/package.py @@ -17,6 +17,8 @@ class MochiMargo(AutotoolsPackage): maintainers = ['carns', 'mdorier', 'fbudin69500', 'chuckatkins'] version('main', branch='main') + version('0.9.8', sha256='a139e804bf0b2725433c256e8315a2ba896f1fb34d9057261a4b92df783ffbbb') + version('0.9.7', sha256='ab45c5594f10d7d8cf8e67529b3972f7174b4ee5e3fbcd8446658490a884c5e2') version('0.9.6', sha256='fa339cc9621542fb398bb9fcd6b081d3578c75c3f398f3e6b05033f24ea63e33') version('0.9.5', sha256='b5c52477a82aa44a079f876cbb8166d0bce5a07a92bcf8a0c76670b245e728a3') version('0.9.4', sha256='4292e083c8375ab07bc6dd0b3b1ea2ce9c9dd864c27ac7f07c6913dcccecc746') diff --git a/var/spack/repos/builtin/packages/mochi-thallium/package.py b/var/spack/repos/builtin/packages/mochi-thallium/package.py new file mode 100644 index 00000000000000..eb501330d2ef43 --- /dev/null +++ b/var/spack/repos/builtin/packages/mochi-thallium/package.py @@ -0,0 +1,60 @@ +# Copyright 2013-2022 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 import * + + +class MochiThallium(CMakePackage): + """A Mochi C++14 library wrapping Margo, Mercury, + and Argobots and providing an object-oriented way to use these libraries.""" + + homepage = 'https://github.com/mochi-hpc/mochi-thallium' + url = 'https://github.com/mochi-hpc/mochi-thallium/archive/refs/tags/v0.8.5.tar.gz' + git = 'https://github.com/mochi-hpc/mochi-thallium.git' + + maintainers = ['mdorier'] + + version('main', branch='main') + version('0.9.1', sha256='dee884d0e054c838807f9c17781acfa99b26e3be1cc527bf09ceaa997336b3e4') + version('0.9', sha256='6b867b73f5dd76ea160d83782980149f33ae3567c370cee63d945e2e94609331') + version('0.8.5', sha256='2d6d1fd97ad5b38c848ece6428c27400f752d57254324bfd0f1ea660d6a815a6') + version('0.8.4', sha256='cb3f98a399664f41917a9a046fac3058f6ec53c85174dd97d5befd361bec0727') + version('0.8.3', sha256='47b7837796ebd362b993cda5131912372c4abbc17a6967d177e0c3687c44ab7d') + version('0.8.2', sha256='c90e3551189bae3552aab9089ce6343995736d734199c762bb8fa790968092ed') + version('0.8.1', sha256='3c7a72de3f77917432f9e751559f413845a68563477cc29bd127ca7126c5f64a') + version('0.8', sha256='3032196b1e5d7031fa4f79e81a44503fd02bca3abdc25f6ae0a5f3943e6397e4') + version('0.7', sha256='173be344445b36a6e21abc192ef228fb7ca9dbc33d4484f284b5f4d31c79b7de') + version('0.6.1', sha256='3e13b7d615fca827baa7cbee518f33ee908752c394361ede7668f4c47770f9f3') + version('0.6', sha256='849db7c6297f8dcbb7786a6c3a11db05b316b5f7f028e52fbab439a84986562f') + version('0.5.4', sha256='e5dbd63c8ed9e5bb7548d9a5d04c240482115a245e1312052ca3c17b2fa4e21b') + version('0.5.3', sha256='372567f4203840d98543da9f3d5ef3c7989735b46e60337205578d5c93cf4e02') + version('0.5.2', sha256='fe4f92880a2e574456afd934cede109d973055db9ca2a4a915501d635e42b3e7') + version('0.5.1', sha256='e43abe03c91e38eb865fe6179f389a66cc38f2962f6a5a7ac93b01259f15aa18') + version('0.5', sha256='0f85bad3680e94af734eaf063ec08620d4c16e1c8f0c4f85ae1ba010fbac958c') + version('0.4.2', sha256='cf04efbf01bcbecac121fbc5f5c0d40dca2074638c0682c86f55e72121f64829') + version('0.4.1', sha256='65136c01f276be70592e600a8942cee76164ea4c9646f2deecc9fd83b3c5bcfc') + version('0.4', sha256='51b7efe8706f47a1508624bbfba12d800a8374ac1db076897c7d01d85621d30f') + version('0.3.4', sha256='1f0e56c4a8d1285dcc288a50dadd7803a9cd0a311dd7798fec0b0800877d933a') + version('0.3.3', sha256='33a31d5ccba781343f0ec18396f895e5ed60d9a52b35d3667698754e2a8a639a') + version('0.3.2', sha256='7d90269101c881af40b73b0ffe1d55baa7203075b277fe8763735cc52278cee5') + version('0.3.1', sha256='61403b1ba5f4d205408e6a7e04c785df6dea02f59fe9fa1742db05aa752cc8a0') + version('0.3', sha256='4f9f78e52c1725f6ea5f933d7548bde36729dd9eff08f58fe7fe40682bc5f748') + + variant('cereal', default=True, + description='Use the cereal library for serialization', + when='@0.4.1:') + + depends_on('pkgconfig', type=('build')) + depends_on('mochi-margo@0.7:', when='@0.7:') + depends_on('mochi-margo@0.6:', when='@0.5:') + depends_on('mochi-margo@0.5:', when='@0.4:0.4.2') + depends_on('mochi-margo@0.4:', when='@:0.3.4') + depends_on('cereal', when='+cereal') + # thallium relies on std::decay_t + conflicts('%gcc@:4.9.0') + + def cmake_args(self): + args = [] + args.append(self.define_from_variant("ENABLE_CEREAL", "cereal")) + return args diff --git a/var/spack/repos/builtin/packages/modern-wheel/package.py b/var/spack/repos/builtin/packages/modern-wheel/package.py index 01a203596fd86b..69f5b1ca2f80c2 100644 --- a/var/spack/repos/builtin/packages/modern-wheel/package.py +++ b/var/spack/repos/builtin/packages/modern-wheel/package.py @@ -6,6 +6,7 @@ import sys from spack import * +from spack.pkg.builtin.boost import Boost class ModernWheel(CMakePackage): @@ -37,6 +38,11 @@ class ModernWheel(CMakePackage): depends_on('boost +system +filesystem', when='@:1.1') depends_on('boost@:1.65 +system +filesystem', when='@1.2:') + # 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) + # add virtual destructor to BaseMultiParms class. patch('add_virtual_destructor.patch') diff --git a/var/spack/repos/builtin/packages/mofem-cephas/package.py b/var/spack/repos/builtin/packages/mofem-cephas/package.py index b4f04cf558b707..53324b902e1314 100644 --- a/var/spack/repos/builtin/packages/mofem-cephas/package.py +++ b/var/spack/repos/builtin/packages/mofem-cephas/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class MofemCephas(CMakePackage): @@ -39,6 +40,11 @@ class MofemCephas(CMakePackage): depends_on("mpi") depends_on("boost@:1.68") + + # 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("parmetis") # Fixed version of hdf5, to remove some problems with dependent # packages, f.e. MED format diff --git a/var/spack/repos/builtin/packages/mongo-c-driver/package.py b/var/spack/repos/builtin/packages/mongo-c-driver/package.py index 6c4c43757172e5..27a38fe6e67733 100644 --- a/var/spack/repos/builtin/packages/mongo-c-driver/package.py +++ b/var/spack/repos/builtin/packages/mongo-c-driver/package.py @@ -14,6 +14,7 @@ class MongoCDriver(Package): maintainers = ['michaelkuhn'] + version('1.21.0', sha256='840ff79480070f98870743fbb332e2c10dd021b6b9c952d08010efdda4d70ee4') version('1.17.6', sha256='8644deec7ae585e8d12566978f2017181e883f303a028b5b3ccb83c91248b150') version('1.17.5', sha256='4b15b7e73a8b0621493e4368dc2de8a74af381823ae8f391da3d75d227ba16be') version('1.17.0', sha256='90aa23a3f92be0a076fe0b903b68276a7973d4e472929943069f503d5ab50cb9') @@ -34,7 +35,9 @@ class MongoCDriver(Package): variant('zlib', default=True, description='Enable zlib support.') variant('zstd', default=True, description='Enable zstd support.') - patch('https://github.com/mongodb/mongo-c-driver/pull/466.patch', sha256='713a872217d11aba04a774785a2824d26b566543c270a1fa386114f5200fda20', when='@1.8.1') + patch('https://github.com/mongodb/mongo-c-driver/pull/466.patch?full_index=1', + sha256='d8802d91226c176ba46d5b82413757121331d556a3a3d57ab65b70e175cab296', + when='@1.8.1') depends_on('cmake@3.1:', type='build', when='@1.10.0:') @@ -46,6 +49,7 @@ class MongoCDriver(Package): depends_on('pkgconfig', type='build') # When updating mongo-c-driver, libbson has to be kept in sync. + depends_on('libbson@1.21.0:1.21', when='@1.21') depends_on('libbson@1.17.0:1.17', when='@1.17') depends_on('libbson@1.16.0:1.16', when='@1.16') depends_on('libbson@1.9.0:1.9', when='@1.9') diff --git a/var/spack/repos/builtin/packages/mothur/package.py b/var/spack/repos/builtin/packages/mothur/package.py index 5fb280bb245abb..0db8e5f5c3671c 100644 --- a/var/spack/repos/builtin/packages/mothur/package.py +++ b/var/spack/repos/builtin/packages/mothur/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mothur(MakefilePackage): @@ -22,7 +23,10 @@ class Mothur(MakefilePackage): variant('vsearch', default=False, description='Use vsearch') - depends_on('boost') + # 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('readline') depends_on('vsearch@2.13.3', when='+vsearch', type='run') diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index c8737ddab1f01d..762eb11e80c616 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -50,7 +50,7 @@ class Mpich(AutotoolsPackage): 'pmi', default='pmi', description='''PMI interface.''', - values=('off', 'pmi', 'pmi2', 'pmix'), + values=('off', 'pmi', 'pmi2', 'pmix', 'cray'), multi=False ) variant( @@ -104,8 +104,8 @@ class Mpich(AutotoolsPackage): # See https://github.com/pmodels/mpich/issues/4038 # and https://github.com/pmodels/mpich/pull/3540 # landed in v3.4b1 v3.4a3 - patch('https://github.com/pmodels/mpich/commit/8a851b317ee57366cd15f4f28842063d8eff4483.patch', - sha256='eb982de3366d48cbc55eb5e0df43373a45d9f51df208abf0835a72dc6c0b4774', + patch('https://github.com/pmodels/mpich/commit/8a851b317ee57366cd15f4f28842063d8eff4483.patch?full_index=1', + sha256='d2dafc020941d2d8cab82bc1047e4a6a6d97736b62b06e2831d536de1ac01fd0', when='@3.3:3.3.99 +hwloc') # fix MPI_Barrier segmentation fault @@ -119,8 +119,8 @@ class Mpich(AutotoolsPackage): # and https://github.com/pmodels/mpich/pull/3578 # Even though there is no version 3.3.0, we need to specify 3.3:3.3.0 in # the when clause, otherwise the patch will be applied to 3.3.1, too. - patch('https://github.com/pmodels/mpich/commit/b324d2de860a7a2848dc38aefb8c7627a72d2003.patch', - sha256='c7d4ecf865dccff5b764d9c66b6a470d11b0b1a5b4f7ad1ffa61079ad6b5dede', + patch('https://github.com/pmodels/mpich/commit/b324d2de860a7a2848dc38aefb8c7627a72d2003.patch?full_index=1', + sha256='5f48d2dd8cc9f681cf710b864f0d9b00c599f573a75b1e1391de0a3d697eba2d', when='@3.3:3.3.0') # This patch for Libtool 2.4.2 enables shared libraries for NAG and is @@ -146,6 +146,7 @@ class Mpich(AutotoolsPackage): depends_on('hwloc@2.0.0:', when='@3.3: +hwloc') depends_on('libfabric', when='netmod=ofi') + depends_on('libfabric fabrics=gni', when='netmod=ofi pmi=cray') # The ch3 ofi netmod results in crashes with libfabric 1.7 # See https://github.com/pmodels/mpich/issues/3665 depends_on('libfabric@:1.6', when='device=ch3 netmod=ofi') @@ -184,6 +185,8 @@ class Mpich(AutotoolsPackage): # MPICH's Yaksa submodule requires python to configure depends_on("python@3.0:", when="@develop", type="build") + depends_on('cray-pmi', when='pmi=cray') + conflicts('device=ch4', when='@:3.2') conflicts('netmod=ofi', when='@:3.1.4') conflicts('netmod=ucx', when='device=ch3') @@ -193,6 +196,7 @@ class Mpich(AutotoolsPackage): conflicts('pmi=pmi2', when='device=ch3 netmod=ofi') conflicts('pmi=pmix', when='device=ch3') conflicts('pmi=pmix', when='+hydra') + conflicts('pmi=cray', when='+hydra') # MPICH does not require libxml2 and libpciaccess for versions before 3.3 # when ~hydra is set: prevent users from setting +libxml2 and +pci in this @@ -328,6 +332,14 @@ def setup_build_environment(self, env): if self.spec.satisfies('%clang@11:'): env.set('FFLAGS', '-fallow-argument-mismatch') + if 'pmi=cray' in self.spec: + env.set( + "CRAY_PMI_INCLUDE_OPTS", + "-I" + self.spec['cray-pmi'].headers.directories[0]) + env.set( + "CRAY_PMI_POST_LINK_OPTS", + "-L" + self.spec['cray-pmi'].libs.directories[0]) + def setup_run_environment(self, env): # Because MPI implementations provide compilers, they have to add to # their run environments the code to make the compilers available. @@ -445,6 +457,8 @@ def configure_args(self): config_args.append('--with-pmi=pmi2/simple') elif 'pmi=pmix' in spec: config_args.append('--with-pmix={0}'.format(spec['pmix'].prefix)) + elif 'pmi=cray' in spec: + config_args.append('--with-pmi=cray') # setup device configuration device_config = '' diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py index 60fbdec1906150..941209067ea35a 100644 --- a/var/spack/repos/builtin/packages/mpifileutils/package.py +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -23,6 +23,7 @@ class Mpifileutils(Package): tags = ['e4s'] version('develop', branch='master') + version('0.11.1', sha256='e2cba53309b5b3ee581b6ff82e4e66f54628370cce694c34224ed947fece32d4') version('0.11', sha256='f5dc1b39077b3c04f79b2c335c4fd80306f8c57ecfbcacbb82cf532caf02b5fd') version('0.10.1', sha256='4c8409ef4140f6f557d0e93f0c1267baf5d893c203b29fb7a33d9bc3c5a5d25c') version('0.10', sha256='5a71a9acd9841c3c258fc0eaea942f18abcb40098714cc90462b57696c07e3c5') diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py index ff7cf4755aa6ac..d5a7461419a50a 100644 --- a/var/spack/repos/builtin/packages/mrnet/package.py +++ b/var/spack/repos/builtin/packages/mrnet/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Mrnet(AutotoolsPackage): @@ -24,7 +25,10 @@ class Mrnet(AutotoolsPackage): description="Also build the MRNet LW threadsafe libraries") parallel = False - depends_on("boost") + # 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) def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/multiverso/package.py b/var/spack/repos/builtin/packages/multiverso/package.py index 1092d2a035b8ae..dd35d11ec3b0e4 100644 --- a/var/spack/repos/builtin/packages/multiverso/package.py +++ b/var/spack/repos/builtin/packages/multiverso/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Multiverso(CMakePackage): @@ -19,7 +20,11 @@ class Multiverso(CMakePackage): version('0.2', sha256='40e86543968faa2fe203cf0b004a4c7905303db0c860efe4ce4e1f27e46394fc') depends_on('mpi') - depends_on('boost') + + # 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) patch('cmake-143187.patch', when='@143187') diff --git a/var/spack/repos/builtin/packages/mumax/package.py b/var/spack/repos/builtin/packages/mumax/package.py index 60cb2193f20619..3638a30cb3d079 100644 --- a/var/spack/repos/builtin/packages/mumax/package.py +++ b/var/spack/repos/builtin/packages/mumax/package.py @@ -35,8 +35,8 @@ class Mumax(MakefilePackage, CudaPackage): conflicts('~cuda', msg='mumax requires cuda') - patch('https://github.com/mumax/3/commit/2cf5c9a6985c9eb16a124c6bd96aed75b4a30c24.patch', - sha256='a43b2ca6c9f9edfb1fd6d916a599f85a57c8bb3f9ee38148b1988fd82feec8ad', + patch('https://github.com/mumax/3/commit/2cf5c9a6985c9eb16a124c6bd96aed75b4a30c24.patch?full_index=1', + sha256='4bbb95aacdac7e2cbcb37ee8adcfb9464e69965f984c264ff094dc1cca10589b', when='@3.10beta') @property diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 58be6055dc3d37..2b5d6a333e428b 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -13,6 +13,7 @@ class Mumps(Package): homepage = "http://mumps.enseeiht.fr" url = "http://mumps.enseeiht.fr/MUMPS_5.3.5.tar.gz" + version('5.4.1', sha256='93034a1a9fe0876307136dcde7e98e9086e199de76f1c47da822e7d4de987fa8') version('5.4.0', sha256='c613414683e462da7c152c131cebf34f937e79b30571424060dd673368bbf627') version('5.3.5', sha256='e5d665fdb7043043f0799ae3dbe3b37e5b200d1ab7a6f7b2a4e463fd89507fa4') version('5.3.3', sha256='27e7749ac05006bf8e81a457c865402bb72a42bf3bc673da49de1020f0f32011') diff --git a/var/spack/repos/builtin/packages/muster/package.py b/var/spack/repos/builtin/packages/muster/package.py index 98f33f58515100..b419120815a820 100644 --- a/var/spack/repos/builtin/packages/muster/package.py +++ b/var/spack/repos/builtin/packages/muster/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Muster(CMakePackage): @@ -19,6 +20,9 @@ class Muster(CMakePackage): version('1.0.1', sha256='71e2fcdd7abf7ae5cc648a5f310e1c5369e4889718eab2a045e747c590d2dd71') version('1.0', sha256='370a670419e391494fcca0294882ee5f83c5d8af94ca91ac4182235332bd56d6') - depends_on('boost') + # 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('mpi') depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 3568705f788c75..5e787f50f85bff 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -14,7 +14,7 @@ class Mvapich2(AutotoolsPackage): platforms (x86 (Intel and AMD), ARM and OpenPOWER)""" homepage = "https://mvapich.cse.ohio-state.edu/userguide/userguide_spack/" - url = "https://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.6.tar.gz" + url = "https://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.7.tar.gz" list_url = "https://mvapich.cse.ohio-state.edu/downloads/" maintainers = ['natshineman', 'harisubramoni', 'ndcontini'] @@ -22,6 +22,7 @@ class Mvapich2(AutotoolsPackage): executables = ['^mpiname$'] # Prefer the latest stable release + version('2.3.7', sha256='4b6ad2c8c270e1fabcd073c49edb6bf95af93780f4a487bc48404a8ca384f34e') version('2.3.6', sha256='b3a62f2a05407191b856485f99da05f5e769d6381cd63e2fcb83ee98fc46a249') version('2.3.5', sha256='f9f467fec5fc981a89a7beee0374347b10c683023c76880f92a1a0ad4b961a8c') version('2.3.4', sha256='7226a45c7c98333c8e5d2888119cce186199b430c13b7b1dca1769909e68ea7a') diff --git a/var/spack/repos/builtin/packages/mysql/package.py b/var/spack/repos/builtin/packages/mysql/package.py index 0a157e2fee7e5a..d4bac8c46785b2 100644 --- a/var/spack/repos/builtin/packages/mysql/package.py +++ b/var/spack/repos/builtin/packages/mysql/package.py @@ -2,10 +2,12 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) + import os import tempfile from spack import * +from spack.pkg.builtin.boost import Boost class Mysql(CMakePackage): @@ -110,6 +112,11 @@ class Mysql(CMakePackage): depends_on('boost@1.59.0 cxxstd=14', when='@5.7.0:5.7 cxxstd=14') depends_on('boost@1.59.0 cxxstd=17', when='@5.7.0:5.7 cxxstd=17') + # 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, when='@5.7:') + depends_on('rpcsvc-proto') depends_on('ncurses') depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/n2p2/package.py b/var/spack/repos/builtin/packages/n2p2/package.py index 17692f3114e05d..35ee83ac8f4620 100644 --- a/var/spack/repos/builtin/packages/n2p2/package.py +++ b/var/spack/repos/builtin/packages/n2p2/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class N2p2(MakefilePackage): @@ -46,7 +47,10 @@ class N2p2(MakefilePackage): depends_on("py-sphinx", type="build", when="+doc") depends_on("py-sphinx-rtd-theme", type="build", when="+doc") - depends_on("boost", type="link") + # 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, type="link") depends_on("lcov", type=("build", "run")) depends_on("py-pytest", type=("build", "run")) depends_on("py-pytest-cov", type="run") diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index a236c22cc285f0..6e7569470d6b83 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -68,10 +68,10 @@ class NaluWind(CMakePackage, CudaPackage): when='+hypre+cuda cuda_arch={0}'.format(_arch)) depends_on('trilinos-catalyst-ioss-adapter', when='+catalyst') depends_on('fftw+mpi', when='+fftw') - depends_on('boost cxxstd=14', when='+boost') depends_on('nccmp') # indirect dependency needed to make original concretizer work depends_on('netcdf-c+parallel-netcdf') + depends_on('boost +filesystem +iostreams cxxstd=14', when='+boost') def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/nasm/msvc.mak.patch b/var/spack/repos/builtin/packages/nasm/msvc.mak.patch new file mode 100644 index 00000000000000..cfc751c8cf6f2b --- /dev/null +++ b/var/spack/repos/builtin/packages/nasm/msvc.mak.patch @@ -0,0 +1,18 @@ +diff --git a/Mkfiles/msvc.mak b/Mkfiles/msvc1.mak +index 4f6121f..f0e6f4b 100644 +--- a/Mkfiles/msvc.mak ++++ b/Mkfiles/msvc1.mak +@@ -228,10 +228,10 @@ WARNFILES = asm\warnings.c include\warnings.h doc\warnings.src + + warnings: + $(RM_F) $(WARNFILES) +- $(MAKE) asm\warnings.time ++# $(MAKE) asm\warnings.time + +-asm\warnings.time: $(ALLOBJ:.@OBJEXT@=.c) +- : > asm\warnings.time ++# asm\warnings.time: $(ALLOBJ:.@OBJEXT@=.c) ++# : > asm\warnings.time + $(MAKE) $(WARNFILES) + + asm\warnings.c: asm\warnings.pl asm\warnings.time diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py index 2f0c747a526edd..be39246736fc2c 100644 --- a/var/spack/repos/builtin/packages/nasm/package.py +++ b/var/spack/repos/builtin/packages/nasm/package.py @@ -5,28 +5,34 @@ from spack import * +is_windows = str(spack.platforms.host()) == 'windows' -class Nasm(AutotoolsPackage): + +class Nasm(Package): """NASM (Netwide Assembler) is an 80x86 assembler designed for portability and modularity. It includes a disassembler as well.""" homepage = "https://www.nasm.us" - url = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.xz" + url = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" list_url = "https://www.nasm.us/pub/nasm/releasebuilds" list_depth = 1 - version('2.15.05', sha256='3caf6729c1073bf96629b57cee31eeb54f4f8129b01902c73428836550b30a3f') - version('2.14.02', sha256='e24ade3e928f7253aa8c14aa44726d1edf3f98643f87c9d72ec1df44b26be8f5') - version('2.13.03', sha256='812ecfb0dcbc5bd409aaa8f61c7de94c5b8752a7b00c632883d15b2ed6452573') - version('2.11.06', sha256='90f60d95a15b8a54bf34d87b9be53da89ee3d6213ea739fb2305846f4585868a') + version('2.15.05', sha256='9182a118244b058651c576baa9d0366ee05983c4d4ae1d9ddd3236a9f2304997') + version('2.14.02', sha256='b34bae344a3f2ed93b2ca7bf25f1ed3fb12da89eeda6096e3551fd66adeae9fc') + version('2.13.03', sha256='23e1b679d64024863e2991e5c166e19309f0fe58a9765622b35bd31be5b2cc99') + version('2.11.06', sha256='3a72476f3cb45294d303f4d34f20961b15323ac24e84eb41bc130714979123bb') # Fix compilation with GCC 8 # https://bugzilla.nasm.us/show_bug.cgi?id=3392461 patch('https://src.fedoraproject.org/rpms/nasm/raw/0cc3eb244bd971df81a7f02bc12c5ec259e1a5d6/f/0001-Remove-invalid-pure_func-qualifiers.patch', level=1, sha256='ac9f315d204afa6b99ceefa1fe46d4eed2b8a23c7315d32d33c0f378d930e950', when='@2.13.03 %gcc@8:') + patch('msvc.mak.patch', when='@2.15.05 platform=windows') + conflicts('%intel@:14', when='@2.14:', msg="Intel 14 has immature C11 support") + phases = ['configure', 'build', 'install'] + def patch(self): # Remove flags not recognized by the NVIDIA compiler if self.spec.satisfies('%nvhpc@:20.11'): @@ -34,3 +40,23 @@ def patch(self): 'CFLAGS="$pa_add_cflags__old_cflags"', 'configure') filter_file(r'CFLAGS="\$pa_add_flags__old_flags -Werror=.*"', 'CFLAGS="$pa_add_flags__old_flags"', 'configure') + + def configure(self, spec, prefix): + with working_dir(self.stage.source_path, create=True): + if not is_windows: + configure(*['--prefix={0}'.format(self.prefix)]) + + def build(self, spec, prefix): + with working_dir(self.stage.source_path): + if is_windows: + touch('asm\\warnings.time') + nmake('/f', 'Mkfiles\\msvc.mak') + else: + make(*['V=1']) + + def install(self, spec, prefix): + with working_dir(self.stage.source_path): + if is_windows: + pass + else: + make(*['install']) diff --git a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py index 2efc4688d186ff..567bfb3c5b7858 100644 --- a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py +++ b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py @@ -35,6 +35,8 @@ class NcbiRmblastn(AutotoolsPackage): when='@2.9.0' ) depends_on('cpio', type='build') + depends_on('boost') + depends_on('lzo') configure_directory = 'c++' @@ -48,5 +50,7 @@ def configure_args(self): "--without-debug", "--without-krb5", "--without-openssl", - "--with-projects=scripts/projects/rmblastn/project.lst"] + "--without-libuv", + "--with-projects=scripts/projects/rmblastn/project.lst", + ] return args diff --git a/var/spack/repos/builtin/packages/ncbi-toolkit/package.py b/var/spack/repos/builtin/packages/ncbi-toolkit/package.py index e34248d984a9f7..99322b683bfdfb 100644 --- a/var/spack/repos/builtin/packages/ncbi-toolkit/package.py +++ b/var/spack/repos/builtin/packages/ncbi-toolkit/package.py @@ -6,6 +6,7 @@ from glob import glob from spack import * +from spack.pkg.builtin.boost import Boost class NcbiToolkit(AutotoolsPackage): @@ -23,6 +24,11 @@ class NcbiToolkit(AutotoolsPackage): description='Build debug versions of libs and apps') depends_on('boost@1.35.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('bzip2') depends_on('jpeg') depends_on('libpng') diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py index c784fd0127346c..e159755385df22 100644 --- a/var/spack/repos/builtin/packages/nccl/package.py +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack import * @@ -13,6 +15,7 @@ class Nccl(MakefilePackage, CudaPackage): url = "https://github.com/NVIDIA/nccl/archive/v2.7.3-1.tar.gz" maintainers = ['adamjstewart'] + libraries = ['libnccl.so'] version('2.11.4-1', sha256='db4e9a0277a64f9a31ea9b5eea22e63f10faaed36dded4587bbc8a0d8eceed10') version('2.10.3-1', sha256='55de166eb7dcab9ecef2629cdb5fb0c5ebec4fae03589c469ebe5dcb5716b3c5') @@ -49,6 +52,12 @@ class Nccl(MakefilePackage, CudaPackage): msg='Must specify CUDA compute capabilities of your GPU, see ' 'https://developer.nvidia.com/cuda-gpus') + @classmethod + def determine_version(cls, lib): + match = re.search(r'lib\S*\.so\.(\d+\.\d+\.\d+)', + lib) + return match.group(1) if match else None + @property def build_targets(self): cuda_arch = self.spec.variants['cuda_arch'].value diff --git a/var/spack/repos/builtin/packages/neko/package.py b/var/spack/repos/builtin/packages/neko/package.py new file mode 100644 index 00000000000000..1216624fae4d07 --- /dev/null +++ b/var/spack/repos/builtin/packages/neko/package.py @@ -0,0 +1,42 @@ +# Copyright 2013-2022 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 import * + + +class Neko(AutotoolsPackage, CudaPackage, ROCmPackage): + """Neko: A modern, portable, and scalable framework + for high-fidelity computational fluid dynamics + """ + + homepage = "https://github.com/ExtremeFLOW/neko" + git = "https://github.com/ExtremeFLOW/neko.git" + maintainers = ['njansson'] + + version('0.3.0', commit='a82097a10ae3c965fb873da909a6324c7a7742fb') + version('develop', branch='develop') + variant('parmetis', default=False, description='Build with support for parmetis') + variant('xsmm', default=False, description='Build with support for libxsmm') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('pkgconf', type='build') + depends_on('parmetis', when='+parmetis') + depends_on('libxsmm', when='+xsmm') + depends_on('mpi') + depends_on('blas') + depends_on('lapack') + + def configure_args(self): + args = [] + args += self.with_or_without('parmetis') + args += self.with_or_without('libxsmm', variant='xsmm') + args += self.with_or_without('cuda', activation_value='prefix') + rocm_fn = lambda x: spec['hip'].prefix + args += self.with_or_without('hip', variant='rocm', activation_value=rocm_fn) + + return args diff --git a/var/spack/repos/builtin/packages/nektar/package.py b/var/spack/repos/builtin/packages/nektar/package.py index 3f34a0d0785f79..6956427f3e692f 100644 --- a/var/spack/repos/builtin/packages/nektar/package.py +++ b/var/spack/repos/builtin/packages/nektar/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Nektar(CMakePackage): @@ -28,6 +29,11 @@ class Nektar(CMakePackage): depends_on('blas') depends_on('lapack') depends_on('boost@1.56.0: +iostreams') + + # 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('tinyxml', when='platform=darwin') depends_on('mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index fddaf6379b43fd..828690297f04a1 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -42,10 +42,16 @@ class NetcdfC(AutotoolsPackage): # configure fails if curl is not installed. # See https://github.com/Unidata/netcdf-c/issues/1390 - patch('https://github.com/Unidata/netcdf-c/commit/e5315da1e748dc541d50796fb05233da65e86b6b.patch', sha256='10a1c3f7fa05e2c82457482e272bbe04d66d0047b237ad0a73e87d63d848b16c', when='@4.7.0') + patch('https://github.com/Unidata/netcdf-c/commit/e5315da1e748dc541d50796fb05233da65e86b6b.patch?full_index=1', + sha256='c551ca2f5b6bcefa07dd7f8b7bac426a5df9861e091df1ab99167d8d401f963f', + when='@4.7.0') # fix headers - patch('https://github.com/Unidata/netcdf-c/pull/1505.patch', sha256='f52db13c61b9c19aafe03c2a865163b540e9f6dee36e3a5f808f05fac59f2030', when='@4.7.2') - patch('https://github.com/Unidata/netcdf-c/pull/1508.patch', sha256='56532470875b9a97f3cf2a7d9ed16ef1612df3265ee38880c109428322ff3a40', when='@4.7.2') + patch('https://github.com/Unidata/netcdf-c/pull/1505.patch?full_index=1', + sha256='495b3e5beb7f074625bcec2ca76aebd339e42719e9c5ccbedbdcc4ffb81a7450', + when='@4.7.2') + patch('https://github.com/Unidata/netcdf-c/pull/1508.patch?full_index=1', + sha256='19e7f31b96536928621b1c29bb6d1a57bcb7aa672cea8719acf9ac934cdd2a3e', + when='@4.7.2') # See https://github.com/Unidata/netcdf-c/pull/1752 patch('4.7.3-spectrum-mpi-pnetcdf-detect.patch', when='@4.7.3:4.7.4 +parallel-netcdf') diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index fb587a8498aeb9..cf90c057ea6182 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -121,7 +121,7 @@ def configure_args(self): # Fix a bug on some systems using Intel OneAPI where the netCDF-c # headers and libraries are not found. This doesn't hurt on other systems. config_args.append('CPPFLAGS=-I%s' % netcdf_c_spec.prefix.include) - config_args.append('LDLFAGS=%s' % netcdf_c_spec.libs.search_flags) + config_args.append('LDFLAGS=%s' % netcdf_c_spec.libs.search_flags) config_args.append('LIBS=%s' % netcdf_c_spec.libs.link_flags) # We need to build with MPI wrappers if either of the parallel I/O diff --git a/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl-3.9.1.patch b/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl-3.9.1.patch index 38f4e9c41fa978..c9e1707857ef8f 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl-3.9.1.patch +++ b/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl-3.9.1.patch @@ -1,3 +1,17 @@ +Fixes for IBM XL and Cray CCE builds: + +* Correct path to the fallback configuration used to handle mangling for + C++/Fortran compatibility (CCE, XL) + +* Change logic for detecting recursive fortran flags to (a) Include XL +(qrecur), and (b) Be explicit, since not every compiler will correctly reject +an incorrect option (ALL) + +NOTE: This patch has been accepted upstream +(see https://github.com/Reference-LAPACK/lapack/pull/621) + +############################################################################## + diff -Naur a/CBLAS/CMakeLists.txt b/CBLAS/CMakeLists.txt --- a/CBLAS/CMakeLists.txt 2021-03-25 12:25:15.000000000 -0600 +++ b/CBLAS/CMakeLists.txt 2021-09-01 16:27:23.561355382 -0600 diff --git a/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch b/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch index c6fba2a0289684..52b5f197191947 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch +++ b/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch @@ -1,3 +1,14 @@ +Fixes for IBM XL and Cray CCE builds: + +* Avoid optimizations that would alter program semantics by changing the + qstrict activation threshold from O3 to O2 (XL) + +* Don't assume Fortran code is all in fixed source form; disable qfixed (XL) + +* Correct path to the fallback configuration used to handle mangling for + C++/Fortran compatibility (CCE, XL) +############################################################################## + --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index 4a7dfff3250388..82af36426d4b9c 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -42,12 +42,21 @@ class NetlibLapack(CMakePackage): variant('xblas', default=False, description='Builds extended precision routines using XBLAS') + # Fixes for IBM XL and Cray CCE builds: + # Avoid optimizations that alter program semantics + # Don't assume fixed source form for Fortran + # Correct path to mangling config patch('ibm-xl.patch', when='@3.7:3.8 %xl') patch('ibm-xl.patch', when='@3.7:3.8 %xl_r') - patch('ibm-xl.patch', when='@3.7: %cce@9:') + patch('ibm-xl.patch', when='@3.7:3.8 %cce@9:') + # https://github.com/Reference-LAPACK/lapack/pull/621 + # Fixes for IBM XL and Cray CCE builds: + # Correct path to mangling config + # Fix logic for detecting recursive Fortran flags patch('ibm-xl-3.9.1.patch', when='@3.9.1 %xl') patch('ibm-xl-3.9.1.patch', when='@3.9.1 %xl_r') + patch('ibm-xl-3.9.1.patch', when='@3.9.1 %cce@13:') # https://github.com/Reference-LAPACK/lapack/issues/228 patch('undefined_declarations.patch', when='@3.8.0:3.8') @@ -83,6 +92,11 @@ def patch(self): '${CMAKE_CURRENT_SOURCE_DIR}/cmake/', 'CBLAS/CMakeLists.txt', string=True) + # Remove duplicate header file that gets generated during CMake shared + # builds: https://github.com/Reference-LAPACK/lapack/issues/583 + if self.spec.satisfies('platform=windows @0:3.9.1'): + force_remove('LAPACKE/include/lapacke_mangling.h') + @property def blas_libs(self): shared = True if '+shared' in self.spec else False diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 6fc4775dacd27e..95b15953f73857 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -14,6 +14,7 @@ class Nextflow(Package): maintainers = ['dialvarezs'] + version('21.10.6', sha256='104c0352c592924233ea7897cbfb2ece41795be348f97d6dfbc8d66e6271e4ad', expand=False) version('21.10.1', sha256='05c8b9f3d2f5eded737fdd0a13b84e3bc442cc6355ba95e21118cb624f8176da', expand=False) version('21.10.0', sha256='e938e53f43f0f00c8d5adf2dc104c4ce0c6d834aa84a4a3918ac8bec6eee6b9c', expand=False) version('21.04.3', sha256='80c7ecd94b55da8eb0e17040dbd0c43ee80e252cd999374e16c00d54d3d3abf3', expand=False) diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 878fb3c43d7416..b242d2eeea4eea 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/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 sys class Ninja(Package): @@ -14,9 +15,9 @@ class Ninja(Package): url = "https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz" git = "https://github.com/ninja-build/ninja.git" - executables = ['^ninja$'] + tags = ['build-tools', 'e4s'] - tags = ['e4s'] + executables = ['^ninja$'] version('kitware', branch='features-for-fortran', git='https://github.com/Kitware/ninja.git') version('master', branch='master') @@ -53,9 +54,14 @@ def setup_run_environment(self, env): def install(self, spec, prefix): mkdir(prefix.bin) - install('ninja', prefix.bin) + name = 'ninja' + if sys.platform == 'win32': + name = name + '.exe' + install(name, prefix.bin) install_tree('misc', prefix.misc) + if sys.platform == "win32": + return # Some distros like Fedora install a 'ninja-build' executable # instead of 'ninja'. Install both for uniformity. with working_dir(prefix.bin): diff --git a/var/spack/repos/builtin/packages/nix/package.py b/var/spack/repos/builtin/packages/nix/package.py index ee6f4046935a1c..6b8fbabc0f8d38 100644 --- a/var/spack/repos/builtin/packages/nix/package.py +++ b/var/spack/repos/builtin/packages/nix/package.py @@ -8,6 +8,7 @@ import tempfile from spack import * +from spack.pkg.builtin.boost import Boost class Nix(AutotoolsPackage): @@ -44,6 +45,11 @@ class Nix(AutotoolsPackage): depends_on('boost@1.66.0:+coroutine+context cxxstd=14', when='@2.2.0:') depends_on('boost@1.61.0:+coroutine+context cxxstd=14', when='@2.0.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, when='@2.0.0:') depends_on('brotli') depends_on('editline') @@ -81,9 +87,9 @@ def patch(self): def installcheck(self): # We have to clean this tmpdir ourself later as it contains readonly directories - self.test_path = tempfile.mkdtemp(dir='/tmp', - prefix='tmp-spack-check-nix-{0}-'. - format(self.spec.version)) + self.test_path = tempfile.mkdtemp( + prefix='tmp-spack-check-nix-{0}-'.format(self.spec.version) + ) mkdir(self.test_path + '/nix-test') mkdir(self.test_path + '/tests') os.environ['TMPDIR'] = self.test_path diff --git a/var/spack/repos/builtin/packages/ns-3-dev/package.py b/var/spack/repos/builtin/packages/ns-3-dev/package.py index e66757f0e3b31a..6e75c8d441a51f 100644 --- a/var/spack/repos/builtin/packages/ns-3-dev/package.py +++ b/var/spack/repos/builtin/packages/ns-3-dev/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Ns3Dev(WafPackage): @@ -32,7 +33,11 @@ class Ns3Dev(WafPackage): # Build dependency depends_on('helics', when='+helics') - depends_on('boost', when='+boost') + + # 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, when='+boost') depends_on('pkgconfig', type='build') resource(name='helics', diff --git a/var/spack/repos/builtin/packages/nss/package.py b/var/spack/repos/builtin/packages/nss/package.py index 9394c25dccb69c..673733621edcaf 100644 --- a/var/spack/repos/builtin/packages/nss/package.py +++ b/var/spack/repos/builtin/packages/nss/package.py @@ -16,6 +16,7 @@ class Nss(MakefilePackage): homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS" url = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_67_RTM/src/nss-3.67.tar.gz" + version('3.75', sha256='fd571507827284644f4dd522a032acda2286835f6683ed22a1c2d3878cc58582') version('3.73', sha256='566d3a68da9b10d7da9ef84eb4fe182f8f04e20d85c55d1bf360bb2c0096d8e5') # Everything before 3.73 is vulnerable (CVE-2021-43527) version('3.67', sha256='f6549a9148cd27b394b40c77fa73111d5ea23cdb51d796665de1b7458f88ce7f', deprecated=True) @@ -38,6 +39,7 @@ def build_targets(self): # We cannot use nss_build_all because this will try to build nspr. targets = ['all', 'latest'] + targets.append('CCC={}'.format(spack_cxx)) targets.append('USE_64=1') targets.append('BUILD_OPT=1') diff --git a/var/spack/repos/builtin/packages/numactl/package.py b/var/spack/repos/builtin/packages/numactl/package.py index 7b224c2c7d9337..36621eec59b500 100644 --- a/var/spack/repos/builtin/packages/numactl/package.py +++ b/var/spack/repos/builtin/packages/numactl/package.py @@ -33,6 +33,9 @@ class Numactl(AutotoolsPackage): # libtool@develop returns UNKOWN as a version tag and fails conflicts('libtool@develop') + # Numerous errors when trying to build on darwin + conflicts('platform=darwin') + def autoreconf(self, spec, prefix): bash = which('bash') bash('./autogen.sh') diff --git a/var/spack/repos/builtin/packages/nvhpc/package.py b/var/spack/repos/builtin/packages/nvhpc/package.py index db022e39b41a87..8a443fc0037ef5 100644 --- a/var/spack/repos/builtin/packages/nvhpc/package.py +++ b/var/spack/repos/builtin/packages/nvhpc/package.py @@ -22,6 +22,14 @@ # - 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 = { + '22.3': { + 'Linux-aarch64': ('e0ea1cbb726556f6879f4b5dfe17238f8e7680c772368577945a85c0e08328f0', 'https://developer.download.nvidia.com/hpc-sdk/22.3/nvhpc_2022_223_Linux_aarch64_cuda_multi.tar.gz'), + 'Linux-ppc64le': ('5e80db6010adc85fe799dac961ae69e43fdf18d35243666c96a70ecdb80bd280', 'https://developer.download.nvidia.com/hpc-sdk/22.3/nvhpc_2022_223_Linux_ppc64le_cuda_multi.tar.gz'), + 'Linux-x86_64': ('bc60a6faf2237bf20550718f71079a714563fa85df62c341cb833f70eb2fe7bb', 'https://developer.download.nvidia.com/hpc-sdk/22.3/nvhpc_2022_223_Linux_x86_64_cuda_multi.tar.gz')}, + '22.2': { + 'Linux-aarch64': ('a8241d1139a768d9a0066d1853748160e4098253024e17e997983884d0d33a19', 'https://developer.download.nvidia.com/hpc-sdk/22.2/nvhpc_2022_222_Linux_aarch64_cuda_multi.tar.gz'), + 'Linux-ppc64le': ('f84f72423452968d5bbe02e297f188682c4759864a736a72b32acb3433db3a26', 'https://developer.download.nvidia.com/hpc-sdk/22.2/nvhpc_2022_222_Linux_ppc64le_cuda_multi.tar.gz'), + 'Linux-x86_64': ('8dfb4007d6912b2722946358ac69409592c1f03426d81971ffbcb6fc5fea2cb8', 'https://developer.download.nvidia.com/hpc-sdk/22.2/nvhpc_2022_222_Linux_x86_64_cuda_multi.tar.gz')}, '22.1': { 'Linux-aarch64': ('05cfa8c520a34eab01272a261b157d421a9ff7129fca7d859b944ce6a16d2255', 'https://developer.download.nvidia.com/hpc-sdk/22.1/nvhpc_2022_221_Linux_aarch64_cuda_multi.tar.gz'), 'Linux-ppc64le': ('9fa9b64fba2c9b287b5800693417d8065c695d18cab0526bad41d9aecc8be2b3', 'https://developer.download.nvidia.com/hpc-sdk/22.1/nvhpc_2022_221_Linux_ppc64le_cuda_multi.tar.gz'), diff --git a/var/spack/repos/builtin/packages/nwchem/fj.patch b/var/spack/repos/builtin/packages/nwchem/fj.patch new file mode 100644 index 00000000000000..376845b2dfcf06 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/fj.patch @@ -0,0 +1,147 @@ +diff -u -r nwchem-7.0.2/src/basis/bas_input.F nwchem-7.0.2-patched/src/basis/bas_input.F +--- nwchem-7.0.2/src/basis/bas_input.F 2020-10-13 13:16:25.000000000 +0900 ++++ nwchem-7.0.2-patched/src/basis/bas_input.F 2022-02-08 14:10:28.000000000 +0900 +@@ -1321,7 +1321,9 @@ + endif + libname = compiled_name + does_it_exist = .false. ++#ifndef FUJITSU + inquire(file=libname,exist=does_it_exist) ++#endif + c + c check if it is a directory + c +Only in nwchem-7.0.2-patched/src/basis: bas_input.F.orig +diff -u -r nwchem-7.0.2/src/config/makefile.h nwchem-7.0.2-patched/src/config/makefile.h +--- nwchem-7.0.2/src/config/makefile.h 2020-10-13 13:16:30.000000000 +0900 ++++ nwchem-7.0.2-patched/src/config/makefile.h 2022-02-08 14:10:28.000000000 +0900 +@@ -1867,6 +1867,12 @@ + else + FOPTIONS += -s integer64 + endif ++ else ifeq ($(_FC),frt) ++ ifdef USE_I4FLAGS ++ FOPTIONS += -CcdLL8 ++ else ++ FOPTIONS += -CcdLL8 -CcdII8 ++ endif + else + ifdef USE_I4FLAGS + FOPTIONS += -i4 +@@ -2319,6 +2325,13 @@ + endif + endif + ++ ifeq ($(_CC),gcc) ++ COPTIONS += -O3 ++ ifdef USE_OPENMP ++ COPTIONS += -Kopenmp ++ endif ++ endif ++ + ifeq ($(_FC),gfortran) + ifdef USE_GPROF + FOPTIONS += -pg +@@ -2353,6 +2366,29 @@ + endif + endif # end of gfortran + ++ # A64fx ++ ifeq ($(FC),frt) ++ ++ FOPTIONS += -DFUJITSU ++ FOPTIONS += -fs ++ ++ ifdef USE_SHARED ++ FOPTIONS+= ++ endif ++ ++ DEFINES += ++ LINK.f = $(FC) $(LDFLAGS) ++ FOPTIMIZE = -O3 ++ ++ ifeq ($(V),1) ++ $(info FUJITSU FOPTIMIZE = ${FOPTIMIZE}) ++ endif ++ ++ FDEBUG += -g -O ++ FOPTIMIZE += ++ ++ endif ++ + ifeq ($(FC),armflang) + + ifdef USE_SHARED +Only in nwchem-7.0.2/src/config: makefile.h.orig +diff -u -r nwchem-7.0.2/src/inp/inp.F nwchem-7.0.2-patched/src/inp/inp.F +--- nwchem-7.0.2/src/inp/inp.F 2020-10-13 13:16:26.000000000 +0900 ++++ nwchem-7.0.2-patched/src/inp/inp.F 2022-02-08 14:21:11.000000000 +0900 +@@ -15,7 +15,7 @@ + data errmsg /' '/ + data input_line /0/ + data xblnk /' '/ +-#if defined(SGITFP) || defined(SGI_N32) || defined(CRAY) || defined(HPUX) || defined(WIN32) || defined(PSCALE) || defined(__FLANG) || ( __GNUC__ >= 4) ++#if defined(SGITFP) || defined(SGI_N32) || defined(CRAY) || defined(HPUX) || defined(WIN32) || defined(PSCALE) || defined(__FLANG) || ( __GNUC__ >= 4) || defined(FUJITSU) + data xtab /' '/ ! Tab ... no backslash necessary + #elif (defined(LINUX) || defined(MACX)) && !defined(PGLINUX) && !defined(XLFLINUX) &&!( __GNUC__ >= 4) + data xtab /9/ ! Tab ... g77 has trouble with escape sequence +diff -u -r nwchem-7.0.2/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F nwchem-7.0.2-patched/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F +--- nwchem-7.0.2/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F 2020-10-13 13:16:26.000000000 +0900 ++++ nwchem-7.0.2-patched/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F 2022-02-09 11:33:37.000000000 +0900 +@@ -854,7 +854,8 @@ + integer, intent(in) :: rtdb + C type(rt_params_t), intent(in) :: params + integer, intent(in) :: nao, nq +- double precision, intent(out) :: pot_ao(nao,nao), ovl_ao(nao,nao) ++ double precision, intent(inout) :: pot_ao(nao,nao) ++ double precision, intent(inout) :: ovl_ao(nao,nao) + + character(len=*), parameter :: pname = + $ "rt_tddft_spatial_potential_print: " +diff -u -r nwchem-7.0.2/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F nwchem-7.0.2-patched/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F +--- nwchem-7.0.2/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F 2020-10-13 13:24:47.000000000 +0900 ++++ nwchem-7.0.2-patched/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F 2022-02-09 18:51:07.000000000 +0900 +@@ -26,6 +26,7 @@ + C For the GNU General Public License, see + + subroutine nwpwxc_vdw3_dftd3(options,n,iz,xyz,lat,eout,g,g_lat) ++ use, intrinsic :: ieee_arithmetic + implicit none + character*(*) options + c number of atoms +@@ -826,7 +827,7 @@ + if (util_isnan(dum)) call + c nwpwxc_stoprun('internal NaN-error') + #else +- if (ISNAN(dum)) call nwpwxc_stoprun('internal NaN-error') ++ if (ieee_is_nan(dum)) call nwpwxc_stoprun('internal NaN-error') + #endif + ! if (dum/=dum) call nwpwxc_stoprun('internal NaN-error') + if(dum.gt.1.d-8) then +diff -u -r nwchem-7.0.2/src/selci/conf.F nwchem-7.0.2-patched/src/selci/conf.F +--- nwchem-7.0.2/src/selci/conf.F 2020-10-13 13:16:27.000000000 +0900 ++++ nwchem-7.0.2-patched/src/selci/conf.F 2022-02-09 16:09:46.000000000 +0900 +@@ -10,7 +10,6 @@ + * + * $Id$ + * +-*include "implicit.fh" + #include "cconf.fh" + #include "mptr.fh" + #include "cselcifiles.fh" +diff -u -r nwchem-7.0.2/src/tools/guess-mpidefs nwchem-7.0.2-patched/src/tools/guess-mpidefs +--- nwchem-7.0.2/src/tools/guess-mpidefs 2020-10-13 13:16:27.000000000 +0900 ++++ nwchem-7.0.2-patched/src/tools/guess-mpidefs 2022-02-08 14:21:52.000000000 +0900 +@@ -1,10 +1,10 @@ + #!/usr/bin/env bash + # + declare -a LIST_MPIFWRAP +-LIST_MPIFWRAP=( 'mpif90' 'mpiifort' 'mpifc' 'mpixlf_r' 'mpixlf' 'mpif77' ) ++LIST_MPIFWRAP=( 'mpif90' 'mpiifort' 'mpifc' 'mpixlf_r' 'mpixlf' 'mpif77' 'mpifrt') + export LIST_MPIFWRAP + declare -a LIST_MPICWRAP +-LIST_MPICWRAP=( 'mpicc' 'mpixlc_r' 'mpixlc' 'mpigcc' 'mpiicc' ) ++LIST_MPICWRAP=( 'mpicc' 'mpixlc_r' 'mpixlc' 'mpigcc' 'mpiicc' 'mpifcc') + export LIST_MPICWRAP + function usage() + { diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index aeae2080a9ef98..759e86f90c9c0e 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -27,6 +27,12 @@ class Nwchem(Package): variant('openmp', default=False, description='Enables OpenMP support') variant('mpipr', default=False, description='Enables ARMCI with progress rank') + # This patch is for the modification of the build system (e.g. compiler flags) and + # Fortran syntax to enable the compilation with Fujitsu compilers. The modification + # will be merged to the next release of NWChem (see https://github.com/nwchemgit/nwchem/issues/347 + # for more detail. + patch('fj.patch', when='@7.0.2 %fj') + depends_on('blas') depends_on('lapack') depends_on('mpi') diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py index 1548b51d15226c..675b74d603e400 100644 --- a/var/spack/repos/builtin/packages/ocaml/package.py +++ b/var/spack/repos/builtin/packages/ocaml/package.py @@ -31,8 +31,9 @@ class Ocaml(Package): # #9969, #9981: Added mergeable flag to ELF sections containing mergeable # constants. Fixes compatibility with the integrated assembler in clang 11.0.0. # (Jacob Young, review by Nicolas Ojeda Bar) - patch('https://patch-diff.githubusercontent.com/raw/ocaml/ocaml/pull/9981.patch', - sha256='3b1ca67eb124f5460a077d9575f579ef9d2f0416424761ae9d6c701550c5b75b', when="@:4.11.0 %clang@11:") + patch('https://github.com/ocaml/ocaml/pull/9981.patch?full_index=1', + sha256='12700c697f0d5227e8eddd62e4308ec3cd67c0a5a5a1b7eec376686a5fd63a5c', + when="@:4.11.0 %clang@11:") depends_on('ncurses') sanity_check_file = ['bin/ocaml'] diff --git a/var/spack/repos/builtin/packages/ocl-icd/package.py b/var/spack/repos/builtin/packages/ocl-icd/package.py index 9afed21132d984..09794d2d80912c 100644 --- a/var/spack/repos/builtin/packages/ocl-icd/package.py +++ b/var/spack/repos/builtin/packages/ocl-icd/package.py @@ -47,8 +47,8 @@ class OclIcd(AutotoolsPackage): # upstream patch to fix compatibility with the latest version of the # official khronos OpenCL C headers release, ie opencl-c-headers@2021.04.29 - patch('https://github.com/OCL-dev/ocl-icd/commit/aed1832c81c0971ea001e12d41e04df834257f94.patch', - sha256='c6bb2813e2a59ac9b79b86d7f421c3e6446c0f9d8a4c850e5641fb7273ab3b43', when='@2.3.0') + patch('https://github.com/OCL-dev/ocl-icd/commit/aed1832c81c0971ea001e12d41e04df834257f94.patch?full_index=1', + sha256='90fef5c4b341848c82d484a2329339c4762c2451259378fbda60cc86b3216616', when='@2.3.0') def flag_handler(self, name, flags): if name == 'cflags' and self.spec.satisfies('@:2.2.12'): diff --git a/var/spack/repos/builtin/packages/octa/aarch64.patch b/var/spack/repos/builtin/packages/octa/aarch64.patch new file mode 100644 index 00000000000000..a41f8afa7abb0f --- /dev/null +++ b/var/spack/repos/builtin/packages/octa/aarch64.patch @@ -0,0 +1,10 @@ +--- spack-src/GOURMET/src/pfgetsystem.org 2022-03-01 18:06:07.000000000 +0900 ++++ spack-src/GOURMET/src/pfgetsystem 2022-03-01 18:08:26.000000000 +0900 +@@ -159,6 +159,7 @@ + ppc*) S='linux_ppc' ;; + hp_pa*) S='linux_hppa' ;; + ia64) S='linux_ia64' ;; ++ aarch64) S='linux_aarch64' ;; + esac + ;; + FreeBSD) diff --git a/var/spack/repos/builtin/packages/octa/jogl.patch b/var/spack/repos/builtin/packages/octa/jogl.patch new file mode 100644 index 00000000000000..33dc3710824951 --- /dev/null +++ b/var/spack/repos/builtin/packages/octa/jogl.patch @@ -0,0 +1,90 @@ +diff -ru spack-src/GOURMET/src/java/platform/show.org/JOGLCanvasBase.java spack-src/GOURMET/src/java/platform/show/JOGLCanvasBase.java +--- spack-src/GOURMET/src/java/platform/show.org/JOGLCanvasBase.java 2022-03-02 10:49:48.000000000 +0900 ++++ spack-src/GOURMET/src/java/platform/show/JOGLCanvasBase.java 2022-03-02 10:50:36.000000000 +0900 +@@ -7,24 +7,24 @@ + package platform.show; + + /* JOGL v2.2.4 */ +-import javax.media.opengl.GL; +-import javax.media.opengl.GLAutoDrawable; ++//import javax.media.opengl.GL; ++//import javax.media.opengl.GLAutoDrawable; + // JOGL V1.* + //import javax.media.opengl.GLCanvas; + // JOGL V2.* + //import javax.media.opengl.awt.GLCanvas; +-import javax.media.opengl.awt.GLJPanel; ++//import javax.media.opengl.awt.GLJPanel; + // JOGL V1.* or V2.* +-import javax.media.opengl.GLCapabilities; +-import javax.media.opengl.GLContext; +-import javax.media.opengl.GLEventListener; ++//import javax.media.opengl.GLCapabilities; ++//import javax.media.opengl.GLContext; ++//import javax.media.opengl.GLEventListener; + // JOGL V2.* +-import javax.media.opengl.GLProfile; ++//import javax.media.opengl.GLProfile; + +-/* JOGL v2.3.2 * ++/* JOGL v2.3.2 */ + import com.jogamp.opengl.*; + import com.jogamp.opengl.awt.GLJPanel; +-*/ ++ + /** + * Common GLCanvas Class + */ +diff -ru spack-src/GOURMET/src/java/platform/show.org/JOGLCanvas.java spack-src/GOURMET/src/java/platform/show/JOGLCanvas.java +--- spack-src/GOURMET/src/java/platform/show.org/JOGLCanvas.java 2022-03-02 10:49:48.000000000 +0900 ++++ spack-src/GOURMET/src/java/platform/show/JOGLCanvas.java 2022-03-02 10:41:56.000000000 +0900 +@@ -15,14 +15,15 @@ + import java.util.LinkedList; + import java.util.List; + +-/* JOGL v2.2.4 */ ++/* JOGL v2.2.4 * + import javax.media.opengl.GLAutoDrawable; + import javax.media.opengl.GLCapabilities; ++*/ + +-/* JOGL v2.3.2 * ++/* JOGL v2.3.2 */ + import com.jogamp.opengl.GLAutoDrawable; + import com.jogamp.opengl.GLCapabilities; +-*/ ++ + import platform.util.DataDriver; + import platform.util.IndexArraySet; + import platform.util.NativeDrawObject; +diff -ru spack-src/GOURMET/src/java/platform/show.org/PickingCanvas.java spack-src/GOURMET/src/java/platform/show/PickingCanvas.java +--- spack-src/GOURMET/src/java/platform/show.org/PickingCanvas.java 2022-03-02 10:49:48.000000000 +0900 ++++ spack-src/GOURMET/src/java/platform/show/PickingCanvas.java 2022-03-02 10:41:56.000000000 +0900 +@@ -14,12 +14,13 @@ + import java.awt.event.MouseMotionListener; + import java.util.ArrayList; + +-/* JOGL v2.2.4 */ ++/* JOGL v2.2.4 * + import javax.media.opengl.GLCapabilities; ++*/ + +-/* JOGL v2.3.2 * ++/* JOGL v2.3.2 */ + import com.jogamp.opengl.GLCapabilities; +-*/ ++ + import javax.swing.SwingUtilities; + + import platform.util.IndexArraySet; +--- spack-src/GOURMET/src/java/platform/show/PickingCanvas.java.org 2022-03-02 11:50:02.000000000 +0900 ++++ spack-src/GOURMET/src/java/platform/show/PickingCanvas.java 2022-03-02 11:52:57.000000000 +0900 +@@ -341,7 +341,7 @@ + // Begin of drawing process. + if(!makeCurrent()) return null; + // for HiDPI display +- int[] scale = getCurrentSurfaceScale(new int[2]); /* int -> float in later version */ ++ float[] scale = getCurrentSurfaceScale(new float[2]); + x *= scale[0]; + y *= scale[1]; + //////////////////////////////////////////////////////// diff --git a/var/spack/repos/builtin/packages/octa/narrowed-initialize.patch b/var/spack/repos/builtin/packages/octa/narrowed-initialize.patch new file mode 100644 index 00000000000000..02b83692a6e300 --- /dev/null +++ b/var/spack/repos/builtin/packages/octa/narrowed-initialize.patch @@ -0,0 +1,30 @@ +--- OCTA84/GOURMET/src/view3d/uogl/src/uogl_mesh.cpp.org 2022-03-02 13:39:04.000000000 +0900 ++++ OCTA84/GOURMET/src/view3d/uogl/src/uogl_mesh.cpp 2022-03-02 13:39:49.000000000 +0900 +@@ -2331,9 +2331,9 @@ + arw->_xyz[1] = (float)(arrowk.point1[1] * ss + arrowk.point2[1] * tt); + arw->_xyz[2] = (float)(arrowk.point1[2] * ss + arrowk.point2[2] * tt); + float vct[3] = { +- (vctp[0][0] * ss + vctp[1][0] * tt), +- (vctp[0][1] * ss + vctp[1][1] * tt), +- (vctp[0][2] * ss + vctp[1][2] * tt) ++ (float)(vctp[0][0] * ss + vctp[1][0] * tt), ++ (float)(vctp[0][1] * ss + vctp[1][1] * tt), ++ (float)(vctp[0][2] * ss + vctp[1][2] * tt) + }; + arw->_length = fuoglLength( vct ); + if( arw->_length <= 1e-20f ){ +--- spack-src/GOURMET/src/view3d/uogl/src/uogl_unmesh.cpp.org 2022-03-02 15:10:17.000000000 +0900 ++++ spack-src/GOURMET/src/view3d/uogl/src/uogl_unmesh.cpp 2022-03-02 15:10:56.000000000 +0900 +@@ -1475,9 +1475,9 @@ + arw->_xyz[1] = (float)(point1[1] * ss + point2[1] * arrowk.tt); + arw->_xyz[2] = (float)(point1[2] * ss + point2[2] * arrowk.tt); + float vct[3] = { +- (vector1[0] * ss + vector2[0] * arrowk.tt), +- (vector1[1] * ss + vector2[1] * arrowk.tt), +- (vector1[2] * ss + vector2[2] * arrowk.tt) ++ (float)(vector1[0] * ss + vector2[0] * arrowk.tt), ++ (float)(vector1[1] * ss + vector2[1] * arrowk.tt), ++ (float)(vector1[2] * ss + vector2[2] * arrowk.tt) + }; + arw->_length = fuoglLength( vct ); + if( arw->_length <= 1e-20f ){ diff --git a/var/spack/repos/builtin/packages/octa/package.py b/var/spack/repos/builtin/packages/octa/package.py new file mode 100644 index 00000000000000..e172e2f72b39d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/octa/package.py @@ -0,0 +1,55 @@ +# Copyright 2013-2022 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 import * + + +class Octa(AutotoolsPackage): + """OCTA is an integrated simulation system for soft materials.""" + + homepage = "https://octa.jp" + url = "http://49.212.191.63/phpBB/download/file.php?id=3454&sid=3dfae182c664d1f5960d9ca63c40798a" + + version('8.4', 'b76d25f333fef76601bfe8262e9a748154280d5408ea823fa6530a6f3f86b51b', extension='tar.gz') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('libjpeg', type='link') + depends_on('libpng', type='link') + depends_on('zlib', type='link') + depends_on('jogl') + depends_on('python') + depends_on('gnuplot', type='run') + depends_on('py-numpy') + depends_on('py-scipy') + depends_on('py-numba') + + # specify for linux_aarch64 + patch('aarch64.patch', when='target=aarch64:') + # For jogl 2.3.2 or later + patch('jogl.patch') + # patch for non-constant-expression cannot be narrowed error. + patch('narrowed-initialize.patch') + + configure_directory = join_path('GOURMET', 'src') + + def patch(self): + with working_dir(self.configure_directory): + copy('jogltest.java_v232', 'jogltest.java') + + def configure_args(self): + spec = self.spec + args = ['--with-python={0}'.format(spec['python'].command), + '--with-java-home={0}'.format(spec['java'].prefix), + '--with-jogl-jar={0}'.format(spec['jogl'].prefix.lib), + '--with-jogl-lib={0}'.format(spec['jogl'].prefix.lib)] + return args + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install(join_path('GOURMET', 'bin', '*.sh'), prefix.bin) + with working_dir(self.configure_directory): + make('install', parallel=False) diff --git a/var/spack/repos/builtin/packages/omega-h/package.py b/var/spack/repos/builtin/packages/omega-h/package.py index 9789826bf46609..caa92373c080f6 100644 --- a/var/spack/repos/builtin/packages/omega-h/package.py +++ b/var/spack/repos/builtin/packages/omega-h/package.py @@ -18,6 +18,7 @@ class OmegaH(CMakePackage): maintainers = ['cwsmith'] tags = ['e4s'] version('main', branch='main') + version('scorec.10.1.0', commit='e88912368e101d940f006019585701a704295ab0', git="https://github.com/SCOREC/omega_h.git") version('9.34.1', sha256='3a812da3b8df3e0e5d78055e91ad23333761bcd9ed9b2c8c13ee1ba3d702e46c') version('9.32.5', sha256='963a203e9117024cd48d829d82b8543cd9133477fdc15386113b594fdc3246d8') version('9.29.0', sha256='b41964b018909ffe9cea91c23a0509b259bfbcf56874fcdf6bd9f6a179938014') diff --git a/var/spack/repos/builtin/packages/onednn/package.py b/var/spack/repos/builtin/packages/onednn/package.py index 70061a8f2a6603..fa2083d5ffca12 100644 --- a/var/spack/repos/builtin/packages/onednn/package.py +++ b/var/spack/repos/builtin/packages/onednn/package.py @@ -18,6 +18,7 @@ class Onednn(CMakePackage): maintainers = ['adamjstewart'] version('master', branch='master') + version('2.5.2', sha256='11d50235afa03571dc70bb6d96a98bfb5d9b53e8c00cc2bfbde78588bd01f6a3') version('2.1-rc', sha256='13d293e7368a8fdd8dd3c11c73352cf5f564398658dd027ce0acde947440b4cb') version('2.0', sha256='922b42c3ea7a7122a77c61568dc4512aa8130c264c0489283c989919d1f59a6d') version('1.8.1', sha256='1883ccfb037bd31f916203a38e877899fc27ae10bc9ebad686f78d189ba506a7') diff --git a/var/spack/repos/builtin/packages/openbabel/package.py b/var/spack/repos/builtin/packages/openbabel/package.py index 3617e91589afd8..0818efaa86a0ae 100644 --- a/var/spack/repos/builtin/packages/openbabel/package.py +++ b/var/spack/repos/builtin/packages/openbabel/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Openbabel(CMakePackage): @@ -29,7 +30,11 @@ class Openbabel(CMakePackage): depends_on('cmake@3.1:', type='build') depends_on('pkgconfig', type='build') depends_on('swig@2.0:', type='build', when='+python') - depends_on('boost') + + # 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('cairo') # required to support PNG depiction depends_on('pango') # custom cairo requires custom pango depends_on('eigen@3.0:') # required if using the language bindings diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 7fc9f0e48303e5..7fb3d17e022dbb 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -18,6 +18,7 @@ class Openblas(MakefilePackage): git = 'https://github.com/xianyi/OpenBLAS.git' version('develop', branch='develop') + version('0.3.20', sha256='8495c9affc536253648e942908e88e097f2ec7753ede55aca52e5dead3029e3c') version('0.3.19', sha256='947f51bfe50c2a0749304fbe373e00e7637600b0a47b78a51382aeb30ca08562') version('0.3.18', sha256='1632c1e8cca62d8bed064b37747e331a1796fc46f688626337362bf0d16aeadb') version('0.3.17', sha256='df2934fa33d04fd84d839ca698280df55c690c86a5a1133b3f7266fce1de279f') @@ -93,14 +94,14 @@ class Openblas(MakefilePackage): # https://github.com/xianyi/OpenBLAS/issues/1735#issuecomment-422954465 # https://github.com/xianyi/OpenBLAS/issues/1761#issuecomment-421039174 # https://github.com/xianyi/OpenBLAS/pull/1765 - patch('https://github.com/xianyi/OpenBLAS/commit/4d183e5567346f80f2ef97eb98f8601c47f8cb56.patch', - sha256='714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33', + patch('https://github.com/xianyi/OpenBLAS/commit/4d183e5567346f80f2ef97eb98f8601c47f8cb56.patch?full_index=1', + sha256='9b02860bd78252ed9f09abb65a62fff22c0aeca002757d503f5b643a11b744bf', when='@0.3.3') # Fix parallel build issues on filesystems # with missing sub-second timestamp resolution - patch('https://github.com/xianyi/OpenBLAS/commit/79ea839b635d1fd84b6ce8a47e086f01d64198e6.patch', - sha256='f1b066a4481a50678caeb7656bf3e6764f45619686ac465f257c8017a2dc1ff0', + patch('https://github.com/xianyi/OpenBLAS/commit/79ea839b635d1fd84b6ce8a47e086f01d64198e6.patch?full_index=1', + sha256='1cbadd897d037e6015384aaad70efe0d9eac4382482ee01e3fbe89cde2a1ebea', when='@0.3.0:0.3.3') # Fix https://github.com/xianyi/OpenBLAS/issues/2431 @@ -114,8 +115,8 @@ class Openblas(MakefilePackage): # should be included in post 0.3.10 versions. Application to earlier # versions was not tested. # See also https://github.com/xianyi/OpenBLAS/issues/2870 - patch('https://github.com/xianyi/OpenBLAS/commit/f42e84d46c52f4ee1e05af8f365cd85de8a77b95.patch', - sha256='7b1eec78d1b1f55d3a3f1249696be7da0e2e1cd3b7fadae852e97dc860f8a7fd', + patch('https://github.com/xianyi/OpenBLAS/commit/f42e84d46c52f4ee1e05af8f365cd85de8a77b95.patch?full_index=1', + sha256='d38396ed602c3b655ad8cfc3d70b72726c567643578bf65466527f3a57bbd495', when='@0.3.8:0.3.10 %apple-clang@12.0.0:') # Add conditions to f_check to determine the Fujitsu compiler diff --git a/var/spack/repos/builtin/packages/opencarp/package.py b/var/spack/repos/builtin/packages/opencarp/package.py index 2bcf7ef08f2aad..4d5a132e2105bb 100644 --- a/var/spack/repos/builtin/packages/opencarp/package.py +++ b/var/spack/repos/builtin/packages/opencarp/package.py @@ -18,7 +18,8 @@ class Opencarp(CMakePackage): maintainers = ['MarieHouillon'] - version('8.2', commit='dbfd16fd', submodules=False, no_cache=True, preferred=True) + version('9.0', commit='c0167599', submodules=False, no_cache=True, preferred=True) + version('8.2', commit='dbfd16fd', submodules=False, no_cache=True) version('8.1', commit='28eb2e97', submodules=False, no_cache=True) version('7.0', commit='78da9195', submodules=False, no_cache=True) version('master', branch='master', submodules=False, no_cache=True) @@ -34,14 +35,14 @@ class Opencarp(CMakePackage): depends_on('binutils') depends_on('gengetopt') depends_on('pkgconfig') - depends_on('python@:3.8') + depends_on('python') depends_on('zlib') depends_on('perl') depends_on('py-carputils') depends_on('meshtool') # Use specific versions of carputils and meshtool for releases - for ver in ['8.2', '7.0', '8.1']: + for ver in ['9.0', '8.2', '7.0', '8.1']: depends_on('py-carputils@oc' + ver, when='@' + ver + ' +carputils') depends_on('meshtool@oc' + ver, when='@' + ver + ' +meshtool') diff --git a/var/spack/repos/builtin/packages/opencl-c-headers/package.py b/var/spack/repos/builtin/packages/opencl-c-headers/package.py index b7e43ec3d137b5..c2e38947b5771e 100644 --- a/var/spack/repos/builtin/packages/opencl-c-headers/package.py +++ b/var/spack/repos/builtin/packages/opencl-c-headers/package.py @@ -16,6 +16,7 @@ class OpenclCHeaders(Package): url = "https://github.com/KhronosGroup/OpenCL-Headers/archive/v2020.06.16.tar.gz" maintainers = ['lorddavidiii'] + version('2022.01.04', sha256='6e716e2b13fc8d363b40a165ca75021b102f9328e2b38f8054d7db5884de29c9') version('2021.06.30', sha256='6640d590c30d90f89351f5e3043ae6363feeb19ac5e64bc35f8cfa1a6cd5498e') version('2021.04.29', sha256='477e2b26125d99a9b2f20c68262f27ca3f3ca7899593a8af2b7fe077bdce18d1') version('2020.12.18', sha256='5dad6d436c0d7646ef62a39ef6cd1f3eba0a98fc9157808dfc1d808f3705ebc2') diff --git a/var/spack/repos/builtin/packages/opencl-clhpp/package.py b/var/spack/repos/builtin/packages/opencl-clhpp/package.py index f7e31dc54a9d81..96423af9e5ef07 100644 --- a/var/spack/repos/builtin/packages/opencl-clhpp/package.py +++ b/var/spack/repos/builtin/packages/opencl-clhpp/package.py @@ -16,6 +16,7 @@ class OpenclClhpp(CMakePackage): url = "https://github.com/KhronosGroup/OpenCL-CLHPP/archive/v2.0.12.tar.gz" maintainers = ['lorddavidiii'] + version('2.0.16', sha256='869456032e60787eed9fceaeaf6c6cb4452bc0ff97e0f5a271510145a1c8f4d4') version('2.0.15', sha256='0175806508abc699586fc9a9387e01eb37bf812ca534e3b493ff3091ec2a9246') version('2.0.14', sha256='c8821a7638e57a2c4052631c941af720b581edda634db6ab0b59924c958d69b6') version('2.0.13', sha256='8ff0d0cd94d728edd30c876db546bf13e370ee7863629b4b9b5e2ef8e130d23c') diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index e76bf06e3ee4b1..b82ab0d0ae06ab 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -108,16 +108,16 @@ class OpenfoamOrg(Package): assets = ['bin/foamEtcFile'] # Version-specific patches - patch('https://github.com/OpenFOAM/OpenFOAM-7/commit/ef33cf38ac9b811072a8970c71fbda35a90f6641.patch', - sha256='73103e6b1bdbf3b1e0d517cbbd11562e98c6e9464df5f43e5125e9a5b457d1c5', when='@7') + patch('https://github.com/OpenFOAM/OpenFOAM-7/commit/ef33cf38ac9b811072a8970c71fbda35a90f6641.patch?full_index=1', + sha256='05d17e17f94e6fe8188a9c0b91ed34c9b62259414589d908c152a4c40fe6b7e2', when='@7') patch('50-etc.patch', when='@5.0:5.9') patch('41-etc.patch', when='@4.1') patch('41-site.patch', when='@4.1:') patch('240-etc.patch', when='@:2.4.0') patch('isnan.patch', when='@:2.4.0') # Add support for SYSTEMMPI - patch('https://github.com/OpenFOAM/OpenFOAM-2.3.x/commit/ae9a670c99472787f3a5446ac2b522bf3519b796.patch', - sha256='6c4c535baca3ce64035d512265c4ce8effd39de7602c923c5e19985db68b632a', when='@:2.3.1') + patch('https://github.com/OpenFOAM/OpenFOAM-2.3.x/commit/ae9a670c99472787f3a5446ac2b522bf3519b796.patch?full_index=1', + sha256='7e843fa2533d12f392d9d5389daa6f08ef68a8d329438b53e7aa204bc710bf57', when='@:2.3.1') # The openfoam architecture, compiler information etc _foam_arch = None diff --git a/var/spack/repos/builtin/packages/openfoam/package.py b/var/spack/repos/builtin/packages/openfoam/package.py index df1bb8e4df4c66..5535d604b995c0 100644 --- a/var/spack/repos/builtin/packages/openfoam/package.py +++ b/var/spack/repos/builtin/packages/openfoam/package.py @@ -47,6 +47,7 @@ import llnl.util.tty as tty from spack import * +from spack.pkg.builtin.boost import Boost from spack.util.environment import EnvironmentModifications # Not the nice way of doing things, but is a start for refactoring @@ -319,7 +320,12 @@ class Openfoam(Package): depends_on('zlib') depends_on('fftw-api') - depends_on('boost') + + # 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) + # OpenFOAM does not play nice with CGAL 5.X depends_on('cgal@:4') # The flex restriction is ONLY to deal with a spec resolution clash diff --git a/var/spack/repos/builtin/packages/openimageio/package.py b/var/spack/repos/builtin/packages/openimageio/package.py index f943731d143e37..fd51429f68258c 100644 --- a/var/spack/repos/builtin/packages/openimageio/package.py +++ b/var/spack/repos/builtin/packages/openimageio/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Openimageio(CMakePackage): @@ -19,6 +20,11 @@ class Openimageio(CMakePackage): # Core dependencies depends_on('cmake@3.2.2:', type='build') depends_on('boost@1.53:', type=('build', 'link')) + + # 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, type=('build', 'link')) depends_on('libtiff@4.0:', type=('build', 'link')) depends_on('openexr@2.3:', type=('build', 'link')) depends_on('libpng@1.6:', type=('build', 'link')) diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py index a531b39d42c088..bf6fcb7e748133 100644 --- a/var/spack/repos/builtin/packages/openjdk/package.py +++ b/var/spack/repos/builtin/packages/openjdk/package.py @@ -17,6 +17,13 @@ # format returned by platform.system() and 'arch' by platform.machine() _versions = { + '17.0.2_8': { + 'Linux-x86_64': ('288f34e3ba8a4838605636485d0365ce23e57d5f2f68997ac4c2e4c01967cd48', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_linux_hotspot_17.0.2_8.tar.gz'), + 'Linux-aarch64': ('302caf29f73481b2b914ba2b89705036010c65eb9bc8d7712b27d6e9bedf6200', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.2_8.tar.gz'), + 'Linux-ppc64le': ('532d831d6a977e821b7331ecf9ed995e5bbfe76f18a1b00ffa8dbb3a4e2887de', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.2_8.tar.gz'), + 'Darwin-x86_64': ('3630e21a571b7180876bf08f85d0aac0bdbb3267b2ae9bd242f4933b21f9be32', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_mac_hotspot_17.0.2_8.tar.gz'), + 'Darwin-aarch64': ('157518e999d712b541b883c6c167f8faabbef1d590da9fe7233541b4adb21ea4', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.2_8.tar.gz') + }, '17.0.0_35': { 'Linux-x86_64': ('6f1335d9a7855159f982dac557420397be9aa85f3f7bc84e111d25871c02c0c7', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_x64_linux_hotspot_17_35.tar.gz'), 'Linux-aarch64': ('e08e6d8c84da28a2c49ccd511f8835c329fbdd8e4faff662c58fa24cca74021d', 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17%2B35/OpenJDK17-jdk_aarch64_linux_hotspot_17_35.tar.gz'), @@ -28,6 +35,12 @@ 'Linux-x86_64': ('6c714ded7d881ca54970ec949e283f43d673a142fda1de79b646ddd619da9c0c', 'https://download.java.net/java/GA/jdk16.0.2/d4a915d82b4c4fbb9bde534da945d746/7/GPL/openjdk-16.0.2_linux-x64_bin.tar.gz'), 'Linux-aarch64': ('1ffb9c7748334945d9056b3324de3f797d906fce4dad86beea955153aa1e28fe', 'https://download.java.net/java/GA/jdk16.0.2/d4a915d82b4c4fbb9bde534da945d746/7/GPL/openjdk-16.0.2_linux-aarch64_bin.tar.gz'), }, + '11.0.14.1_1': { + 'Linux-x86_64': ('43fb84f8063ad9bf6b6d694a67b8f64c8827552b920ec5ce794dfe5602edffe7', 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.14.1_1.tar.gz'), + 'Linux-aarch64': ('79572f5172c6a040591d34632f98a20ed148702bbce2f57649e8ac01c0d2e3db', 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.14.1_1.tar.gz'), + 'Linux-ppc64le': ('9750e11721282a9afd18a07743f19c699b2b71ce20d02f3f0a906088b9ae6d9a', 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.14.1_1.tar.gz'), + 'Darwin-x86_64': ('8c69808f5d9d209b195575e979de0e43cdf5d0f1acec1853a569601fe2c1f743', 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.14.1_1.tar.gz') + }, '11.0.12_7': { 'Linux-x86_64': ('8770f600fc3b89bf331213c7aa21f8eedd9ca5d96036d1cd48cb2748a3dbefd2', 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz'), 'Linux-aarch64': ('105bdc12fcd54c551e8e8ac96bc82412467244c32063689c41cee29ceb7452a2', 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.12_7.tar.gz'), @@ -65,13 +78,17 @@ class Openjdk(Package): """The free and opensource java implementation""" homepage = "https://jdk.java.net" - preferred_version = "11.0.12_7" + preferred_version_prefix = "11." + preferred_defined = False for ver, packages in _versions.items(): key = "{0}-{1}".format(platform.system(), platform.machine()) pkg = packages.get(key) if pkg: - is_preferred = preferred_version == ver + is_preferred = not preferred_defined and ver.startswith(preferred_version_prefix) + if is_preferred: + preferred_defined = True + version(ver, sha256=pkg[0], url=pkg[1], preferred=is_preferred) provides('java@17', when='@17.0:17') diff --git a/var/spack/repos/builtin/packages/openloops/package.py b/var/spack/repos/builtin/packages/openloops/package.py index 355f0250a5f0d8..a363ee794a3254 100644 --- a/var/spack/repos/builtin/packages/openloops/package.py +++ b/var/spack/repos/builtin/packages/openloops/package.py @@ -141,4 +141,4 @@ def build_processes(self, spec, prefix): def install(self, spec, prefix): install_tree(join_path(self.stage.path, 'spack-src'), self.prefix, - ignore=lambda x: x in ('process_obj', 'process_src')) + ignore=lambda x: x in ('process_obj', 'process_src', 'README')) diff --git a/var/spack/repos/builtin/packages/openmc/package.py b/var/spack/repos/builtin/packages/openmc/package.py index 38845874d3aa3d..c1ccb31963c540 100644 --- a/var/spack/repos/builtin/packages/openmc/package.py +++ b/var/spack/repos/builtin/packages/openmc/package.py @@ -8,21 +8,25 @@ class Openmc(CMakePackage): - """The OpenMC project aims to provide a fully-featured Monte Carlo particle - transport code based on modern methods. It is a constructive solid - geometry, continuous-energy transport code that uses ACE format cross - sections. The project started under the Computational Reactor Physics - Group at MIT.""" + """OpenMC is a community-developed Monte Carlo neutron and photon transport + simulation code. It is capable of performing fixed source, k-eigenvalue, and + subcritical multiplication calculations on models built using either a + constructive solid geometry or CAD representation. OpenMC supports both + continuous-energy and multigroup transport. The continuous-energy particle + interaction data is based on a native HDF5 format that can be generated from ACE + files produced by NJOY. Parallelism is enabled via a hybrid MPI and OpenMP + programming model.""" homepage = "https://docs.openmc.org/" - url = "https://github.com/openmc-dev/openmc/tarball/v0.12.2" + url = "https://github.com/openmc-dev/openmc/tarball/v0.13.0" git = "https://github.com/openmc-dev/openmc.git" version('develop', branch='develop', submodules=True) version('master', branch='master', submodules=True) - version('0.12.2', tag='v0.12.2', submodules=True) - version('0.12.1', tag='v0.12.1', submodules=True) - version('0.12.0', tag='v0.12.0', submodules=True) + version('0.13.0', commit='cff247e35785e7236d67ccf64a3401f0fc50a469', submodules=True) + version('0.12.2', commit='cbfcf908f8abdc1ef6603f67872dcf64c5c657b1', submodules=True) + version('0.12.1', commit='36913589c4f43b7f843332181645241f0f10ae9e', submodules=True) + version('0.12.0', commit='93d6165ecb455fc57242cd03a3f0805089c0e0b9', submodules=True) version('0.11.0', sha256='19a9d8e9c3b581e9060fbd96d30f1098312d217cb5c925eb6372a5786d9175af') version('0.10.0', sha256='47650cb45e2c326ae439208d6f137d75ad3e5c657055912d989592c6e216178f') diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 34788b5a449643..07a99d0c911609 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -36,12 +36,13 @@ class Openmpi(AutotoolsPackage): tags = ['e4s'] - version('master', branch='master', submodules=True) + version('main', branch='main', submodules=True) # Current - version('4.1.2', sha256='9b78c7cf7fc32131c5cf43dd2ab9740149d9d87cadb2e2189f02685749a6b527') # libmpi.so.40.30.2 + version('4.1.3', sha256='3d81d04c54efb55d3871a465ffb098d8d72c1f48ff1cbaf2580eb058567c0a3b') # libmpi.so.40.30.3 # Still supported + version('4.1.2', sha256='9b78c7cf7fc32131c5cf43dd2ab9740149d9d87cadb2e2189f02685749a6b527') # libmpi.so.40.30.2 version('4.1.1', sha256='e24f7a778bd11a71ad0c14587a7f5b00e68a71aa5623e2157bafee3d44c07cda') # libmpi.so.40.30.1 version('4.1.0', sha256='73866fb77090819b6a8c85cb8539638d37d6877455825b74e289d647a39fd5b5') # libmpi.so.40.30.0 version('4.0.7', sha256='7d3ecc8389161eb721982c855f89c25dca289001577a01a439ae97ce872be997') # libmpi.so.40.20.7 @@ -180,7 +181,7 @@ class Openmpi(AutotoolsPackage): patch('nag_pthread/2.0.0_2.1.1.patch', when='@2.0.0:2.1.1%nag') patch('nag_pthread/1.10.4_1.10.999.patch', when='@1.10.4:1.10%nag') - patch('nvhpc-libtool.patch', when='@master %nvhpc') + patch('nvhpc-libtool.patch', when='@main %nvhpc') patch('nvhpc-configure.patch', when='%nvhpc') # Fix MPI_Sizeof() in the "mpi" Fortran module for compilers that do not @@ -238,7 +239,7 @@ class Openmpi(AutotoolsPackage): description='Enable rpath support in the wrappers') variant('cxx', default=False, description='Enable C++ MPI bindings') variant('cxx_exceptions', default=False, description='Enable C++ Exception support') - variant('gpfs', default=True, description='Enable GPFS support (if present)') + variant('gpfs', default=False, description='Enable GPFS support') variant('singularity', default=False, description="Build support for the Singularity container") variant('lustre', default=False, @@ -272,11 +273,11 @@ class Openmpi(AutotoolsPackage): if sys.platform != 'darwin': depends_on('numactl') - depends_on('autoconf @2.69:', type='build', when='@master') - depends_on('automake @1.13.4:', type='build', when='@master') - depends_on('libtool @2.4.2:', type='build', when='@master') - depends_on('m4', type='build', when='@master') - depends_on('pandoc', type='build', when='@master') + depends_on('autoconf @2.69:', type='build', when='@main') + depends_on('automake @1.13.4:', type='build', when='@main') + depends_on('libtool @2.4.2:', type='build', when='@main') + depends_on('m4', type='build', when='@main') + depends_on('pandoc', type='build', when='@main') depends_on('perl', type='build') depends_on('pkgconfig', type='build') @@ -352,7 +353,7 @@ class Openmpi(AutotoolsPackage): # knem support was added in 1.5 conflicts('fabrics=knem', when='@:1.4') - conflicts('schedulers=slurm ~pmi', when='@1.5.4:2', + conflicts('schedulers=slurm ~pmi', when='@1.5.4:', msg='+pmi is required for openmpi(>=1.5.5) to work with SLURM.') conflicts('schedulers=loadleveler', when='@3.0.0:', msg='The loadleveler scheduler is not supported with ' @@ -615,16 +616,11 @@ def die_without_fortran(self): 'OpenMPI requires both C and Fortran compilers!' ) - @when('@master') + @when('@main') def autoreconf(self, spec, prefix): perl = which('perl') perl('autogen.pl') - def setup_build_environment(self, env): - if '~gpfs' in self.spec: - env.set('ac_cv_header_gpfs_h', 'no') - env.set('ac_cv_header_gpfs_fcntl_h', 'no') - def configure_args(self): spec = self.spec config_args = [ @@ -734,6 +730,11 @@ def configure_args(self): if '~romio' in spec: config_args.append('--disable-io-romio') + if '+gpfs' in spec: + config_args.append('--with-gpfs') + else: + config_args.append('--with-gpfs=no') + # SQLite3 support if spec.satisfies('@1.7.3:1'): if '+sqlite3' in spec: diff --git a/var/spack/repos/builtin/packages/openspeedshop-utils/package.py b/var/spack/repos/builtin/packages/openspeedshop-utils/package.py index a23888c8db25c8..840bad4c43108e 100644 --- a/var/spack/repos/builtin/packages/openspeedshop-utils/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop-utils/package.py @@ -3,12 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import os -import os.path - import spack import spack.store from spack import * +from spack.pkg.builtin.boost import Boost class OpenspeedshopUtils(CMakePackage): @@ -81,6 +79,10 @@ class OpenspeedshopUtils(CMakePackage): # For boost depends_on("boost@1.66.0:1.69.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("dyninst@master", when='@develop') depends_on("dyninst@10:", when='@2.4.0:9999') diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 35cdf531de4702..9c0faa8f159f34 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -3,10 +3,9 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import os - import spack.store from spack import * +from spack.pkg.builtin.boost import Boost class Openspeedshop(CMakePackage): @@ -77,6 +76,10 @@ class Openspeedshop(CMakePackage): # For boost 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("dyninst@master", when='@develop') depends_on("dyninst@10:", when='@2.4.0:9999') diff --git a/var/spack/repos/builtin/packages/openssh/package.py b/var/spack/repos/builtin/packages/openssh/package.py index 5df65e4959ef85..01723ae60bf8cc 100644 --- a/var/spack/repos/builtin/packages/openssh/package.py +++ b/var/spack/repos/builtin/packages/openssh/package.py @@ -21,6 +21,9 @@ class Openssh(AutotoolsPackage): homepage = "https://www.openssh.com/" url = "https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-8.7p1.tar.gz" + tags = ['core-packages'] + + version('8.9p1', sha256='fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7') version('8.8p1', sha256='4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9') version('8.7p1', sha256='7ca34b8bb24ae9e50f33792b7091b3841d7e1b440ff57bc9fabddf01e2ed1e24') version('8.6p1', sha256='c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae') diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 1fbcb3abde2ff2..9d13de4f3766b8 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -23,14 +23,18 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package list_url = "https://www.openssl.org/source/old/" list_depth = 1 + tags = ['core-packages'] + executables = ['openssl'] - version('3.0.1', sha256='c311ad853353bce796edad01a862c50a8a587f62e7e2100ef465ab53ec9b06d1') - version('3.0.0', sha256='59eedfcb46c25214c9bd37ed6078297b4df01d012267fe9e9eee31f61bc70536') + version('3.0.2', sha256='98e91ccead4d4756ae3c9cde5e09191a8e586d9f4d50838e7ec09d6411dfdb63') + version('3.0.1', sha256='c311ad853353bce796edad01a862c50a8a587f62e7e2100ef465ab53ec9b06d1', deprecated=True) + version('3.0.0', sha256='59eedfcb46c25214c9bd37ed6078297b4df01d012267fe9e9eee31f61bc70536', deprecated=True) # The latest stable version is the 1.1.1 series. This is also our Long Term # Support (LTS) version, supported until 11th September 2023. - version('1.1.1m', sha256='f89199be8b23ca45fc7cb9f1d8d3ee67312318286ad030f5316aca6462db6c96', preferred=True) + version('1.1.1n', sha256='40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a', preferred=True) + version('1.1.1m', sha256='f89199be8b23ca45fc7cb9f1d8d3ee67312318286ad030f5316aca6462db6c96', deprecated=True) version('1.1.1l', sha256='0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1', deprecated=True) version('1.1.1k', sha256='892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5', deprecated=True) version('1.1.1j', sha256='aaf2fcb575cdf6491b98ab4829abf78a3dec8402b8b81efc8f23c00d443981bf', deprecated=True) @@ -85,6 +89,13 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package description=('Use certificates from the ca-certificates-mozilla ' 'package, symlink system certificates, or none')) variant('docs', default=False, description='Install docs and manpages') + variant('shared', default=False, description="Build shared library version") + with when('platform=windows'): + variant('dynamic', default=False, description="Link with MSVC's dynamic runtime library") + + # Currently nvhpc segfaults NVC++-F-0000-Internal compiler error. + # gen_llvm_expr(): unknown opcode 0 (crypto/rsa/rsa_oaep.c: 248) + conflicts('%nvhpc') depends_on('zlib') depends_on('perl@5.14.0:', type=('build', 'test')) @@ -130,26 +141,55 @@ def install(self, spec, prefix): if self.spec.satisfies('%nvhpc os=centos7'): options.append('-D__STDC_NO_ATOMICS__') - config = Executable('./config') - config('--prefix=%s' % prefix, - '--openssldir=%s' % join_path(prefix, 'etc', 'openssl'), - '-I{0}'.format(self.spec['zlib'].prefix.include), - '-L{0}'.format(self.spec['zlib'].prefix.lib), - *options) + # Make a flag for shared library builds + base_args = ['--prefix=%s' % prefix, + '--openssldir=%s' + % join_path(prefix, 'etc', 'openssl')] + if spec.satisfies('platform=windows'): + base_args.extend([ + 'CC=%s' % os.environ.get('CC'), + 'CXX=%s' % os.environ.get('CXX'), + 'VC-WIN64A', + ]) + if spec.satisfies('~shared'): + base_args.append('no-shared') + else: + base_args.extend( + [ + '-I{0}'.format(self.spec['zlib'].prefix.include), + '-L{0}'.format(self.spec['zlib'].prefix.lib) + ] + ) + base_args.extend(options) + # On Windows, we use perl for configuration and build through MSVC + # nmake. + if spec.satisfies('platform=windows'): + Executable('perl')('Configure', *base_args) + else: + Executable('./config')(*base_args) # Remove non-standard compiler options if present. These options are # present e.g. on Darwin. They are non-standard, i.e. most compilers # (e.g. gcc) will not accept them. filter_file(r'-arch x86_64', '', 'Makefile') - make() + if spec.satisfies('+dynamic'): + # This variant only makes sense for Windows + if spec.satisfies('platform=windows'): + filter_file(r'MT', 'MD', 'makefile') + + if spec.satisfies('platform=windows'): + host_make = nmake + else: + host_make = make + if self.run_tests: - make('test', parallel=False) # 'VERBOSE=1' + host_make('test', parallel=False) # 'VERBOSE=1' install_tgt = 'install' if self.spec.satisfies('+docs') else 'install_sw' # See https://github.com/openssl/openssl/issues/7466#issuecomment-432148137 - make(install_tgt, parallel=False) + host_make(install_tgt, parallel=False) @run_after('install') def link_system_certs(self): diff --git a/var/spack/repos/builtin/packages/openturns/package.py b/var/spack/repos/builtin/packages/openturns/package.py index 2d73616c3682ba..b9479185c9b903 100644 --- a/var/spack/repos/builtin/packages/openturns/package.py +++ b/var/spack/repos/builtin/packages/openturns/package.py @@ -16,9 +16,11 @@ class Openturns(CMakePackage): deterministic studies.""" homepage = "https://openturns.github.io/www/" + url = "https://github.com/openturns/openturns/archive/refs/tags/v1.18.tar.gz" git = "https://github.com/openturns/openturns.git" maintainers = ['liuyangzhuan'] + version('1.18', sha256='1840d3fd8b38fd5967b1fa04e49d8f760c2c497400430e97623595ca48754ae0') version('master', branch='master') variant('python', default=True, description='Build Python bindings') 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 ef09d59ab128c4..8ae5c19631a958 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -18,7 +18,8 @@ class OsuMicroBenchmarks(AutotoolsPackage): homepage = "https://mvapich.cse.ohio-state.edu/benchmarks/" url = "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.6.3.tar.gz" - version('5.7.1', sha256='cb5ce4e2e68ed012d9952e96ef880a802058c87a1d840a2093b19bddc7faa165') + version('5.9', sha256='d619740a1c2cc7c02a9763931546b320d0fa4093c415ff3873c2958e121c0609') + version('5.7.1', sha256='cb5ce4e2e68ed012d9952e96ef880a802058c87a1d840a2093b19bddc7faa165', url="https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.7.1.tgz") version('5.7', sha256='1470ebe00eb6ca7f160b2c1efda57ca0fb26b5c4c61148a3f17e8e79fbf34590') version('5.6.3', sha256='c5eaa8c5b086bde8514fa4cac345d66b397e02283bc06e44cb6402268a60aeb8') version('5.6.2', sha256='2ecb90abd85398786823c0716d92448d7094657d3f017c65d270ffe39afc7b95') @@ -32,11 +33,6 @@ class OsuMicroBenchmarks(AutotoolsPackage): depends_on('mpi') depends_on('cuda', when='+cuda') - def url_for_version(self, version): - ext = "tar.gz" if version < Version('5.7.1') else "tgz" - url = "http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-{0}.{1}" - return url.format(version, ext) - def configure_args(self): spec = self.spec config_args = [ diff --git a/var/spack/repos/builtin/packages/ovito/package.py b/var/spack/repos/builtin/packages/ovito/package.py new file mode 100755 index 00000000000000..10c76d4062df90 --- /dev/null +++ b/var/spack/repos/builtin/packages/ovito/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2022 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 import * + + +class Ovito(Package): + """OVITO is a scientific visualization and analysis software for atomistic +and particle simulation data. It helps scientists gain better insights into +materials phenomena and physical processes. OVITO Basic is freely available +for all major platforms under an open source license. It has served in a +growing number of computational simulation studies as a powerful tool to +analyze, understand and illustrate simulation results.""" + + homepage = "https://www.ovito.org" + url = "https://www.ovito.org/download/master/ovito-basic-3.6.0-x86_64.tar.xz" + + version('3.6.0', '6ac43a3a39b1ec3cccab577602756a8b7010cc1f1f046c4f6a939590d12f0339') + + def install(self, spec, prefix): + # Once we've unpacked the tarball, copy it's contents to the prefix + copy_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index 53dad198281dfd..87427e3fa0a2e4 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -39,12 +39,12 @@ class P4est(AutotoolsPackage): depends_on('zlib') # from sc upstream, correct the default libraries - patch('https://github.com/cburstedde/libsc/commit/b506aab224b988fec210cc212469f2c4f58b2d04.patch', - sha256='e9418b1a9347a409be241cd185519b31950e42a7f55b6fb80ce53097657098ee', + patch('https://github.com/cburstedde/libsc/commit/b506aab224b988fec210cc212469f2c4f58b2d04.patch?full_index=1', + sha256='e03437c5b580deacdfa0e8112d0a3d40af1f5e4757fe1dd00347d0523f6c16d5', working_dir='sc', when='@2.0') - patch('https://github.com/cburstedde/libsc/commit/b45a51a7ef97883a3d4dcbd05cb2c77890a76f75.patch', - sha256='8fb829e34e3a1e28afdd6e56e0bdc1d377af569b7ccb9e9d8da0eeb5829ed27e', + patch('https://github.com/cburstedde/libsc/commit/b45a51a7ef97883a3d4dcbd05cb2c77890a76f75.patch?full_index=1', + sha256='f5c9f784408481b12babd802cc3bedde2a8c4f84de4fd58c54017690b7520a01', working_dir='sc', when='@2.0') diff --git a/var/spack/repos/builtin/packages/pacparser/package.py b/var/spack/repos/builtin/packages/pacparser/package.py index cbcce74a3a1ece..ee8a24228d93cb 100644 --- a/var/spack/repos/builtin/packages/pacparser/package.py +++ b/var/spack/repos/builtin/packages/pacparser/package.py @@ -9,14 +9,22 @@ class Pacparser(MakefilePackage): """pacparser is a library to parse proxy auto-config (PAC) files.""" + maintainers = ['iarspider'] + homepage = "https://pacparser.github.io/" - url = "https://github.com/manugarg/pacparser/releases/download/1.3.7/pacparser-1.3.7.tar.gz" + url = "https://github.com/manugarg/pacparser/releases/download/v1.3.8/pacparser-1.3.8.tar.gz" + git = "https://github.com/manugarg/pacparser.git" - version('1.3.7', sha256='eb48ec2fc202d12a4b882133048c7590329849f32c2285bc4dbe418f29aad249') + version('1.3.9', commit='4bbfb15c96ea0b2aede2f7371e59f66e15722d41') + version('1.3.8', sha256='4e2872de565b2b64ffc81ba503e0eba35b3f7ef4a023ddd4a328c7b9d2cac266') + version('1.3.7', sha256='eb48ec2fc202d12a4b882133048c7590329849f32c2285bc4dbe418f29aad249', + url='https://github.com/manugarg/pacparser/releases/download/1.3.7/pacparser-1.3.7.tar.gz') depends_on('python', when='+python') depends_on('py-setuptools', when='+python', type=('build', 'run')) + extends('python', when='+python') + variant('python', default=False, description='Build and install python bindings') diff --git a/var/spack/repos/builtin/packages/pagmo/package.py b/var/spack/repos/builtin/packages/pagmo/package.py index 96b67aa509f7ff..f34a65b88b5738 100644 --- a/var/spack/repos/builtin/packages/pagmo/package.py +++ b/var/spack/repos/builtin/packages/pagmo/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Pagmo(CMakePackage): @@ -51,6 +52,11 @@ class Pagmo(CMakePackage): depends_on('boost+system+serialization+thread+date_time', when='~python+gtop') depends_on('boost+system+serialization+thread+python+date_time', when='+python+gtop') + # 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('gsl@1.15:', when='+gsl') depends_on('ipopt', when='+ipopt') depends_on('mpi@1.2:', when='+mpi') diff --git a/var/spack/repos/builtin/packages/palisade-development/package.py b/var/spack/repos/builtin/packages/palisade-development/package.py index 0de7f6d0326d4c..a600babf86690c 100644 --- a/var/spack/repos/builtin/packages/palisade-development/package.py +++ b/var/spack/repos/builtin/packages/palisade-development/package.py @@ -29,10 +29,10 @@ class PalisadeDevelopment(CMakePackage): maintainers = ['wohlbier'] version('feature-fixed-point-encoding', - branch='feature-fixed-point-encoding') - version('fppe-logreg', - branch='fppe-logreg') - version('master', branch='master', preferred=True) + branch='feature-fixed-point-encoding', submodules=True) + version('fppe-logreg-v1.0', + tag='fppe-logreg-v1.0', submodules=True) + version('master', branch='master', preferred=True, submodules=True) variant('shared', default=True, description='Build shared library.') variant('static', default=True, description='Build static library.') diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py index 06cc8555b81cbe..701be57bca4da9 100644 --- a/var/spack/repos/builtin/packages/paradiseo/package.py +++ b/var/spack/repos/builtin/packages/paradiseo/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Paradiseo(CMakePackage): @@ -44,6 +45,11 @@ class Paradiseo(CMakePackage): depends_on("boost~mpi", when='+edo~mpi') depends_on("boost+mpi", when='+edo+mpi') + # 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, when='+edo') + # Patches patch('enable_eoserial.patch') patch('fix_osx_detection.patch') diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 677ed9d6693773..e11d9580c66752 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -12,7 +12,7 @@ class Paraview(CMakePackage, CudaPackage): """ParaView is an open-source, multi-platform data analysis and visualization application. This package includes the Catalyst - in-situ library for versions 5.7 and greater, othewise use the + in-situ library for versions 5.7 and greater, otherwise use the catalyst package. """ @@ -27,7 +27,8 @@ class Paraview(CMakePackage, CudaPackage): tags = ['e4s'] version('master', branch='master', submodules=True) - version('5.10.0', sha256='86d85fcbec395cdbc8e1301208d7c76d8f48b15dc6b967ffbbaeee31242343a5', preferred=True) + version('5.10.1', sha256='520e3cdfba4f8592be477314c2f6c37ec73fb1d5b25ac30bdbd1c5214758b9c2', preferred=True) + version('5.10.0', sha256='86d85fcbec395cdbc8e1301208d7c76d8f48b15dc6b967ffbbaeee31242343a5') version('5.9.1', sha256='0d486cb6fbf55e428845c9650486f87466efcb3155e40489182a7ea85dfd4c8d') version('5.9.0', sha256='b03258b7cddb77f0ee142e3e77b377e5b1f503bcabc02bfa578298c99a06980d') version('5.8.1', sha256='7653950392a0d7c0287c26f1d3a25cdbaa11baa7524b0af0e6a1a0d7d487d034') @@ -70,6 +71,10 @@ class Paraview(CMakePackage, CudaPackage): 'catalyst', 'rendering', 'core'), description='Build editions include only certain modules. ' 'Editions are listed in decreasing order of size.') + variant('use_vtkm', default='default', multi=False, values=('default', 'on', 'off'), + description='Build VTK-m with ParaView by setting PARAVIEW_USE_VTKM=ON,OFF.' + ' "default" lets the build_edition make the decision.' + ' "on" or "off" will always override the build_edition.') conflicts('+adios2', when='@:5.10 ~mpi') conflicts('+python', when='+python3') @@ -77,6 +82,7 @@ class Paraview(CMakePackage, CudaPackage): conflicts('+python', when='@5.9:') conflicts('+python3', when='@:5.5') conflicts('+shared', when='+cuda') + conflicts('+cuda', when='@5.8:5.10') # Legacy rendering dropped in 5.5 # See commit: https://gitlab.kitware.com/paraview/paraview/-/commit/798d328c conflicts('~opengl2', when='@5.5:') @@ -85,6 +91,11 @@ class Paraview(CMakePackage, CudaPackage): conflicts('build_edition=catalyst', when='@:5.7') conflicts('build_edition=rendering', when='@:5.7') conflicts('build_edition=core', when='@:5.7') + # before 5.3.0, ParaView didn't have VTK-m + conflicts('use_vtkm=on', when='@:5.3') + # paraview@5.9.0 is recommended when using the xl compiler + # See https://gitlab.kitware.com/paraview/paraview/-/merge_requests/4433 + conflicts('paraview@:5.8', when='%xl_r', msg='Use paraview@5.9.0 with %xl_r. Earlier versions are not able to build with xl.') # We only support one single Architecture for _arch, _other_arch in itertools.permutations(CudaPackage.cuda_arch_values, 2): @@ -99,7 +110,6 @@ class Paraview(CMakePackage, CudaPackage): depends_on('cmake@3.3:', type='build') - generator = 'Ninja' depends_on('ninja', type='build') # Workaround for @@ -213,6 +223,18 @@ class Paraview(CMakePackage, CudaPackage): # https://gitlab.kitware.com/vtk/vtk/-/merge_requests/8653 patch('vtk-adios2-module-no-kit.patch', when='@5.8:5.10') + # Patch for paraview 5.9.0%xl_r + # https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7591 + patch('xlc-compilation-pv590.patch', when='@5.9.0%xl_r') + + @property + def generator(self): + # https://gitlab.kitware.com/paraview/paraview/-/issues/21223 + if self.spec.satisfies('%xl') or self.spec.satisfies('%xl_r'): + return "Unix Makefiles" + else: + return "Ninja" + def url_for_version(self, version): _urlfmt = 'http://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.{3}' """Handle ParaView version-based custom URLs.""" @@ -418,6 +440,11 @@ def nvariant_bool(feature): cmake_args.append( '-DPARAVIEW_BUILD_SHARED_LIBS:BOOL=%s' % variant_bool('+shared')) + # VTK-m added to ParaView in 5.3.0 and up + if spec.satisfies('@5.3.0:') and spec.variants['use_vtkm'].value != 'default': + cmake_args.append('-DPARAVIEW_USE_VTKM:BOOL=%s' % + spec.variants['use_vtkm'].value.upper()) + if spec.satisfies('@5.8:'): cmake_args.append('-DPARAVIEW_USE_CUDA:BOOL=%s' % variant_bool('+cuda')) diff --git a/var/spack/repos/builtin/packages/paraview/xlc-compilation-pv590.patch b/var/spack/repos/builtin/packages/paraview/xlc-compilation-pv590.patch new file mode 100644 index 00000000000000..8105b2010ddbd3 --- /dev/null +++ b/var/spack/repos/builtin/packages/paraview/xlc-compilation-pv590.patch @@ -0,0 +1,39 @@ +diff --git a/VTK/Common/DataModel/vtkStaticCellLinksTemplate.txx b/VTK/Common/DataModel/vtkStaticCellLinksTemplate.txx +index 514c0ee..66edca2 100644 +--- a/VTK/Common/DataModel/vtkStaticCellLinksTemplate.txx ++++ b/VTK/Common/DataModel/vtkStaticCellLinksTemplate.txx +@@ -356,7 +356,7 @@ void vtkStaticCellLinksTemplate::ThreadedBuildLinks( + + // Create an array of atomics with initial count=0. This will keep + // track of point uses. Count them in parallel. +- std::atomic* counts = new std::atomic[numPts] {}; ++ std::atomic* counts = new std::atomic[numPts] (); + CountUses count(cellArray, counts); + vtkSMPTools::For(0, numCells, count); + +diff --git a/VTK/Filters/Core/vtkBinnedDecimation.cxx b/VTK/Filters/Core/vtkBinnedDecimation.cxx +index 0736c56..8403908 100644 +--- a/VTK/Filters/Core/vtkBinnedDecimation.cxx ++++ b/VTK/Filters/Core/vtkBinnedDecimation.cxx +@@ -632,7 +632,7 @@ void BinPointsDecimate(int genMode, vtkIdType numPts, PointsT* pts, vtkPointData + // is a problem because a ptId can == zero; as a workaround, we'll + // initially use negative ids, and convert to positive ids in the + // final composition. +- std::atomic* ptMap = new std::atomic[numBins] {}; ++ std::atomic* ptMap = new std::atomic[numBins] (); + + // Is the triangle output? And eventually the offset into the output cell array. + TIds* triMap = new TIds[numTris + 1]; +diff --git a/VTK/Filters/Core/vtkWindowedSincPolyDataFilter.cxx b/VTK/Filters/Core/vtkWindowedSincPolyDataFilter.cxx +index 15e47a1..7baef33 100644 +--- a/VTK/Filters/Core/vtkWindowedSincPolyDataFilter.cxx ++++ b/VTK/Filters/Core/vtkWindowedSincPolyDataFilter.cxx +@@ -348,7 +348,7 @@ struct PointConnectivity : PointConnectivityBase + // accommodate more smoothing edges (although after a certain point, + // additional edges make little difference, especially at the cost of + // memory and speed). +- this->Offsets = new std::atomic[this->NumPts + 1] {}; // Initialized to zero ++ this->Offsets = new std::atomic[this->NumPts + 1] (); // Initialized to zero + this->Edges = nullptr; // initially until constructed + this->EdgeCounts = new EDGE_COUNT_TYPE[this->NumPts]; // values set later + } diff --git a/var/spack/repos/builtin/packages/parquet-cpp/package.py b/var/spack/repos/builtin/packages/parquet-cpp/package.py index a7b11a60cc0276..470c2308c4b772 100644 --- a/var/spack/repos/builtin/packages/parquet-cpp/package.py +++ b/var/spack/repos/builtin/packages/parquet-cpp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class ParquetCpp(CMakePackage): @@ -16,7 +17,11 @@ class ParquetCpp(CMakePackage): version('1.4.0', sha256='52899be6c9dc49a14976d4ad84597243696c3fa2882e5c802b56e912bfbcc7ce') depends_on('arrow') - depends_on('boost') + + # 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('cmake@3.2.0:', type='build') depends_on('pkgconfig', type='build') depends_on('thrift+pic') diff --git a/var/spack/repos/builtin/packages/parsec/package.py b/var/spack/repos/builtin/packages/parsec/package.py index 1c41e7a1c7e0d3..670d04bf18627a 100644 --- a/var/spack/repos/builtin/packages/parsec/package.py +++ b/var/spack/repos/builtin/packages/parsec/package.py @@ -16,16 +16,16 @@ class Parsec(CMakePackage, CudaPackage): """ homepage = "https://icl.utk.edu/dte" - git = "https://bitbucket.org/icldistcomp/parsec.git" - url = "https://bitbucket.org/icldistcomp/parsec/get/parsec-3.0.2012.tar.bz2" - list_url = "https://bitbucket.org/icldistcomp/parsec/downloads/?tab=tags" + 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" maintainers = ['abouteiller', 'bosilca', 'herault'] - tags = ['e4s'] + tags = ['e4s'] test_requires_compiler = True version('master', branch='master') - version('3.0.2012', sha256='f565bcfffe106be8237b6aea3e83a5770607b7236606414b6f270244fa6ec3bc') + version('3.0.2012', sha256='f565bcfffe106be8237b6aea3e83a5770607b7236606414b6f270244fa6ec3bc', url='https://bitbucket.org/icldistcomp/parsec/get/parsec-3.0.2012.tar.bz2') version('1.1.0', sha256='d2928033c121000ae0a554f1e7f757c1f22274a8b74457ecd52744ae1f70b95a', url='https://bitbucket.org/icldistcomp/parsec/get/v1.1.0.tar.bz2') variant('build_type', default='RelWithDebInfo', description='CMake build type', values=('Debug', 'Release', 'RelWithDebInfo')) @@ -38,7 +38,7 @@ class Parsec(CMakePackage, CudaPackage): # TODO: Spack does not handle cross-compilation atm # variant('xcompile', default=False, description='Cross compile') - depends_on('cmake@3.16:', type='build') + depends_on('cmake@3.18:', type='build') depends_on('python', type='build') depends_on('flex', type='build') depends_on('bison', type='build') diff --git a/var/spack/repos/builtin/packages/parsplice/package.py b/var/spack/repos/builtin/packages/parsplice/package.py index e92bedc8f2c611..b6364e9e2c76de 100644 --- a/var/spack/repos/builtin/packages/parsplice/package.py +++ b/var/spack/repos/builtin/packages/parsplice/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Parsplice(CMakePackage): @@ -24,6 +25,11 @@ class Parsplice(CMakePackage): depends_on("berkeley-db") depends_on("nauty") depends_on("boost cxxstd=11") + + # 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("mpi") depends_on("eigen@3:") depends_on("lammps+lib@20170901:") diff --git a/var/spack/repos/builtin/packages/patch/package.py b/var/spack/repos/builtin/packages/patch/package.py index 7097bbc5df8b2c..88acdbf9f5d87b 100644 --- a/var/spack/repos/builtin/packages/patch/package.py +++ b/var/spack/repos/builtin/packages/patch/package.py @@ -15,6 +15,8 @@ class Patch(AutotoolsPackage, GNUMirrorPackage): homepage = "https://savannah.gnu.org/projects/patch/" gnu_mirror_path = "patch/patch-2.7.6.tar.xz" + tags = ['core-packages'] + version('2.7.6', sha256='ac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd') version('2.7.5', sha256='fd95153655d6b95567e623843a0e77b81612d502ecf78a489a4aed7867caa299') diff --git a/var/spack/repos/builtin/packages/patchelf/package.py b/var/spack/repos/builtin/packages/patchelf/package.py index eaa6246c10a53a..449b5aace35392 100644 --- a/var/spack/repos/builtin/packages/patchelf/package.py +++ b/var/spack/repos/builtin/packages/patchelf/package.py @@ -18,6 +18,9 @@ class Patchelf(AutotoolsPackage): maintainers = ['haampie'] + version('0.14.5', sha256='113ada3f1ace08f0a7224aa8500f1fa6b08320d8f7df05ff58585286ec5faa6f') + version('0.14.3', sha256='8fabf4210499744ced101612cd5c9fd12b94af67a16297cb5d3ff682c007ffdb') + version('0.14.2', sha256='3dbced63d02076221397d3fa45ef6cf6776e7c6d45ea5c4e86c91604dfc87a80') version('0.14.1', sha256='7a1506caf6873a2b60e7bebc35e1671fa232ee075642b074106b0d0636417466') version('0.14', sha256='a31f2bff841dffa896317d3837bc2877c1f79da0744d88e459662d8e7fe7897c') version('0.13.1', sha256='08c0237e89be74d61ddf8f6ff218439cdd62af572d568fb38913b53e222831de') diff --git a/var/spack/repos/builtin/packages/pbbam/package.py b/var/spack/repos/builtin/packages/pbbam/package.py index 1f805a86ff45d5..04da6e635129cf 100644 --- a/var/spack/repos/builtin/packages/pbbam/package.py +++ b/var/spack/repos/builtin/packages/pbbam/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Pbbam(CMakePackage): @@ -19,6 +20,11 @@ class Pbbam(CMakePackage): depends_on('zlib') depends_on('boost@1.55.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('htslib@1.3.1:') depends_on('doxygen+graphviz') diff --git a/var/spack/repos/builtin/packages/pcl/package.py b/var/spack/repos/builtin/packages/pcl/package.py index 692c1bdfd59756..fdecb69e997147 100644 --- a/var/spack/repos/builtin/packages/pcl/package.py +++ b/var/spack/repos/builtin/packages/pcl/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Pcl(CMakePackage): @@ -19,3 +20,8 @@ class Pcl(CMakePackage): depends_on('eigen@3.1:') depends_on('flann@1.7:') depends_on('boost@1.55:+filesystem+date_time+iostreams+system') + + # 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) diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index 886487fd77ad59..ceb376184b827e 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -14,6 +14,7 @@ class Pcre(AutotoolsPackage): homepage = "https://www.pcre.org" url = "https://sourceforge.net/projects/pcre/files/pcre/8.42/pcre-8.42.tar.bz2/download" + version('8.45', sha256='4dae6fdcd2bb0bb6c37b5f97c33c2be954da743985369cddac3546e3218bffb8') version('8.44', sha256='19108658b23b3ec5058edc9f66ac545ea19f9537234be1ec62b714c84399366d') version('8.43', sha256='91e762520003013834ac1adb4a938d53b22a216341c061b0cf05603b290faf6b') version('8.42', sha256='2cd04b7c887808be030254e8d77de11d3fe9d4505c39d4b15d2664ffe8bf9301') diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py index 52a6b936409ab8..66b197075464b9 100644 --- a/var/spack/repos/builtin/packages/pcre2/package.py +++ b/var/spack/repos/builtin/packages/pcre2/package.py @@ -12,8 +12,9 @@ class Pcre2(AutotoolsPackage): pattern matching using the same syntax and semantics as Perl 5.""" homepage = "https://www.pcre.org" - url = "https://ftp.pcre.org/pub/pcre/pcre2-10.31.tar.bz2" + url = "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.bz2" + version('10.39', sha256='0f03caf57f81d9ff362ac28cd389c055ec2bf0678d277349a1a4bee00ad6d440') version('10.36', sha256='a9ef39278113542968c7c73a31cfcb81aca1faa64690f400b907e8ab6b4a665c') version('10.35', sha256='9ccba8e02b0ce78046cdfb52e5c177f0f445e421059e43becca4359c669d4613') version('10.31', sha256='e07d538704aa65e477b6a392b32ff9fc5edf75ab9a40ddfc876186c4ff4d68ac') diff --git a/var/spack/repos/builtin/packages/pdc/package.py b/var/spack/repos/builtin/packages/pdc/package.py index 64a647301e4677..82e44a6f8dc41c 100644 --- a/var/spack/repos/builtin/packages/pdc/package.py +++ b/var/spack/repos/builtin/packages/pdc/package.py @@ -14,12 +14,18 @@ class Pdc(CMakePackage): metadata operations to find data objects.""" homepage = "https://pdc.readthedocs.io/en/latest/" - url = "https://github.com/hpc-io/pdc/archive/refs/tags/0.1.tar.gz" + url = "https://github.com/hpc-io/pdc/archive/refs/tags/0.3.tar.gz" + git = "https://github.com/hpc-io/pdc.git" maintainers = ['houjun', 'sbyna'] + version('0.3', sha256='14a3abd5e1e604f9527105709fca545bcdebe51abd2b89884db74d48a38b5443') + version('0.2', sha256='2829e74da227913a1a8e3e4f64e8f422ab9c0a049f8d73ff7b6ca12463959f8b') version('0.1', sha256='01b4207ecf71594a7f339c315f2869b3fa8fbd34b085963dc4c1bdc5b66bb93e') + version('stable', branch='stable') + version('develop', branch='develop') + conflicts('%clang') depends_on('libfabric') depends_on('mercury') diff --git a/var/spack/repos/builtin/packages/percept/package.py b/var/spack/repos/builtin/packages/percept/package.py index 9ca2e53ff31133..673f3618971068 100644 --- a/var/spack/repos/builtin/packages/percept/package.py +++ b/var/spack/repos/builtin/packages/percept/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Percept(CMakePackage): @@ -24,6 +25,11 @@ class Percept(CMakePackage): depends_on('googletest~shared') depends_on('opennurbs@percept') depends_on('boost+graph+mpi') + + # 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('yaml-cpp+pic~shared@0.5.3:') depends_on('trilinos~shared+exodus+mpi+tpetra+epetra+epetraext+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+aztec+sacado~openmp+shards+intrepid@master,12.14.1:') diff --git a/var/spack/repos/builtin/packages/percona-server/package.py b/var/spack/repos/builtin/packages/percona-server/package.py index ee9060c80d5168..ea95c4be2060c3 100644 --- a/var/spack/repos/builtin/packages/percona-server/package.py +++ b/var/spack/repos/builtin/packages/percona-server/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class PerconaServer(CMakePackage): @@ -18,6 +19,11 @@ class PerconaServer(CMakePackage): version('8.0.18-9', sha256='e79a8c1ae5f2271c0b344494a299a9bbbada88d3bce87449b7de274d17d1ccd0') 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('openssl') depends_on('ncurses') depends_on('readline') diff --git a/var/spack/repos/builtin/packages/perl-fth/package.py b/var/spack/repos/builtin/packages/perl-fth/package.py index 82366e888ddfaa..7c64501e75bf20 100644 --- a/var/spack/repos/builtin/packages/perl-fth/package.py +++ b/var/spack/repos/builtin/packages/perl-fth/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import re from spack import * @@ -26,6 +27,7 @@ class PerlFth(Package): maintainers = ['cessenat'] + version('0.526', sha256='ada1c7306111d59d64572fe8a9b038026fd0daebaff630924997ef2dc22d87a8') version('0.525', sha256='378116febeb20f4b0c1e298de90305e8494335949d853c7e390d1b6386c1326a') version('0.524', sha256='2f378e969d1dd267985342f7fb1b3a0b9fd73334627cbc7ab17d61717bcd3c29') version('0.523', sha256='d5d3fbd3caca30eee9de45baa46612841d55b2960db8e11411af6db76cf214ad') @@ -58,6 +60,8 @@ class PerlFth(Package): patch('fth-shebang.patch', when='@0.517:0.522', sha256='3e82d34c8ae1709e5480fac87db387c1c2e219d7b7d596c8a9d62f0da2439ab3') patch('fth-shebang2.patch', when='@0.517:0.522', sha256='839be7c0efad752ae341379c81ee1df4a3a81f608f802998c6b4ebc4bae8e167') + executables = [r'^fth.pl$'] + def _make_executable(self, name): return Executable(join_path(self.prefix.bin, name + '.pl')) @@ -118,3 +122,9 @@ def install(self, spec, prefix): # Install the full directory structure install_tree('.', prefix) + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + match = re.search(r'([\d\.]+)', output) + return match.group(1) if match else None diff --git a/var/spack/repos/builtin/packages/perl-mni-perllib/no-stdin.patch b/var/spack/repos/builtin/packages/perl-mni-perllib/no-stdin.patch new file mode 100644 index 00000000000000..1e9e791257e7f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-mni-perllib/no-stdin.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile.PL b/Makefile.PL +index 9f2039a..12d699c 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -213,7 +213,7 @@ TEXT + } # &MY::postamble + + +-query_subs; ++#query_subs; + + my $f; + WriteMakefile diff --git a/var/spack/repos/builtin/packages/perl-mni-perllib/package.py b/var/spack/repos/builtin/packages/perl-mni-perllib/package.py new file mode 100644 index 00000000000000..5c372c52b89c11 --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-mni-perllib/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PerlMniPerllib(PerlPackage): + """MNI Perl Library for scripting long-running scientific computations""" + + homepage = "https://github.com/BIC-MNI/mni-perllib" + git = "https://github.com/BIC-MNI/mni-perllib.git" + + version('develop', commit="170827f5644820b87bcb2b194494c5ebf0928149") + + patch('no-stdin.patch') + + depends_on('perl-getopt-tabular', type=('build', 'run')) + depends_on('perl-text-format', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 73471a382a99a7..14fad072bc05b2 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -11,14 +11,20 @@ # Author: Justin Too # Date: September 6, 2015 # + import os +import platform import re +import sys from contextlib import contextmanager -from llnl.util import tty from llnl.util.lang import match_predicate +from llnl.util.symlink import symlink from spack import * +from spack.operating_systems.mac_os import macos_version + +is_windows = sys.platform == 'win32' class Perl(Package): # Perl doesn't use Autotools, it should subclass Package @@ -41,13 +47,14 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package version('5.31.4', sha256='418a7e6fe6485cc713a86d1227ef112f0bb3f80322e3b715ffe42851d97804a5') # Maintenance releases (even numbers, recommended) + version('5.34.1', sha256='357951a491b0ba1ce3611263922feec78ccd581dddc24a446b033e25acf242a1', preferred=True) version('5.34.0', sha256='551efc818b968b05216024fb0b727ef2ad4c100f8cb6b43fab615fa78ae5be9a', preferred=True) - version('5.32.1', sha256='03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c') - version('5.32.0', sha256='efeb1ce1f10824190ad1cadbcccf6fdb8a5d37007d0100d2d9ae5f2b5900c0b4') - version('5.30.3', sha256='32e04c8bb7b1aecb2742a7f7ac0eabac100f38247352a73ad7fa104e39e7406f') - version('5.30.2', sha256='66db7df8a91979eb576fac91743644da878244cf8ee152f02cd6f5cd7a731689') - version('5.30.1', sha256='bf3d25571ff1ee94186177c2cdef87867fd6a14aa5a84f0b1fb7bf798f42f964') - version('5.30.0', sha256='851213c754d98ccff042caa40ba7a796b2cee88c5325f121be5cbb61bbf975f2') + version('5.32.1', sha256='03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c', preferred=True) + version('5.32.0', sha256='efeb1ce1f10824190ad1cadbcccf6fdb8a5d37007d0100d2d9ae5f2b5900c0b4', preferred=True) + version('5.30.3', sha256='32e04c8bb7b1aecb2742a7f7ac0eabac100f38247352a73ad7fa104e39e7406f', preferred=True) + version('5.30.2', sha256='66db7df8a91979eb576fac91743644da878244cf8ee152f02cd6f5cd7a731689', preferred=True) + version('5.30.1', sha256='bf3d25571ff1ee94186177c2cdef87867fd6a14aa5a84f0b1fb7bf798f42f964', preferred=True) + version('5.30.0', sha256='851213c754d98ccff042caa40ba7a796b2cee88c5325f121be5cbb61bbf975f2', preferred=True) # End of life releases version('5.28.0', sha256='7e929f64d4cb0e9d1159d4a59fc89394e27fa1f7004d0836ca0d514685406ea8') @@ -64,16 +71,18 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package extendable = True - # Bind us below gdbm-1.20 due to API change: https://github.com/Perl/perl5/issues/18915 - depends_on('gdbm@:1.19') - # :5.28 needs gdbm@:1:14.1: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295 - depends_on('gdbm@:1.14.1', when='@:5.28.0') - depends_on('berkeley-db') - depends_on('bzip2') - depends_on('zlib') - # :5.24.1 needs zlib@:1.2.8: https://rt.cpan.org/Public/Bug/Display.html?id=120134 - depends_on('zlib@:1.2.8', when='@5.20.3:5.24.1') - + if not is_windows: + # Bind us below gdbm-1.20 due to API change: https://github.com/Perl/perl5/issues/18915 + depends_on('gdbm@:1.19') + # :5.28 needs gdbm@:1:14.1: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295 + depends_on('gdbm@:1.14.1', when='@:5.28.0') + depends_on('berkeley-db') + depends_on('bzip2') + depends_on('zlib') + # :5.24.1 needs zlib@:1.2.8: https://rt.cpan.org/Public/Bug/Display.html?id=120134 + depends_on('zlib@:1.2.8', when='@5.20.3:5.24.1') + + conflicts('@5.34.1:', when='%msvc@:19.29.30136') # there has been a long fixed issue with 5.22.0 with regard to the ccflags # definition. It is well documented here: # https://rt.perl.org/Public/Bug/Display.html?id=126468 @@ -100,6 +109,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # the mini Perl environment to bootstrap installation. patch('nvhpc-5.30.patch', when='@5.30.0:5.30 %nvhpc') patch('nvhpc-5.32.patch', when='@5.32.0:5.32 %nvhpc') + conflicts('@5.34.0:', when='%nvhpc') # todo, add patches... conflicts('@5.32.0:', when='%nvhpc@:20.11', msg='The NVIDIA compilers are incompatible with version 5.32 and later') @@ -181,6 +191,26 @@ def do_stage(self, mirror_only=False): perm = os.stat(filename).st_mode os.chmod(filename, perm | 0o200) + @property + def nmake_arguments(self): + args = [] + if self.spec.satisfies('%msvc'): + args.append('CCTYPE=%s' % self.compiler.msvc_version) + else: + raise RuntimeError("Perl unsupported for non MSVC compilers on Windows") + args.append('INST_TOP=%s' % self.prefix.replace('/', '\\')) + args.append("INST_ARCH=\\$(ARCHNAME)") + if self.spec.satisfies('~shared'): + args.append("ALL_STATIC=%s" % "define") + if self.spec.satisfies('~threads'): + args.extend(["USE_MULTI=undef", "USE_ITHREADS=undef", "USE_IMP_SYS=undef"]) + if not self.is_64bit(): + args.append("WIN64=undef") + return args + + def is_64bit(self): + return platform.machine().endswith('64') + def configure_args(self): spec = self.spec prefix = self.prefix @@ -229,30 +259,69 @@ def configure_args(self): return config_args def configure(self, spec, prefix): + if is_windows: + return configure = Executable('./Configure') configure(*self.configure_args()) def build(self, spec, prefix): - make() + if is_windows: + pass + else: + make() @run_after('build') @on_package_attributes(run_tests=True) def build_test(self): - make('test') + if is_windows: + win32_dir = os.path.join(self.stage.source_path, "win32") + with working_dir(win32_dir): + nmake('test', ignore_quotes=True) + else: + make('test') def install(self, spec, prefix): - make('install') + if is_windows: + win32_dir = os.path.join(self.stage.source_path, "win32") + with working_dir(win32_dir): + nmake('install', *self.nmake_arguments, ignore_quotes=True) + else: + make('install') + + @run_after('install') + def symlink_windows(self): + if not is_windows: + return + win_install_path = os.path.join(self.prefix.bin, "MSWin32") + if self.is_64bit(): + win_install_path += "-x64" + else: + win_install_path += "-x86" + if self.spec.satisfies("+threads"): + win_install_path += "-multi-thread" + else: + win_install_path += "-perlio" + + for f in os.listdir(os.path.join(self.prefix.bin, win_install_path)): + lnk_path = os.path.join(self.prefix.bin, f) + src_path = os.path.join(win_install_path, f) + if not os.path.exists(lnk_path): + symlink(src_path, lnk_path) @run_after('install') def install_cpanm(self): spec = self.spec - + maker = make + cpan_dir = join_path('cpanm', 'cpanm') + if is_windows: + maker = nmake + cpan_dir = join_path(self.stage.source_path, cpan_dir) if '+cpanm' in spec: - with working_dir(join_path('cpanm', 'cpanm')): + with working_dir(cpan_dir): perl = spec['perl'].command perl('Makefile.PL') - make() - make('install') + maker() + maker('install') def _setup_dependent_env(self, env, dependent_spec, deptypes): """Set PATH and PERL5LIB to include the extension and @@ -265,6 +334,8 @@ def _setup_dependent_env(self, env, dependent_spec, deptypes): if perl_lib_dirs: perl_lib_path = ':'.join(perl_lib_dirs) env.prepend_path('PERL5LIB', perl_lib_path) + if is_windows: + env.append_path('PATH', self.prefix.bin) def setup_dependent_build_environment(self, env, dependent_spec): self._setup_dependent_env(env, dependent_spec, @@ -295,26 +366,19 @@ def setup_dependent_package(self, module, dependent_spec): mkdirp(module.perl_lib_dir) def setup_build_environment(self, env): + if is_windows: + env.append_path('PATH', self.prefix.bin) + return + spec = self.spec - # This is to avoid failures when using -mmacosx-version-min=11.1 - # since not all Apple Clang compilers support that version range - # See https://eclecticlight.co/2020/07/21/big-sur-is-both-10-16-and-11-0-its-official/ - # It seems that this is only necessary for older versions of the - # command line tools rather than the xcode/clang version. - if spec.satisfies('os=bigsur'): - pkgutil = Executable('pkgutil') - output = pkgutil('--pkg-info=com.apple.pkg.CLTools_Executables', - output=str, error=str, fail_on_error=False) - match = re.search(r'version:\s*([0-9.]+)', output) - if not match: - tty.warn('Failed to detect macOS command line tools version: ' - + output) - else: - if Version(match.group(1)) < Version('12'): - tty.warn("Setting SYSTEM_VERSION_COMPAT=1 due to older " - "command line tools version") - env.set('SYSTEM_VERSION_COMPAT', 1) + if (spec.version <= Version('5.34.0') + and spec.platform == 'darwin' + and macos_version() >= Version('10.16')): + # Older perl versions reject MACOSX_DEPLOYMENT_TARGET=11 or higher + # as "unexpected"; override the environment variable set by spack's + # platforms.darwin . + env.set('MACOSX_DEPLOYMENT_TARGET', '10.16') # This is how we tell perl the locations of bzip and zlib. env.set('BUILD_BZIP2', 0) @@ -332,7 +396,8 @@ def filter_config_dot_pm(self): frustrates filter_file on some filesystems (NFSv4), so make them temporarily writable. """ - + if is_windows: + return kwargs = {'ignore_absent': True, 'backup': False, 'string': False} # Find the actual path to the installed Config.pm file. @@ -420,8 +485,11 @@ def command(self): Executable: the Perl command """ for ver in ('', self.spec.version): - path = os.path.join(self.prefix.bin, '{0}{1}'.format( - self.spec.name, ver)) + ext = '' + if is_windows: + ext = '.exe' + path = os.path.join(self.prefix.bin, '{0}{1}{2}'.format( + self.spec.name, ver, ext)) if os.path.exists(path): return Executable(path) else: diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index e7ea1f08d005f0..aabea90998906e 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -20,6 +20,9 @@ class Petsc(Package, CudaPackage, ROCmPackage): version('main', branch='main') + version('3.17.0', sha256='96d5aca684e1ce1425891a620d278773c25611cb144165a93b17531238eaaf8a') + version('3.16.6', sha256='bfc836b52f57686b583c16ab7fae0c318a7b28141ca01656ad673c8ca23037fa') + version('3.16.5', sha256='7de8570eeb94062752d82a83208fc2bafc77b3f515023a4c14d8ff9440e66cac') version('3.16.4', sha256='229cce22bdcfedb1fe827d306ed1afca9737786cdc3f0562b74a1966c1243caf') version('3.16.3', sha256='eff44c7e7f12991dc7d2b627c477807a215ce16c2ce8a1c78aa8237ddacf6ca5') version('3.16.2', sha256='7ab257ae150d4837ac8d3872a1d206997962578785ec2427639ceac46d131bbc') @@ -112,11 +115,11 @@ class Petsc(Package, CudaPackage, ROCmPackage): # which is not portable to all HPC systems variant('mumps', default=False, description='Activates support for MUMPS (only parallel)') - variant('superlu-dist', default=True, - description='Activates support for SuperluDist (only parallel)') + variant('superlu-dist', default=True, when='+fortran', + description='Activates support for superlu-dist (only parallel)') variant('strumpack', default=False, description='Activates support for Strumpack') - variant('scalapack', default=False, + variant('scalapack', default=False, when='+fortran', description='Activates support for Scalapack') variant('trilinos', default=False, description='Activates support for Trilinos (only parallel)') @@ -169,6 +172,8 @@ class Petsc(Package, CudaPackage, ROCmPackage): description='Activates support for hwloc') variant('kokkos', default=False, description='Activates support for kokkos and kokkos-kernels') + variant('fortran', default=True, + description='Activates fortran support') # 3.8.0 has a build issue with MKL - so list this conflict explicitly conflicts('^intel-mkl', when='@3.8.0') @@ -198,6 +203,12 @@ class Petsc(Package, CudaPackage, ROCmPackage): 'petscvariables', relative_root='lib/petsc/conf' ) + @run_before('configure') + def check_fortran_compiler(self): + # Raise error if +fortran and there isn't a fortran compiler! + if '+fortran' in self.spec and self.compiler.fc is None: + raise InstallError("+fortran requires a fortran compiler!") + # temporary workaround Clang 8.1.0 with XCode 8.3 on macOS, see # https://bitbucket.org/petsc/petsc/commits/4f290403fdd060d09d5cb07345cbfd52670e3cbc # the patch is an adaptation of the original commit to 3.7.5 @@ -260,6 +271,9 @@ class Petsc(Package, CudaPackage, ROCmPackage): depends_on('mmg', when='+mmg') depends_on('parmmg', when='+parmmg') depends_on('tetgen+pic', when='+tetgen') + # hypre+/~fortran based on wheter fortran is enabled/disabled + depends_on('hypre+fortran', when='+hypre+fortran') + depends_on('hypre~fortran', when='+hypre~fortran') # Hypre does not support complex numbers. # Also PETSc prefer to build it without internal superlu, likely due to # conflict in headers see @@ -325,6 +339,8 @@ class Petsc(Package, CudaPackage, ROCmPackage): depends_on('kokkos-kernels+cuda', when='+kokkos +cuda') depends_on('kokkos+rocm', when='+kokkos +rocm') + phases = ['configure', 'build', 'install'] + # Using the following tarballs # * petsc-3.12 (and older) - includes docs # * petsc-lite-3.13, petsc-lite-3.14 (without docs) @@ -341,23 +357,29 @@ def mpi_dependent_options(self): '--with-cc=%s' % os.environ['CC'], '--with-cxx=%s' % (os.environ['CXX'] if self.compiler.cxx is not None else '0'), - '--with-fc=%s' % (os.environ['FC'] - if self.compiler.fc is not None else '0'), '--with-mpi=0' ] + if '+fortran' in self.spec: + compiler_opts.append('--with-fc=%s' % os.environ['FC']) + else: + compiler_opts.append('--with-fc=0') else: compiler_opts = [ '--with-cc=%s' % self.spec['mpi'].mpicc, '--with-cxx=%s' % self.spec['mpi'].mpicxx, - '--with-fc=%s' % self.spec['mpi'].mpifc, ] + if '+fortran' in self.spec: + compiler_opts.append('--with-fc=%s' % self.spec['mpi'].mpifc) + else: + compiler_opts.append('--with-fc=0') if self.spec.satisfies('%intel'): # mpiifort needs some help to automatically link # all necessary run-time libraries compiler_opts.append('--FC_LINKER_FLAGS=-lintlc') return compiler_opts - def install(self, spec, prefix): + def configure_options(self): + spec = self.spec options = ['--with-ssl=0', '--download-c2html=0', '--download-sowing=0', @@ -402,7 +424,7 @@ def install(self, spec, prefix): if spec.satisfies('^trilinos+boost'): options.append('--with-boost=1') - if self.spec.satisfies('clanguage=C++'): + if spec.satisfies('clanguage=C++'): options.append('--with-clanguage=C++') else: options.append('--with-clanguage=C') @@ -411,10 +433,17 @@ def install(self, spec, prefix): jpeg_sp = spec['jpeg'].name if 'jpeg' in spec else 'jpeg' scalapack_sp = spec['scalapack'].name if 'scalapack' in spec else 'scalapack' + # to be used in the list of libraries below + if '+fortran' in spec: + hdf5libs = ':hl,fortran' + else: + hdf5libs = ':hl' + # tuple format (spacklibname, petsclibname, useinc, uselib) # default: 'gmp', => ('gmp', 'gmp', True, True) # any other combination needs a full tuple # if not (useinc || uselib): usedir - i.e (False, False) + direct_dependencies = [x.name for x in spec.dependencies()] for library in ( ('cuda', 'cuda', False, False), ('hip', 'hip', True, False), @@ -427,7 +456,7 @@ def install(self, spec, prefix): ('scotch', 'ptscotch', True, True), ('suite-sparse:umfpack,klu,cholmod,btf,ccolamd,colamd,camd,amd, \ suitesparseconfig,spqr', 'suitesparse', True, True), - ('hdf5:hl,fortran', 'hdf5', True, True), + ('hdf5' + hdf5libs, 'hdf5', True, True), 'zlib', 'mumps', ('trilinos', 'trilinos', False, False), @@ -465,7 +494,7 @@ def install(self, spec, prefix): useinc = True uselib = True - library_requested = spacklibname.split(':')[0] in spec.dependencies_dict() + library_requested = spacklibname.split(':')[0] in direct_dependencies options.append( '--with-{library}={value}'.format( library=petsclibname, @@ -530,20 +559,30 @@ def install(self, spec, prefix): if '+hpddm' in spec: options.append('--download-hpddm') + return options + + def revert_kokkos_nvcc_wrapper(self): # revert changes by kokkos-nvcc-wrapper - if spec.satisfies('^kokkos+cuda+wrapper'): + if self.spec.satisfies('^kokkos+cuda+wrapper'): env['MPICH_CXX'] = env['CXX'] env['OMPI_CXX'] = env['CXX'] env['MPICXX_CXX'] = env['CXX'] - python('configure', '--prefix=%s' % prefix, *options) + def configure(self, spec, prefix): + self.revert_kokkos_nvcc_wrapper() + python('configure', '--prefix=%s' % prefix, *self.configure_options()) + def build(self, spec, prefix): + self.revert_kokkos_nvcc_wrapper() # PETSc has its own way of doing parallel make. make('V=1 MAKE_NP=%s' % make_jobs, parallel=False) + + def install(self, spec, prefix): + self.revert_kokkos_nvcc_wrapper() make("install") if self.run_tests: - make('check PETSC_ARCH="" PETSC_DIR={0}'.format(self.prefix), + make('check PETSC_ARCH="" PETSC_DIR={0}'.format(prefix), parallel=False) def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index 382aef2a26d39b..4291533f62e0f0 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -14,8 +14,9 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): homepage = "https://github.com/pika-org/pika/" url = "https://github.com/pika-org/pika/archive/0.0.0.tar.gz" - maintainers = ['msimberg', 'albestro', 'teonnik'] + maintainers = ['msimberg', 'albestro', 'teonnik', 'aurianer'] + version('0.2.0', sha256='712bb519f22bdc9d5ee4ac374d251a54a0af4c9e4e7f62760b8ab9a177613d12') version('0.1.0', sha256='aa0ae2396cd264d821a73c4c7ecb118729bb3de042920c9248909d33755e7327') version('main', git='https://github.com/pika-org/pika.git', branch='main') @@ -44,6 +45,7 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): variant('examples', default=False, description='Build and install examples') variant('mpi', default=False, description='Enable MPI support') + variant('apex', default=False, description='Enable APEX support', when='@0.2:') # Build dependencies depends_on('git', type='build') @@ -52,6 +54,9 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): conflicts('%gcc@:6') conflicts('%clang@:6') + # Pika is requiring the std::filesystem support starting from version 0.2.0 + conflicts('%gcc@:8', when='@0.2:') + conflicts('%clang@:8', when='@0.2:') # Other dependecies depends_on('hwloc@1.11.5:') @@ -63,6 +68,7 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): depends_on('mpi', when='+mpi') depends_on('cuda@11:', when='+cuda') + depends_on('apex', when='+apex') for cxxstd in cxxstds: depends_on( @@ -89,6 +95,7 @@ def cmake_args(self): self.define_from_variant('PIKA_WITH_CUDA', 'cuda'), self.define_from_variant('PIKA_WITH_HIP', 'rocm'), self.define_from_variant('PIKA_WITH_MPI', 'mpi'), + self.define_from_variant('PIKA_WITH_APEX', 'apex'), self.define('PIKA_WITH_TESTS', self.run_tests), self.define_from_variant( 'PIKA_WITH_GENERIC_CONTEXT_COROUTINES', 'generic_coroutines'), diff --git a/var/spack/repos/builtin/packages/piranha/package.py b/var/spack/repos/builtin/packages/piranha/package.py index 6dd5a6f84dec3d..ed1ed252a985b3 100644 --- a/var/spack/repos/builtin/packages/piranha/package.py +++ b/var/spack/repos/builtin/packages/piranha/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Piranha(CMakePackage): @@ -31,6 +32,11 @@ class Piranha(CMakePackage): when='~python') depends_on('boost+iostreams+regex+serialization+python', when='+python') + + # 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('bzip2') depends_on('gmp') # mpir is a drop-in replacement for this depends_on('mpfr') # Could also be built against mpir diff --git a/var/spack/repos/builtin/packages/pktools/package.py b/var/spack/repos/builtin/packages/pktools/package.py index 2d2deb5bd20ddc..ec4c9af8d04ee5 100644 --- a/var/spack/repos/builtin/packages/pktools/package.py +++ b/var/spack/repos/builtin/packages/pktools/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Pktools(CMakePackage): @@ -23,7 +24,11 @@ class Pktools(CMakePackage): depends_on('gsl') depends_on('armadillo') depends_on('nlopt') - depends_on('boost') + + # 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('fann', when='+fann') depends_on('liblas', when='+liblas') diff --git a/var/spack/repos/builtin/packages/pmix/package.py b/var/spack/repos/builtin/packages/pmix/package.py index e97ffca713cb21..46ce8c12e5ff54 100644 --- a/var/spack/repos/builtin/packages/pmix/package.py +++ b/var/spack/repos/builtin/packages/pmix/package.py @@ -35,8 +35,13 @@ class Pmix(AutotoolsPackage): maintainers = ['rhc54'] version('master', branch='master') + version('4.1.2', sha256='670d3a02b39fb2126fe8084174cf03c484e027b5921b5c98a851108134e2597a') + version('4.1.1', sha256='0527a15d616637b95975d238bbc100b244894518fbba822cd8f46589ca61ccec') version('4.1.0', sha256='145f05a6c621bfb3fc434776b615d7e6d53260cc9ba340a01f55b383e07c842e') + version('3.2.3', sha256='9b835f23c2f94a193c14012ee68b3657a61c568598cdd1212a3716b32d41a135') + version('3.2.2', sha256='7e7fafe2b338dab42a94002d99330a5bb0ebbdd06381ec65953a87c94db3dd23') version('3.2.1', sha256='7e5db8ada5828cf85c12f70db6bfcf777d13e5c4c73b2206bb5e394d47066a2b') + version('3.1.6', sha256='3df0e0cb0cae67b59edba1d90f55d73467be8404874fe89056690739e039a840') version('3.1.5', sha256='88934195174455df478b996313095df25b51d0caf5a5cce01b22f0ccdc6c5cf7') version('3.1.3', sha256='118acb9c4e10c4e481406dcffdfa762f314af50db75336bf8460e53b56dc439d') version('3.1.2', sha256='28aed0392d4ca2cdfbdd721e6210c94dadc9830677fea37a0abe9d592c00f9c3') diff --git a/var/spack/repos/builtin/packages/podio/package.py b/var/spack/repos/builtin/packages/podio/package.py index 3d82f0b0e26444..5184cc674cc618 100644 --- a/var/spack/repos/builtin/packages/podio/package.py +++ b/var/spack/repos/builtin/packages/podio/package.py @@ -17,6 +17,7 @@ class Podio(CMakePackage): tags = ["hep", "key4hep"] version('master', branch='master') + version('0.14.1', sha256='361ac3f3ec6f5a4830729ab45f96c19f0f62e9415ff681f7c6cdb4ebdb796f72') version('0.14', sha256='47f99f1190dc71d6deb52a2b1831250515dbd5c9e0f263c3c8553ffc5b260dfb') version('0.13.2', sha256='645f6915ca6f34789157c0a9dc8b0e9ec901e019b96eb8a68fb39011602e92eb') version('0.13.1', sha256='2ae561c2a0e46c44245aa2098772374ad246c9fcb1956875c95c69c963501353') @@ -56,6 +57,12 @@ def cmake_args(self): def setup_run_environment(self, env): env.prepend_path('PYTHONPATH', self.prefix.python) + env.prepend_path('LD_LIBRARY_PATH', self.spec['podio'].libs.directories[0]) + + def setup_dependent_build_environment(self, env, dependent_spec): + env.prepend_path('PYTHONPATH', self.prefix.python) + env.prepend_path('LD_LIBRARY_PATH', self.spec['podio'].libs.directories[0]) + env.prepend_path('ROOT_INCLUDE_PATH', self.prefix.include) def url_for_version(self, version): """Translate version numbers to ilcsoft conventions. diff --git a/var/spack/repos/builtin/packages/polymake/package.py b/var/spack/repos/builtin/packages/polymake/package.py index 2d5f4b6810c2a5..6213f5f8b6b6a4 100644 --- a/var/spack/repos/builtin/packages/polymake/package.py +++ b/var/spack/repos/builtin/packages/polymake/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Polymake(Package): @@ -16,7 +17,11 @@ class Polymake(Package): # Note: Could also be built with nauty instead of bliss depends_on("bliss") - depends_on("boost") + + # 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("cddlib") depends_on("gmp") depends_on("lrslib") diff --git a/var/spack/repos/builtin/packages/portage/package.py b/var/spack/repos/builtin/packages/portage/package.py index 56263c8cce6b3b..fb12d6ea0ad25b 100644 --- a/var/spack/repos/builtin/packages/portage/package.py +++ b/var/spack/repos/builtin/packages/portage/package.py @@ -106,4 +106,4 @@ def cmake_args(self): def check(self): if self.run_tests: with working_dir(self.build_directory): - make("test") + ctest("-j 8") diff --git a/var/spack/repos/builtin/packages/ports-of-call/package.py b/var/spack/repos/builtin/packages/ports-of-call/package.py new file mode 100644 index 00000000000000..91731cdff35bb2 --- /dev/null +++ b/var/spack/repos/builtin/packages/ports-of-call/package.py @@ -0,0 +1,35 @@ +# Copyright 2013-2022 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 import * + + +class PortsOfCall(CMakePackage, CudaPackage): + """Ports of Call: Performance Portability Utilities""" + + homepage = "https://github.com/lanl/ports-of-call" + url = "https://github.com/lanl/ports-of-call/archive/refs/tags/v1.1.0.tar.gz" + git = "https://github.com/lanl/ports-of-call.git" + + maintainers = ['rbberger'] + + version("main", branch="main") + version('1.1.0', sha256='c47f7e24c82176b69229a2bcb23a6adcf274dc90ec77a452a36ccae0b12e6e39') + + variant("doc", default=False, description="Sphinx Documentation Support") + variant("portability_strategy", description="Portability strategy backend", + values=("Kokkos", "Cuda", "None"), multi=False, default="None") + + depends_on("cmake@3.12:") + + depends_on("py-sphinx", when="+doc") + depends_on("py-sphinx-rtd-theme@0.4.3", when="+doc") + depends_on("py-sphinx-multiversion", when="+doc") + + def cmake_args(self): + args = [ + self.define_from_variant("PORTABILITY_STRATEGY", "portability_strategy") + ] + return args diff --git a/var/spack/repos/builtin/packages/povray/package.py b/var/spack/repos/builtin/packages/povray/package.py index 66c97547d3a4c7..8b0c51d0f897eb 100644 --- a/var/spack/repos/builtin/packages/povray/package.py +++ b/var/spack/repos/builtin/packages/povray/package.py @@ -10,6 +10,7 @@ import socket from spack import * +from spack.pkg.builtin.boost import Boost class Povray(AutotoolsPackage): @@ -61,6 +62,11 @@ class Povray(AutotoolsPackage): depends_on('perl', type='build') depends_on('m4', type='build') depends_on('boost@1.37:', when='+boost') + + # 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, when='+boost') depends_on('zlib@1.2.1:', when='+zlib') depends_on('libpng@1.2.5:', when='+libpng') depends_on('jpeg', when='+jpeg') diff --git a/var/spack/repos/builtin/packages/precice/package.py b/var/spack/repos/builtin/packages/precice/package.py index 1a67c176de720f..ce64cb67bbeeff 100644 --- a/var/spack/repos/builtin/packages/precice/package.py +++ b/var/spack/repos/builtin/packages/precice/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Precice(CMakePackage): @@ -52,6 +53,11 @@ class Precice(CMakePackage): depends_on('boost@1.65.1:', when='@1.4:') depends_on('boost@:1.72', when='@:2.0.2') depends_on('boost@:1.74', when='@:2.1.1') + + # 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('eigen@3.2:') depends_on('eigen@:3.3.7', type='build', when='@:1.5') # bug in prettyprint depends_on('libxml2') diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index 6fba20cf162741..408500a4364b9d 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -20,6 +20,9 @@ class Proj(AutotoolsPackage): # Version 6 removes projects.h, while version 7 removes proj_api.h. # Many packages that depend on proj do not yet support the newer API. # See https://github.com/OSGeo/PROJ/wiki/proj.h-adoption-status + version('8.2.1', sha256='76ed3d0c3a348a6693dfae535e5658bbfd47f71cb7ff7eb96d9f12f7e068b1cf') + version('8.2.0', sha256='de93df9a4aa88d09459ead791f2dbc874b897bf67a5bbb3e4b68de7b1bdef13c') + version('8.1.1', sha256='82f1345e5fa530c407cb1fc0752e83f8d08d2b98772941bbdc7820241f7fada2') version('8.1.0', sha256='22c5cdc5aa0832077b16c95ebeec748a0942811c1c3438c33d43c8d2ead59f48') version('8.0.1', sha256='e0463a8068898785ca75dd49a261d3d28b07d0a88f3b657e8e0089e16a0375fa') version('8.0.0', sha256='aa5d4b934450149a350aed7e5fbac880e2f7d3fa2f251c26cb64228f96a2109e') diff --git a/var/spack/repos/builtin/packages/prophecy4f/package.py b/var/spack/repos/builtin/packages/prophecy4f/package.py new file mode 100644 index 00000000000000..c026ec20543e4c --- /dev/null +++ b/var/spack/repos/builtin/packages/prophecy4f/package.py @@ -0,0 +1,33 @@ +# Copyright 2013-2022 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 import * + + +class Prophecy4f(MakefilePackage): + """Prophecy4f is a Monte Carlo integrator for + Higgs decays H -> WW/ZZ -> 4 fermions. """ + + homepage = "https://prophecy4f.hepforge.org/" + url = "https://prophecy4f.hepforge.org/downloads/?f=Prophecy4f-3.0.2.tar.gz" + + maintainers = ['haralmha', 'vvolkl'] + + version('3.0.2', sha256='01e6ad4d7e913082c1dcabd589173f5d962086dd7860c710f14a0528d8d80eb7') + + depends_on('collier') + + @property + def build_targets(self): + return [ + "COLLIERDIR={0}/lib".format(self.spec['collier'].prefix), + "INPUT=-I{0}/include/".format(self.spec['collier'].prefix), + "FC=gfortran" + ] + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('Prophecy4f', prefix.bin) + install('defaultinput', prefix) diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py index fdb50eeb527bfa..f1fe42c4c7cb87 100644 --- a/var/spack/repos/builtin/packages/pumi/package.py +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -28,6 +28,7 @@ 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.7', submodules=True, commit='a295720d7b4828282484f2b78bac1f6504512de4') # tag 2.2.7 version('2.2.6', commit='4dd330e960b1921ae0d8d4039b8de8680a20d993') # tag 2.2.6 version('2.2.5', commit='73c16eae073b179e45ec625a5abe4915bc589af2') # tag 2.2.5 version('2.2.4', commit='8072fdbafd53e0c9a63248a269f4cce5000a4a8e') # tag 2.2.4 diff --git a/var/spack/repos/builtin/packages/pvm/package.py b/var/spack/repos/builtin/packages/pvm/package.py index 3e052f563f54cc..887969e868c7b0 100644 --- a/var/spack/repos/builtin/packages/pvm/package.py +++ b/var/spack/repos/builtin/packages/pvm/package.py @@ -26,10 +26,11 @@ class Pvm(MakefilePackage): parallel = False - @property - def pvm_arch(self): + @staticmethod + def pvm_arch(root): """Returns the appropriate PVM_ARCH.""" - process = subprocess.Popen(['lib/pvmgetarch'], stdout=subprocess.PIPE) + process = subprocess.Popen([ + join_path(root, 'lib', 'pvmgetarch')], stdout=subprocess.PIPE) return process.communicate()[0].strip().decode() def edit(self, spec, prefix): @@ -39,7 +40,7 @@ def edit(self, spec, prefix): def patch(self): - pvm_arch = self.pvm_arch + pvm_arch = self.pvm_arch(self.stage.source_path) if '+fpic' in self.spec: filter_file( @@ -57,14 +58,17 @@ def setup_build_environment(self, env): env.set('SPACK_LDLIBS', '-ltirpc') def install(self, spec, prefix): - pvm_arch = self.pvm_arch - install_tree(join_path('bin', pvm_arch), prefix.bin) + install_tree('bin', prefix.bin) install_tree('include', prefix.include) - install_tree(join_path('lib', pvm_arch), prefix.lib) + install_tree('lib', prefix.lib) install_tree('man', prefix.man) def setup_run_environment(self, env): # Before running PVM, you must set the environment # variable "PVM_ROOT" to the path where PVM resides + pvm_arch = self.pvm_arch(self.prefix) env.set('PVM_ROOT', self.prefix) + env.set('PVM_ARCH', pvm_arch) + env.prepend_path('PATH', join_path(self.prefix, 'lib')) + env.prepend_path('PATH', join_path(self.prefix, 'lib', pvm_arch)) diff --git a/var/spack/repos/builtin/packages/py-anyio/package.py b/var/spack/repos/builtin/packages/py-anyio/package.py index c86585d51227ec..bd001dac7c8186 100644 --- a/var/spack/repos/builtin/packages/py-anyio/package.py +++ b/var/spack/repos/builtin/packages/py-anyio/package.py @@ -13,14 +13,18 @@ class PyAnyio(PythonPackage): homepage = "https://github.com/agronholm/anyio" pypi = "anyio/anyio-3.2.1.tar.gz" + version('3.5.0', sha256='a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6') version('3.3.4', sha256='67da67b5b21f96b9d3d65daa6ea99f5d5282cb09f50eb4456f8fb51dffefc3ff') version('3.2.1', sha256='07968db9fa7c1ca5435a133dc62f988d84ef78e1d9b22814a59d1c62618afbc5') depends_on('python@3.6.2:', type=('build', 'run')) depends_on('py-setuptools@42:', type='build') depends_on('py-setuptools-scm+toml@3.4:', type='build') - depends_on('py-async-generator', when='@:3.2 ^python@:3.6', type=('build', 'run')) + depends_on('py-wheel@0.29:', type='build') + depends_on('py-contextvars', when='@3.4: ^python@:3.6', type=('build', 'run')) depends_on('py-dataclasses', when='^python@:3.6', type=('build', 'run')) depends_on('py-idna@2.8:', type=('build', 'run')) depends_on('py-sniffio@1.1:', type=('build', 'run')) depends_on('py-typing-extensions', when='^python@:3.7', type=('build', 'run')) + + depends_on('py-async-generator', when='@:3.2 ^python@:3.6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-archspec/package.py b/var/spack/repos/builtin/packages/py-archspec/package.py index 5e208f20e112b4..6a058e248676dc 100644 --- a/var/spack/repos/builtin/packages/py-archspec/package.py +++ b/var/spack/repos/builtin/packages/py-archspec/package.py @@ -12,7 +12,10 @@ class PyArchspec(PythonPackage): maintainers = ['alalazo'] + version('0.1.3', sha256='a1aa7abde4d4ce38d115dfd572584906fa8e192e3272b8897e7b4fa1213ec27c') + version('0.1.2', sha256='8bb998370f0dc3e509d57c13724ab4109d761fd74af20da26fbe513b0fe01c46') version('0.1.1', sha256='34bafad493b41208857232e21776216d716de37ab051a6a4a1cc1653f7e26423') + version('0.1.0', sha256='a4431d0bbe9c9dd7b293c39d8e7590034d512ce5f5a1278a6cbdf61b33f7202d') depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) @@ -20,3 +23,13 @@ class PyArchspec(PythonPackage): depends_on('py-six@1.13.0:1', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-poetry-core@1.0.0:', type='build') + + def patch(self): + # See https://python-poetry.org/docs/pyproject/#poetry-and-pep-517 + with working_dir(self.build_directory): + if self.spec.satisfies('@:0.1.3'): + filter_file("poetry>=0.12", "poetry_core>=1.0.0", 'pyproject.toml') + filter_file( + "poetry.masonry.api", "poetry.core.masonry.api", 'pyproject.toml' + ) diff --git a/var/spack/repos/builtin/packages/py-argcomplete/package.py b/var/spack/repos/builtin/packages/py-argcomplete/package.py index cef0b95f75fe72..354164e6405bb1 100644 --- a/var/spack/repos/builtin/packages/py-argcomplete/package.py +++ b/var/spack/repos/builtin/packages/py-argcomplete/package.py @@ -12,10 +12,14 @@ class PyArgcomplete(PythonPackage): homepage = "https://github.com/kislyuk/argcomplete" pypi = "argcomplete/argcomplete-1.12.0.tar.gz" + version('2.0.0', sha256='6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20') version('1.12.3', sha256='2c7dbffd8c045ea534921e63b0be6fe65e88599990d8dc408ac8c542b72a5445') version('1.12.0', sha256='2fbe5ed09fd2c1d727d4199feca96569a5b50d44c71b16da9c742201f7cc295c') version('1.1.1', sha256='cca45b5fe07000994f4f06a0b95bd71f7b51b04f81c3be0b4ea7b666e4f1f084') + depends_on('python@3.6:', when='@2:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-importlib-metadata@0.23:4', when='@1.12.3: ^python@:3.7', type=('build', 'run')) - depends_on('py-importlib-metadata@0.23:1', when='@1.12: ^python@:3.7', type=('build', 'run')) + depends_on('py-importlib-metadata@0.23:3', when='@1.12.2 ^python@:3.7', type=('build', 'run')) + depends_on('py-importlib-metadata@0.23:2', when='@1.12.1 ^python@:3.7', type=('build', 'run')) + depends_on('py-importlib-metadata@0.23:1', when='@1.12.0 ^python@:3.7', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-argon2-cffi-bindings/package.py b/var/spack/repos/builtin/packages/py-argon2-cffi-bindings/package.py new file mode 100644 index 00000000000000..c6720f5eb34e59 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-argon2-cffi-bindings/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PyArgon2CffiBindings(PythonPackage): + """Low-level CFFI bindings for Argon2.""" + + homepage = "https://github.com/hynek/argon2-cffi-bindings" + pypi = "argon2-cffi-bindings/argon2-cffi-bindings-21.2.0.tar.gz" + + version('21.2.0', sha256='bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools@45:', type='build') + depends_on('py-setuptools-scm@6.2:', type='build') + depends_on('py-cffi@1.0.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-argon2-cffi/package.py b/var/spack/repos/builtin/packages/py-argon2-cffi/package.py index 9712b9615fded6..df91685adf42b1 100644 --- a/var/spack/repos/builtin/packages/py-argon2-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-argon2-cffi/package.py @@ -10,12 +10,20 @@ class PyArgon2Cffi(PythonPackage): homepage = "https://argon2-cffi.readthedocs.io/" pypi = "argon2-cffi/argon2-cffi-20.1.0.tar.gz" + version('21.3.0', sha256='d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b') version('21.1.0', sha256='f710b61103d1a1f692ca3ecbd1373e28aa5e545ac625ba067ff2feca1b2bb870') version('20.1.0', sha256='d8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d') + depends_on('python@3.6:', when='@21.2:', type=('build', 'run')) + depends_on('python@3.5:', when='@21.1:', type=('build', 'run')) depends_on('python@2.7:2,3.5:', type=('build', 'run')) - depends_on('python@3.5:', type=('build', 'run'), when='@21.1.0:') - depends_on('py-setuptools', type='build') - depends_on('py-cffi@1.0.0:', type=('build', 'run')) - depends_on('py-six', type=('build', 'run'), when='@:20.1.0') + + depends_on('py-flit-core@3.4:3', when='@21.2:', type='build') + depends_on('py-setuptools', when='@:21.1', type='build') + + depends_on('py-argon2-cffi-bindings', when='@21.2:', type=('build', 'run')) + depends_on('py-dataclasses', when='@21.2: ^python@:3.6', type=('build', 'run')) + depends_on('py-typing-extensions', when='@21.2: ^python@:3.7', type=('build', 'run')) + depends_on('py-cffi@1.0.0:', when='@:21.1', type=('build', 'run')) + depends_on('py-six', when='@:20.1', type=('build', 'run')) depends_on('py-enum34', when='^python@:3.3', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-astor/package.py b/var/spack/repos/builtin/packages/py-astor/package.py index f37b0bfb704a5e..5c7a3ae00fc76c 100644 --- a/var/spack/repos/builtin/packages/py-astor/package.py +++ b/var/spack/repos/builtin/packages/py-astor/package.py @@ -22,6 +22,6 @@ class PyAstor(PythonPackage): # Build fails with newer versions of setuptools # https://github.com/berkerpeksag/astor/issues/162 # https://github.com/berkerpeksag/astor/pull/163 - patch('https://github.com/berkerpeksag/astor/pull/163/commits/30059dac4eb832e58ab2109db84508b294ba366d.patch', + patch('https://github.com/berkerpeksag/astor/pull/163/commits/30059dac4eb832e58ab2109db84508b294ba366d.patch?full_index=1', sha256='edc5eeddabe153b08e938f52edaeb2d880ee3128082967f310db0f98510fe6e0', when='@0.8.0') diff --git a/var/spack/repos/builtin/packages/py-asttokens/package.py b/var/spack/repos/builtin/packages/py-asttokens/package.py new file mode 100644 index 00000000000000..18f04dd0ec1aba --- /dev/null +++ b/var/spack/repos/builtin/packages/py-asttokens/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PyAsttokens(PythonPackage): + """Annotate AST trees with source code positions.""" + + homepage = "https://github.com/gristlabs/asttokens" + pypi = "asttokens/asttokens-2.0.5.tar.gz" + + version('2.0.5', sha256='9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5') + + depends_on('py-setuptools@44:', type='build') + depends_on('py-setuptools-scm+toml@3.4.3:', type='build') + + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py index 57ea7788d321f0..bb12a31cc567d7 100644 --- a/var/spack/repos/builtin/packages/py-attrs/package.py +++ b/var/spack/repos/builtin/packages/py-attrs/package.py @@ -12,6 +12,7 @@ class PyAttrs(PythonPackage): homepage = "https://attrs.org/" pypi = "attrs/attrs-20.3.0.tar.gz" + version('21.4.0', sha256='626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd') version('21.2.0', sha256='ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb') version('20.3.0', sha256='832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700') version('20.2.0', sha256='26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594') @@ -24,4 +25,5 @@ class PyAttrs(PythonPackage): depends_on('python@2.7:2.8,3.5:', when='@21.2.0:', type=('build', 'run')) depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-setuptools@40.6.0:', when='@19.1.0:', type='build') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-backports-entry-points-selectable/package.py b/var/spack/repos/builtin/packages/py-backports-entry-points-selectable/package.py index 6271ed6b7fcdd6..61ff55e513a1c1 100644 --- a/var/spack/repos/builtin/packages/py-backports-entry-points-selectable/package.py +++ b/var/spack/repos/builtin/packages/py-backports-entry-points-selectable/package.py @@ -14,8 +14,12 @@ class PyBackportsEntryPointsSelectable(PythonPackage): maintainers = ['iarspider'] + version('1.1.1', sha256='914b21a479fde881635f7af5adc7f6e38d6b274be32269070c53b698c60d5386') version('1.1.0', sha256='988468260ec1c196dab6ae1149260e2f5472c9110334e5d51adcb77867361f6a') - depends_on('python@2.7.0:2.7,3.0:3.10', type=('build', 'run')) - depends_on('py-setuptools', type='build') - depends_on('py-importlib-metadata@:3.8', type='build') + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-setuptools@56:', when='@1.1.1: ^python@3.6:', type='build') + depends_on('py-setuptools@42:', type='build') + depends_on('py-setuptools-scm+toml@3.4.1:', type='build') + + depends_on('py-importlib-metadata', when='^python@:3.7', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-bids-validator/package.py b/var/spack/repos/builtin/packages/py-bids-validator/package.py index 17f81ad7f813ff..7fdbaf02cc4a69 100644 --- a/var/spack/repos/builtin/packages/py-bids-validator/package.py +++ b/var/spack/repos/builtin/packages/py-bids-validator/package.py @@ -12,6 +12,7 @@ class PyBidsValidator(PythonPackage): homepage = "https://github.com/bids-standard/bids-validator" pypi = "bids-validator/bids-validator-1.7.2.tar.gz" + version('1.8.9', sha256='01fcb5a8fe6de1280cdfd5b37715103ffa0bafb3c739ca7f5ffc41e46549612e') version('1.8.4', sha256='63e7a02c9ddb5505a345e178f4e436b82c35ec0a177d7047b67ea10ea3029a68') version('1.7.2', sha256='12398831a3a3a2ed7c67e693cf596610c23dd23e0889bfeae0830bbd1d41e5b9') diff --git a/var/spack/repos/builtin/packages/py-billiard/package.py b/var/spack/repos/builtin/packages/py-billiard/package.py index b18b5b6c4dad99..d7b19bcf927691 100644 --- a/var/spack/repos/builtin/packages/py-billiard/package.py +++ b/var/spack/repos/builtin/packages/py-billiard/package.py @@ -11,6 +11,7 @@ class PyBilliard(PythonPackage): pypi = "billiard/billiard-3.5.0.5.tar.gz" + version('3.6.4.0', sha256='299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547') version('3.6.3.0', sha256='d91725ce6425f33a97dfa72fb6bfef0e47d4652acd98a032bd1a7fbf06d5fa6a') version('3.6.1.0', sha256='b8809c74f648dfe69b973c8e660bcec00603758c9db8ba89d7719f88d5f01f26') version('3.6.0.0', sha256='756bf323f250db8bf88462cd042c992ba60d8f5e07fc5636c24ba7d6f4261d84') diff --git a/var/spack/repos/builtin/packages/py-build/isolation.patch b/var/spack/repos/builtin/packages/py-build/isolation.patch new file mode 100644 index 00000000000000..f51855add35f1a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-build/isolation.patch @@ -0,0 +1,10 @@ +--- a/src/build/env.py 2021-09-16 16:20:01.000000000 -0500 ++++ b/src/build/env.py 2022-01-23 15:08:26.000000000 -0600 +@@ -254,6 +254,7 @@ + """ + import venv + ++ os.environ.pop('PYTHONPATH', None) + venv.EnvBuilder(with_pip=True, symlinks=_fs_supports_symlink()).create(path) + executable, script_dir, purelib = _find_executable_and_scripts(path) + diff --git a/var/spack/repos/builtin/packages/py-build/package.py b/var/spack/repos/builtin/packages/py-build/package.py index 12a5400de69b62..98f9feb8a8c9c5 100644 --- a/var/spack/repos/builtin/packages/py-build/package.py +++ b/var/spack/repos/builtin/packages/py-build/package.py @@ -16,7 +16,7 @@ class PyBuild(PythonPackage): variant('virtualenv', default=False, description='Install optional virtualenv dependency') - depends_on('python@3.6:+ensurepip', type=('build', 'run')) + depends_on('python@3.6:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-packaging@19:', type=('build', 'run')) depends_on('py-pep517@0.9.1:', type=('build', 'run')) @@ -24,3 +24,7 @@ class PyBuild(PythonPackage): depends_on('py-colorama', when='platform=windows', type=('build', 'run')) depends_on('py-importlib-metadata@0.22:', when='^python@:3.7', type=('build', 'run')) depends_on('py-virtualenv@20.0.35:', when='+virtualenv', type=('build', 'run')) + + # https://github.com/pypa/build/issues/266 + # https://github.com/pypa/build/issues/406 + patch('isolation.patch', when='@0.7.0') diff --git a/var/spack/repos/builtin/packages/py-carputils/package.py b/var/spack/repos/builtin/packages/py-carputils/package.py index 6cc5feed1c861b..5c0cc6ecca9e9d 100644 --- a/var/spack/repos/builtin/packages/py-carputils/package.py +++ b/var/spack/repos/builtin/packages/py-carputils/package.py @@ -14,20 +14,21 @@ class PyCarputils(PythonPackage): version('master', branch='master') # Version to use with openCARP releases + version('oc9.0', commit='e79e66b25c7bfaf405fad595019594ab9aa83392') version('oc8.2', commit='e60f639c0f39ad71c8ae11814de1f3aa726e8352') version('oc8.1', commit='a4210fcb0fe17226a1744ee9629f85b629decba3') version('oc7.0', commit='4c04db61744f2fb7665594d7c810699c5c55c77c') depends_on('git') - depends_on('python@:3.8', type=('build', 'run')) + depends_on('python', type=('build', 'run')) depends_on('py-pip', type='build') depends_on('py-numpy@1.14.5:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-python-dateutil', type='run') - depends_on('py-scipy@:1.5.4', type='run') - depends_on('py-matplotlib@:3.3.3', type='run') - depends_on('py-pandas@:1.1.4', type='run') - depends_on('py-tables@3.6.1', type='run') - depends_on('py-six@:1.14.0', type='run') + depends_on('py-scipy@1.5.0:', type='run') + depends_on('py-matplotlib@3.0.0:', type='run') + depends_on('py-pandas', type='run') + depends_on('py-tables@3.6.1:', type='run') + depends_on('py-six@1.12.0:', type='run') depends_on('py-ruamel-yaml', type='run') diff --git a/var/spack/repos/builtin/packages/py-celery/package.py b/var/spack/repos/builtin/packages/py-celery/package.py index a4918da62cea9f..2b44e16255d00c 100644 --- a/var/spack/repos/builtin/packages/py-celery/package.py +++ b/var/spack/repos/builtin/packages/py-celery/package.py @@ -65,8 +65,8 @@ class PyCelery(PythonPackage): depends_on('py-click-repl@0.2.0:', when="@5.2.0:", type=('build', 'run')) depends_on('py-pytz@2019.3:', type=('build', 'run')) depends_on('py-pytz@2021.3:', type=('build', 'run'), when="@5.2.3") - depends_on('py-billiard@3.6.3:3', type=('build', 'run')) - depends_on('py-billiard@3.6.4:3', type=('build', 'run'), when="@5.2.3") + depends_on('py-billiard@3.6.3.0:3', type=('build', 'run')) + depends_on('py-billiard@3.6.4.0:3', type=('build', 'run'), when="@5.2.3") depends_on('py-kombu@4.6.11', when="@4.3.0:4", type=('build', 'run')) depends_on('py-kombu@5.0.0:', when="@5.0.0:5.0", type=('build', 'run')) depends_on('py-kombu@5.2.3:5', when="@5.2.0:5.2", type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-cerberus/package.py b/var/spack/repos/builtin/packages/py-cerberus/package.py new file mode 100644 index 00000000000000..3ac18eb4358e94 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cerberus/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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 import * + + +class PyCerberus(PythonPackage): + """Lightweight, extensible schema and data validation + tool for Python dictionaries""" + + homepage = "http://docs.python-cerberus.org/" + pypi = "Cerberus/Cerberus-1.3.4.tar.gz" + + version('1.3.4', sha256='d1b21b3954b2498d9a79edf16b3170a3ac1021df88d197dc2ce5928ba519237c') + + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index 7592c67c0cef48..74b01abd06e8ac 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -34,6 +34,16 @@ class PyCffi(PythonPackage): # works with "gcc" being clang, not with gnu gcc patch('macos_gnu.patch', when='platform=darwin %gcc') + def flag_handler(self, name, flags): + if self.spec.satisfies('%clang@13:'): + if name in ['cflags', 'cxxflags', 'cppflags']: + flags.append('-Wno-error=ignored-optimization-argument') + return (flags, None, None) + if name == 'ldflags': + flags.append('-flto') + return (flags, None, None) + return (flags, None, None) + def setup_build_environment(self, env): # This sets the compiler (and flags) that distutils will use # to create the final shared library. It will use the diff --git a/var/spack/repos/builtin/packages/py-charset-normalizer/package.py b/var/spack/repos/builtin/packages/py-charset-normalizer/package.py index c41f87b30a4154..b8e6ea96329912 100644 --- a/var/spack/repos/builtin/packages/py-charset-normalizer/package.py +++ b/var/spack/repos/builtin/packages/py-charset-normalizer/package.py @@ -13,6 +13,7 @@ class PyCharsetNormalizer(PythonPackage): homepage = 'https://github.com/ousret/charset_normalizer' pypi = 'charset-normalizer/charset-normalizer-2.0.7.tar.gz' + version('2.0.12', sha256='2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597') version('2.0.7', sha256='e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0') depends_on('python@3.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ci-sdr/package.py b/var/spack/repos/builtin/packages/py-ci-sdr/package.py new file mode 100644 index 00000000000000..d18228dfa880a1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ci-sdr/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2022 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 import * + + +class PyCiSdr(PythonPackage): + """This repository contains an implementation for the Convolutive transfer + function Invariant Signal-to-Distortion Ratio objective for PyTorch as + described in the publication Convolutive Transfer Function Invariant SDR + training criteria for Multi-Channel Reverberant Speech Separation""" + + homepage = "https://github.com/fgnt/ci_sdr" + pypi = "ci_sdr/ci_sdr-0.0.0.tar.gz" + + version('0.0.0', sha256='a1387f39ccd55cce034e2c01000a0a337b3729d8a5010b42c5381d8c820fa4bb') + + depends_on('python@3.6:3', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-torch', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-einops', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-cmake/package.py b/var/spack/repos/builtin/packages/py-cmake/package.py index e5c0aaee1df2aa..ad1f62504aa752 100644 --- a/var/spack/repos/builtin/packages/py-cmake/package.py +++ b/var/spack/repos/builtin/packages/py-cmake/package.py @@ -11,16 +11,33 @@ class PyCmake(PythonPackage): build, test and package software """ - homepage = "https://cmake.org/" - pypi = "cmake/cmake-3.18.0.tar.gz" + homepage = "https://cmake.org" + git = "https://github.com/scikit-build/cmake-python-distributions.git" + pypi = "cmake/cmake-3.22.2.tar.gz" + version('3.22.2', sha256='b5bd5eeb488b13cf64ec963800f3d979eaeb90b4382861b86909df503379e219') version('3.21.4', sha256='30fa5ed8a5ad66dcd263adb87f3ce3dc2d0ec0ac3958f5becff577e4b62cd065') version('3.18.0', sha256='52b98c5ee70b5fa30a8623e96482227e065292f78794eb085fdf0fecb204b79b') + depends_on('ninja', type='build') depends_on('py-scikit-build@0.12:', type='build') depends_on('py-setuptools@42:', type='build') + depends_on('git', type='build') + depends_on('cmake@3.22.2', type=('build', 'link', 'run'), when='@3.22.2') depends_on('cmake@3.21.4', type=('build', 'link', 'run'), when='@3.21.4') depends_on('cmake@3.18.0', type=('build', 'link', 'run'), when='@3.18.0') + # see: + # https://github.com/scikit-build/cmake-python-distributions/issues/227 + # https://github.com/spack/spack/pull/28760#issuecomment-1029362288 + for v in ['3.22.2', '3.21.4', '3.18.0']: + resource(name='cmake-src', + git='https://gitlab.kitware.com/cmake/cmake.git', + commit='v{0}'.format(v), when='@{0}'.format(v), + destination='cmake-src', placement='cmake-src') + def install_options(self, spec, prefix): - return ['-DBUILD_CMAKE_FROM_SOURCE=OFF'] + return [ + '-DBUILD_CMAKE_FROM_SOURCE=ON', + '-DCMakeProject_SOURCE_DIR=cmake-src' + ] diff --git a/var/spack/repos/builtin/packages/py-colorio/package.py b/var/spack/repos/builtin/packages/py-colorio/package.py new file mode 100644 index 00000000000000..3beaad690a25c9 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-colorio/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class PyColorio(PythonPackage): + """Tools for color research""" + + homepage = "https://github.com/nschloe/colorio" + pypi = "colorio/colorio-0.11.2.tar.gz" + + version('0.11.2', sha256='aa45d8e0a2e506c4019d4fb488d34a107d7f803c8e8ff355e2e57c01f6f1cd81') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-flit-core@3.2:3.6', type='build') + depends_on('py-numpy@1.20:', type=('build', 'run')) + depends_on('py-matplotlib', type=('build', 'run')) + depends_on('py-npx', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-configparser/package.py b/var/spack/repos/builtin/packages/py-configparser/package.py index 526a373133d8e9..b2c8e6c2c5ac8b 100644 --- a/var/spack/repos/builtin/packages/py-configparser/package.py +++ b/var/spack/repos/builtin/packages/py-configparser/package.py @@ -13,8 +13,13 @@ class PyConfigparser(PythonPackage): homepage = "https://docs.python.org/3/library/configparser.html" pypi = "configparser/configparser-3.5.0.tar.gz" + version('5.2.0', sha256='1b35798fdf1713f1c3139016cfcbc461f09edbf099d1fb658d4b7479fcaa3daa') version('3.5.1', sha256='f41e19cb29bebfccb1a78627b3f328ec198cc8f39510c7c55e7dfc0ab58c8c62') version('3.5.0', sha256='5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a') - depends_on('py-setuptools', type='build') - depends_on('py-ordereddict', when='^python@:2.6', type=('build', 'run')) + depends_on('python@3.6:', type=('build', 'run'), when='@5.2.0:') + depends_on('py-setuptools', type='build') + depends_on('py-setuptools@34.4:', type='build', when='@3.5.1:') + depends_on('py-setuptools@56:', type='build', when='@5.2.0:') + depends_on('py-setuptools-scm@3.4.1:+toml', type='build', when='@5.2.0:') + depends_on('py-ordereddict', type=('build', 'run'), when='python@:2.6') diff --git a/var/spack/repos/builtin/packages/py-control/package.py b/var/spack/repos/builtin/packages/py-control/package.py new file mode 100644 index 00000000000000..596c375585e154 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-control/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class PyControl(PythonPackage): + """The Python Control Systems Library is a Python module that implements + basic operations for analysis and design of feedback control systems.""" + + homepage = "https://python-control.org/" + pypi = "control/control-0.9.1.tar.gz" + + maintainers = ['haralmha'] + + version('0.9.1', sha256='8c9084bf386eafcf5d74008f780fae6dec68d243d18a380c866ac10a3549f8d3') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-matplotlib', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index a7522ba627b5ef..b73b137628c471 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -9,9 +9,10 @@ class PyCoverage(PythonPackage): """ Testing coverage checker for python """ - homepage = "https://nedbatchelder.com/code/coverage/" + homepage = "https://github.com/nedbat/coveragepy" pypi = "coverage/coverage-4.5.4.tar.gz" + version('6.3.1', sha256='6c3f6158b02ac403868eea390930ae64e9a9a2a5bbfafefbb920d29258d9f2f8') version('6.1.2', sha256='d9a635114b88c0ab462e0355472d00a180a5fbfd8511e7f18e4ac32652e7d972') version('5.5', sha256='ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c') version('5.3', sha256='280baa8ec489c4f542f8940f9c4c2181f0306a8ee1a54eceba071a449fb870a0') @@ -23,9 +24,10 @@ class PyCoverage(PythonPackage): variant('toml', default=False, description='Enable pyproject.toml support') - depends_on('python@2.6:2.8,3.3:', type=('build', 'run')) - depends_on('python@2.7:2.8,3.5:', when='@5:', type=('build', 'run')) + depends_on('python@3.7:', when='@6.3:', type=('build', 'run')) depends_on('python@3.6:', when='@6:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:', when='@5:', type=('build', 'run')) + depends_on('python@2.6:2.8,3.3:', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run')) depends_on('py-tomli', when='@6: +toml', type=('build', 'run')) depends_on('py-toml', when='@:5 +toml', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index 2ea97ba0404ead..5f70eac778c27a 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -14,6 +14,7 @@ class PyCryptography(PythonPackage): homepage = "https://github.com/pyca/cryptography" pypi = "cryptography/cryptography-1.8.1.tar.gz" + version('36.0.1', sha256='53e5c1dc3d7a953de055d77bef2ff607ceef7a2aac0353b5d630ab67f7423638') version('35.0.0', sha256='9933f28f70d0517686bd7de36166dda42094eac49415459d9bdf5e7df3e0086d') version('3.4.8', sha256='94cc5ed4ceaefcbe5bf38c8fba6a21fc1d365bb8fb826ea1688e3370b2e24a1c') version('3.4.7', sha256='3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713') @@ -24,7 +25,6 @@ class PyCryptography(PythonPackage): variant('idna', default=False, when='@2.5:3.0', description='Deprecated U-label support') - # dependencies taken from https://github.com/pyca/cryptography/blob/master/setup.py depends_on('python@3.6:', when='@3.4:', type=('build', 'run')) depends_on('python@2.7:2.8,3.4:', when='@2.3.1:', type=('build', 'run')) depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ctgan/package.py b/var/spack/repos/builtin/packages/py-ctgan/package.py index 639e3d1d6b70d2..12932793449109 100644 --- a/var/spack/repos/builtin/packages/py-ctgan/package.py +++ b/var/spack/repos/builtin/packages/py-ctgan/package.py @@ -25,5 +25,5 @@ class PyCtgan(PythonPackage): depends_on('py-pandas@1.1.3:1', type=('build', 'run')) depends_on('py-scikit-learn@0.24:1', type=('build', 'run')) depends_on('py-torch@1.8.0:1', type=('build', 'run')) - depends_on('py-torchvision@0.9', type=('build', 'run')) + depends_on('py-torchvision@0.9:0', type=('build', 'run')) depends_on('py-rdt@0.6.1:0.6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-datalad/package.py b/var/spack/repos/builtin/packages/py-datalad/package.py index 1c276a45b28309..64dc5e573a06ba 100644 --- a/var/spack/repos/builtin/packages/py-datalad/package.py +++ b/var/spack/repos/builtin/packages/py-datalad/package.py @@ -20,6 +20,7 @@ class PyDatalad(PythonPackage): homepage = "https://datalad.org/" pypi = "datalad/datalad-0.14.6.tar.gz" + version('0.15.5', sha256='e569494a5bd4e0f100013ec30529d5ac02e78ba476a75fc533c0d89c0e5473bc') version('0.15.3', sha256='44f8c5b3960c6d9848aeecd868c82330c49689a21e975597df5b112dc2e5c9f0') version('0.15.2', sha256='1a878cf521270f089ee1f50339e71cfd7eed41e708d895a12d5c483a9b59991b') version('0.15.1', sha256='0a905b3c3419786ae85b61a7aee34b0fc9eecd814f38408f2767ae7122b57a8b') @@ -34,6 +35,7 @@ class PyDatalad(PythonPackage): depends_on('python@3.6:', type=('build', 'run')) depends_on('py-setuptools@40.8.0:', type='build') + depends_on('git', type=('build', 'run')) depends_on('git-annex', type=('build', 'run')) @@ -45,6 +47,7 @@ class PyDatalad(PythonPackage): depends_on('py-iso8601', type=('build', 'run')) depends_on('py-humanize', type=('build', 'run')) depends_on('py-fasteners@0.14:', type=('build', 'run')) + depends_on('py-packaging', type=('build', 'run'), when='@0.15.4:') depends_on('py-patool@1.7:', type=('build', 'run')) depends_on('py-tqdm', type=('build', 'run')) depends_on('py-wrapt', type=('build', 'run')) @@ -86,14 +89,14 @@ class PyDatalad(PythonPackage): depends_on('py-mutagen@1.36:', type=('build', 'run')) depends_on('py-exifread', type=('build', 'run')) depends_on('py-python-xmp-toolkit', type=('build', 'run')) - depends_on('py-pillow', type=('build', 'run')) + depends_on('pil', type=('build', 'run')) with when('+duecredit'): depends_on('py-duecredit', type=('build', 'run')) with when('+full'): # all the above - # downloader-extra + # downloaders-extra depends_on('py-requests-ftp', type=('build', 'run')) # misc depends_on('py-argcomplete', type=('build', 'run'), when='@0.14.7:') @@ -109,7 +112,7 @@ class PyDatalad(PythonPackage): depends_on('py-mutagen@1.36:', type=('build', 'run')) depends_on('py-exifread', type=('build', 'run')) depends_on('py-python-xmp-toolkit', type=('build', 'run')) - depends_on('py-pillow', type=('build', 'run')) + depends_on('pil', type=('build', 'run')) # duecredit depends_on('py-duecredit', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py index 33a0d0c8b37655..b6e0e4c85da98a 100644 --- a/var/spack/repos/builtin/packages/py-decorator/package.py +++ b/var/spack/repos/builtin/packages/py-decorator/package.py @@ -14,6 +14,7 @@ class PyDecorator(PythonPackage): homepage = "https://github.com/micheles/decorator" pypi = "decorator/decorator-5.1.0.tar.gz" + version('5.1.1', sha256='637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330') version('5.1.0', sha256='e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7') version('5.0.9', sha256='72ecfba4320a893c53f9706bebb2d55c270c1e51a28789361aa93e4a21319ed5') version('4.4.2', sha256='e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7') diff --git a/var/spack/repos/builtin/packages/py-deepsig/package.py b/var/spack/repos/builtin/packages/py-deepsig/package.py new file mode 100644 index 00000000000000..cbcbb6e53fe82d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-deepsig/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2022 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 import * + + +class PyDeepsig(PythonPackage): + """deep-significance: Easy and Better Significance Testing for Deep Neural + Networks""" + + homepage = "https://github.com/Kaleidophon/deep-significance" + pypi = "deepsig/deepsig-1.2.1.tar.gz" + + version('1.2.1', sha256='8543630c00264898116a065f6461c131d026ef75d8703bc631a4fd2bafb31f89') + + depends_on('python@3.5.3:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.19.5', type=('build', 'run')) + depends_on('py-scipy@1.6.0', type=('build', 'run')) + depends_on('py-tqdm@4.59.0', type=('build', 'run')) + depends_on('py-joblib@1.0.1', type=('build', 'run')) + depends_on('py-pandas@1.3.3', type=('build', 'run')) + depends_on('py-dill@0.3.4', type=('build', 'run')) + + def patch(self): + filter_file('README_RAW.md', 'README.md', 'setup.py', string=True) diff --git a/var/spack/repos/builtin/packages/py-distlib/package.py b/var/spack/repos/builtin/packages/py-distlib/package.py index 30a7039c12186b..7c98938ed476c4 100644 --- a/var/spack/repos/builtin/packages/py-distlib/package.py +++ b/var/spack/repos/builtin/packages/py-distlib/package.py @@ -12,6 +12,7 @@ class PyDistlib(PythonPackage): homepage = "https://bitbucket.org/pypa/distlib" pypi = "distlib/distlib-0.3.3.zip" + version('0.3.4', sha256='e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579') version('0.3.3', sha256='d982d0751ff6eaaab5e2ec8e691d949ee80eddf01a62eaa96ddb11531fe16b05') # pip silently replaces distutils with setuptools diff --git a/var/spack/repos/builtin/packages/py-dm-tree/package.py b/var/spack/repos/builtin/packages/py-dm-tree/package.py index 33efb4e2ce6272..18b16abd0613a3 100644 --- a/var/spack/repos/builtin/packages/py-dm-tree/package.py +++ b/var/spack/repos/builtin/packages/py-dm-tree/package.py @@ -28,7 +28,7 @@ def clean(self): remove_linked_tree(self.tmp_path) def patch(self): - self.tmp_path = tempfile.mkdtemp(dir='/tmp', prefix='spack') + self.tmp_path = tempfile.mkdtemp(prefix='spack') env['TEST_TMPDIR'] = self.tmp_path env['HOME'] = self.tmp_path args = [ diff --git a/var/spack/repos/builtin/packages/py-docutils/package.py b/var/spack/repos/builtin/packages/py-docutils/package.py index d2058efc8b4257..9ab595ae728309 100644 --- a/var/spack/repos/builtin/packages/py-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-docutils/package.py @@ -18,6 +18,7 @@ class PyDocutils(PythonPackage): homepage = "http://docutils.sourceforge.net/" pypi = "docutils/docutils-0.15.2.tar.gz" + version('0.18.1', sha256='679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06') version('0.18', sha256='c1d5dab2b11d16397406a282e53953fe495a46d69ae329f55aa98a5c4e3c5fbb') version('0.17.1', sha256='686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125') version('0.17', sha256='e2ffeea817964356ba4470efba7c2f42b6b0de0b04e66378507e3e2504bbff4c') diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py index f42aec03e5044f..3252e435203fe5 100644 --- a/var/spack/repos/builtin/packages/py-entrypoints/package.py +++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py @@ -9,11 +9,15 @@ class PyEntrypoints(PythonPackage): """Discover and load entry points from installed packages.""" + homepage = "https://github.com/takluyver/entrypoints" pypi = "entrypoints/entrypoints-0.2.3.tar.gz" + version('0.4', sha256='b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4') version('0.3', sha256='c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451') version('0.2.3', sha256='d2d587dde06f99545fb13a383d2cd336a8ff1f359c5839ce3a64c917d10c029f') + depends_on('python@3.6:', when='@0.4:', type=('build', 'run')) depends_on('python@2.7:', type=('build', 'run')) - depends_on('py-flit', type='build') + depends_on('py-flit-core@2:3', when='@0.4:', type='build') + depends_on('py-flit', when='@:0.3', type='build') depends_on('py-configparser@3.5:', when='^python@2.7', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-espresso/package.py b/var/spack/repos/builtin/packages/py-espresso/package.py index a7a5b518297bae..71a523298266af 100644 --- a/var/spack/repos/builtin/packages/py-espresso/package.py +++ b/var/spack/repos/builtin/packages/py-espresso/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class PyEspresso(CMakePackage): @@ -33,6 +34,11 @@ class PyEspresso(CMakePackage): depends_on("cmake@3.0:", type='build') depends_on("mpi") depends_on("boost+serialization+filesystem+system+python+mpi") + + # 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) extends("python") depends_on("py-cython@0.23:", type="build") depends_on("py-numpy", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-etelemetry/package.py b/var/spack/repos/builtin/packages/py-etelemetry/package.py index 136e61fed22d90..e513b78e4c9cba 100644 --- a/var/spack/repos/builtin/packages/py-etelemetry/package.py +++ b/var/spack/repos/builtin/packages/py-etelemetry/package.py @@ -12,8 +12,10 @@ class PyEtelemetry(PythonPackage): homepage = "https://github.com/sensein/etelemetry-client" url = "https://github.com/sensein/etelemetry-client/archive/refs/tags/v0.2.2.tar.gz" + version('0.3.0', sha256='5f710fdb17ec02f93be29d234b33c1c62ad641320d1b4047e61044679018de03') version('0.2.2', sha256='bfec416552d248ad0f50b90ba5ff015e825ad70e4a87f7a06cc7da6d19152897') + depends_on('python@3.7:', when='@0.3:', type=('build', 'run')) depends_on('python@3.6:', type=('build', 'run')) depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-executing/package.py b/var/spack/repos/builtin/packages/py-executing/package.py new file mode 100644 index 00000000000000..068f4e1715885c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-executing/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2022 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 import * + + +class PyExecuting(PythonPackage): + """Get the currently executing AST node of a frame, and other information.""" + + homepage = "https://github.com/alexmojaki/executing" + pypi = "executing/executing-0.8.2.tar.gz" + + version('0.8.2', sha256='c23bf42e9a7b9b212f185b1b2c3c91feb895963378887bb10e64a2e612ec0023') + + depends_on('py-setuptools', type='build') + depends_on('py-setuptools-scm+toml', type='build') diff --git a/var/spack/repos/builtin/packages/py-fasteners/package.py b/var/spack/repos/builtin/packages/py-fasteners/package.py index 899b7ab82fea87..9b1841757845de 100644 --- a/var/spack/repos/builtin/packages/py-fasteners/package.py +++ b/var/spack/repos/builtin/packages/py-fasteners/package.py @@ -12,10 +12,13 @@ class PyFasteners(PythonPackage): homepage = "https://github.com/harlowja/fasteners" pypi = "fasteners/fasteners-0.14.1.tar.gz" + version('0.17.3', sha256='a9a42a208573d4074c77d041447336cf4e3c1389a256fd3e113ef59cf29b7980') version('0.16.3', sha256='b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de') version('0.14.1', sha256='427c76773fe036ddfa41e57d89086ea03111bbac57c55fc55f3006d027107e18') - depends_on('py-setuptools', type='build') - depends_on('py-monotonic@0.1:', type=('build', 'run'), when='@0.14.1') - depends_on('py-monotonic@0.1:', type=('build', 'run'), when='@0.16.3: ^python@:3.3') - depends_on('py-six', type=('build', 'run')) + depends_on('python@3.6:', when='@0.17:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + + depends_on('py-monotonic@0.1:', when='@0.16 ^python@:3.3', type=('build', 'run')) + depends_on('py-monotonic@0.1:', when='@:0.15', type=('build', 'run')) + depends_on('py-six', when='@:0.16', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-filelock/package.py b/var/spack/repos/builtin/packages/py-filelock/package.py index 8aba73b8e02fee..a37af63d1f1213 100644 --- a/var/spack/repos/builtin/packages/py-filelock/package.py +++ b/var/spack/repos/builtin/packages/py-filelock/package.py @@ -16,6 +16,7 @@ class PyFilelock(PythonPackage): homepage = "https://github.com/benediktschmitt/py-filelock" pypi = "filelock/filelock-3.0.4.tar.gz" + version('3.5.0', sha256='137b661e657f7850eec9def2a001efadba3414be523b87cd3f9a037372d80a15') version('3.4.0', sha256='93d512b32a23baf4cac44ffd72ccf70732aeff7b8050fcaf6d3ec406d954baf4') version('3.0.12', sha256='18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59') version('3.0.4', sha256='011327d4ed939693a5b28c0fdf2fd9bda1f68614c1d6d0643a89382ce9843a71') @@ -28,6 +29,10 @@ class PyFilelock(PythonPackage): version('2.0.9', sha256='0f91dce339c9f25d6f2e0733a17e4f9a47b139dffda52619a0e61e013e5c6782') version('2.0.8', sha256='7e48e4906de3c9a5d64d8f235eb3ae1050dfefa63fd65eaf318cc915c935212b') + depends_on('python@3.7:', when='@3.4.2:', type=('build', 'run')) depends_on('python@3.6:', when='@3.3:', type=('build', 'run')) depends_on('python@2.7:2,3.5:', when='@3.1:', type=('build', 'run')) - depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-setuptools@41.0.0:', when='@3.1:', type='build') + depends_on('py-setuptools', type='build') + depends_on('py-wheel@0.30:', when='@3.1:', type='build') + depends_on('py-setuptools-scm@2:', when='@3.1:', type='build') diff --git a/var/spack/repos/builtin/packages/py-fiona/package.py b/var/spack/repos/builtin/packages/py-fiona/package.py index 23240df9bbed1e..16c922d7015194 100644 --- a/var/spack/repos/builtin/packages/py-fiona/package.py +++ b/var/spack/repos/builtin/packages/py-fiona/package.py @@ -16,13 +16,15 @@ class PyFiona(PythonPackage): maintainers = ['adamjstewart'] version('master', branch='master') + version('1.8.21', sha256='3a0edca2a7a070db405d71187214a43d2333a57b4097544a3fcc282066a58bfc') version('1.8.20', sha256='a70502d2857b82f749c09cb0dea3726787747933a2a1599b5ab787d74e3c143b') version('1.8.18', sha256='b732ece0ff8886a29c439723a3e1fc382718804bb057519d537a81308854967a') version('1.8.6', sha256='fa31dfe8855b9cd0b128b47a4df558f1b8eda90d2181bff1dd9854e5556efb3e') version('1.7.12', sha256='8b54eb8422d7c502bb7776b184018186bede1a489cf438a7a47f992ade6a0e51') depends_on('python@3.6:', type=('build', 'link', 'run'), when='@1.9:') - depends_on('python@2.6:', type=('build', 'link', 'run')) + depends_on('python@2.6:', type=('build', 'link', 'run'), when='@1.8.21:1.8') + depends_on('python@2.6:3.9', type=('build', 'link', 'run'), when='@:1.8.20') depends_on('gdal@1.11:', type=('build', 'link', 'run'), when='@1.9:') depends_on('gdal@1.8:', type=('build', 'link', 'run')) diff --git a/var/spack/repos/builtin/packages/py-fiscalyear/package.py b/var/spack/repos/builtin/packages/py-fiscalyear/package.py index 3fe3e10e36eb0c..c4ab2b10a0b864 100644 --- a/var/spack/repos/builtin/packages/py-fiscalyear/package.py +++ b/var/spack/repos/builtin/packages/py-fiscalyear/package.py @@ -21,11 +21,14 @@ class PyFiscalyear(PythonPackage): maintainers = ['adamjstewart'] version('master', branch='master') + version('0.4.0', sha256='12857a48bd7b97bda78d833b29e81f30ec5aa018241f690e714b472b25fa1b47') version('0.3.2', sha256='0697b2af4ab2d4c6188fac33d340f31dea9b0e1f0d3666d6752faeedd744f019') version('0.3.1', sha256='5964b4be71453c1fa5da804343cea866e0299aff874aa59ae186a8a9b9ff62d0') version('0.3.0', sha256='64f97b3a0ab6b2857d09f0016bd3aae37646a454a5c2c66e907fef03ae54a816') version('0.2.0', sha256='f513616aeb03046406c56d7c69cd9e26f6a12963c71c1410cc3d4532a5bfee71') version('0.1.0', sha256='3fde4a12eeb72da446beb487e078adf1223a92d130520e589b82d7d1509701a2') + depends_on('python@3.6:', when='@0.4:', type=('build', 'run')) depends_on('python@2.5:', type=('build', 'run')) + depends_on('py-setuptools@42:', when='@0.4:', type='build') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-flit-core/package.py b/var/spack/repos/builtin/packages/py-flit-core/package.py index 19b8702ef0933d..a970836b043d45 100644 --- a/var/spack/repos/builtin/packages/py-flit-core/package.py +++ b/var/spack/repos/builtin/packages/py-flit-core/package.py @@ -13,6 +13,7 @@ class PyFlitCore(PythonPackage): pypi = "flit-core/flit_core-3.3.0.tar.gz" maintainers = ['takluyver'] + version('3.6.0', sha256='5892962ab8b8ea945835b3a288fe9dd69316f1903d5288c3f5cafdcdd04756ad') version('3.5.1', sha256='3083720351a6cb00e0634a1ec0e26eae7b273174c3c6c03d5b597a14203b282e') version('3.5.0', sha256='2db800d33ff41e4c6e7c1b594666cb2a11553024106655272c7245933b1d75bd') version('3.4.0', sha256='29468fa2330969167d1f5c23eb9c0661cb6dacfcd46f361a274609a7f4197530') @@ -26,6 +27,6 @@ class PyFlitCore(PythonPackage): depends_on('python@3.6:', when='@3.4:', type=('build', 'run')) depends_on('python@3.4:', when='@3:', type=('build', 'run')) depends_on('python@2.7,3.4:', type=('build', 'run')) - depends_on('py-tomli', when='@3.4:', type='run') + depends_on('py-tomli', when='@3.4:3.5', type='run') depends_on('py-toml', when='@3.1:3.3', type='run') depends_on('py-pytoml', when='@:3.0', type='run') diff --git a/var/spack/repos/builtin/packages/py-flit/package.py b/var/spack/repos/builtin/packages/py-flit/package.py index 78a14fcb0ab660..59407cfc1cebcb 100644 --- a/var/spack/repos/builtin/packages/py-flit/package.py +++ b/var/spack/repos/builtin/packages/py-flit/package.py @@ -9,13 +9,18 @@ class PyFlit(PythonPackage): """Flit is a simple way to put Python packages and modules on PyPI.""" + homepage = "https://github.com/pypa/flit" pypi = "flit/flit-3.3.0.tar.gz" maintainers = ['takluyver'] + version('3.6.0', sha256='b1464e006df4df4c8eeb37671c0e0ce66e1d04e4a36d91b702f180a25fde3c11') version('3.3.0', sha256='65fbe22aaa7f880b776b20814bd80b0afbf91d1f95b17235b608aa256325ce57') depends_on('python@3.6:', type=('build', 'run')) - depends_on('py-flit-core@3.3.0:', type=('build', 'run')) + depends_on('py-flit-core@3.6.0:3', when='@3.6.0:3.6', type=('build', 'run')) + depends_on('py-flit-core@3.3.0:3', when='@3.3.0:3.3', type=('build', 'run')) depends_on('py-requests', type=('build', 'run')) depends_on('py-docutils', type=('build', 'run')) - depends_on('py-toml', type=('build', 'run')) + depends_on('py-tomli', when='@3.4:', type=('build', 'run')) + depends_on('py-tomli-w', when='@3.4:', type=('build', 'run')) + depends_on('py-toml', when='@3.3.0:3.3', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-fonttools/package.py b/var/spack/repos/builtin/packages/py-fonttools/package.py index ac5f7d7cfc2134..811eb98a99f479 100644 --- a/var/spack/repos/builtin/packages/py-fonttools/package.py +++ b/var/spack/repos/builtin/packages/py-fonttools/package.py @@ -16,7 +16,17 @@ class PyFonttools(PythonPackage): homepage = "https://github.com/fonttools/fonttools" pypi = "fonttools/fonttools-4.28.1.zip" + version('4.29.1', sha256='2b18a172120e32128a80efee04cff487d5d140fe7d817deb648b2eee023a40e4') version('4.28.1', sha256='8c8f84131bf04f3b1dcf99b9763cec35c347164ab6ad006e18d2f99fcab05529') depends_on('python@3.7:', type=('build', 'run')) depends_on('py-setuptools', type='build') + + @property + def import_modules(self): + modules = super(__class__, self).import_modules + + ignored_imports = ["fontTools.ufoLib"] + + return [i for i in modules + if not any(map(i.startswith, ignored_imports))] diff --git a/var/spack/repos/builtin/packages/py-futures/package.py b/var/spack/repos/builtin/packages/py-futures/package.py index 056bc54916dd65..d7c1118e384ecd 100644 --- a/var/spack/repos/builtin/packages/py-futures/package.py +++ b/var/spack/repos/builtin/packages/py-futures/package.py @@ -11,6 +11,7 @@ class PyFutures(PythonPackage): pypi = "futures/futures-3.0.5.tar.gz" + version('3.3.0', sha256='7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794') version('3.2.0', sha256='9ec02aa7d674acb8618afb127e27fde7fc68994c0437ad759fa094a574adb265') version('3.0.5', sha256='0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df') diff --git a/var/spack/repos/builtin/packages/py-gevent/package.py b/var/spack/repos/builtin/packages/py-gevent/package.py index 9e575e563481ec..55189d4d736a88 100644 --- a/var/spack/repos/builtin/packages/py-gevent/package.py +++ b/var/spack/repos/builtin/packages/py-gevent/package.py @@ -12,6 +12,7 @@ class PyGevent(PythonPackage): homepage = "https://www.gevent.org" pypi = "gevent/gevent-1.3a2.tar.gz" + version('21.12.0', sha256='f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e') version('21.8.0', sha256='43e93e1a4738c922a2416baf33f0afb0a20b22d3dba886720bc037cd02a98575') version('1.5.0', sha256='b2814258e3b3fb32786bb73af271ad31f51e1ac01f33b37426b66cb8491b4c29') version('1.3a2', sha256='f7ab82697111ea233c7beeadf5240f669dfad9c4bbc89a3ec80a49e2c48a65bd') diff --git a/var/spack/repos/builtin/packages/py-gimmik/package.py b/var/spack/repos/builtin/packages/py-gimmik/package.py new file mode 100644 index 00000000000000..f562b276094a28 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-gimmik/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2022 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 import * + + +class PyGimmik(PythonPackage): + """Generator of Matrix Multiplication Kernels - GiMMiK - is a tool for generation of + high performance matrix multiplication kernel code. + for various accelerator platforms.""" + + homepage = "https://github.com/PyFR/GiMMiK" + pypi = "gimmik/gimmik-2.2.tar.gz" + + maintainers = ["michaellaufer"] + + version( + "2.2", sha256="9144640f94aab92f9c5dfcaf16885a79428ab97337cf503a4b2dddeb870f3cf0" + ) + + depends_on('python@3.8:', type=('build', 'run')) + depends_on("py-setuptools", type="build") + depends_on("py-numpy@1.7:", type=('build', 'run')) + depends_on("py-mako", type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-googleapis-common-protos/package.py b/var/spack/repos/builtin/packages/py-googleapis-common-protos/package.py index 74fa434dd59bdd..e3975841980930 100644 --- a/var/spack/repos/builtin/packages/py-googleapis-common-protos/package.py +++ b/var/spack/repos/builtin/packages/py-googleapis-common-protos/package.py @@ -12,7 +12,9 @@ class PyGoogleapisCommonProtos(PythonPackage): homepage = "https://github.com/googleapis/googleapis" pypi = "googleapis-common-protos/googleapis-common-protos-1.6.0.tar.gz" + version('1.55.0', sha256='53eb313064738f45d5ac634155ae208e121c963659627b90dfcb61ef514c03e1') version('1.6.0', sha256='e61b8ed5e36b976b487c6e7b15f31bb10c7a0ca7bd5c0e837f4afab64b53a0c6') depends_on('py-setuptools', type='build') - depends_on('py-protobuf@3.6.0:', type=('build', 'run')) + depends_on('py-protobuf@3.6.0:3', type=('build', 'run')) + depends_on('py-protobuf@3.12.0:3', type=('build', 'run'), when='@1.55.0:') diff --git a/var/spack/repos/builtin/packages/py-gosam/package.py b/var/spack/repos/builtin/packages/py-gosam/package.py index 5d093e27881cd3..f109a495ccfe4a 100644 --- a/var/spack/repos/builtin/packages/py-gosam/package.py +++ b/var/spack/repos/builtin/packages/py-gosam/package.py @@ -6,7 +6,7 @@ from spack import * -class PyGosam(PythonPackage): +class PyGosam(Package): """The package GoSam allows for the automated calculation of one-loop amplitudes for multi-particle processes in renormalizable quantum field theories.""" @@ -16,7 +16,10 @@ class PyGosam(PythonPackage): tags = ['hep'] - version('2.1.1', tag='2.1.1', commit='4b98559212dfcb71f9d983a3a605e4693ac7f83f') + extends('python') + + version('2.1.1', url="https://github.com/gudrunhe/gosam/releases/download/2.1.1/gosam-2.1.1-4b98559.tar.gz", + sha256="4a2b9160d51e3532025b9579a4d17d0e0f8a755b8481aeb8271c1f58eb97ab01") version('2.0.4', sha256='faf621c70f66d9dffc16ac5cce66258067f39f686d722a4867eeb759fcde4f44', url='https://gosam.hepforge.org/downloads/?f=gosam-2.0.4-6d9f1cba.tar.gz') version('2.0.3', tag='v2.0.3', commit='4146ab23a06b7c57c10fb36df60758d34aa58387') @@ -26,9 +29,15 @@ class PyGosam(PythonPackage): depends_on('gosam-contrib', type='link') depends_on('python@2.7.0:2.7', type=('build', 'run'), when='@:2.0.4') depends_on('python@3:', type=('build', 'run'), when='@2.1.1:') - # pip silently replaces distutils with setuptools - depends_on('py-setuptools', type='build') + + phases = ['build', 'install'] def setup_run_environment(self, env): gosam_contrib_lib_dir = self.spec['gosam-contrib'].prefix.lib env.prepend_path('LD_LIBRARY_PATH', gosam_contrib_lib_dir) + + def build(self, spec, prefix): + python('-s', 'setup.py', '--no-user-cfg', 'build') + + def install(self, spec, prefix): + python('-s', 'setup.py', '--no-user-cfg', 'install', '--prefix=' + prefix) diff --git a/var/spack/repos/builtin/packages/py-grpcio/package.py b/var/spack/repos/builtin/packages/py-grpcio/package.py index 41a7bd697ef2e8..8dff157e9e2fb0 100644 --- a/var/spack/repos/builtin/packages/py-grpcio/package.py +++ b/var/spack/repos/builtin/packages/py-grpcio/package.py @@ -12,6 +12,7 @@ class PyGrpcio(PythonPackage): homepage = "https://grpc.io/" pypi = "grpcio/grpcio-1.32.0.tar.gz" + version('1.43.0', sha256='735d9a437c262ab039d02defddcb9f8f545d7009ae61c0114e19dda3843febe5') version('1.42.0', sha256='4a8f2c7490fe3696e0cdd566e2f099fb91b51bc75446125175c55581c2f7bc11') version('1.39.0', sha256='57974361a459d6fe04c9ae0af1845974606612249f467bbd2062d963cb90f407') version('1.38.1', sha256='1f79d8a24261e3c12ec3a6c25945ff799ae09874fd24815bc17c2dc37715ef6c') @@ -32,8 +33,9 @@ class PyGrpcio(PythonPackage): version('1.25.0', sha256='c948c034d8997526011960db54f512756fb0b4be1b81140a15b4ef094c6594a4') version('1.16.0', sha256='d99db0b39b490d2469a8ef74197d5f211fa740fc9581dccecbb76c56d080fce1') - depends_on('python@3.5:', when='@1.30:', type=('build', 'run')) - depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) + depends_on('python@3.6:', when='@1.42:', type=('build', 'link', 'run')) + depends_on('python@3.5:', when='@1.30:', type=('build', 'link', 'run')) + depends_on('python@2.7:2.8,3.5:', type=('build', 'link', 'run')) depends_on('py-setuptools', type='build') depends_on('py-six@1.5.2:', type=('build', 'run')) depends_on('py-futures@2.2.0:', when='^python@:3.1', type=('build', 'run')) @@ -60,8 +62,7 @@ def setup_build_environment(self, env): env.prepend_path('CPATH', query.headers.directories[0]) def patch(self): - if self.spec.satisfies('%fj'): - filter_file("-std=gnu99", "", "setup.py") + filter_file("-std=gnu99", "", "setup.py") # use the spack packages filter_file(r'(\s+SSL_INCLUDE = ).*', diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index ef8957b858603b..0e71e29617e0ec 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -36,38 +36,39 @@ class PyH5py(PythonPackage): variant('mpi', default=True, description='Build with MPI support') # Python versions - depends_on('python@3.6:', type=('build', 'run'), when='@3.0.0:3.1') - depends_on('python@3.7:', type=('build', 'run'), when='@3.2.0:') + depends_on('python@3.6:', type=('build', 'run'), when='@3:3.1') + depends_on('python@3.7:', type=('build', 'run'), when='@3.2:') # Build dependencies depends_on('py-cython@0.23:', type='build', when='@:2') - depends_on('py-cython@0.29:', type=('build'), when='@3.0.0:^python@:3.7') - depends_on('py-cython@0.29.14:', type=('build'), when='@3.0.0:^python@3.8.0:3.8') - depends_on('py-cython@0.29.15:', type=('build'), when='@3.0.0:^python@3.9.0:') + depends_on('py-cython@0.29:', type=('build'), when='@3: ^python@:3.7') + depends_on('py-cython@0.29.14:', type=('build'), when='@3: ^python@3.8.0:3.8') + depends_on('py-cython@0.29.15:', type=('build'), when='@3: ^python@3.9.0:') depends_on('py-pkgconfig', type='build') depends_on('py-setuptools', type='build') - depends_on('py-wheel', type='build', when='@3.0.0:') + depends_on('py-wheel', type='build', when='@3:') # Build and runtime dependencies depends_on('py-cached-property@1.5:', type=('build', 'run'), when='^python@:3.7') depends_on('py-numpy@1.7:', type=('build', 'run'), when='@:2') - depends_on('py-numpy@1.12:', type=('build', 'run'), when='@3.0.0:^python@3.6.0:3.6') - depends_on('py-numpy@1.14.5:', type=('build', 'run'), when='@3.0.0:^python@3.7.0:3.7') - depends_on('py-numpy@1.17.5:', type=('build', 'run'), when='@3.0.0:^python@3.8.0:3.8') - depends_on('py-numpy@1.19.3:', type=('build', 'run'), when='@3.0.0:^python@3.9.0:') + depends_on('py-numpy@1.12:', type=('build', 'run'), when='@3: ^python@3.6.0:3.6') + depends_on('py-numpy@1.14.5:', type=('build', 'run'), when='@3: ^python@3.7.0:3.7') + depends_on('py-numpy@1.17.5:', type=('build', 'run'), when='@3: ^python@3.8.0:3.8') + depends_on('py-numpy@1.19.3:', type=('build', 'run'), when='@3: ^python@3.9.0:') depends_on('py-six', type=('build', 'run'), when='@:2') - # Link dependencies - depends_on('hdf5@1.8.4:1.11+hl', when='@:2') - depends_on('hdf5@1.8.4:+hl', when='@3.0.0:') + # Link dependencies (py-h5py v2 cannot build against HDF5 1.12 regardless + # of API setting) + depends_on('hdf5@1.8.4:1.11 +hl', when='@:2') + depends_on('hdf5@1.8.4: +hl', when='@3:') # MPI dependencies depends_on('hdf5+mpi', when='+mpi') depends_on('mpi', when='+mpi') depends_on('py-mpi4py', when='@:2 +mpi', type=('build', 'run')) - depends_on('py-mpi4py@3.0.0:', when='@3.0.0:3.2+mpi^python@3.0.0:3.7', type=('build', 'run')) - depends_on('py-mpi4py@3.0.2:', when='@3.3.0:+mpi^python@3.0.0:3.7', type=('build', 'run')) - depends_on('py-mpi4py@3.0.3:', when='@3.0.0:+mpi^python@3.8.0:', type=('build', 'run')) + depends_on('py-mpi4py@3:', when='@3:3.2+mpi^python@3:3.7', type=('build', 'run')) + depends_on('py-mpi4py@3.0.2:', when='@3.3.0:+mpi^python@3:3.7', type=('build', 'run')) + depends_on('py-mpi4py@3.0.3:', when='@3:+mpi^python@3.8.0:', type=('build', 'run')) def setup_build_environment(self, env): env.set('HDF5_DIR', self.spec['hdf5'].prefix) diff --git a/var/spack/repos/builtin/packages/py-hepdata-converter/package.py b/var/spack/repos/builtin/packages/py-hepdata-converter/package.py new file mode 100644 index 00000000000000..81cd35c458a8b0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-hepdata-converter/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2022 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 import * + + +class PyHepdataConverter(PythonPackage): + """This Python 3 library provides support for converting + Old HepData input format (sample) to YAML as well as + YAML to ROOT, YODA and CSV.""" + + homepage = "https://github.com/HEPData/hepdata-converter" + pypi = "hepdata-converter/hepdata-converter-0.2.3.tar.gz" + + maintainers = ['haralmha'] + + version('0.2.3', sha256='cbed0ffc512a794fae023650f10f415b687bb8c07fc67ac3321da70ce8846085') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-pyyaml@5.3:', type=('build', 'run')) + depends_on('py-hepdata-validator@0.2.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-httpcore/package.py b/var/spack/repos/builtin/packages/py-httpcore/package.py index e0a4cdb4cc9d09..0fe289a88dc6ea 100644 --- a/var/spack/repos/builtin/packages/py-httpcore/package.py +++ b/var/spack/repos/builtin/packages/py-httpcore/package.py @@ -13,9 +13,13 @@ class PyHttpcore(PythonPackage): homepage = "https://github.com/encode/httpcore" pypi = "httpcore/httpcore-0.11.0.tar.gz" + version('0.14.7', sha256='7503ec1c0f559066e7e39bc4003fd2ce023d01cf51793e3c173b864eb456ead1') version('0.11.0', sha256='35ffc735d746b83f8fc6d36f82600e56117b9e8adc65d0c0423264b6ebfef7bf') - depends_on('py-setuptools', type='build') - depends_on('py-wheel', type='build') - depends_on('py-sniffio@1.0:') - depends_on('py-h11@0.8:0.9') + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-sniffio@1.0:1', type=('build', 'run')) + depends_on('py-h11@0.8:0.9', type=('build', 'run'), when='@0.11.0') + depends_on('py-h11@0.11:0.12', type=('build', 'run'), when='@0.14.7') + depends_on('py-anyio@3.0:3', type=('build', 'run'), when='@0.14.7') + depends_on('py-certifi', type=('build', 'run'), when='@0.14.7:') diff --git a/var/spack/repos/builtin/packages/py-humanize/package.py b/var/spack/repos/builtin/packages/py-humanize/package.py index 5c3afcab74969d..74d5638f3e2396 100644 --- a/var/spack/repos/builtin/packages/py-humanize/package.py +++ b/var/spack/repos/builtin/packages/py-humanize/package.py @@ -16,9 +16,11 @@ class PyHumanize(PythonPackage): homepage = "https://github.com/jmoiron/humanize" pypi = "humanize/humanize-0.5.1.tar.gz" + version('4.0.0', sha256='ee1f872fdfc7d2ef4a28d4f80ddde9f96d36955b5d6b0dac4bdeb99502bddb00') version('3.12.0', sha256='5ec1a66e230a3e31fb3f184aab9436ea13d4e37c168e0ffc345ae5bb57e58be6') version('0.5.1', sha256='a43f57115831ac7c70de098e6ac46ac13be00d69abbf60bdcac251344785bb19') + depends_on('python@3.7:', when='@4:', type=('build', 'run')) depends_on('python@3.6:', when='@3:', type=('build', 'run')) depends_on('python@3.5:', when='@1.1.0:', type=('build', 'run')) depends_on('python@2.7:2,3.5:', when='@1.0.0', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-hypercorn/package.py b/var/spack/repos/builtin/packages/py-hypercorn/package.py new file mode 100644 index 00000000000000..176ad5e325cad4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-hypercorn/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2022 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 import * + + +class PyHypercorn(PythonPackage): + """A ASGI Server based on Hyper libraries and inspired by + Gunicorn.""" + + homepage = "https://gitlab.com/pgjones/hypercorn/" + pypi = "Hypercorn/Hypercorn-0.13.2.tar.gz" + + version('0.13.2', sha256='6307be5cbdf6ba411967d4661202dc4f79bd511b5d318bc4eed88b09418427f8') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-poetry-core@1:', type='build') + depends_on('py-h11', type=('build', 'run')) + depends_on('py-h2@3.1.0:', type=('build', 'run')) + depends_on('py-priority', type=('build', 'run')) + depends_on('py-toml', type=('build', 'run')) + depends_on('py-wsproto@0.14.0:', type=('build', 'run')) + depends_on('py-typing-extensions@3.7.4:', type=('build', 'run'), when='^python@:3.7') diff --git a/var/spack/repos/builtin/packages/py-hyperframe/package.py b/var/spack/repos/builtin/packages/py-hyperframe/package.py index 0193ab249e1aa6..0334b22b0fbc9a 100644 --- a/var/spack/repos/builtin/packages/py-hyperframe/package.py +++ b/var/spack/repos/builtin/packages/py-hyperframe/package.py @@ -13,6 +13,7 @@ class PyHyperframe(PythonPackage): pypi = "hyperframe/hyperframe-6.0.0.tar.gz" version('6.0.0', sha256='742d2a4bc3152a340a49d59f32e33ec420aa8e7054c1444ef5c7efff255842f1') + version('5.2.0', sha256='a9f5c17f2cc3c719b917c4f33ed1c61bd1f8dfac4b1bd23b7c80b3400971b41f') + depends_on('python@3.6.1:', type=('build', 'run'), when="@6:") depends_on('py-setuptools', type='build') - depends_on('py-wheel', type='build') diff --git a/var/spack/repos/builtin/packages/py-imageio/package.py b/var/spack/repos/builtin/packages/py-imageio/package.py index 5da21c054260ed..214b9b22d457ea 100644 --- a/var/spack/repos/builtin/packages/py-imageio/package.py +++ b/var/spack/repos/builtin/packages/py-imageio/package.py @@ -17,6 +17,7 @@ class PyImageio(PythonPackage): homepage = "https://github.com/imageio/imageio" pypi = "imageio/imageio-2.3.0.tar.gz" + version('2.16.0', sha256='7f7d8d8e1eb6f8bb1d15e0dd93bee3f72026a4c3b96e9c690e42f403f7bdea3e') version('2.10.3', sha256='469c59fe71c81cdc41c84f842d62dd2739a08fac8cb85f5a518a92a6227e2ed6') version('2.9.0', sha256='52ddbaeca2dccf53ba2d6dec5676ca7bc3b2403ef8b37f7da78b7654bb3e10f0') version('2.5.0', sha256='42e65aadfc3d57a1043615c92bdf6319b67589e49a0aae2b985b82144aceacad') @@ -29,6 +30,7 @@ class PyImageio(PythonPackage): depends_on('python@3.5:', when='@2.9.0:', type=('build', 'run')) depends_on('python@2.7:2.8,3.4:', when='@:2.5.0', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.20:', when='@2.16:', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) depends_on('pil@8.3.2:', when='@2.10:', type=('build', 'run')) depends_on('pil', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-importlib-metadata/package.py b/var/spack/repos/builtin/packages/py-importlib-metadata/package.py index 8e879f96b127ff..2b2b7698ee022a 100644 --- a/var/spack/repos/builtin/packages/py-importlib-metadata/package.py +++ b/var/spack/repos/builtin/packages/py-importlib-metadata/package.py @@ -12,25 +12,29 @@ class PyImportlibMetadata(PythonPackage): homepage = "https://importlib-metadata.readthedocs.io/" pypi = "importlib_metadata/importlib_metadata-1.2.0.tar.gz" + version('4.11.1', sha256='175f4ee440a0317f6e8d81b7f8d4869f93316170a65ad2b007d2929186c8052c') version('4.8.2', sha256='75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb') version('4.8.1', sha256='f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1') version('4.6.1', sha256='079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac') version('3.10.1', sha256='c9356b657de65c53744046fa8f7358afe0714a1af7d570c00c3835c2d724a7c1') version('3.10.0', sha256='c9db46394197244adf2f0b08ec5bc3cf16757e9590b02af1fca085c16c0d600a') version('2.0.0', sha256='77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da') + version('1.7.0', sha256='90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83') version('1.2.0', sha256='41e688146d000891f32b1669e8573c57e39e5060e7f5f647aa617cd9a9568278') version('0.23', sha256='aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26') version('0.19', sha256='23d3d873e008a513952355379d93cbcab874c58f4f034ff657c7a87422fa64e8') version('0.18', sha256='cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db') - depends_on('python@3.6:', type=('build', 'run'), when='@3:') + depends_on('python@3.7:', when='@4.9:', type=('build', 'run')) + depends_on('python@3.6:', when='@3:', type=('build', 'run')) depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) + depends_on('py-setuptools@56:', when='@4.6.4:', type='build') depends_on('py-setuptools', type='build') - depends_on('py-setuptools@56:', type='build', when='@4.6.4:') + depends_on('py-setuptools-scm@3.4.1:+toml', when='@3:', type='build') depends_on('py-setuptools-scm', type='build') - depends_on('py-setuptools-scm@3.4.1:+toml', type='build', when='@3:') depends_on('py-zipp@0.5:', type=('build', 'run')) + depends_on('py-typing-extensions@3.6.4:', when='@3: ^python@:3.7', type=('build', 'run')) + depends_on('py-pathlib2', when='^python@:2', type=('build', 'run')) depends_on('py-contextlib2', when='^python@:2', type=('build', 'run')) depends_on('py-configparser@3.5:', when='^python@:2', type=('build', 'run')) - depends_on('py-typing-extensions@3.6.4:', type=('build', 'run'), when='@3: ^python@:3.7') diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 11c25b10727858..d4f4a23c165d0e 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -10,7 +10,8 @@ class PyIpykernel(PythonPackage): homepage = "https://github.com/ipython/ipykernel" pypi = "ipykernel/ipykernel-5.3.4.tar.gz" - version('6.4.1', sha256='df3355e5eec23126bc89767a676c5f0abfc7f4c3497d118c592b83b316e8c0cd') + version('6.9.1', sha256='f95070a2dfd3147f8ab19f18ee46733310813758593745e07ec18fb08b409f1d') + version('6.4.1', sha256='df3355e5eec23126bc89767a676c5f0abfc7f4c3497d118c592b83b316e8c0cd') version('6.2.0', sha256='4439459f171d77f35b7f7e72dace5d7c2dd10a5c9e2c22b173ad9048fbfe7656') version('6.0.2', sha256='7fb3e370dbb481b012b74bed4e794d2d16eb2a83930b31e6d8d030b9fdb4d5b4') version('5.5.6', sha256='4ea44b90ae1f7c38987ad58ea0809562a17c2695a0499644326f334aecd369ec') @@ -30,30 +31,34 @@ class PyIpykernel(PythonPackage): version('4.1.1', sha256='d8c5555386d0f18f1336dea9800f9f0fe96dcecc9757c0f980e11fdfadb661ff') version('4.1.0', sha256='e0e150ad55e487e49054efc9a4b0e2e17f27e1de77444b26760789077b146d86') - depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) - depends_on('python@3.4:', when='@5.0:', type=('build', 'run')) - depends_on('python@3.5:', when='@5.2:', type=('build', 'run')) depends_on('python@3.7:', when='@6.0:', type=('build', 'run')) - depends_on('py-setuptools', type='build', when='@5:') + depends_on('python@3.5:', when='@5.2:', type=('build', 'run')) + depends_on('python@3.4:', when='@5.0:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) + depends_on('py-setuptools', when='@5:', type='build') + depends_on('py-jupyter-core@4.2:', when='@5:', type='build') + depends_on('py-ipython-genutils', when='@6.3.1:6.4', type=('build', 'run')) depends_on('py-ipython-genutils', when='@5.5.6', type=('build', 'run')) - depends_on('py-ipython-genutils', when='@6.3.1:', type=('build', 'run')) - depends_on('py-importlib-metadata@:3', when='@6:^python@:3.7', type=('build', 'run')) - depends_on('py-importlib-metadata@:4', when='@6.1:^python@:3.7', type=('build', 'run')) - depends_on('py-argcomplete@1.12.3:', when='@6.1:^python@:3.7', type=('build', 'run')) + depends_on('py-importlib-metadata@:4', when='@6.1:6.6 ^python@:3.7', type=('build', 'run')) + depends_on('py-importlib-metadata@:3', when='@6.0.0:6.0 ^python@:3.7', type=('build', 'run')) + depends_on('py-argcomplete@1.12.3:', when='@6.1:6.6 ^python@:3.7', type=('build', 'run')) depends_on('py-debugpy@1.0:1', when='@6:', type=('build', 'run')) - depends_on('py-ipython@4.0:', when='@:4', type=('build', 'run')) + depends_on('py-ipython@7.23.1:', when='@6.5.1:', type=('build', 'run')) + depends_on('py-ipython@7.23.1:7', when='@6.0.0:6.5.0', type=('build', 'run')) depends_on('py-ipython@5.0:', when='@5', type=('build', 'run')) - depends_on('py-ipython@7.23.1:7', when='@6:', type=('build', 'run')) + depends_on('py-ipython@4.0:', when='@:4', type=('build', 'run')) + depends_on('py-traitlets@5.1.0:5', when='@6.5:', type=('build', 'run')) + depends_on('py-traitlets@4.1.0:5', when='@6.0:6.4', type=('build', 'run')) depends_on('py-traitlets@4.1.0:', type=('build', 'run')) - depends_on('py-traitlets@4.1.0:5', when='@6:', type=('build', 'run')) - depends_on('py-jupyter-client', type=('build', 'run')) - depends_on('py-jupyter-client@:6', when='@6.0.2:6.1', type=('build', 'run')) depends_on('py-jupyter-client@:7', when='@6.2:', type=('build', 'run')) - depends_on('py-tornado@4.0:', when='@:4', type=('build', 'run')) - depends_on('py-tornado@4.2:', when='@5', type=('build', 'run')) + depends_on('py-jupyter-client@:6', when='@6.0.2:6.1', type=('build', 'run')) + depends_on('py-jupyter-client', type=('build', 'run')) depends_on('py-tornado@4.2:6', when='@6:', type=('build', 'run')) + depends_on('py-tornado@4.2:', when='@5', type=('build', 'run')) + depends_on('py-tornado@4:', when='@:4', type=('build', 'run')) depends_on('py-matplotlib-inline@0.1.0:0.1', when='@6:', type=('build', 'run')) - depends_on('py-appnope', when='platform=darwin', type=('build', 'run')) + depends_on('py-appnope', when='@5.1.3: platform=darwin', type=('build', 'run')) + depends_on('py-nest-asyncio', when='@6.6.1:', type=('build', 'run')) @run_after('install') def install_data(self): diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index b33b0fdc103378..e04861955fc66a 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -11,18 +11,7 @@ class PyIpython(PythonPackage): homepage = "https://ipython.readthedocs.org/" pypi = "ipython/ipython-7.18.1.tar.gz" - # 'IPython.kernel' is deprecated and fails to import, leave out of 'import_modules' - # to ensure that import tests pass. - import_modules = [ - 'IPython', 'IPython.core', 'IPython.core.tests', 'IPython.core.magics', - 'IPython.sphinxext', 'IPython.terminal', - 'IPython.terminal.pt_inputhooks', 'IPython.terminal.tests', - 'IPython.utils', 'IPython.utils.tests', 'IPython.extensions', - 'IPython.extensions.tests', 'IPython.testing', 'IPython.testing.tests', - 'IPython.testing.plugin', 'IPython.lib', 'IPython.lib.tests', - 'IPython.external', 'IPython.external.decorators' - ] - + version('8.0.1', sha256='ab564d4521ea8ceaac26c3a2c6e5ddbca15c8848fd5a5cc325f960da88d42974') version('7.28.0', sha256='2097be5c814d1b974aea57673176a924c4c8c9583890e7a5f082f547b9975b11') version('7.27.0', sha256='58b55ebfdfa260dad10d509702dc2857cb25ad82609506b070cf2d7b7df5af13') version('7.26.0', sha256='0cff04bb042800129348701f7bd68a430a844e8fb193979c08f6c99f28bb735e') @@ -35,31 +24,51 @@ class PyIpython(PythonPackage): version('3.1.0', sha256='532092d3f06f82b1d8d1e5c37097eae19fcf025f8f6a4b670dd49c3c338d5624') version('2.3.1', sha256='3e98466aa2fe54540bcba9aa6e01a39f40110d67668c297340c4b9514b7cc49c') - depends_on('python@3.7:', type=('build', 'run'), when='@7.17:') - depends_on('python@3.6:', type=('build', 'run'), when='@7.10:') - depends_on('python@3.5:', type=('build', 'run'), when='@7:') - depends_on('python@3.3:', type=('build', 'run'), when='@6:') + depends_on('python@3.8:', when='@8:', type=('build', 'run')) + depends_on('python@3.7:', when='@7.17:', type=('build', 'run')) + depends_on('python@3.6:', when='@7.10:', type=('build', 'run')) + depends_on('python@3.5:', when='@7:', type=('build', 'run')) + depends_on('python@3.3:', when='@6:', type=('build', 'run')) depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) - depends_on('py-setuptools@18.5:', type='run', when='@4.1:') - depends_on('py-jedi@0.10:', type=('build', 'run'), when='@7.5:7.17,7.19') - depends_on('py-jedi@0.16:', type=('build', 'run'), when='@7.18,7.20:') + depends_on('py-setuptools@51:', when='@8:', type='build') + depends_on('py-setuptools@18.5:', when='@4.1:', type='run') + depends_on('py-jedi@0.16:', when='@7.18,7.20:', type=('build', 'run')) + depends_on('py-jedi@0.10:', when='@7.5:7.17,7.19', type=('build', 'run')) + depends_on('py-black', when='@8:', type=('build', 'run')) depends_on('py-decorator', type=('build', 'run')) depends_on('py-pickleshare', type=('build', 'run')) + depends_on('py-traitlets@5:', when='@8:', type=('build', 'run')) depends_on('py-traitlets@4.2:', type=('build', 'run')) - depends_on('py-prompt-toolkit@1.0.4:1', when='@:7.0.0', type=('build', 'run')) - depends_on('py-prompt-toolkit@2.0.0:2', when='@7.0.0:7.5.0', type=('build', 'run')) - depends_on('py-prompt-toolkit@2.0.0:2.0', when='@7.5.0', type=('build', 'run')) - depends_on('py-prompt-toolkit@3.0.2:3.0', when='@7.18:7.25', type=('build', 'run')) depends_on('py-prompt-toolkit@2.0.0:2,3.0.2:3.0', when='@7.26:', type=('build', 'run')) + depends_on('py-prompt-toolkit@3.0.2:3.0', when='@7.18:7.25', type=('build', 'run')) + depends_on('py-prompt-toolkit@2.0.0:2.0', when='@7.5.0', type=('build', 'run')) + depends_on('py-prompt-toolkit@2.0.0:2', when='@7.0.0:7.5.0', type=('build', 'run')) + depends_on('py-prompt-toolkit@1.0.4:1', when='@:7.0.0', type=('build', 'run')) depends_on('py-pygments', type=('build', 'run')) - depends_on('py-backcall', type=('build', 'run'), when='@7.3.0:') + depends_on('py-backcall', when='@7.3.0:', type=('build', 'run')) + depends_on('py-stack-data', when='@8:', type=('build', 'run')) depends_on('py-matplotlib-inline', when='@7.23:', type=('build', 'run')) + depends_on('py-pexpect@4.4:', when='@7.18: platform=linux', type=('build', 'run')) + depends_on('py-pexpect@4.4:', when='@7.18: platform=darwin', type=('build', 'run')) + depends_on('py-pexpect@4.4:', when='@7.18: platform=cray', type=('build', 'run')) depends_on('py-pexpect', type=('build', 'run')) - depends_on('py-pexpect@4.4:', type=('build', 'run'), when='@7.18: platform=linux') - depends_on('py-pexpect@4.4:', type=('build', 'run'), when='@7.18: platform=darwin') - depends_on('py-pexpect@4.4:', type=('build', 'run'), when='@7.18: platform=cray') - depends_on('py-appnope', type=('build', 'run'), when='platform=darwin') + depends_on('py-appnope', when='platform=darwin', type=('build', 'run')) depends_on('py-colorama', when='platform=windows', type=('build', 'run')) - depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'), when="^python@:3.2") - depends_on('py-pathlib2', type=('build', 'run'), when="^python@:3.3") - depends_on('py-simplegeneric@0.8:', type=('build', 'run'), when='@:7.0.0') + + depends_on('py-backports-shutil-get-terminal-size', when="^python@:3.2", type=('build', 'run')) + depends_on('py-pathlib2', when="^python@:3.3", type=('build', 'run')) + depends_on('py-simplegeneric@0.8:', when='@:7.0.0', type=('build', 'run')) + + @property + def import_modules(self): + modules = super(__class__, self).import_modules + + if self.spec.satisfies('@8:'): + return modules + + # 'IPython.kernel' is deprecated and fails to import, leave out of + # 'import_modules' to ensure that import tests pass. + ignored_imports = ["IPython.kernel"] + + return [i for i in modules + if not any(map(i.startswith, ignored_imports))] diff --git a/var/spack/repos/builtin/packages/py-iso8601/package.py b/var/spack/repos/builtin/packages/py-iso8601/package.py index f85e1ba17d5d58..0f0adeac8ceacf 100644 --- a/var/spack/repos/builtin/packages/py-iso8601/package.py +++ b/var/spack/repos/builtin/packages/py-iso8601/package.py @@ -9,9 +9,13 @@ class PyIso8601(PythonPackage): """Simple module to parse ISO 8601 dates""" - homepage = "https://pyiso8601.readthedocs.io/en/latest/" + homepage = "https://github.com/micktwomey/pyiso8601" pypi = "iso8601/iso8601-0.1.14.tar.gz" + version('1.0.2', sha256='27f503220e6845d9db954fb212b95b0362d8b7e6c1b2326a87061c3de93594b1') version('0.1.14', sha256='8aafd56fa0290496c5edbb13c311f78fa3a241f0853540da09d9363eae3ebd79') - depends_on('py-setuptools', type='build') + depends_on('python@3.6.2:3', when='@1:', type=('build', 'run')) + depends_on('py-poetry-core@1:', when='@1:', type='build') + + depends_on('py-setuptools', when='@:0', type='build') diff --git a/var/spack/repos/builtin/packages/py-isodate/package.py b/var/spack/repos/builtin/packages/py-isodate/package.py index f78588a990dc65..e4776801badec2 100644 --- a/var/spack/repos/builtin/packages/py-isodate/package.py +++ b/var/spack/repos/builtin/packages/py-isodate/package.py @@ -15,6 +15,7 @@ class PyIsodate(PythonPackage): homepage = "https://github.com/gweis/isodate/" pypi = "isodate/isodate-0.6.0.tar.gz" + version('0.6.1', sha256='48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9') version('0.6.0', sha256='2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jaconv/package.py b/var/spack/repos/builtin/packages/py-jaconv/package.py new file mode 100644 index 00000000000000..319a760a891a16 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jaconv/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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 import * + + +class PyJaconv(PythonPackage): + """jaconv (Japanese Converter) is interconverter for + Hiragana, Katakana, Hankaku (half-width character) and + Zenkaku (full-width character)""" + + homepage = "https://github.com/ikegami-yukino/jaconv" + pypi = "jaconv/jaconv-0.3.tar.gz" + + version('0.3', sha256='cc70c796c19a6765598c03eac59d1399a555a9a8839cc70e540ec26f0ec3e66e') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jamo/package.py b/var/spack/repos/builtin/packages/py-jamo/package.py new file mode 100644 index 00000000000000..3272703716207a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jamo/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PyJamo(PythonPackage): + """Python-jamo is a Python Hangul syllable decomposition + and synthesis library for working with Hangul characters + and jamo.""" + + homepage = "https://github.com/jdongian/python-jamo" + pypi = "jamo/jamo-0.4.1.tar.gz" + + version('0.4.1', sha256='ea65cf9d35338d0e0af48d75ff426d8a369b0ebde6f07051c3ac37256f56d025') + + depends_on('python@3:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jedi/package.py b/var/spack/repos/builtin/packages/py-jedi/package.py index 665698bf6dd09a..31cf4f9fa95aac 100644 --- a/var/spack/repos/builtin/packages/py-jedi/package.py +++ b/var/spack/repos/builtin/packages/py-jedi/package.py @@ -12,6 +12,7 @@ class PyJedi(PythonPackage): homepage = "https://github.com/davidhalter/jedi" pypi = "jedi/jedi-0.9.0.tar.gz" + version('0.18.1', sha256='74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab') version('0.18.0', sha256='92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707') version('0.17.2', sha256='08d43addcbd656ed07e929631f8071eec567092bf16f2c19fc7bc272a97a77ef') version('0.17.1', sha256='807d5d4f96711a2bcfdd5dfa3b1ae6d09aa53832b182090b222b5efb81f52f63') @@ -34,13 +35,16 @@ class PyJedi(PythonPackage): depends_on('py-setuptools', type=('build', 'run')) - depends_on('python@2.6:2.8,3.2:', type=('build', 'run'), when='@0.9.0') - depends_on('python@2.6:2.8,3.3:', type=('build', 'run'), when='@0.10.0') - depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@0.13.3') - depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@0.17.2') - depends_on('python@3.6:', type=('build', 'run'), when='@0.18.0') + depends_on('python@2.6:2.8,3.2:', type=('build', 'run'), when='@0.9.0:') + depends_on('python@2.6:2.8,3.3:', type=('build', 'run'), when='@0.10.0:') + depends_on('python@2.7:2.8,3.3:', type=('build', 'run'), when='@0.12.0:') + depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@0.13.3:') + depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@0.17.0:') + depends_on('python@3.6:', type=('build', 'run'), when='@0.18.0:') depends_on('py-parso@0.2.0:', type=('build', 'run'), when='@0.12.0') depends_on('py-parso@0.3.0:', type=('build', 'run'), when='@0.12.1:0.14.0') - depends_on('py-parso@0.7.0:0.7', type=('build', 'run'), when='@0.17.2') - depends_on('py-parso@0.8.0:0.8', type=('build', 'run'), when='@0.18.0') + depends_on('py-parso@0.5.0:', type=('build', 'run'), when='@0.14.1:0.15.1') + depends_on('py-parso@0.5.2:', type=('build', 'run'), when='@0.15.2:0.16') + depends_on('py-parso@0.7', type=('build', 'run'), when='@0.17') + depends_on('py-parso@0.8', type=('build', 'run'), when='@0.18.0:') diff --git a/var/spack/repos/builtin/packages/py-joblib/package.py b/var/spack/repos/builtin/packages/py-joblib/package.py index 09cd859e402c0f..e7c7612eeebb3c 100644 --- a/var/spack/repos/builtin/packages/py-joblib/package.py +++ b/var/spack/repos/builtin/packages/py-joblib/package.py @@ -19,6 +19,7 @@ class PyJoblib(PythonPackage): 'joblib.externals.loky', 'joblib.externals.loky.backend' ] + version('1.1.0', sha256='4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35') version('1.0.1', sha256='9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7') version('1.0.0', sha256='7ad866067ac1fdec27d51c8678ea760601b70e32ff1881d4dc8e1171f2b64b24') version('0.17.0', sha256='9e284edd6be6b71883a63c9b7f124738a3c16195513ad940eae7e3438de885d5') diff --git a/var/spack/repos/builtin/packages/py-json5/package.py b/var/spack/repos/builtin/packages/py-json5/package.py index e6b7005d76dee5..c07b3c34717254 100644 --- a/var/spack/repos/builtin/packages/py-json5/package.py +++ b/var/spack/repos/builtin/packages/py-json5/package.py @@ -14,6 +14,7 @@ class PyJson5(PythonPackage): homepage = "https://github.com/dpranke/pyjson5" pypi = "json5/json5-0.9.4.tar.gz" + version('0.9.6', sha256='9175ad1bc248e22bb8d95a8e8d765958bf0008fef2fe8abab5bc04e0f1ac8302') version('0.9.4', sha256='2ebfad1cd502dca6aecab5b5c36a21c732c3461ddbc412fb0e9a52b07ddfe586') depends_on('py-setuptools', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jsonschema/package.py b/var/spack/repos/builtin/packages/py-jsonschema/package.py index 978e934c0b762f..52c3f893fa865b 100644 --- a/var/spack/repos/builtin/packages/py-jsonschema/package.py +++ b/var/spack/repos/builtin/packages/py-jsonschema/package.py @@ -12,6 +12,7 @@ class PyJsonschema(PythonPackage): homepage = "https://github.com/Julian/jsonschema" pypi = "jsonschema/jsonschema-3.2.0.tar.gz" + version('4.4.0', sha256='636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83') version('3.2.0', sha256='c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a') version('3.1.1', sha256='2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f') version('3.0.2', sha256='8d4a2b7b6c2237e0199c8ea1a6d3e05bf118e289ae2b9d7ba444182a2959560d') @@ -19,17 +20,24 @@ class PyJsonschema(PythonPackage): version('2.6.0', sha256='6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02') version('2.5.1', sha256='36673ac378feed3daa5956276a829699056523d7961027911f064b52255ead41') - depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) + depends_on('python@3.7:', when='@4:', type=('build', 'run')) depends_on('python@2.7:2.8,3.5:', when='@3:', type=('build', 'run')) + depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) - depends_on('py-setuptools', type='build', when='@:2') - depends_on('py-setuptools', type=('build', 'run'), when='@3:') - depends_on('py-vcversioner', type='build', when='@:2') - depends_on('py-setuptools-scm', type='build', when='@3:') - - depends_on('py-functools32', when="^python@:2", type=('build', 'run')) - depends_on('py-attrs@17.4.0:', when='@3:', type=('build', 'run')) - depends_on('py-pyrsistent@0.14.0:', when='@3:', type=('build', 'run')) - depends_on('py-six@1.11.0:', when='@3:', type=('build', 'run')) + depends_on('py-setuptools@40.6.0:', when='@4:', type='build') + depends_on('py-setuptools', when='@3', type=('build', 'run')) + depends_on('py-setuptools', when='@:2', type='build') + depends_on('py-vcversioner', when='@:2', type='build') + depends_on('py-setuptools-scm+toml@3.4:', when='@4:', type='build') + depends_on('py-setuptools-scm', when='@3', type='build') + depends_on('py-attrs@17.4:', when='@3:', type=('build', 'run')) depends_on('py-importlib-metadata', when='@3.1.1: ^python@:3.7', type=('build', 'run')) + depends_on('py-importlib-resources@1.4:', when='@4.2.1: ^python@:3.8', type=('build', 'run')) + depends_on('py-importlib-resources', when='@4.2.0 ^python@:3.8', type=('build', 'run')) + depends_on('py-pyrsistent@0.14:0.16,0.17.3:', when='@4:', type=('build', 'run')) + depends_on('py-pyrsistent@0.14:', when='@3', type=('build', 'run')) + depends_on('py-typing-extensions', when='@4.3: ^python@:3.7', type=('build', 'run')) + + depends_on('py-six@1.11:', when='@3', type=('build', 'run')) + depends_on('py-functools32', when="^python@:2", type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py index aa197a19c82af2..799aeecf85a371 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py @@ -10,6 +10,7 @@ class PyJupyterClient(PythonPackage): homepage = "https://github.com/jupyter/jupyter_client" pypi = "jupyter-client/jupyter_client-6.1.7.tar.gz" + version('7.1.2', sha256='4ea61033726c8e579edb55626d8ee2e6bf0a83158ddf3751b8dd46b2c5cd1e96') version('7.0.6', sha256='8b6e06000eb9399775e0a55c52df6c1be4766666209c22f90c2691ded0e338dc') version('6.1.12', sha256='c4bca1d0846186ca8be97f4d2fa6d2bae889cce4892a167ffa1ba6bd1f73e782') version('6.1.7', sha256='49e390b36fe4b4226724704ea28d9fb903f1a3601b6882ce3105221cd09377a1') @@ -29,11 +30,12 @@ class PyJupyterClient(PythonPackage): depends_on('python@3.5:', type=('build', 'run'), when='@6:') depends_on('python@3.6.1:', type=('build', 'run'), when='@6.2:') depends_on('py-setuptools', type=('build', 'run'), when='@5:') - depends_on('py-traitlets', type=('build', 'run')) + + depends_on('py-entrypoints', type=('build', 'run'), when='@7:') depends_on('py-jupyter-core', type=('build', 'run')) depends_on('py-jupyter-core@4.6.0:', type=('build', 'run'), when='@6:') - depends_on('py-pyzmq@13:', type=('build', 'run')) + depends_on('py-nest-asyncio@1.5:', type=('build', 'run'), when='@6.1.13:') depends_on('py-python-dateutil@2.1:', type=('build', 'run'), when='@5:') + depends_on('py-pyzmq@13:', type=('build', 'run')) depends_on('py-tornado@4.1:', type=('build', 'run'), when='@5:') - depends_on('py-nest-asyncio@1.5:', type=('build', 'run'), when='@6.1.13:') - depends_on('py-entrypoints', type=('build', 'run'), when='@7:') + depends_on('py-traitlets', type=('build', 'run')) 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 3a235980caff2e..7b600163df561d 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -12,6 +12,7 @@ class PyJupyterCore(PythonPackage): homepage = "https://jupyter-core.readthedocs.io/" pypi = "jupyter-core/jupyter_core-4.6.0.tar.gz" + version('4.9.2', sha256='d69baeb9ffb128b8cd2657fcf2703f89c769d1673c851812119e3a2a0e93ad9a') version('4.7.1', sha256='79025cb3225efcd36847d0840f3fc672c0abd7afd0de83ba8a1d3837619122b4') version('4.6.3', sha256='394fd5dd787e7c8861741880bdf8a00ce39f95de5d18e579c74b882522219e7e') version('4.6.1', sha256='a183e0ec2e8f6adddf62b0a3fc6a2237e3e0056d381e536d3e7c7ecc3067e244') diff --git a/var/spack/repos/builtin/packages/py-jupyter-server/package.py b/var/spack/repos/builtin/packages/py-jupyter-server/package.py index f5c93159748ff6..ee3ceeab8f85c8 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-server/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-server/package.py @@ -14,36 +14,7 @@ class PyJupyterServer(PythonPackage): homepage = "https://github.com/jupyter-server/jupyter_server" pypi = "jupyter_server/jupyter_server-1.9.0.tar.gz" - import_modules = ['jupyter_server', 'jupyter_server.services', - 'jupyter_server.services.contents', - 'jupyter_server.services.kernels', - 'jupyter_server.services.config' - 'jupyter_server.services.security', - 'jupyter_server.services.sessions', - 'jupyter_server.services.nbconvert', - 'jupyter_server.services.api', - 'jupyter_server.services.kernelspecs', - 'jupyter_server.auth', 'jupyter_server.tests', - 'jupyter_server.tests.services', - 'jupyter_server.tests.services.contents', - 'jupyter_server.tests.services.kernels', - 'jupyter_server.tests.services.config', - 'jupyter_server.tests.services.sessions', - 'jupyter_server.tests.services.nbconvert', - 'jupyter_server.tests.services.api', - 'jupyter_server.tests.services.kernelspecs', - 'jupyter_server.tests.auth', - 'jupyter_server.tests.unix_sockets', - 'jupyter_server.tests.extension', - 'jupyter_server.tests.extension.mockextensions', - 'jupyter_server.tests.nbconvert', - 'jupyter_server.terminal', 'jupyter_server.i18n', - 'jupyter_server.base', 'jupyter_server.gateway', - 'jupyter_server.extension', - 'jupyter_server.prometheus', 'jupyter_server.view', - 'jupyter_server.nbconvert', - 'jupyter_server.files', 'jupyter_server.kernelspecs'] - + version('1.13.5', sha256='9e3e9717eea3bffab8cfb2ff330011be6c8bbd9cdae5b71cef169fcece2f19d3') version('1.11.2', sha256='c1f32e0c1807ab2de37bf70af97a36b4436db0bc8af3124632b1f4441038bf95') version('1.11.1', sha256='ab7ab1cc38512f15026cbcbb96300fb46ec8b24aa162263d9edd00e0a749b1e8') version('1.11.0', sha256='8ab4f484a4a2698f757cff0769d27b5d991e0232a666d54f4d6ada4e6a61330b') @@ -51,6 +22,7 @@ class PyJupyterServer(PythonPackage): version('1.9.0', sha256='7d19006380f6217458a9db309b54e3dab87ced6c06329c61823907bef2a6f51b') version('1.6.1', sha256='242ddd0b644f10e030f917019b47c381e0f2d2b950164af45cbd791d572198ac') + depends_on('python@3.7:', when='@1.13.2:', type=('build', 'run')) depends_on('python@3.6:', type=('build', 'run')) # TODO: replace this after concretizer learns how to concretize separate build deps depends_on('py-jupyter-packaging11', when='@1.6.2:', type='build') @@ -61,6 +33,7 @@ class PyJupyterServer(PythonPackage): depends_on('py-pyzmq@17:', type=('build', 'run')) depends_on('py-argon2-cffi', type=('build', 'run')) depends_on('py-ipython-genutils', type=('build', 'run')) + depends_on('py-traitlets@5:', when='@1.13.3:', type=('build', 'run')) depends_on('py-traitlets@4.2.1:', type=('build', 'run')) depends_on('py-jupyter-core@4.6.0:', type=('build', 'run')) depends_on('py-jupyter-client@6.1.1:', type=('build', 'run')) @@ -71,4 +44,6 @@ class PyJupyterServer(PythonPackage): depends_on('py-prometheus-client', type=('build', 'run')) depends_on('py-anyio@3.1.0:3', type=('build', 'run')) depends_on('py-websocket-client', type=('build', 'run')) - depends_on('py-requests-unixsocket', type=('build', 'run'), when='@:1.11.1') + depends_on('py-packaging', when='@1.13.2:', type=('build', 'run')) + # for windows depends_on pywinpty@:1, when='@1.13.2:' + depends_on('py-requests-unixsocket', when='@:1.11.1', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py b/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py index e8811cc16fcbe6..356a1a94a4dd38 100644 --- a/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py +++ b/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py @@ -11,6 +11,7 @@ class PyJupyterlabServer(PythonPackage): homepage = "https://github.com/jupyterlab/jupyterlab_server" pypi = "jupyterlab_server/jupyterlab_server-1.2.0.tar.gz" + version('2.10.3', sha256='3fb84a5813d6d836ceda773fb2d4e9ef3c7944dbc1b45a8d59d98641a80de80a') version('2.6.0', sha256='f300adf6bb0a952bebe9c807a3b2a345d62da39b476b4f69ea0dc6b5f3f6b97d') version('1.2.0', sha256='5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c') version('1.1.0', sha256='bac27e2ea40f686e592d6429877e7d46947ea76c08c878081b028c2c89f71733') @@ -22,11 +23,12 @@ class PyJupyterlabServer(PythonPackage): depends_on('py-jupyter-packaging11', type='build') # depends_on('py-jupyter-packaging@0.9:0', type='build') - depends_on('py-requests', type=('build', 'run')) + depends_on('py-babel', when='@2.5.1:', type=('build', 'run')) + depends_on('py-entrypoints@0.2.2:', when='@2.7:', type=('build', 'run')) + depends_on('py-jinja2@2.10:', type=('build', 'run')) depends_on('py-json5', type=('build', 'run')) depends_on('py-jsonschema@3.0.1:', type=('build', 'run')) - depends_on('py-jinja2@2.10:', type=('build', 'run')) - depends_on('py-babel', when='@2.5.1:', type=('build', 'run')) depends_on('py-packaging', when='@2.5.1:', type=('build', 'run')) + depends_on('py-requests', type=('build', 'run')) depends_on('py-jupyter-server@1.4:1', when='@2.5.1:', type=('build', 'run')) depends_on('py-notebook@4.2.0:', when='@:2.5.0', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyterlab/package.py b/var/spack/repos/builtin/packages/py-jupyterlab/package.py index cab2b62951e2c8..4bdcc0d9ae5ecb 100644 --- a/var/spack/repos/builtin/packages/py-jupyterlab/package.py +++ b/var/spack/repos/builtin/packages/py-jupyterlab/package.py @@ -14,7 +14,9 @@ class PyJupyterlab(PythonPackage): # Skip 'jupyterlab.tests' packages import_modules = ['jupyterlab', 'jupyterlab.handlers'] + version('3.2.9', sha256='65ddc34e5da1a764606e38c4f70cf9d4ac1c05182813cf0ab2dfea312c701124') version('3.2.1', sha256='54466941bcd9b52f23373a32038fbb4e50fd652d4536df6179b53e1ffb8ef431') + version('3.1.19', sha256='8853a6fa16179ae24b6277541b1619593e0e99da10b380cd72f391b549f59705') version('3.1.18', sha256='a43733acc3729557fc4758cff55652e52896e42c64c1f12540656ae7f298b806') version('3.1.14', sha256='13174cb6076dd5da6f1b85725ccfcc9518d8f98e86b8b644fc89b1dfaeda63a9') version('3.0.18', sha256='0e4bb4b89014607a16658b54f13df2f0af14f3c286109a0e14d5a46cbbe28caf') diff --git a/var/spack/repos/builtin/packages/py-jupytext/package.py b/var/spack/repos/builtin/packages/py-jupytext/package.py index cd777602b4440b..bf82e4e8d5f140 100644 --- a/var/spack/repos/builtin/packages/py-jupytext/package.py +++ b/var/spack/repos/builtin/packages/py-jupytext/package.py @@ -16,11 +16,19 @@ class PyJupytext(PythonPackage): maintainers = ['vvolkl'] + version('1.13.6', sha256='c6c25918ddb6403d0d8504e08d35f6efc447baf0dbeb6a28b73adf39e866a0c4') version('1.13.0', sha256='fb220af65d2bd32d01c779b0e935c4c2b71e3f5f2f01bf1bab10d5f23fe121d4') - depends_on('py-setuptools', type='build') + depends_on('python@3.6:3', type=('build', 'run')) + depends_on('py-setuptools@40.8.0:', type='build') depends_on('py-nbformat', type=('build', 'run')) depends_on('py-pyyaml', type=('build', 'run')) depends_on('py-toml', type=('build', 'run')) depends_on('py-mdit-py-plugins', type=('build', 'run')) depends_on('py-markdown-it-py@1.0:1', type=('build', 'run')) + # todo: in order to use jupytext as a jupyterlab extension, + # some additional dependencies need to be added (and checked): + depends_on('py-jupyterlab@3', type=('build', 'run')) + # TODO: replace this after concretizer learns how to concretize separate build deps + depends_on('py-jupyter-packaging7', type='build') + # depends_on('py-jupyter-packaging@0.7.9:0.7', type='build')``` diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index c6fca7d64c4073..36710534339987 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import tempfile + from spack import * @@ -11,8 +13,12 @@ class PyKeras(PythonPackage): and more. Runs on Theano or TensorFlow.""" homepage = "https://keras.io" - pypi = "Keras/Keras-1.2.2.tar.gz" + git = "https://github.com/keras-team/keras" + url = 'https://github.com/keras-team/keras/archive/refs/tags/v2.7.0.tar.gz' + version('2.7.0', sha256='7502746467ab15184e2e267f13fbb2c3f33ba24f8e02a097d229ba376dabaa04') + version('2.6.0', sha256='15586a3f3e1ed9182e6e0d4c0dbd052dfb7250e779ceb7e24f8839db5c63fcae') + version('2.5.0', commit='9c266106163390f173625c4e7b1ccb03ae145ffc') version('2.4.3', sha256='fedd729b52572fb108a98e3d97e1bac10a81d3917d2103cc20ab2a5f03beb973') version('2.2.4', sha256='90b610a3dbbf6d257b20a079eba3fdf2eed2158f64066a7c6f7227023fd60bc9') version('2.2.3', sha256='694aee60a6f8e0d3d6d3e4967e063b4623e3ca90032f023fd6d16bb5f81d18de') @@ -40,13 +46,80 @@ class PyKeras(PythonPackage): version('1.1.1', sha256='be1b67f62e5119f6f24a239a865dc47e6d9aa93b97b506ba34cab7353dbc23b6') version('1.1.0', sha256='36d83b027ba9d2c9da8e1eefc28f600ca93dc03423e033b633cbac9061af8a5d') - depends_on('python@3.6:', type=('build', 'run'), when='@2.4:') - depends_on('py-numpy@1.9.1:', type=('build', 'run'), when='@2.4:') - depends_on('py-scipy@0.14:', type=('build', 'run'), when='@2.4:') - depends_on('py-h5py', type=('build', 'run'), when='@2.4:') - depends_on('py-keras-applications', type='run', when='@2.2') - depends_on('py-keras-preprocessing', type='run', when='@2.2') + depends_on('python@3.6:', type=('build', 'run'), when='@2.4') + depends_on('py-numpy@1.9.1:', type=('build', 'run'), when='@2.4') + depends_on('py-scipy@0.14:', type=('build', 'run'), when='@2.4') + depends_on('py-h5py', type=('build', 'run'), when='@2.4') + depends_on('py-keras-applications', type='run', when='@2.2:2.4') + depends_on('py-keras-preprocessing', type='run', when='@2.2:2.4') depends_on('py-setuptools', type='build') depends_on('py-theano', type=('build', 'run'), when='@:2.2') - depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-pyyaml', type=('build', 'run'), when='@:2.4') depends_on('py-six', type=('build', 'run'), when='@:2.2') + depends_on('py-tensorflow@2.5.0:2.5', type=('build', 'run'), when='@2.5.0:2.5') + depends_on('py-tensorflow@2.6.0:2.6', type=('build', 'run'), when='@2.6.0:2.6') + depends_on('py-tensorflow@2.7.0:2.7', type=('build', 'run'), when='@2.7.0:2.7') + depends_on('bazel', type='build', when='@2.5.0:') + depends_on('protobuf', type='build', when='@2.5.0:') + + def url_for_version(self, version): + if version >= Version('2.6.0'): + return super(PyKeras, self).url_for_version(version) + else: + url = 'https://pypi.io/packages/source/K/Keras/Keras-{0}.tar.gz' + return url.format(version.dotted) + + @when('@2.5.0:') + def patch(self): + infile = join_path(self.package_dir, 'protobuf_build.patch') + with open(infile, 'r') as source_file: + text = source_file.read() + with open('keras/keras.bzl', mode='a') as f: + f.write(text) + + filter_file('load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")', + 'load("@org_keras//keras:keras.bzl", "py_proto_library")', + 'keras/protobuf/BUILD', + string=True) + + @when('@2.5.0:') + def install(self, spec, prefix): + self.tmp_path = tempfile.mkdtemp(prefix='spack') + env['HOME'] = self.tmp_path + + args = [ + # Don't allow user or system .bazelrc to override build settings + '--nohome_rc', + '--nosystem_rc', + # Bazel does not work properly on NFS, switch to /tmp + '--output_user_root=' + self.tmp_path, + 'build', + # Spack logs don't handle colored output well + '--color=no', + '--jobs={0}'.format(make_jobs), + # Enable verbose output for failures + '--verbose_failures', + # Show (formatted) subcommands being executed + '--subcommands=pretty_print', + '--spawn_strategy=local', + # Ask bazel to explain what it's up to + # Needs a filename as argument + '--explain=explainlogfile.txt', + # Increase verbosity of explanation, + '--verbose_explanations', + # bazel uses system PYTHONPATH instead of spack paths + '--action_env', 'PYTHONPATH={0}'.format(env['PYTHONPATH']), + '//keras/tools/pip_package:build_pip_package', + ] + + bazel(*args) + + build_pip_package = Executable( + 'bazel-bin/keras/tools/pip_package/build_pip_package') + 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) + remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-keras/protobuf_build.patch b/var/spack/repos/builtin/packages/py-keras/protobuf_build.patch new file mode 100644 index 00000000000000..527efbb7b9756e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-keras/protobuf_build.patch @@ -0,0 +1,26 @@ +def py_proto_library( + name, + srcs = [], + deps = [], + py_libs = [], + py_extra_srcs = [], + include = None, + use_grpc_plugin = False, + **kargs): + + outs = [s[:-len(".proto")] + "_pb2.py" for s in srcs] + + native.genrule( + name = name + "_protoc_gen", + outs = outs, + srcs = srcs, + cmd = "protoc --python_out=$(GENDIR) -I. $<", + ) + + native.py_library( + name = name, + srcs = outs + py_extra_srcs, + deps = py_libs + deps, + imports = [], + **kargs + ) diff --git a/var/spack/repos/builtin/packages/py-keyring/package.py b/var/spack/repos/builtin/packages/py-keyring/package.py index 3fb788f5c03854..6c4f34cb0fbba3 100644 --- a/var/spack/repos/builtin/packages/py-keyring/package.py +++ b/var/spack/repos/builtin/packages/py-keyring/package.py @@ -14,6 +14,7 @@ class PyKeyring(PythonPackage): homepage = "https://github.com/jaraco/keyring" pypi = "keyring/keyring-23.0.1.tar.gz" + version('23.5.0', sha256='9012508e141a80bd1c0b6778d5c610dd9f8c464d75ac6774248500503f972fb9') version('23.2.1', sha256='6334aee6073db2fb1f30892697b1730105b5e9a77ce7e61fca6b435225493efe') version('23.2.0', sha256='1e1970dcecde00c59ff6033d69cee3b283cd0d7cbad78b0dc4cdd15c8a28bcf8') version('23.1.0', sha256='b7e0156667f5dcc73c1f63a518005cd18a4eb23fe77321194fefcc03748b21a4') @@ -22,6 +23,7 @@ class PyKeyring(PythonPackage): version('20.0.1', sha256='963bfa7f090269d30bdc5e25589e5fd9dad2cf2a7c6f176a7f2386910e5d0d8d') version('18.0.1', sha256='67d6cc0132bd77922725fae9f18366bb314fd8f95ff4d323a4df41890a96a838') + depends_on('python@3.7:', when='@23.5:', type=('build', 'run')) depends_on('python@3.6:', when='@21:', type=('build', 'run')) depends_on('python@3.5:', when='@20:', type=('build', 'run')) depends_on('python@2.7:', type=('build', 'run')) @@ -31,12 +33,12 @@ class PyKeyring(PythonPackage): depends_on('py-setuptools-scm@3.4.1:+toml', when='@21:', type='build') depends_on('py-setuptools-scm@1.15:', type='build') depends_on('py-entrypoints', when='@18', type=('build', 'run')) - depends_on('py-secretstorage', when='platform=linux', type=('build', 'run')) - depends_on('py-secretstorage@:2', when='@18 ^python@:3.4 platform=linux', type=('build', 'run')) depends_on('py-secretstorage@3.2:', when='@21: platform=linux', type=('build', 'run')) + depends_on('py-secretstorage@:2', when='@18 ^python@:3.4 platform=linux', type=('build', 'run')) + depends_on('py-secretstorage', when='platform=linux', type=('build', 'run')) depends_on('py-jeepney@0.4.2:', when='@21: platform=linux', type=('build', 'run')) - depends_on('py-importlib-metadata', when='@20:', type=('build', 'run')) - depends_on('py-importlib-metadata@1:', when='@21:', type=('build', 'run')) depends_on('py-importlib-metadata@3.6:', when='@23:', type=('build', 'run')) + depends_on('py-importlib-metadata@1:', when='@21:', type=('build', 'run')) + depends_on('py-importlib-metadata', when='@20:', type=('build', 'run')) # TODO: additional dependency on pywin32-ctypes required for Windows diff --git a/var/spack/repos/builtin/packages/py-keyrings-alt/package.py b/var/spack/repos/builtin/packages/py-keyrings-alt/package.py index 6e5bba41186cfa..fe2c882353a5eb 100644 --- a/var/spack/repos/builtin/packages/py-keyrings-alt/package.py +++ b/var/spack/repos/builtin/packages/py-keyrings-alt/package.py @@ -12,8 +12,9 @@ class PyKeyringsAlt(PythonPackage): homepage = "https://github.com/jaraco/keyrings.alt" pypi = "keyrings.alt/keyrings.alt-4.0.2.tar.gz" + version('4.1.0', sha256='52ccb61d6f16c10f32f30d38cceef7811ed48e086d73e3bae86f0854352c4ab2') version('4.0.2', sha256='cc475635099d6edd7e475c5a479e5b4da5e811a3af04495a1e9ada488d16fe25') depends_on('python@3.6:', type=('build', 'run')) - depends_on('py-setuptools', type='build') + depends_on('py-setuptools@42:', type='build') depends_on('py-setuptools-scm+toml@3.4.1:', type='build') diff --git a/var/spack/repos/builtin/packages/py-kosh/package.py b/var/spack/repos/builtin/packages/py-kosh/package.py index 22ba0bdf4949cd..ff6eca3d7fba52 100644 --- a/var/spack/repos/builtin/packages/py-kosh/package.py +++ b/var/spack/repos/builtin/packages/py-kosh/package.py @@ -20,9 +20,10 @@ class PyKosh(PythonPackage): # notify when the package is updated. maintainers = ['doutriaux1'] + version('2.1', sha256='597ed5beb4c3c3675b4af15ee7bfb60a463d5bda2222cd927061737ed073d562') version('2.0', sha256='059e431e3d3219b53956cb464d9e10933ca141dc89662f55d9c633e35c8b3a1e') depends_on('py-setuptools', type='build') - depends_on("py-llnl-sina@1.11", type=("build", "run")) + depends_on("py-llnl-sina@1.11:", type=("build", "run")) depends_on("py-networkx", type=("build", "run")) depends_on("py-numpy", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-libclang/package.py b/var/spack/repos/builtin/packages/py-libclang/package.py new file mode 100644 index 00000000000000..f3ce59e4901b19 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-libclang/package.py @@ -0,0 +1,49 @@ +# Copyright 2013-2021 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 import * + + +class PyLibclang(PythonPackage): + """The repository contains code that taken from the LLVM project, to make + it easier to install clang's python bindings.""" + + homepage = "https://github.com/sighingnow/libclang" + + url = "https://github.com/sighingnow/libclang/archive/refs/tags/llvm-11.1.0.tar.gz" + + version( + "11.1.0", + sha256="0b53b3c237725e193c4d2bbbe096f1a1da0f0e5cd528f2892e4dfed3c8fe9506", + ) + version( + "11.0.1", + sha256="739ae984a4a4043ae4d3b4db74597a36a8e46b6f0cbd139c7d2703faf40c5390", + ) + version( + "11.0.0", + sha256="aec204414ea412e4d4e041b0bf48123881338ac723bbcfa948f2a1b92a2428b5", + ) + version( + "10.0.1", + sha256="c15d8f97c4d0f3d4501e8b2625b343569fd92690afebe6260a2c64463d713995", + ) + version( + "9.0.1", + sha256="fc84e7bf3b0eb4f11c496d6603f111e3d8cda97094d6c9c512361371f1b76f1c", + ) + + depends_on("python@2.7:2.8,3.3:", type=("build", "run")) + depends_on("py-setuptools", type="build") + + for ver in ["9", "10", "11"]: + depends_on("llvm+clang@" + ver, when="@" + ver, type="build") + + def patch(self): + filter_file( + "source_dir = './native/'", + "source_dir = '{0}'".format(self.spec["llvm"].libs.directories[0]), + "setup.py", string=True, + ) diff --git a/var/spack/repos/builtin/packages/py-liblas/package.py b/var/spack/repos/builtin/packages/py-liblas/package.py new file mode 100644 index 00000000000000..dcd48b603265be --- /dev/null +++ b/var/spack/repos/builtin/packages/py-liblas/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2022 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 import * + + +class PyLiblas(PythonPackage): + """libLAS is a C/C++ library for reading and writing the very common + LAS LiDAR format. + """ + + homepage = "https://liblas.org/" + pypi = "libLAS/libLAS-1.8.1.tar.gz" + + version('1.8.1', sha256='4d517670912989a0c7a33bb057167747e1013db6abdaa372f0775343ff0d1e16') + + depends_on('py-setuptools', type='build') + depends_on('liblas') + + def setup_build_environment(self, env): + env_var = 'LD_LIBRARY_PATH' + if self.spec.satisfies('platform=darwin'): + env_var = 'DYLD_FALLBACK_LIBRARY_PATH' + env.prepend_path(env_var, self.spec['liblas'].libs.directories[0]) + + setup_run_environment = setup_build_environment diff --git a/var/spack/repos/builtin/packages/py-llvmlite/package.py b/var/spack/repos/builtin/packages/py-llvmlite/package.py index 93f3fc5f4298fb..aba94f4572417c 100644 --- a/var/spack/repos/builtin/packages/py-llvmlite/package.py +++ b/var/spack/repos/builtin/packages/py-llvmlite/package.py @@ -12,6 +12,7 @@ class PyLlvmlite(PythonPackage): homepage = "https://llvmlite.readthedocs.io/en/latest/index.html" pypi = "llvmlite/llvmlite-0.23.0.tar.gz" + version('0.38.0', sha256='a99d166ccf3b116f3b9ed23b9b70ba2415640a9c978f3aaa13fad49c58f4965c') version('0.37.0', sha256='6392b870cd018ec0c645d6bbb918d6aa0eeca8c62674baaee30862d6b6865b15') version('0.34.0', sha256='f03ee0d19bca8f2fe922bb424a909d05c28411983b0c2bc58b020032a0d11f63') version('0.33.0', sha256='9c8aae96f7fba10d9ac864b443d1e8c7ee4765c31569a2b201b3d0b67d8fc596') @@ -24,7 +25,8 @@ class PyLlvmlite(PythonPackage): version('0.20.0', sha256='b2f174848df16bb9195a07fec102110a06d018da736bd9b3570a54d44c797c29') depends_on('py-setuptools', type='build') - depends_on('python@3.7:3.9', type=('build', 'run'), when='@0.37.0:') + depends_on('python@3.7:3.10', type=('build', 'run'), when='@0.38.0:') + depends_on('python@3.7:3.9', type=('build', 'run'), when='@0.37') depends_on('python@3.6:', type=('build', 'run'), when='@0.33:') depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) depends_on('py-enum34', type=('build', 'run'), when='@:0.32.0 ^python@:3.3') diff --git a/var/spack/repos/builtin/packages/py-lxml/package.py b/var/spack/repos/builtin/packages/py-lxml/package.py index a098a2384c1180..029ddd8ed71ea0 100644 --- a/var/spack/repos/builtin/packages/py-lxml/package.py +++ b/var/spack/repos/builtin/packages/py-lxml/package.py @@ -12,7 +12,9 @@ class PyLxml(PythonPackage): homepage = "https://lxml.de/" pypi = "lxml/lxml-4.6.1.tar.gz" + git = "https://github.com/lxml/lxml" + version('4.8.0', sha256='f63f62fc60e6228a4ca9abae28228f35e1bd3ce675013d1dfb828688d50c6e23') version('4.6.4', sha256='daf9bd1fee31f1c7a5928b3e1059e09a8d683ea58fb3ffc773b6c88cb8d1399c') version('4.6.3', sha256='39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468') version('4.6.1', sha256='c152b2e93b639d1f36ec5a8ca24cde4a8eefb2b6b83668fcd8e83a67badcb367') diff --git a/var/spack/repos/builtin/packages/py-m2r/package.py b/var/spack/repos/builtin/packages/py-m2r/package.py index 0680e02416371a..8a493f52e49fc6 100644 --- a/var/spack/repos/builtin/packages/py-m2r/package.py +++ b/var/spack/repos/builtin/packages/py-m2r/package.py @@ -25,5 +25,5 @@ class PyM2r(PythonPackage): version('0.1.8', sha256='2bfeb2f3de5f9fe9cd411aba82767a6473a43db96ca1730c03b0fe0167239b7e') depends_on('py-setuptools', type='build') - depends_on('py-mistune', type=('build', 'run')) + depends_on('py-mistune@:1', type=('build', 'run')) depends_on('py-docutils', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-mako/package.py b/var/spack/repos/builtin/packages/py-mako/package.py index b63c2a6578a42d..bc18e87e6dc597 100644 --- a/var/spack/repos/builtin/packages/py-mako/package.py +++ b/var/spack/repos/builtin/packages/py-mako/package.py @@ -10,13 +10,16 @@ class PyMako(PythonPackage): """A super-fast templating language that borrows the best ideas from the existing templating languages.""" + homepage = "https://www.makotemplates.org/" pypi = "Mako/Mako-1.0.1.tar.gz" + git = "https://github.com/sqlalchemy/mako" + version('1.1.6', sha256='4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2') version('1.1.5', sha256='169fa52af22a91900d852e937400e79f535496191c63712e3b9fda5a9bed6fc3') version('1.1.4', sha256='17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab') version('1.0.4', sha256='fed99dbe4d0ddb27a33ee4910d8708aca9ef1fe854e668387a9ab9a90cbf9059') version('1.0.1', sha256='45f0869febea59dab7efd256fb451c377cbb7947bef386ff0bb44627c31a8d1c') + depends_on('python@2.7:2,3.4:', when='@1.1.0:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-markupsafe@0.9.2:', type=('build', 'run')) - depends_on('python@2.7:2,3.4:', when='@1.1.0:') diff --git a/var/spack/repos/builtin/packages/py-marshmallow/package.py b/var/spack/repos/builtin/packages/py-marshmallow/package.py new file mode 100644 index 00000000000000..c22d01f4d70a84 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-marshmallow/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2022 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 import * + + +class PyMarshmallow(PythonPackage): + """marshmallow is an ORM/ODM/framework-agnostic library for converting + complex datatypes, such as objects, to and from native Python datatypes.""" + + homepage = "https://github.com/marshmallow-code/marshmallow" + pypi = "marshmallow/marshmallow-3.15.0.tar.gz" + + maintainers = ['haralmha'] + + version('3.15.0', sha256='2aaaab4f01ef4f5a011a21319af9fce17ab13bf28a026d1252adab0e035648d5') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-packaging', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-matplotlib-inline/package.py b/var/spack/repos/builtin/packages/py-matplotlib-inline/package.py index c8c10f6c417d55..defb5fafb1145d 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib-inline/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib-inline/package.py @@ -9,9 +9,10 @@ class PyMatplotlibInline(PythonPackage): """Inline Matplotlib backend for Jupyter.""" - homepage = "https://github.com/martinRenou/matplotlib-inline" + homepage = "https://github.com/ipython/matplotlib-inline" pypi = "matplotlib-inline/matplotlib-inline-0.1.2.tar.gz" + version('0.1.3', sha256='a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee') version('0.1.2', sha256='f41d5ff73c9f5385775d5c0bc13b424535c8402fe70ea8210f93e11f3683993e') depends_on('python@3.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-memory-profiler/package.py b/var/spack/repos/builtin/packages/py-memory-profiler/package.py index 216b7f4f4ea72e..706c9da281b8ea 100644 --- a/var/spack/repos/builtin/packages/py-memory-profiler/package.py +++ b/var/spack/repos/builtin/packages/py-memory-profiler/package.py @@ -9,11 +9,13 @@ class PyMemoryProfiler(PythonPackage): """A module for monitoring memory usage of a python program""" - homepage = "https://github.com/fabianp/memory_profiler" + homepage = "https://github.com/pythonprofilers/memory_profiler" pypi = "memory_profiler/memory_profiler-0.57.0.tar.gz" + version('0.60.0', sha256='6a12869511d6cebcb29b71ba26985675a58e16e06b3c523b49f67c5497a33d1c') version('0.57.0', sha256='23b196f91ea9ac9996e30bfab1e82fecc30a4a1d24870e81d1e81625f786a2c3') version('0.47', sha256='e992f2a341a5332dad1ad4a008eeac7cfe78c7ea4abdf7535a3e7e79093328cb') + depends_on('python@3.4:', when='@0.59:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-psutil', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-mistune/package.py b/var/spack/repos/builtin/packages/py-mistune/package.py index 0534c92b8725ee..2970ed91854cd9 100644 --- a/var/spack/repos/builtin/packages/py-mistune/package.py +++ b/var/spack/repos/builtin/packages/py-mistune/package.py @@ -7,24 +7,24 @@ class PyMistune(PythonPackage): - """ - Python markdown parser - """ - homepage = "https://mistune.readthedocs.org/en/latest/" - url = "https://github.com/lepture/mistune/archive/v0.7.1.tar.gz" + """A sane Markdown parser with useful plugins and renderers.""" - version('0.8.4', sha256='a1443771ea9ed7268a0cb3cf31462604ae148938ba32070bd5c54545f8f36a5d') - version('0.8.3', sha256='666c93fc10cb0aa924a373898a709eba4d43f4e453264a4c7396878ec8145a4a') - version('0.8.2', sha256='997c6d723350093760ccd48b722344b3330a5f947dec264e129160b85037784e') - version('0.8.1', sha256='77ae24a5accfd62d23f945d7e6598392194f8ca6ef1bd70ddc81e151ac3eb1fe') - version('0.8', sha256='f479dc2ceac7d593231e77448cb5cf7194fdbebad1d88fcdb78eacac1c042f6e') - version('0.7.4', sha256='5030d5e3e0ec90fbdaed0f52d3c756ffb30e4ab46c3de159c97482c09569abcb') - version('0.7.3', sha256='c4f391e61d3b5e8fbb112669a5c6960fb04b71b61d35f0f09a201809545b1676') - version('0.7.2', sha256='a3fe17dfad99bd353485879a5c05827dd2932219da8b078212a21797f6cdbf0b') - version('0.7.1', sha256='d6684534174caa30e0169e106a7152aee14507796a610b76be9fe9b335b18410') - version('0.7', sha256='9b2cac8053d21dde5f2b3edb01948dac8ee5c3a85eeeeb6913c3ddf2f773c7b6') - version('0.6', sha256='c2d976c06c099edb525b8ac3745f3d3b5c49af6189edb6de390ddf9c248913cf') - version('0.5.1', sha256='c4ecfbb99acbb034c4f4580496502bde6b33f3dfc47873c59ee7e509c05dc822') - version('0.5', sha256='3320b7fd80e44a1ac27658e19e67215f464c080b02c8af9fce57050d411560d2') + homepage = "https://github.com/lepture/mistune" + pypi = "mistune/mistune-2.0.2.tar.gz" + + version('2.0.2', sha256='6fc88c3cb49dba8b16687b41725e661cf85784c12e8974a29b9d336dd596c3a1') + version('0.8.4', sha256='59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e') + version('0.8.3', sha256='bc10c33bfdcaa4e749b779f62f60d6e12f8215c46a292d05e486b869ae306619') + version('0.8.2', sha256='c50f2fb3a058120c5696f08af9d57877a9c76e879f19af5835fb2c6a4e56a67b') + version('0.8.1', sha256='4c0f66924ce28f03b95b210ea57e57bd0b59f479edd91c2fa4fe59331eae4a82') + version('0.8', sha256='dc3f43e7cf0abb95cdfecbf82d85c419108d5f13e1844b2a8a2fc0abf24c7a47') + version('0.7.4', sha256='8517af9f5cd1857bb83f9a23da75aa516d7538c32a2c5d5c56f3789a9e4cd22f') + version('0.7.3', sha256='21d0e869df3b9189f248e022f1c9763cf9069e1a2f00676f1f1852bd7f98b713') + version('0.7.2', sha256='626f2516adcde4af608eaf83635ff20ff7e577c1898ad4d0f0fcd8c094399840') + version('0.7.1', sha256='6076dedf768348927d991f4371e5a799c6a0158b16091df08ee85ee231d929a7') + version('0.7', sha256='1daa2e55f5de63ecde7c446c4677c0447006752f78ad2c9c1c3c3452d395f89f') + version('0.6', sha256='d54a69365d01bc97412a39c11674a8aae3f333586e91f38895cc1ad818e13dc5') + version('0.5.1', sha256='cc66489a28845c0e1848ae290af5b555074eb76185136ca058e8eed1faa89692') + version('0.5', sha256='d53d868cfd10cf757160e88adb5760fce95f7026a243f15a02b7c604238e5869') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-mizani/package.py b/var/spack/repos/builtin/packages/py-mizani/package.py new file mode 100644 index 00000000000000..2d72991971f1f1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-mizani/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2022 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.directives import depends_on, version + + +class PyMizani(PythonPackage): + """Mizani is a scales package for graphics. It is based on Hadley Wickham's + Scales package.""" + + pypi = "mizani/mizani-0.7.3.tar.gz" + + version( + "0.7.3", + sha256="f521300bd29ca918fcd629bc8ab50fa04e41bdbe00f6bcf74055d3c6273770a4", + ) + + depends_on('python@3.6:', type=('build', 'run')) + depends_on("py-matplotlib@3.1.1:", type=("build", "run")) + depends_on("py-numpy", type=("build", "run")) + depends_on("py-palettable", type=("build", "run")) + depends_on("py-pandas@1.1.0:", type=("build", "run")) + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-ml-collections/package.py b/var/spack/repos/builtin/packages/py-ml-collections/package.py new file mode 100644 index 00000000000000..22019f2006b4b9 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ml-collections/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2022 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 import * + + +class PyMlCollections(PythonPackage): + """ML Collections is a library of Python collections designed for ML usecases.""" + + homepage = "https://https://github.com/google/ml_collections" + pypi = "ml_collections/ml_collections-0.1.0.tar.gz" + + version('0.1.1', sha256='3fefcc72ec433aa1e5d32307a3e474bbb67f405be814ea52a2166bfc9dbe68cc') + + depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-absl-py', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) + depends_on('py-contextlib2', type=('build', 'run')) + depends_on('py-dataclasses', type=('build', 'run'), when='python@:3.6') + depends_on('py-typing', type=('build', 'run'), when='python@:3.5') diff --git a/var/spack/repos/builtin/packages/py-msgpack/package.py b/var/spack/repos/builtin/packages/py-msgpack/package.py index 4d0780b2b4a75b..323fa80a314157 100644 --- a/var/spack/repos/builtin/packages/py-msgpack/package.py +++ b/var/spack/repos/builtin/packages/py-msgpack/package.py @@ -9,7 +9,9 @@ class PyMsgpack(PythonPackage): homepage = "https://msgpack.org/" pypi = "msgpack/msgpack-1.0.0.tar.gz" + git = "https://github.com/msgpack/msgpack-python" + version('1.0.3', sha256='51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e') version('1.0.2', sha256='fae04496f5bc150eefad4e9571d1a76c55d021325dcd484ce45065ebbdd00984') version('1.0.1', sha256='7033215267a0e9f60f4a5e4fb2228a932c404f237817caff8dc3115d9e7cd975') version('1.0.0', sha256='9534d5cc480d4aff720233411a1f765be90885750b07df772380b34c10ecb5c0') diff --git a/var/spack/repos/builtin/packages/py-multidict/package.py b/var/spack/repos/builtin/packages/py-multidict/package.py index a01c0379aab4e0..6502fd42b8998f 100644 --- a/var/spack/repos/builtin/packages/py-multidict/package.py +++ b/var/spack/repos/builtin/packages/py-multidict/package.py @@ -3,19 +3,23 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack import * + class PyMultidict(PythonPackage): """Multidict is dict-like collection of key-value pairs where key might be occurred more than once in the container.""" homepage = "https://github.com/aio-libs/multidict" - url = "https://github.com/aio-libs/multidict/archive/v4.7.6.tar.gz" + pypi = "multidict/multidict-6.0.2.tar.gz" - version('5.2.0', sha256='70039c8d0f4883816de230619c9d4ee1b8527b3628a42783e8bc26de4fee1154') - version('5.1.0', sha256='1798708288851b808d2d03ea6046ca51bc44c228aaea12c9643a0a481ee41d8c') - version('4.7.6', sha256='449035f89a12f189579ff83811424c71e4a39e335bcb8045145ad084b7bde2dc') + version('6.0.2', sha256='5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013') + version('5.2.0', sha256='0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce') + version('5.1.0', sha256='25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5') + version('4.7.6', sha256='fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430') - depends_on('py-setuptools', type='build') - depends_on('py-setuptools@40:', type='build', when='@5.1.0:') + depends_on('python@3.7:', when='@6:', type=('build', 'run')) + depends_on('python@3.6:', when='@5.1:', type=('build', 'run')) depends_on('python@3.5:', type=('build', 'run')) - depends_on('python@3.6:', type=('build', 'run'), when='@5.1.0:') + depends_on('py-pip@18:', when='@:4', type='build') + depends_on('py-setuptools@40:', type='build') diff --git a/var/spack/repos/builtin/packages/py-mypy/package.py b/var/spack/repos/builtin/packages/py-mypy/package.py index ef6345ccccf9a2..e8696facf01d9f 100644 --- a/var/spack/repos/builtin/packages/py-mypy/package.py +++ b/var/spack/repos/builtin/packages/py-mypy/package.py @@ -12,6 +12,9 @@ class PyMypy(PythonPackage): homepage = "http://www.mypy-lang.org/" pypi = "mypy/mypy-0.740.tar.gz" + version('0.931', sha256='0038b21890867793581e4cb0d810829f5fd4441aa75796b53033af3aa30430ce') + version('0.930', sha256='51426262ae4714cc7dd5439814676e0992b55bcc0f6514eccb4cf8e0678962c2') + version('0.921', sha256='eca089d7053dff45d6dcd5bf67f1cabc311591e85d378917d97363e7c13da088') version('0.920', sha256='a55438627f5f546192f13255a994d6d1cf2659df48adcf966132b4379fd9c86b') version('0.910', sha256='704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150') version('0.900', sha256='65c78570329c54fb40f956f7645e2359af5da9d8c54baa44f461cdc7f4984108') @@ -20,10 +23,8 @@ class PyMypy(PythonPackage): version('0.740', sha256='48c8bc99380575deb39f5d3400ebb6a8a1cb5cc669bbba4d3bb30f904e0a0e7d') version('0.670', sha256='e80fd6af34614a0e898a57f14296d0dacb584648f0339c2e000ddbf0f4cc2f8d') - variant('python2', default=False, description='Enable checking of python 2 type annotations') - depends_on('python@3.6:', when='@0.920:', type=('build', 'run')) - depends_on("python@3.5:", when='@0.700:', type=("build", "run")) + depends_on('python@3.5:', when='@0.700:', type=("build", "run")) depends_on('python@3.4:', type=('build', 'run')) depends_on('py-setuptools@40.6.2:', when='@0.790:', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run')) @@ -32,9 +33,12 @@ class PyMypy(PythonPackage): depends_on('py-typed-ast@1.4.0:1.4', when='@0.900:0.910 ^python@:3.7', type=('build', 'run')) depends_on('py-typed-ast@1.4.0:1.4', when='@0.700:0.899', type=('build', 'run')) depends_on('py-typed-ast@1.3.1:1.3', when='@:0.699', type=('build', 'run')) + depends_on('py-typing-extensions@3.10:', when='@0.930:', type=('build', 'run')) depends_on('py-typing-extensions@3.7.4:', when='@0.700:', type=('build', 'run')) depends_on('py-typing@3.5.3:', when='@:0.699 ^python@:3.4', type=('build', 'run')) - depends_on('py-mypy-extensions@0.4.3:0.4', when='@0.700:', type=('build', 'run')) - depends_on('py-mypy-extensions@0.4.0:0.4', type=('build', 'run')) - depends_on('py-tomli@1.1:2', when='@0.920:', type=('build', 'run')) + depends_on('py-mypy-extensions@0.4.3:', when='@0.930:', type=('build', 'run')) + depends_on('py-mypy-extensions@0.4.3:0.4', when='@0.700:0.929', type=('build', 'run')) + depends_on('py-mypy-extensions@0.4.0:0.4', when='@:0.699', type=('build', 'run')) + depends_on('py-tomli@1.1:', when='@0.930:', type=('build', 'run')) + depends_on('py-tomli@1.1:2', when='@0.920:0.929', type=('build', 'run')) depends_on('py-toml', when='@0.900:0.910', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-nbclassic/package.py b/var/spack/repos/builtin/packages/py-nbclassic/package.py index 4e1415a9153b44..96cc0c67104f47 100644 --- a/var/spack/repos/builtin/packages/py-nbclassic/package.py +++ b/var/spack/repos/builtin/packages/py-nbclassic/package.py @@ -12,9 +12,13 @@ class PyNbclassic(PythonPackage): homepage = "https://github.com/jupyterlab/nbclassic" pypi = "nbclassic/nbclassic-0.3.1.tar.gz" + version('0.3.5', sha256='99444dd63103af23c788d9b5172992f12caf8c3098dd5a35c787f0df31490c29') version('0.3.1', sha256='f920f8d09849bea7950e1017ff3bd101763a8d68f565a51ce053572e65aa7947') depends_on('python@3.6:', type=('build', 'run')) depends_on('py-setuptools', type='build') + # TODO: replace this after concretizer learns how to concretize separate build deps + depends_on('py-jupyter-packaging11', when='@0.3.3:', type='build') + # depends_on('py-jupyter-packaging@0.9:1', when='@0.3.3:', type='build') depends_on('py-jupyter-server@1.8:1', type=('build', 'run')) depends_on('py-notebook@:6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 5b43adebe03a25..5c0729b9f52129 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -10,6 +10,7 @@ class PyNbconvert(PythonPackage): homepage = "https://github.com/jupyter/nbconvert" pypi = "nbconvert/nbconvert-6.0.1.tar.gz" + version('6.4.2', sha256='eb2803db18f6facce6bf3b01b684fe47907994bd156d15eaccdf011e3d7f8164') version('6.3.0', sha256='5e77d6203854944520105e38f2563a813a4a3708e8563aa598928a3b5ee1081a') version('6.2.0', sha256='16ceecd0afaa8fd26c245fa32e2c52066c02f13aa73387fffafd84750baea863') version('6.0.1', sha256='db94117fbac29153834447e31b30cda337d4450e46e0bdb1a36eafbbf4435156') @@ -46,7 +47,11 @@ class PyNbconvert(PythonPackage): depends_on('py-testpath', type=('build', 'run'), when='@5:') depends_on('py-defusedxml', type=('build', 'run'), when='@5:') depends_on('py-nbclient@0.5.0:0.5', type=('build', 'run'), when='@6:') - depends_on('py-tornado@4.0:', type=('build', 'run'), when='+serve') + + # https://bugs.gentoo.org/720870 + # https://github.com/jupyter/nbconvert/pull/937 + depends_on('py-tornado@4.0:', type=('build', 'run'), when='@5.4.1: +serve') + depends_on('py-tornado@4.0:5', type=('build', 'run'), when='@:5.4.0 +serve') def patch(self): # We bundle this with the spack package so that the installer diff --git a/var/spack/repos/builtin/packages/py-neovim-remote/package.py b/var/spack/repos/builtin/packages/py-neovim-remote/package.py new file mode 100644 index 00000000000000..6b215afcf38e68 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-neovim-remote/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class PyNeovimRemote(PythonPackage): + """Remote opening and control for neovim: nvr""" + + homepage = "https://github.com/mhinz/neovim-remote" + pypi = "neovim-remote/neovim-remote-2.4.0.tar.gz" + + maintainers = ['trws'] + + version('2.4.0', sha256='f199ebb61c3decf462feed4e7d467094ed38d8afaf43620736b5983a12fe2427') + + depends_on('python@3.5:', type=('build', 'run')) + + depends_on('py-setuptools', type='build') + depends_on('py-psutil', type=('build', 'run')) + depends_on('py-pynvim', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-nest-asyncio/package.py b/var/spack/repos/builtin/packages/py-nest-asyncio/package.py index 9b9acad4a0363d..80f11663a3d70e 100644 --- a/var/spack/repos/builtin/packages/py-nest-asyncio/package.py +++ b/var/spack/repos/builtin/packages/py-nest-asyncio/package.py @@ -10,6 +10,7 @@ class PyNestAsyncio(PythonPackage): homepage = "https://github.com/erdewit/nest_asyncio" pypi = "nest-asyncio/nest_asyncio-1.4.0.tar.gz" + version('1.5.4', sha256='f969f6013a16fadb4adcf09d11a68a4f617c6049d7af7ac2c676110169a63abd') version('1.5.1', sha256='afc5a1c515210a23c461932765691ad39e8eba6551c055ac8d5546e69250d0aa') version('1.4.0', sha256='5773054bbc14579b000236f85bc01ecced7ffd045ec8ca4a9809371ec65a59c8') diff --git a/var/spack/repos/builtin/packages/py-neurora/package.py b/var/spack/repos/builtin/packages/py-neurora/package.py index 3750cff816404b..bf6040a572fbe2 100644 --- a/var/spack/repos/builtin/packages/py-neurora/package.py +++ b/var/spack/repos/builtin/packages/py-neurora/package.py @@ -12,6 +12,7 @@ class PyNeurora(PythonPackage): homepage = "https://github.com/ZitongLu1996/NeuroRA" pypi = "neurora/neurora-1.1.5.16.tar.gz" + version('1.1.6.1', sha256='97b2d1287f273a8db11dcaa623fc906b47ee7c4459e264a42b131e6a4f332916') version('1.1.5.16', sha256='5ae296a5baf658b67e9754a172f5fb321c2077007455f93db6bb2aaeb3e23cd7') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-nibabel/package.py b/var/spack/repos/builtin/packages/py-nibabel/package.py index 82c776d8097cb7..a33f4c17ecbadb 100644 --- a/var/spack/repos/builtin/packages/py-nibabel/package.py +++ b/var/spack/repos/builtin/packages/py-nibabel/package.py @@ -12,13 +12,14 @@ class PyNibabel(PythonPackage): homepage = "https://nipy.org/nibabel" pypi = "nibabel/nibabel-3.2.1.tar.gz" + version('3.2.2', sha256='b0dcc174b30405ce9e8fec1eab3cbbb20f5c5e4920976c08b22e050b7c124f94') version('3.2.1', sha256='4d2ff9426b740011a1c916b54fc25da9348282e727eaa2ea163f42e00f1fc29e') version('2.4.1', sha256='f165ff1cb4464902d6594eb2694e2cfb6f8b9fe233b856c976c3cff623ee0e17') - depends_on('python@3.6:', when='@3.1', type=('build', 'run')) + depends_on('python@3.6:', when='@3.1:', type=('build', 'run')) depends_on('py-setuptools@30.3.0:', type=('build', 'run')) - depends_on('py-numpy@1.14:', when='@3.2:', type='run') - depends_on('py-numpy@1.8:', type='run') - depends_on('py-packaging@14.3:', when='@3.1:', type='run') - depends_on('py-six@1.3:', when='@:2.5', type='run') - depends_on('py-bz2file', when='@:2.5 ^python@:2', type='run') + depends_on('py-numpy@1.14:', when='@3.2:', type=('build', 'run')) + depends_on('py-numpy@1.8:', type=('build', 'run')) + depends_on('py-packaging@14.3:', when='@3.1:', type=('build', 'run')) + depends_on('py-six@1.3:', when='@:2.5', type=('build', 'run')) + depends_on('py-bz2file', when='@:2.5 ^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-notebook/package.py b/var/spack/repos/builtin/packages/py-notebook/package.py index 97aae5d3e7d99e..fb637af366216f 100644 --- a/var/spack/repos/builtin/packages/py-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-notebook/package.py @@ -55,6 +55,8 @@ class PyNotebook(PythonPackage): depends_on('py-jupyter-client@5.3.1:', type=('build', 'run'), when='@6.0.0:6.0.1') depends_on('py-jupyter-client@5.3.4:', type=('build', 'run'), when='@6.0.2:') depends_on('py-nbformat', type=('build', 'run')) + # https://github.com/jupyter/notebook/pull/6286 + depends_on('py-nbconvert@5:', type=('build', 'run'), when='@5.5:') depends_on('py-nbconvert', type=('build', 'run')) depends_on('py-ipykernel', type=('build', 'run')) depends_on('py-send2trash', type=('build', 'run'), when='@6:') diff --git a/var/spack/repos/builtin/packages/py-npx/package.py b/var/spack/repos/builtin/packages/py-npx/package.py new file mode 100644 index 00000000000000..c63e3ed38027c8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-npx/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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 import * + + +class PyNpx(PythonPackage): + """Some useful extensions for NumPy""" + + homepage = "https://github.com/nschloe/npx" + pypi = "npx/npx-0.1.0.tar.gz" + + version('0.1.0', sha256='3edec9508326b6724d7c176dbcba2098508788241b8a671aab583d0c72b2f05b') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-flit-core@3.2:3', type='build') + depends_on('py-numpy@1.20.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-numba/package.py b/var/spack/repos/builtin/packages/py-numba/package.py index 5dc96a7b7826e3..6af98fe2173da6 100644 --- a/var/spack/repos/builtin/packages/py-numba/package.py +++ b/var/spack/repos/builtin/packages/py-numba/package.py @@ -12,6 +12,7 @@ class PyNumba(PythonPackage): homepage = "https://numba.pydata.org/" pypi = "numba/numba-0.35.0.tar.gz" + version('0.55.1', sha256='03e9069a2666d1c84f93b00dbd716fb8fedde8bb2c6efafa2f04842a46442ea3') version('0.54.0', sha256='bad6bd98ab2e41c34aa9c80b8d9737e07d92a53df4f74d3ada1458b0b516ccff') version('0.51.1', sha256='1e765b1a41535684bf3b0465c1d0a24dcbbff6af325270c8f4dad924c0940160') version('0.50.1', sha256='89e81b51b880f9b18c82b7095beaccc6856fcf84ba29c4f0ced42e4e5748a3a7') @@ -19,25 +20,28 @@ class PyNumba(PythonPackage): version('0.40.1', sha256='52d046c13bcf0de79dbfb936874b7228f141b9b8e3447cc35855e9ad3e12aa33') version('0.35.0', sha256='11564937757605bee590c5758c73cfe9fd6d569726b56d970316a6228971ecc3') - depends_on('python@3.7:3.9', type=('build', 'run'), when='@0.54.0:') - depends_on('python@3.6:', type=('build', 'run'), when='@0.48.0:') + depends_on('python@3.7:3.10', type=('build', 'run'), when='@0.55.0:') + depends_on('python@3.7:3.9', type=('build', 'run'), when='@0.54') + depends_on('python@3.6:3.9', type=('build', 'run'), when='@0.53') + depends_on('python@3.6:3.8', type=('build', 'run'), when='@0.52') + # set upper bound for python the same as newer release + depends_on('python@3.6:3.8', type=('build', 'run'), when='@0.48:0.51') depends_on('python@3.3:3.7', type=('build', 'run'), when='@0.40.1:0.47') depends_on('python@3.3:3.6', type=('build', 'run'), when='@:0.35.0') - depends_on('py-numpy@1.17:1.20', type=('build', 'run'), when='@0.54.0:') - depends_on('py-numpy@1.15:', type=('build', 'run'), when='@0.48.0:') - depends_on('py-numpy@1.10:1', type=('build', 'run')) + depends_on('py-numpy@1.18:1.21', type=('build', 'run'), when='@0.55.0:') + depends_on('py-numpy@1.17:1.20', type=('build', 'run'), when='@0.54') + # set upper bound for py-numpy the same as newer release + depends_on('py-numpy@1.15:1.20', type=('build', 'run'), when='@0.48:0.53') + depends_on('py-numpy@1.10:1.20', type=('build', 'run'), when='@:0.47') depends_on('py-setuptools', type=('build', 'run')) - # Note: As of 1 Nov 2018, 0.25 was the latest version of py-llvmlite. - # That's why it was chosen as an upper bound in the following depends_on - # calls. If newer versions maintain backwards compatibility, the calls - # can be updated accordingly. - depends_on('py-llvmlite@0.37.0:0.37.9', type=('build', 'run'), when='@0.54.0') - depends_on('py-llvmlite@0.34.0:0.34', type=('build', 'run'), when='@0.51.1') - depends_on('py-llvmlite@0.33.0:0.33', type=('build', 'run'), when='@0.50.1') - depends_on('py-llvmlite@0.31.0:0.31', type=('build', 'run'), when='@0.48.0') - depends_on('py-llvmlite@0.25.0:', type=('build', 'run'), when='@0.40.1') - depends_on('py-llvmlite@0.20:0.25', type=('build', 'run'), when='@0.35.1') + depends_on('py-llvmlite@0.38', type=('build', 'run'), when='@0.55.1') + depends_on('py-llvmlite@0.37', type=('build', 'run'), when='@0.54.0') + depends_on('py-llvmlite@0.34', type=('build', 'run'), when='@0.51.1') + depends_on('py-llvmlite@0.33', type=('build', 'run'), when='@0.50.1') + depends_on('py-llvmlite@0.31', type=('build', 'run'), when='@0.47,0.48') + depends_on('py-llvmlite@0.25', type=('build', 'run'), when='@0.40') + depends_on('py-llvmlite@0.20:0.25', type=('build', 'run'), when='@0.35.1') depends_on('py-argparse', type=('build', 'run'), when='^python@:2.6,3.0:3.1') depends_on('py-funcsigs', type=('build', 'run'), when='@:0.47 ^python@:3.2') diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 79e8c34ba5b5e7..032baba89d1750 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -20,9 +20,10 @@ class PyNumpy(PythonPackage): pypi = "numpy/numpy-1.19.4.zip" git = "https://github.com/numpy/numpy.git" - maintainers = ['adamjstewart'] + maintainers = ['adamjstewart', 'rgommers'] version('main', branch='main') + version('1.22.3', sha256='dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18') version('1.22.2', sha256='076aee5a3763d41da6bef9565fdf3cb987606f567cd8b104aded2b38b7b47abf') version('1.22.1', sha256='e348ccf5bc5235fc405ab19d53bec215bb373300e5523c7b476cc0da8a5e9973') version('1.22.0', sha256='a955e4128ac36797aaffd49ab44ec74a71c11d6938df83b1285492d277db5397') @@ -91,12 +92,12 @@ class PyNumpy(PythonPackage): variant('blas', default=True, description='Build with BLAS support') variant('lapack', default=True, description='Build with LAPACK support') - depends_on('python@2.7:2.8,3.4:', type=('build', 'link', 'run'), when='@:1.15') - depends_on('python@2.7:2.8,3.5:', type=('build', 'link', 'run'), when='@1.16') - depends_on('python@3.5:', type=('build', 'link', 'run'), when='@1.17:1.18') - depends_on('python@3.6:', type=('build', 'link', 'run'), when='@1.19') - depends_on('python@3.7:', type=('build', 'link', 'run'), when='@1.20:1.21.1') - depends_on('python@3.7:3.10', type=('build', 'link', 'run'), when='@1.21.2:1.21') + depends_on('python@2.7:2.8,3.4:3.6', type=('build', 'link', 'run'), when='@:1.13') + depends_on('python@2.7:2.8,3.4:3.8', type=('build', 'link', 'run'), when='@1.14:1.15') + depends_on('python@2.7:2.8,3.5:3.9', type=('build', 'link', 'run'), when='@1.16') + depends_on('python@3.5:3.9', type=('build', 'link', 'run'), when='@1.17:1.18') + depends_on('python@3.6:3.10', type=('build', 'link', 'run'), when='@1.19') + depends_on('python@3.7:3.10', type=('build', 'link', 'run'), when='@1.20:1.21') depends_on('python@3.8:', type=('build', 'link', 'run'), when='@1.22:') depends_on('py-setuptools', type=('build', 'run')) depends_on('py-setuptools@:59', when='@:1.22.1', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-onnx-runtime/package.py b/var/spack/repos/builtin/packages/py-onnx-runtime/package.py index b79c919700aa5f..d2eef4d69c231d 100644 --- a/var/spack/repos/builtin/packages/py-onnx-runtime/package.py +++ b/var/spack/repos/builtin/packages/py-onnx-runtime/package.py @@ -30,6 +30,9 @@ class PyOnnxRuntime(CMakePackage, PythonPackage): depends_on('py-protobuf', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('py-numpy@1.16.6:', type=('build', 'run')) + depends_on('py-sympy@1.1:', type=('build', 'run')) + depends_on('py-packaging', type=('build', 'run')) + depends_on('py-cerberus', type=('build', 'run')) depends_on('py-wheel', type='build') depends_on('py-onnx', type=('build', 'run')) depends_on('zlib') @@ -57,6 +60,7 @@ class PyOnnxRuntime(CMakePackage, PythonPackage): generator = 'Ninja' root_cmakelists_dir = 'cmake' + build_directory = '.' def setup_build_environment(self, env): value = self.spec.variants['dynamic_cpu_arch'].value @@ -106,16 +110,6 @@ def cmake_args(self): return args - def setup_file(self): - return join_path(self.stage.source_path, 'setup.py') - - @run_after('build') - def build_python(self): - """Build everything needed to install.""" - with working_dir(self.stage.source_path): - PythonPackage.build(self, self.spec, self.prefix) - @run_after('install') def install_python(self): - with working_dir(self.stage.source_path): - PythonPackage.install(self, self.spec, self.prefix) + PythonPackage.install(self, self.spec, self.prefix) diff --git a/var/spack/repos/builtin/packages/py-onnx/package.py b/var/spack/repos/builtin/packages/py-onnx/package.py index b6aab777416789..984f77a9182b7f 100644 --- a/var/spack/repos/builtin/packages/py-onnx/package.py +++ b/var/spack/repos/builtin/packages/py-onnx/package.py @@ -19,6 +19,7 @@ class PyOnnx(PythonPackage): homepage = "https://github.com/onnx/onnx" pypi = "Onnx/onnx-1.6.0.tar.gz" + version('1.8.1', sha256='9d65c52009a90499f8c25fdfe5acda3ac88efe0788eb1d5f2575a989277145fb') version('1.6.0', sha256='3b88c3fe521151651a0403c4d131cb2e0311bd28b753ef692020a432a81ce345') version('1.5.0', sha256='1a584a4ef62a6db178c257fffb06a9d8e61b41c0a80bfd8bcd8a253d72c4b0b4') @@ -27,6 +28,7 @@ class PyOnnx(PythonPackage): depends_on('protobuf@:3.17') depends_on('py-protobuf+cpp@:3.17', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) + depends_on('py-numpy@1.16.6:', type=('build', 'run'), when='@1.8.1:') depends_on('py-six', type=('build', 'run')) depends_on('py-typing@3.6.4:', when='^python@:3.4', type=('build', 'run')) depends_on('py-typing-extensions@3.6.2.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-openmc/package.py b/var/spack/repos/builtin/packages/py-openmc/package.py index 30ad451de6b477..3b7946e687418a 100644 --- a/var/spack/repos/builtin/packages/py-openmc/package.py +++ b/var/spack/repos/builtin/packages/py-openmc/package.py @@ -7,27 +7,31 @@ class PyOpenmc(PythonPackage): - """The OpenMC project aims to provide a fully-featured Monte Carlo particle - transport code based on modern methods. It is a constructive solid - geometry, continuous-energy transport code that uses ACE format cross - sections. The project started under the Computational Reactor Physics - Group at MIT.""" + """OpenMC is a community-developed Monte Carlo neutron and photon transport + simulation code. It is capable of performing fixed source, k-eigenvalue, and + subcritical multiplication calculations on models built using either a + constructive solid geometry or CAD representation. OpenMC supports both + continuous-energy and multigroup transport. The continuous-energy particle + interaction data is based on a native HDF5 format that can be generated from ACE + files produced by NJOY. Parallelism is enabled via a hybrid MPI and OpenMP + programming model.""" homepage = "https://docs.openmc.org/" - url = "https://github.com/openmc-dev/openmc/tarball/v0.12.2" + url = "https://github.com/openmc-dev/openmc/tarball/v0.13.0" git = "https://github.com/openmc-dev/openmc.git" version('develop', branch='develop') version('master', branch='master') - version('0.12.2', tag='v0.12.2', submodules=True) - version('0.12.1', tag='v0.12.1', submodules=True) - version('0.12.0', tag='v0.12.0', submodules=True) + version('0.13.0', commit='cff247e35785e7236d67ccf64a3401f0fc50a469', submodules=True) + version('0.12.2', commit='cbfcf908f8abdc1ef6603f67872dcf64c5c657b1', submodules=True) + version('0.12.1', commit='36913589c4f43b7f843332181645241f0f10ae9e', submodules=True) + version('0.12.0', commit='93d6165ecb455fc57242cd03a3f0805089c0e0b9', submodules=True) version('0.11.0', sha256='19a9d8e9c3b581e9060fbd96d30f1098312d217cb5c925eb6372a5786d9175af') variant('mpi', default=False, description='Enable MPI support') # keep py-openmc and openmc at the same version - for ver in ['develop', 'master', '0.12.2', '0.12.1', '0.12.0', '0.11.0']: + for ver in ['develop', 'master', '0.13.0', '0.12.2', '0.12.1', '0.12.0', '0.11.0']: depends_on( 'openmc+mpi@{0}'.format(ver), when='@{0}+mpi'.format(ver), type=('build', 'run') @@ -38,7 +42,8 @@ class PyOpenmc(PythonPackage): ) depends_on('git', type='build') - depends_on('python@3.5:', type=('build', 'run')) + depends_on('python@3.6:', type=('build', 'run'), when='@0.13:') + depends_on('python@3.5:', type=('build', 'run'), when='@:0.12') depends_on('py-cython', type='build') depends_on('py-h5py~mpi', when='~mpi', type=('build', 'run')) depends_on('py-h5py+mpi', when='+mpi', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 73ed303cc88ba0..1e60dd2fd145a9 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -14,31 +14,33 @@ class PyPandas(PythonPackage): maintainers = ['adamjstewart'] - version('1.4.0', sha256='cdd76254c7f0a1583bd4e4781fb450d0ebf392e10d3f12e92c95575942e37df5') - version('1.3.5', sha256='1e4285f5de1012de20ca46b188ccf33521bff61ba5c5ebd78b4fb28e5416a9f1') - version('1.3.4', sha256='a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc') - version('1.3.3', sha256='272c8cb14aa9793eada6b1ebe81994616e647b5892a370c7135efb2924b701df') - version('1.3.2', sha256='cbcb84d63867af3411fa063af3de64902665bb5b3d40b25b2059e40603594e87') - version('1.3.1', sha256='341935a594db24f3ff07d1b34d1d231786aa9adfa84b76eab10bf42907c8aed3') - version('1.3.0', sha256='c554e6c9cf2d5ea1aba5979cc837b3649539ced0e18ece186f055450c86622e2') - version('1.2.5', sha256='14abb8ea73fce8aebbb1fb44bec809163f1c55241bcc1db91c2c780e97265033') - version('1.2.4', sha256='649ecab692fade3cbfcf967ff936496b0cfba0af00a55dfaacd82bdda5cb2279') - version('1.2.3', sha256='df6f10b85aef7a5bb25259ad651ad1cc1d6bb09000595cab47e718cbac250b1d') - version('1.2.2', sha256='14ed84b463e9b84c8ff9308a79b04bf591ae3122a376ee0f62c68a1bd917a773') - version('1.2.1', sha256='5527c5475d955c0bc9689c56865aaa2a7b13c504d6c44f0aadbf57b565af5ebd') - version('1.2.0', sha256='e03386615b970b8b41da6a68afe717626741bb2431cec993640685614c0680e4') - version('1.1.5', sha256='f10fc41ee3c75a474d3bdf68d396f10782d013d7f67db99c0efbfd0acb99701b') - version('1.1.4', sha256='a979d0404b135c63954dea79e6246c45dd45371a88631cdbb4877d844e6de3b6') - version('1.1.3', sha256='babbeda2f83b0686c9ad38d93b10516e68cdcd5771007eb80a763e98aaf44613') - version('1.1.2', sha256='b64ffd87a2cfd31b40acd4b92cb72ea9a52a48165aec4c140e78fd69c45d1444') - version('1.1.1', sha256='53328284a7bb046e2e885fd1b8c078bd896d7fc4575b915d4936f54984a2ba67') - version('1.1.0', sha256='b39508562ad0bb3f384b0db24da7d68a2608b9ddc85b1d931ccaaa92d5e45273') - version('1.0.5', sha256='69c5d920a0b2a9838e677f78f4dde506b95ea8e4d30da25859db6469ded84fa8') - version('1.0.4', sha256='b35d625282baa7b51e82e52622c300a1ca9f786711b2af7cbe64f1e6831f4126') - version('1.0.3', sha256='32f42e322fb903d0e189a4c10b75ba70d90958cc4f66a1781ed027f1a1d14586') - version('1.0.2', sha256='76334ba36aa42f93b6b47b79cbc32187d3a178a4ab1c3a478c8f4198bcd93a73') - version('1.0.1', sha256='3c07765308f091d81b6735d4f2242bb43c332cc3461cae60543df6b10967fe27') - version('1.0.0', sha256='3ea6cc86931f57f18b1240572216f09922d91b19ab8a01cf24734394a3db3bec') + version('1.4.2', sha256='92bc1fc585f1463ca827b45535957815b7deb218c549b7c18402c322c7549a12') + version('1.4.1', sha256='8db93ec98ac7cb5f8ac1420c10f5e3c43533153f253fe7fb6d891cf5aa2b80d2') + version('1.4.0', sha256='cdd76254c7f0a1583bd4e4781fb450d0ebf392e10d3f12e92c95575942e37df5') + version('1.3.5', sha256='1e4285f5de1012de20ca46b188ccf33521bff61ba5c5ebd78b4fb28e5416a9f1') + version('1.3.4', sha256='a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc') + version('1.3.3', sha256='272c8cb14aa9793eada6b1ebe81994616e647b5892a370c7135efb2924b701df') + version('1.3.2', sha256='cbcb84d63867af3411fa063af3de64902665bb5b3d40b25b2059e40603594e87') + version('1.3.1', sha256='341935a594db24f3ff07d1b34d1d231786aa9adfa84b76eab10bf42907c8aed3') + version('1.3.0', sha256='c554e6c9cf2d5ea1aba5979cc837b3649539ced0e18ece186f055450c86622e2') + version('1.2.5', sha256='14abb8ea73fce8aebbb1fb44bec809163f1c55241bcc1db91c2c780e97265033') + version('1.2.4', sha256='649ecab692fade3cbfcf967ff936496b0cfba0af00a55dfaacd82bdda5cb2279') + version('1.2.3', sha256='df6f10b85aef7a5bb25259ad651ad1cc1d6bb09000595cab47e718cbac250b1d') + version('1.2.2', sha256='14ed84b463e9b84c8ff9308a79b04bf591ae3122a376ee0f62c68a1bd917a773') + version('1.2.1', sha256='5527c5475d955c0bc9689c56865aaa2a7b13c504d6c44f0aadbf57b565af5ebd') + version('1.2.0', sha256='e03386615b970b8b41da6a68afe717626741bb2431cec993640685614c0680e4') + version('1.1.5', sha256='f10fc41ee3c75a474d3bdf68d396f10782d013d7f67db99c0efbfd0acb99701b') + version('1.1.4', sha256='a979d0404b135c63954dea79e6246c45dd45371a88631cdbb4877d844e6de3b6') + version('1.1.3', sha256='babbeda2f83b0686c9ad38d93b10516e68cdcd5771007eb80a763e98aaf44613') + version('1.1.2', sha256='b64ffd87a2cfd31b40acd4b92cb72ea9a52a48165aec4c140e78fd69c45d1444') + version('1.1.1', sha256='53328284a7bb046e2e885fd1b8c078bd896d7fc4575b915d4936f54984a2ba67') + version('1.1.0', sha256='b39508562ad0bb3f384b0db24da7d68a2608b9ddc85b1d931ccaaa92d5e45273') + version('1.0.5', sha256='69c5d920a0b2a9838e677f78f4dde506b95ea8e4d30da25859db6469ded84fa8') + version('1.0.4', sha256='b35d625282baa7b51e82e52622c300a1ca9f786711b2af7cbe64f1e6831f4126') + version('1.0.3', sha256='32f42e322fb903d0e189a4c10b75ba70d90958cc4f66a1781ed027f1a1d14586') + version('1.0.2', sha256='76334ba36aa42f93b6b47b79cbc32187d3a178a4ab1c3a478c8f4198bcd93a73') + version('1.0.1', sha256='3c07765308f091d81b6735d4f2242bb43c332cc3461cae60543df6b10967fe27') + version('1.0.0', sha256='3ea6cc86931f57f18b1240572216f09922d91b19ab8a01cf24734394a3db3bec') version('0.25.3', sha256='52da74df8a9c9a103af0a72c9d5fdc8e0183a90884278db7f386b5692a2220a4') version('0.25.2', sha256='ca91a19d1f0a280874a24dca44aadce42da7f3a7edb7e9ab7c7baad8febee2be') version('0.25.1', sha256='cb2e197b7b0687becb026b84d3c242482f20cbb29a9981e43604eb67576da9f6') @@ -100,9 +102,13 @@ class PyPandas(PythonPackage): @property def import_modules(self): - modules = super(PythonPackage, self).import_modules + modules = super(__class__, self).import_modules - ignored_imports = ["pandas.tests", "pandas.plotting._matplotlib"] + ignored_imports = [ + "pandas.tests", + "pandas.plotting._matplotlib", + "pandas.core._numba.kernels" + ] return [i for i in modules if not any(map(i.startswith, ignored_imports))] diff --git a/var/spack/repos/builtin/packages/py-param/package.py b/var/spack/repos/builtin/packages/py-param/package.py new file mode 100644 index 00000000000000..6766f805b9bdf6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-param/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class PyParam(PythonPackage): + """Param is a library providing Parameters: Python attributes extended to have + features such as type and range checking, dynamically generated values, + documentation strings, default values, etc., each of which is inherited from + parent classes if not specified in a subclass.""" + + homepage = "https://param.holoviz.org/" + pypi = "param/param-1.12.0.tar.gz" + + maintainers = ['haralmha'] + + version('1.12.0', sha256='35d0281c8e3beb6dd469f46ff0b917752a54bed94d1b0c567346c76d0ff59c4a') + + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index e2643c50c7f492..e4b10fc00d5a66 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -17,6 +17,9 @@ class PyPetsc4py(PythonPackage): maintainers = ['balay'] version('main', branch='main') + version('3.17.0', sha256='a3543ebb87dc2b47046e1950b3a356e249d365526515b5e6b328aa7bfae94d29') + version('3.16.6', sha256='a9b4ed19ca2e62b38da51ac3a70539d9581a1354cc4464c93963d7e95bd8ef66') + version('3.16.5', sha256='f0ab5c5947ee0b58e51f741f46fab0d32e6458245e8f8b81fcf3da77bad50d25') version('3.16.4', sha256='51ac59be9d741ede95c8e0e13b6062b6fb1bd1c975da26732ba059ee8c5bb7eb') version('3.16.3', sha256='10e730d50716e40de55b200ff53b461bc4f3fcc798ba89b74dfe6bdf63fa7b6e') version('3.16.2', sha256='906634497ae9c59f2c97e12b935954e5ba95df2e764290c24fff6751b7510b04') @@ -55,6 +58,7 @@ class PyPetsc4py(PythonPackage): depends_on('petsc+mpi', when='+mpi') depends_on('petsc~mpi', when='~mpi') depends_on('petsc@main', when='@main') + depends_on('petsc@3.17.0:3.17', when='@3.17.0:3.17') depends_on('petsc@3.16.0:3.16', when='@3.16.0:3.16') depends_on('petsc@3.15.0:3.15', when='@3.15.0:3.15') depends_on('petsc@3.14.2:3.14', when='@3.14.1:3.14') diff --git a/var/spack/repos/builtin/packages/py-plotnine/package.py b/var/spack/repos/builtin/packages/py-plotnine/package.py new file mode 100644 index 00000000000000..3ccb7bb9bc3e83 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-plotnine/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2022 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.directives import depends_on, version + + +class PyPlotnine(PythonPackage): + """plotnine is an implementation of a grammar of graphics in Python, it is + based on ggplot2. The grammar allows users to compose plots by explicitly + mapping data to the visual objects that make up the plot.""" + + pypi = "plotnine/plotnine-0.8.0.tar.gz" + + version( + "0.8.0", + sha256="39de59edcc28106761b65238647d0b1f6212ea7f3a78f8be0b846616db969276", + ) + + depends_on('python@3.6:', type=('build', 'run')) + depends_on("py-descartes@1.1.0:", type=("build", "run")) + depends_on("py-matplotlib@3.1.1:", type=("build", "run")) + depends_on("py-mizani@0.7.3:", type=("build", "run")) + depends_on("py-numpy@1.19.0:", type=("build", "run")) + depends_on("py-pandas@1.1.0:", type=("build", "run")) + depends_on("py-patsy@0.5.1:", type=("build", "run")) + depends_on("py-scipy@1.5.0:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-statsmodels@0.12.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-priority/package.py b/var/spack/repos/builtin/packages/py-priority/package.py new file mode 100644 index 00000000000000..03707a38d5fefa --- /dev/null +++ b/var/spack/repos/builtin/packages/py-priority/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class PyPriority(PythonPackage): + """Priority is a pure-Python implementation of the priority + logic for HTTP/2, set out in RFC 7540 Section 5.3 (Stream + Priority). This logic allows for clients to express a + preference for how the server allocates its (limited) + resources to the many outstanding HTTP requests that may be + running over a single HTTP/2 connection.""" + + homepage = "https://github.com/python-hyper/priority/" + pypi = "priority/priority-2.0.0.tar.gz" + + version('2.0.0', sha256='c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0') + + depends_on('python@3.6.1:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pspamm/package.py b/var/spack/repos/builtin/packages/py-pspamm/package.py new file mode 100644 index 00000000000000..9c385cf7d916d5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pspamm/package.py @@ -0,0 +1,31 @@ +# Copyright 2013-2021 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 import * + + +class PyPspamm(PythonPackage): + """Code Generator for Small Sparse Matrix Multiplication""" + + homepage = "https://github.com/SeisSol/PSpaMM/blob/master/README.md" + git = "https://github.com/SeisSol/PSpaMM.git" + + maintainers = ['ravil-mobile'] + + version('develop', branch='master') + + variant('numpy', default=False, description="installs numpy") + variant('scipy', default=False, description="installs scipy") + + depends_on('py-numpy', when='+numpy') + depends_on('py-scipy', when='+scipy') + + def install(self, spec, prefix): + install_tree('.', prefix) + + 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-pure-eval/package.py b/var/spack/repos/builtin/packages/py-pure-eval/package.py index 7c896bea91f67e..5a5e4a27fd0f2a 100644 --- a/var/spack/repos/builtin/packages/py-pure-eval/package.py +++ b/var/spack/repos/builtin/packages/py-pure-eval/package.py @@ -7,14 +7,15 @@ class PyPureEval(PythonPackage): - """This is a Python package that lets you safely evaluate certain AST nodes - without triggering arbitrary code that may have unwanted side effects.""" + """Safely evaluate AST nodes without side effects.""" homepage = "https://github.com/alexmojaki/pure_eval" - url = "https://github.com/alexmojaki/pure_eval/archive/master.zip" git = "https://github.com/alexmojaki/pure_eval.git" + pypi = "pure_eval/pure_eval-0.2.2.tar.gz" version('master', branch='master') + version('0.2.2', sha256='2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3') - depends_on('python@3.5:3.9', type=('build', 'run')) - depends_on('py-setuptools@44:', type='build') + depends_on('python@3.5:', type=('build', 'run')) + depends_on('py-setuptools@44:', type='build') + depends_on('py-setuptools-scm+toml@3.4.3:', type='build') diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py index a25cb78c8970d4..7f9d167f5601dd 100644 --- a/var/spack/repos/builtin/packages/py-pybind11/package.py +++ b/var/spack/repos/builtin/packages/py-pybind11/package.py @@ -25,6 +25,8 @@ class PyPybind11(CMakePackage, PythonPackage): maintainers = ['ax3l'] version('master', branch='master') + version('2.9.1', sha256='c6160321dc98e6e1184cc791fbeadd2907bb4a0ce0e447f2ea4ff8ab56550913') + version('2.9.0', sha256='057fb68dafd972bc13afb855f3b0d8cf0fa1a78ef053e815d9af79be7ff567cb') version('2.8.1', sha256='f1bcc07caa568eb312411dde5308b1e250bd0e1bc020fae855bf9f43209940cc') version('2.8.0', sha256='9ca7770fc5453b10b00a4a2f99754d7a29af8952330be5f5602e7c2635fa3e79') version('2.7.1', sha256='616d1c42e4cf14fa27b2a4ff759d7d7b33006fdc5ad8fd603bb2c22622f27020') @@ -42,10 +44,12 @@ class PyPybind11(CMakePackage, PythonPackage): version('2.1.1', sha256='f2c6874f1ea5b4ad4ffffe352413f7d2cd1a49f9050940805c2a082348621540') version('2.1.0', sha256='2860f2b8d0c9f65f0698289a161385f59d099b7ead1bf64e8993c486f2b93ee0') - depends_on('py-setuptools', type='build') + depends_on('ninja', type='build') + depends_on('py-setuptools@42:', type='build') depends_on('py-pytest', type='test') depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) depends_on('cmake@3.13:', type='build') + depends_on('cmake@3.18:', type='build', when='@2.6.0:') # compiler support conflicts('%gcc@:4.7') diff --git a/var/spack/repos/builtin/packages/py-pycompadre/package.py b/var/spack/repos/builtin/packages/py-pycompadre/package.py new file mode 100644 index 00000000000000..503cabe99ae310 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pycompadre/package.py @@ -0,0 +1,51 @@ +# Copyright 2013-2022 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 import * + + +class PyPycompadre(PythonPackage): + """The Compadre Toolkit provides a performance portable solution for the + parallel evaluation of computationally dense kernels. The toolkit + specifically targets the Generalized Moving Least Squares (GMLS) approach, + which requires the inversion of small dense matrices. The result is a set + of weights that provide the information needed for remap or entries that + constitute the rows of some globally sparse matrix. + """ + + homepage = 'https://github.com/SNLComputation/compadre' + git = 'https://github.com/SNLComputation/compadre.git' + url = 'https://github.com/SNLComputation/compadre/archive/v1.3.0.tar.gz' + maintainers = ['kuberry'] + + version('master', branch='master', preferred=True) + + variant('trilinos', default=False, description='Use Kokkos from Trilinos') + variant('debug', default='0', values=['0', '1', '2'], multi=False, + description='Debugging level 0) release 1) debug 2) extreme debugging') + + depends_on('cmake@3.10.0:', type='build') + depends_on('python@3.4:', type=('build', 'link', 'run')) + depends_on('py-pip', type=('build', 'link', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-cython@0.23:', type='build') + depends_on('trilinos@13.2:', when='+trilinos') + + @run_before('install') + def set_cmake_from_variants(self): + spec = self.spec + with open('cmake_opts.txt', 'w') as f: + if '+trilinos' in spec: + f.write('Trilinos_PREFIX:PATH=%s\n' % spec['trilinos'].prefix) + if spec.variants['debug'].value == '0': + f.write('CMAKE_CXX_FLAGS:STRING=%s\n' % + "' -Ofast -funroll-loops -march=native -mtune=native '") + f.write('Compadre_DEBUG:BOOL=OFF\n') + else: + f.write('CMAKE_CXX_FLAGS:STRING=%s\n' % "'-g -O0'") + f.write('CMAKE_BUILD_TYPE:STRING=%s\n' % "DEBUG") + f.write('Compadre_DEBUG:BOOL=ON\n') + if spec.variants['debug'].value == '2': + f.write('Compadre_EXTREME_DEBUG:BOOL=ON\n') diff --git a/var/spack/repos/builtin/packages/py-pycuda/package.py b/var/spack/repos/builtin/packages/py-pycuda/package.py index 91733e833de0e1..bb5a9658403243 100644 --- a/var/spack/repos/builtin/packages/py-pycuda/package.py +++ b/var/spack/repos/builtin/packages/py-pycuda/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class PyPycuda(PythonPackage): @@ -34,6 +35,10 @@ def configure(self): depends_on('py-setuptools', type='build') depends_on('cuda') depends_on('boost+python') + # 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('python@3.6:3', type=('build', 'run'), when='@2020.1:') depends_on('py-numpy@1.6:', type=('build', 'run')) depends_on('py-pytools@2011.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pyfr/package.py b/var/spack/repos/builtin/packages/py-pyfr/package.py new file mode 100644 index 00000000000000..ce8f68832dd253 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyfr/package.py @@ -0,0 +1,51 @@ +# Copyright 2013-2022 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 import * + + +class PyPyfr(PythonPackage): + """PyFR is an open-source Python based framework for solving + advection-diffusion type problems on streaming architectures + using the Flux Reconstruction approach of Huynh.""" + + homepage = "http://www.pyfr.org/" + pypi = "pyfr/pyfr-1.13.0.tar.gz" + git = "https://github.com/PyFR/PyFR/" + maintainers = ["michaellaufer"] + + # git branches + version("develop", branch="develop") + version("master", branch="master") + + # pypi releases + version( + "1.13.0", + sha256="ac6ecec738d4e23799ab8c50dea9bdbd7d37bc971bd33f22720c5a230b8e7b2f", + ) + + variant("metis", default=True, description="Metis for mesh partitioning") + variant("scotch", default=False, description="Scotch for mesh partitioning") + variant("cuda", default=False, description="CUDA backend support") + variant("hip", default=False, description="HIP backend support") + + # Required dependencies + depends_on("python@3.9:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-gimmik@2.2:2", type=('build', 'run')) + depends_on("py-h5py@2.10:", type=('build', 'run')) + depends_on("py-mako@1.0.0:", type=('build', 'run')) + depends_on("py-mpi4py@3.1.0:", type=('build', 'run')) + depends_on("py-numpy@1.20:+blas", type=('build', 'run')) + depends_on("py-platformdirs@2.2.0:", type=('build', 'run')) + depends_on("py-pytools@2016.2.1:", type=('build', 'run')) + depends_on("py-scipy", type=('build', 'run')) + + # Optional dependecies + depends_on("metis@5.0:", when="+metis", type=('run')) + depends_on("scotch@6.0:", when="+scotch", type=('run')) + depends_on("cuda@8.0:", when="+cuda", type=('run')) + depends_on("rocblas@4.5.0:", when="+hip", type=('run')) diff --git a/var/spack/repos/builtin/packages/py-pymumps/package.py b/var/spack/repos/builtin/packages/py-pymumps/package.py index 87ce6255b7d8cb..20c6205bbf0092 100644 --- a/var/spack/repos/builtin/packages/py-pymumps/package.py +++ b/var/spack/repos/builtin/packages/py-pymumps/package.py @@ -27,18 +27,3 @@ class PyPymumps(PythonPackage): # Patch to add libmumps_common.so to library dependencies # See https://github.com/PyMumps/pymumps/issues/13 patch('py-pymumps.setup.patch') - - def install_options(self, spec, prefix): - # Requires --library-dirs, - # '--libraries', spec['mumps'].prefix.libs, does not cut it - args = ['--include-dirs', - spec['mumps'].prefix.include, - '--library-dirs', - spec['mumps'].libs.directories[0], - '--rpath', - spec['mumps'].libs.directories[0], - '-l', 'dmumps', - '-l', 'mumps_common', - '-l', 'pord', - ] - return args diff --git a/var/spack/repos/builtin/packages/py-pynvim/package.py b/var/spack/repos/builtin/packages/py-pynvim/package.py new file mode 100644 index 00000000000000..a269d83b671a64 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pynvim/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class PyPynvim(PythonPackage): + """Neovim python client""" + + homepage = "https://pynvim.readthedocs.io/en/latest/" + pypi = "pynvim/pynvim-0.4.3.tar.gz" + + maintainers = ['trws'] + + version('0.4.3', sha256='3a795378bde5e8092fbeb3a1a99be9c613d2685542f1db0e5c6fd467eed56dff') + + depends_on('py-setuptools', type='build') + + depends_on('py-msgpack', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pyopencl/package.py b/var/spack/repos/builtin/packages/py-pyopencl/package.py index 25dac2298e669c..f92ac1541416d2 100644 --- a/var/spack/repos/builtin/packages/py-pyopencl/package.py +++ b/var/spack/repos/builtin/packages/py-pyopencl/package.py @@ -27,6 +27,7 @@ class PyPyopencl(PythonPackage): depends_on('py-pybind11@2.5.0:', type='build') depends_on('py-pytools@2017.6:', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) @run_before('install') def prepare(self): diff --git a/var/spack/repos/builtin/packages/py-pypinyin/package.py b/var/spack/repos/builtin/packages/py-pypinyin/package.py new file mode 100644 index 00000000000000..c201d89e319881 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pypinyin/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class PyPypinyin(PythonPackage): + """Chinese Pinyin conversion module/tool.""" + + homepage = "https://github.com/mozillazg/python-pinyin" + pypi = "pypinyin/pypinyin-0.46.0.tar.gz" + + version('0.46.0', sha256='0d2e41e95dbc20a232c0f5d3850654eebbfcba303d96358d2c46592725bb989c') + + depends_on('python@2.6:2,3.3:3', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-argparse', type=('build', 'run'), when='^python@:2.6') + depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3') + depends_on('py-typing', type=('build', 'run'), when='^python@:3.4') diff --git a/var/spack/repos/builtin/packages/py-pysam/package.py b/var/spack/repos/builtin/packages/py-pysam/package.py index 592d157167d2a3..d0a83028386652 100644 --- a/var/spack/repos/builtin/packages/py-pysam/package.py +++ b/var/spack/repos/builtin/packages/py-pysam/package.py @@ -13,6 +13,7 @@ class PyPysam(PythonPackage): homepage = "https://github.com/pysam-developers/pysam" pypi = "pysam/pysam-0.14.1.tar.gz" + version('0.18.0', sha256='1d6d49a0b3c626fae410a93d4c80583a8b5ddaacc9b46a080b250dbcebd30a59') version('0.15.3', sha256='a98dd0a164aa664b1ab30a36f653752f00e93c13deeb66868597f4b2a30f7265') version('0.15.2', sha256='d049efd91ed5b1af515aa30280bc9cb46a92ddd15d546c9b21ee68a6ed4055d9') version('0.15.1', sha256='658421124c2f3de1b7445e03ca8413df0077f67ea9980abdaab0d1b5f7a8936f') @@ -20,6 +21,7 @@ class PyPysam(PythonPackage): version('0.7.7', sha256='c9f3018482eec99ee199dda3fdef2aa7424dde6574672a4c0d209a10985755cc') depends_on('py-setuptools', type='build') + depends_on('py-cython@0.29.12:', when='@0.18:', type='build') depends_on('py-cython@0.21:', when='@0.14:', type='build') depends_on('py-cython@0.17:', type='build') depends_on('curl') diff --git a/var/spack/repos/builtin/packages/py-pysimdjson/package.py b/var/spack/repos/builtin/packages/py-pysimdjson/package.py new file mode 100644 index 00000000000000..1177b5b0aa3d15 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pysimdjson/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2022 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 import * + + +class PyPysimdjson(PythonPackage): + """Python bindings for the simdjson project, a SIMD-accelerated + JSON parser. If SIMD instructions are unavailable a fallback parser + is used, making pysimdjson safe to use anywhere.""" + + homepage = "http://github.com/TkTech/pysimdjson" + pypi = "pysimdjson/pysimdjson-4.0.3.tar.gz" + + maintainers = ['haralmha'] + + version('4.0.3', sha256='61900992d7f992b073a8c5f93cafa4af9bfd3209624baa775699b0fdd6f67517') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pytest-parallel/package.py b/var/spack/repos/builtin/packages/py-pytest-parallel/package.py new file mode 100644 index 00000000000000..2271617b6455f8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-parallel/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PyPytestParallel(PythonPackage): + """A pytest plugin for parallel and concurrent testing.""" + + homepage = "https://github.com/browsertron/pytest-parallel" + pypi = "pytest-parallel/pytest-parallel-0.1.1.tar.gz" + + version('0.1.1', sha256='9aac3fc199a168c0a8559b60249d9eb254de7af58c12cee0310b54d4affdbfab') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-pytest@3.0:', type=('build', 'run')) + depends_on('py-tblib', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-python-mapnik/package.py b/var/spack/repos/builtin/packages/py-python-mapnik/package.py index 9fc1e6375533ba..c603e2a2cb0868 100644 --- a/var/spack/repos/builtin/packages/py-python-mapnik/package.py +++ b/var/spack/repos/builtin/packages/py-python-mapnik/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class PyPythonMapnik(PythonPackage): @@ -20,6 +21,11 @@ class PyPythonMapnik(PythonPackage): depends_on('py-setuptools', type='build') depends_on('mapnik', type=('build', 'link', 'run')) depends_on('boost +python+thread') + + # 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) # py-pycairo is need by mapnik.printing depends_on('py-pycairo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pyvcf/package.py b/var/spack/repos/builtin/packages/py-pyvcf/package.py index 2b51be510fc357..a07e781153ee76 100644 --- a/var/spack/repos/builtin/packages/py-pyvcf/package.py +++ b/var/spack/repos/builtin/packages/py-pyvcf/package.py @@ -15,7 +15,7 @@ class PyPyvcf(PythonPackage): version('0.6.8', sha256='e9d872513d179d229ab61da47a33f42726e9613784d1cb2bac3f8e2642f6f9d9') version('0.6.0', sha256='d9ec3bbedb64fa35c2648a9c41fdefaedd3912ff597a436e073d27aeccf5de7c') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools@:57', type='build') depends_on('py-argparse', when='^python@:2.6,3.0:3.1', type=('build', 'run')) depends_on('py-counter', when='^python@:2.6', type=('build', 'run')) depends_on('py-ordereddict', when='^python@:2.6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-qmtest/package.py b/var/spack/repos/builtin/packages/py-qmtest/package.py new file mode 100644 index 00000000000000..94985754486678 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-qmtest/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PyQmtest(PythonPackage): + """A general purpose testing framework""" + + homepage = "https://github.com/MentorEmbedded/qmtest" + url = "https://github.com/MentorEmbedded/qmtest/archive/refs/tags/2.4.1.tar.gz" + + maintainers = ['haralmha'] + + version('2.4.1', sha256='098f705aea9c8f7f5b6b5fe131974cee33b50cad3e13977e39708f306ce9ac91') + + depends_on('python@2.2:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-quart/package.py b/var/spack/repos/builtin/packages/py-quart/package.py new file mode 100644 index 00000000000000..bccf02c4ced7fb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-quart/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2022 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 import * + + +class PyQuart(PythonPackage): + """A Python ASGI web microframework with the same API as + Flask.""" + + homepage = "https://gitlab.com/pgjones/quart/" + pypi = "Quart/Quart-0.16.3.tar.gz" + + version('0.16.3', sha256='16521d8cf062461b158433d820fff509f98fb997ae6c28740eda061d9cba7d5e') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-poetry-core@1:', type='build') + depends_on('py-aiofiles', type=('build', 'run')) + depends_on('py-blinker', type=('build', 'run')) + depends_on('py-click', type=('build', 'run')) + depends_on('py-hypercorn@0.11.2:', type=('build', 'run')) + depends_on('py-itsdangerous', type=('build', 'run')) + depends_on('py-jinja2', type=('build', 'run')) + depends_on('py-toml', type=('build', 'run')) + depends_on('py-werkzeug@2:', type=('build', 'run')) + depends_on('py-importlib-metadata', type=('build', 'run'), when='^python@:3.7') + depends_on('py-typing-extensions', type=('build', 'run'), when='^python@:3.7') diff --git a/var/spack/repos/builtin/packages/py-quast/package.py b/var/spack/repos/builtin/packages/py-quast/package.py index d0eeb27e31db1b..bc5042b64455c7 100644 --- a/var/spack/repos/builtin/packages/py-quast/package.py +++ b/var/spack/repos/builtin/packages/py-quast/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class PyQuast(PythonPackage): @@ -17,6 +18,11 @@ class PyQuast(PythonPackage): version('4.6.0', sha256='6bee86654b457a981718a19acacffca6a3e74f30997ad06162a70fd2a181ca2e') depends_on('boost@1.56.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('perl@5.6.0:') depends_on('python@2.5:,3.3:') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-rasterio/package.py b/var/spack/repos/builtin/packages/py-rasterio/package.py index 4e2bf68973bbe5..50766129c791eb 100644 --- a/var/spack/repos/builtin/packages/py-rasterio/package.py +++ b/var/spack/repos/builtin/packages/py-rasterio/package.py @@ -21,27 +21,34 @@ class PyRasterio(PythonPackage): maintainers = ['adamjstewart'] version('master', branch='master') + version('1.2.10', sha256='6062456047ba6494fe18bd0da98a383b6fad5306b16cd52a22e76c59172a2b5f') version('1.2.3', sha256='d8c345e01052b70ac3bbbe100c83def813c0ab19f7412c2c98e553d03720c1c5') version('1.1.8', sha256='f7cac7e2ecf65b4b1eb78c994c63bd429b67dc679b0bc0ecfe487d3d5bf88fd5') version('1.1.5', sha256='ebe75c71f9257c780615caaec8ef81fa4602702cf9290a65c213e1639284acc9') version('1.0.24', sha256='4839479621045211f66868ec49625979693450bc2e476f23e7e8ac4804eaf452') version('1.0a12', sha256='47d460326e04c64590ff56952271a184a6307f814efc34fb319c12e690585f3c') + # From README.rst depends_on('python@3.6:3.9', type=('build', 'link', 'run'), when='@1.2:') depends_on('python@2.7:2.8,3.5:3.8', type=('build', 'link', 'run'), when='@1.1.0:1.1') depends_on('python@2.7:2.8,3.5:3.7', type=('build', 'link', 'run'), when='@:1.0') - depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-numpy@1.15:', type=('build', 'link', 'run'), when='@1.2:') + depends_on('gdal@2.4:3.3', when='@1.2.7:') + 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') + depends_on('gdal@1.11:3.0', when='@1.0.25:1.0') + depends_on('gdal@1.11:2', when='@:1.0.24') + + # From setup.py depends_on('py-cython', type='build', when='@master') depends_on('py-affine', type=('build', 'run')) depends_on('py-attrs', type=('build', 'run')) - depends_on('py-click@4:7', type=('build', 'run')) + depends_on('py-certifi', when='@1.2:', type=('build', 'run')) + depends_on('py-click@4:', when='@1.2.4:', type=('build', 'run')) + depends_on('py-click@4:7', when='@:1.2.3', type=('build', 'run')) depends_on('py-cligj@0.5:', type=('build', 'run')) - depends_on('py-numpy@1.15:', type=('build', 'link', 'run'), when='@1.2:') depends_on('py-numpy', type=('build', 'link', 'run')) depends_on('py-snuggs@1.4.1:', type=('build', 'run')) depends_on('py-click-plugins', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) depends_on('py-enum34', type='run', when='^python@:3.3') - depends_on('gdal@2.3:3.2', when='@1.2.0:') - depends_on('gdal@1.11:3.2', when='@1.1.0:1.1') - depends_on('gdal@1.11:3.0', when='@1.0.25:1.0') - depends_on('gdal@1.11:2', when='@:1.0.24') diff --git a/var/spack/repos/builtin/packages/py-reportlab/package.py b/var/spack/repos/builtin/packages/py-reportlab/package.py index 2816dc1019adf6..95d2c8fc8bc5f7 100644 --- a/var/spack/repos/builtin/packages/py-reportlab/package.py +++ b/var/spack/repos/builtin/packages/py-reportlab/package.py @@ -19,3 +19,8 @@ class PyReportlab(PythonPackage): # - easy_install, provided by py-setuptools # - pip, provided by py-pip extends('python', ignore=r'bin/.*') + + depends_on('py-setuptools@2.2:', type='build') + depends_on('py-pip@1.4.1:', type='build') + depends_on('pil@2.4.0:', type=('build', 'run')) + depends_on('freetype') diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 6db972b0f12737..64ebbf909b9fb5 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -15,9 +15,12 @@ class PyScipy(PythonPackage): pypi = "scipy/scipy-1.5.4.tar.gz" git = "https://github.com/scipy/scipy.git" - maintainers = ['adamjstewart'] + maintainers = ['adamjstewart', 'rgommers'] version('master', branch='master') + # DH* 1.8.0 is work in progress, but unfortunately pinning the version to 1.7.3 in packages.yaml + # doesn't work - presumably some other package is requesting 1.8.0 - therefore comment it out. + #version('1.8.0', sha256='31d4f2d6b724bc9a98e527b5849b8a7e589bf1ea630c33aa563eda912c9ff0bd') version('1.7.3', sha256='ab5875facfdef77e0a47d5fd39ea178b58e60e454a4c85aa1e52fcb80db7babf') version('1.7.2', sha256='fa2dbabaaecdb502641b0b3c00dec05fb475ae48655c66da16c9ed24eda1e711') version('1.7.1', sha256='6b47d5fa7ea651054362561a28b1ccc8da9368a39514c1bbf6c0977a1c376764') @@ -48,21 +51,24 @@ class PyScipy(PythonPackage): version('0.15.1', sha256='a212cbc3b79e9a563aa45fc5c517b3499198bd7eb7e7be1e047568a5f48c259a') version('0.15.0', sha256='0c74e31e08acc8bf9b6ceb9bced73df2ae0cc76003e0366350bc7b26292bf8b1') - depends_on('python@2.6:2.8,3.2:', when='@:0.17', type=('build', 'link', 'run')) - depends_on('python@2.7:2.8,3.4:', when='@0.18:1.2', type=('build', 'link', 'run')) - depends_on('python@3.5:', when='@1.3:1.4', type=('build', 'link', 'run')) - depends_on('python@3.6:', when='@1.5.0:1.5', type=('build', 'link', 'run')) - depends_on('python@3.7:', when='@1.6:1.6.1', type=('build', 'link', 'run')) - depends_on('python@3.7:3.9', when='@1.6.2:1.7.1', type=('build', 'link', 'run')) - depends_on('python@3.7:3.10', when='@1.7.2:', type=('build', 'link', 'run')) + # pyproject.toml + depends_on('py-wheel@:0.37', type='build') depends_on('py-setuptools', type='build') depends_on('py-setuptools@:51.0.0', when='@1.6', type='build') - depends_on('py-setuptools@:57', when='@1.7:', type='build') + depends_on('py-setuptools@:57', when='@1.7', type='build') + depends_on('py-setuptools@:59', when='@1.8:', type='build') + depends_on('py-cython@0.29.18:2', when='@1.7:', type='build') depends_on('py-pybind11@2.2.4:', when='@1.4.0', type=('build', 'link')) depends_on('py-pybind11@2.4.0:', when='@1.4.1:1.4', type=('build', 'link')) depends_on('py-pybind11@2.4.3:', when='@1.5:1.6.1', type=('build', 'link')) depends_on('py-pybind11@2.4.3:2.6', when='@1.6.2:1.7.1', type=('build', 'link')) - depends_on('py-pybind11@2.4.3:2.7', when='@1.7.2:', type=('build', 'link')) + depends_on('py-pybind11@2.4.3:2.7', when='@1.7.2:1.7', type=('build', 'link')) + depends_on('py-pybind11@2.4.3:2.8', when='@1.8:', type=('build', 'link')) + depends_on('py-pythran@0.9.11', when='@1.7.0:1.7.1', type=('build', 'link')) + #depends_on('py-pythran@0.9.12:0.9', when='@1.7.2:1.7', type=('build', 'link')) + #depends_on('py-pythran@0.10', when='@1.8:', type=('build', 'link')) + depends_on('py-pythran@0.9.12:', when='@1.7.2:', type=('build', 'link')) + # setup.py depends_on('py-numpy@1.5.1:+blas+lapack', when='@:0.15', type=('build', 'link', 'run')) depends_on('py-numpy@1.6.2:+blas+lapack', when='@0.16:0.17', type=('build', 'link', 'run')) depends_on('py-numpy@1.7.1:+blas+lapack', when='@0.18.0:0.18', type=('build', 'link', 'run')) @@ -70,10 +76,16 @@ class PyScipy(PythonPackage): depends_on('py-numpy@1.13.3:+blas+lapack', when='@1.3:1.4', type=('build', 'link', 'run')) depends_on('py-numpy@1.14.5:+blas+lapack', when='@1.5.0:1.5', type=('build', 'link', 'run')) depends_on('py-numpy@1.16.5:+blas+lapack', when='@1.6:1.6.1', type=('build', 'link', 'run')) - depends_on('py-numpy@1.16.5:1.22+blas+lapack', when='@1.6.2:', type=('build', 'link', 'run')) - depends_on('py-cython@0.29.18:2', when='@1.7:', type='build') - depends_on('py-pythran@0.9.11', when='@1.7.0:1.7.1', type=('build', 'link')) - depends_on('py-pythran@0.9.12:', when='@1.7.2:', type=('build', 'link')) + depends_on('py-numpy@1.16.5:1.22+blas+lapack', when='@1.6.2:1.7', type=('build', 'link', 'run')) + depends_on('py-numpy@1.17.3:1.24+blas+lapack', when='@1.8:', type=('build', 'link', 'run')) + depends_on('python@2.6:2.8,3.2:', when='@:0.17', type=('build', 'link', 'run')) + depends_on('python@2.7:2.8,3.4:', when='@0.18:1.2', type=('build', 'link', 'run')) + depends_on('python@3.5:', when='@1.3:1.4', type=('build', 'link', 'run')) + depends_on('python@3.6:', when='@1.5.0:1.5', type=('build', 'link', 'run')) + depends_on('python@3.7:', when='@1.6:1.6.1', type=('build', 'link', 'run')) + depends_on('python@3.7:3.9', when='@1.6.2:1.7.1', type=('build', 'link', 'run')) + depends_on('python@3.7:3.10', when='@1.7.2:1.7', type=('build', 'link', 'run')) + depends_on('python@3.8:3.10', when='@1.8:', type=('build', 'link', 'run')) depends_on('py-pytest', type='test') # NOTE: scipy picks up Blas/Lapack from numpy, see @@ -95,6 +107,8 @@ class PyScipy(PythonPackage): # compilation terminated. # See also: https://github.com/macports/macports-ports/commit/d45376ea224ffa9184c6a0ecbcbdf024ee447f12 patch('use_stdc_no_threads.patch', when='platform=darwin %gcc') + # Additional changes needed for scipy-1.8.0 + patch('use_stdc_no_threads_scipy180_addon.patch', when='@1.8: platform=darwin %gcc') def setup_build_environment(self, env): # https://github.com/scipy/scipy/issues/9080 diff --git a/var/spack/repos/builtin/packages/py-scipy/use_stdc_no_threads_scipy180_addon.patch b/var/spack/repos/builtin/packages/py-scipy/use_stdc_no_threads_scipy180_addon.patch new file mode 100644 index 00000000000000..b28bd94b5f36c4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-scipy/use_stdc_no_threads_scipy180_addon.patch @@ -0,0 +1,18 @@ +--- a/scipy/sparse/linalg/_propack/setup.py 2022-04-11 11:33:02.000000000 -0600 ++++ b/scipy/sparse/linalg/_propack/setup.py 2022-04-11 11:34:15.000000000 -0600 +@@ -61,6 +61,7 @@ + src += get_g77_abi_wrappers(lapack_opt) + + cmacros = [('_OPENMP',)] ++ cmacros += [('__STDC_NO_THREADS__',1)] + if needs_g77_abi_wrapper(lapack_opt): + cmacros += [('SCIPY_USE_G77_CDOTC_WRAP', 1)] + +@@ -73,6 +74,7 @@ + libraries=[propack_lib], + extra_info=lapack_opt, + undef_macros=['_OPENMP'], ++ define_macros=[('__STDC_NO_THREADS__',1), + f2py_options=f2py_options, + depends=['setup.py'] + src) + ext._pre_build_hook = pre_build_hook diff --git a/var/spack/repos/builtin/packages/py-sdmetrics/package.py b/var/spack/repos/builtin/packages/py-sdmetrics/package.py new file mode 100644 index 00000000000000..bcaf0e5cdace03 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sdmetrics/package.py @@ -0,0 +1,32 @@ +# Copyright 2013-2022 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 import * + + +class PySdmetrics(PythonPackage): + """The SDMetrics library provides a set of dataset-agnostic + tools for evaluating the quality of a synthetic database + by comparing it to the real database that it is modeled + after.""" + + maintainers = ['Kerilk', 'jke513'] + + homepage = "https://github.com/sdv-dev/SDMetrics" + pypi = "sdmetrics/sdmetrics-0.4.1.tar.gz" + + version('0.4.1', sha256='28df1cdd6988b3464306c1d189da19ee13a49023c53ca8b3db399fc9fd45fae8') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.18:1.19', type=('build', 'run'), when='^python@3.6') + depends_on('py-numpy@1.20:1', type=('build', 'run'), when='^python@3.7:') + depends_on('py-pandas@1.1.3:1.1.4', type=('build', 'run')) + depends_on('py-scikit-learn@0.24:1', type=('build', 'run')) + depends_on('py-scipy@1.5.4:1', type=('build', 'run')) + depends_on('py-torch@1.8.0:1', type=('build', 'run')) + depends_on('py-copulas@0.6.0:0.6', type=('build', 'run')) + depends_on('py-rdt@0.6.1:0.6', type=('build', 'run')) + depends_on('py-pyts@0.12.0:0.12', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-sdv/package.py b/var/spack/repos/builtin/packages/py-sdv/package.py new file mode 100644 index 00000000000000..16627f219b9805 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sdv/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2022 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 import * + + +class PySdv(PythonPackage): + """The Synthetic Data Vault (SDV) is a Synthetic Data + Generation ecosystem of libraries that allows users to + easily learn single-table, multi-table and timeseries + datasets to later on generate new Synthetic Data that + has the same format and statistical properties as the + original dataset.""" + + maintainers = ['Kerilk', 'jke513'] + + homepage = "https://github.com/sdv-dev/SDV" + pypi = "sdv/sdv-0.13.1.tar.gz" + + version('0.14.0', sha256='a62714b73a7e14b95ffbda0920a3a5a6fe891a17d8611380af5f9ca1ff8fc234') + version('0.13.1', sha256='c0a0dbc4a64e5f60cabd123a8c19b3f99594f5a0911de83e08d172b810222c93') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-faker@3.0.0:9', type=('build', 'run')) + depends_on('py-graphviz@0.13.2:0', type=('build', 'run')) + depends_on('py-numpy@1.18:1.19', type=('build', 'run'), when='^python@3.6') + depends_on('py-numpy@1.20:1', type=('build', 'run'), when='^python@3.7:') + depends_on('py-pandas@1.1.3:1.1.4', type=('build', 'run')) + depends_on('py-tqdm@4.15:4', type=('build', 'run')) + depends_on('py-copulas@0.6.0:0.6', type=('build', 'run')) + depends_on('py-ctgan@0.5.0:0.5', type=('build', 'run')) + depends_on('py-deepecho@0.3.0.post1:0.3', type=('build', 'run')) + depends_on('py-rdt@0.6.1:0.6', type=('build', 'run')) + depends_on('py-sdmetrics@0.4.1:0.4', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py index fdaf1fe0a52bdf..47934ade6c3f7a 100644 --- a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py @@ -14,6 +14,7 @@ class PySetuptoolsScm(PythonPackage): version('6.3.2', sha256='a49aa8081eeb3514eb9728fa5040f2eaa962d6c6f4ec9c32f6c1fba88f88a0f2') version('6.0.1', sha256='d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92') + version('5.0.2', sha256='83a0cedd3449e3946307811a4c7b9d89c4b5fd464a2fb5eeccd0a5bb158ae5c8') version('4.1.2', sha256='a8994582e716ec690f33fec70cca0f85bd23ec974e3f783233e4879090a7faa8') version('3.5.0', sha256='5bdf21a05792903cafe7ae0c9501182ab52497614fa6b1750d9dbae7b60c1a87') version('3.3.3', sha256='bd25e1fb5e4d603dcf490f1fde40fb4c595b357795674c3e5cb7f6217ab39ea5') @@ -27,6 +28,7 @@ class PySetuptoolsScm(PythonPackage): depends_on('python@3.6:', when='@6:', type=('build', 'run')) depends_on('py-setuptools@34.4:', type=('build', 'run')) + depends_on('py-setuptools@42:', type=('build', 'run'), when='@5:') depends_on('py-setuptools@45:', type=('build', 'run'), when='@6:') depends_on('py-toml', when='+toml @:6.1.0', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-shapely/package.py b/var/spack/repos/builtin/packages/py-shapely/package.py index 10818e40a29013..66beac41a77185 100644 --- a/var/spack/repos/builtin/packages/py-shapely/package.py +++ b/var/spack/repos/builtin/packages/py-shapely/package.py @@ -18,6 +18,7 @@ class PyShapely(PythonPackage): maintainers = ['adamjstewart'] version('master', branch='master') + version('1.8.1', sha256='0956a3aced40c31a957a52aa1935467334926844a6776b469acb0760a5e6aba8') version('1.8.0', sha256='f5307ee14ba4199f8bbcf6532ca33064661c1433960c432c84f0daa73b47ef9c') version('1.7.1', sha256='1641724c1055459a7e2b8bbe47ba25bdc89554582e62aec23cb3f3ca25f9b129') version('1.7.0', sha256='e21a9fe1a416463ff11ae037766fe410526c95700b9e545372475d2361cc951e') @@ -27,7 +28,7 @@ class PyShapely(PythonPackage): depends_on('python@2.7:2.8,3.4:', when='@1.7:', type=('build', 'link', 'run')) depends_on('python@2.6:', type=('build', 'link', 'run')) depends_on('py-setuptools', type='build') - depends_on('py-cython', type='build') + depends_on('py-cython@0.29.24:', type='build') depends_on('py-numpy', type=('build', 'link', 'run')) depends_on('geos') depends_on('geos@3.3:', when='@1.3:1.7') @@ -36,8 +37,8 @@ class PyShapely(PythonPackage): depends_on('py-pytest-cov', type='test') # https://github.com/Toblerity/Shapely/pull/891 - patch('https://github.com/Toblerity/Shapely/commit/98f6b36710bbe05b4ab59231cb0e08b06fe8b69c.patch', - sha256='4984cd0590beb5091f213948a953f70cea08ea11c5db1de07ba98c19e3d13f06', + patch('https://github.com/Toblerity/Shapely/commit/98f6b36710bbe05b4ab59231cb0e08b06fe8b69c.patch?full_index=1', + sha256='8583cdc97648277fa4faea8bd88d49e43390e87f697b966bd2b4290fba945ba0', when='@:1.7.0') @when('^python@3.7:') diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py index fb97763b0b77bb..3e11686491cee3 100644 --- a/var/spack/repos/builtin/packages/py-slepc4py/package.py +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -17,6 +17,7 @@ class PySlepc4py(PythonPackage): maintainers = ['joseeroman', 'balay'] version('main', branch='main') + version('3.17.0', sha256='cab298eb794739579167fd60ff900db90476c4c93b4ae4e0204e989a6eeb3767') version('3.16.2', sha256='a3950b2d4876e8b7429cf5b7d0faed580a70bbd17735b0279aeda460a4a32e18') version('3.16.1', sha256='3ce93de975fa3966794efb09c315b6aff17e412197f99edb66bbfa71fc49093b') version('3.16.0', sha256='e18850ebccb1e7c59accfbdbe4d004402abbde7f4e1291b0d2c5b560b308fb88') @@ -38,6 +39,7 @@ class PySlepc4py(PythonPackage): depends_on('py-setuptools', type='build') depends_on('py-petsc4py', type=('build', 'run')) + depends_on('py-petsc4py@3.17.0:3.17', when='@3.17.0:3.17', type=('build', 'run')) depends_on('py-petsc4py@3.16.0:3.16', when='@3.16.0:3.16', type=('build', 'run')) depends_on('py-petsc4py@3.15.0:3.15', when='@3.15.0:3.15', type=('build', 'run')) depends_on('py-petsc4py@3.13.0:3.13', when='@3.13.0:3.13', type=('build', 'run')) @@ -49,6 +51,7 @@ class PySlepc4py(PythonPackage): depends_on('py-petsc4py@3.7.0:3.7', when='@3.7.0:3.7', type=('build', 'run')) depends_on('slepc') + depends_on('slepc@3.17.0:3.17', when='@3.17.0:3.17') depends_on('slepc@3.16.0:3.16', when='@3.16.0:3.16') depends_on('slepc@3.15.0:3.15', when='@3.15.0:3.15') depends_on('slepc@3.13.0:3.13', when='@3.13.0:3.13') diff --git a/var/spack/repos/builtin/packages/py-sphinx-argparse/package.py b/var/spack/repos/builtin/packages/py-sphinx-argparse/package.py index a3158fcfc61a9d..6ac0c39d67de62 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-argparse/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-argparse/package.py @@ -18,4 +18,5 @@ class PySphinxArgparse(PythonPackage): depends_on('python@2.7.0:2.7,3.5:', type=('build', 'run')) depends_on('py-sphinx@1.2.0:', type=('build', 'run')) + depends_on('py-poetry-core', type='build') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-stack-data/package.py b/var/spack/repos/builtin/packages/py-stack-data/package.py new file mode 100644 index 00000000000000..3d9645dbd29769 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-stack-data/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2022 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 import * + + +class PyStackData(PythonPackage): + """Extract data from python stack frames and tracebacks for informative + displays.""" + + homepage = "http://github.com/alexmojaki/stack_data" + pypi = "stack_data/stack_data-0.2.0.tar.gz" + + version('0.2.0', sha256='45692d41bd633a9503a5195552df22b583caf16f0b27c4e58c98d88c8b648e12') + + depends_on('py-setuptools@44:', type='build') + depends_on('py-setuptools-scm+toml@3.4.3:', type='build') + depends_on('py-executing', type=('build', 'run')) + depends_on('py-asttokens', type=('build', 'run')) + depends_on('py-pure-eval', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-stomp-py/package.py b/var/spack/repos/builtin/packages/py-stomp-py/package.py new file mode 100644 index 00000000000000..6c01425c2986cb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-stomp-py/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class PyStompPy(PythonPackage): + """Python client library for accessing messaging servers + (such as ActiveMQ, Artemis or RabbitMQ) using the STOMP + protocol (STOMP v1.0, STOMP v1.1 and STOMP v1.2)""" + + homepage = "https://github.com/jasonrbriggs/stomp.py" + pypi = "stomp.py/stomp.py-8.0.0.tar.gz" + + maintainers = ['haralmha'] + + version('8.0.0', sha256='7085935293bfcc4a112a9830513275b2e0f3b040c5aad5ff8907e78f285b8b57') + + depends_on('python@3.6.3:', type=('build', 'run')) + depends_on('py-poetry@0.12:', type='build') + depends_on('py-docopt@0.6.2:0', type=('build', 'run')) 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 new file mode 100644 index 00000000000000..1409be6087c799 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py @@ -0,0 +1,45 @@ +# Copyright 2013-2021 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 glob + +from spack import * + + +class PyTensorboardDataServer(PythonPackage): + """Fast data loading for TensorBoard""" + + homepage = "https://github.com/tensorflow/tensorboard/tree/master/tensorboard/data/server" + git = "https://github.com/tensorflow/tensorboard" + + version('0.6.1', commit='6acf0be88b5727e546dd64a8b9b12d790601d561') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('rust', type='build') + + def setup_build_environment(self, env): + env.set('CARGO_HOME', self.stage.source_path) + + def install(self, spec, prefix): + with working_dir(join_path('tensorboard', 'data', 'server')): + cargo = which('cargo') + cargo('build', '--release') + + with working_dir(join_path('tensorboard', 'data', 'server', + 'pip_package')): + python('build.py', + '--out-dir={0}'.format(self.stage.source_path), + '--server-binary={0}'.format(join_path(self.stage.source_path, + 'tensorboard', + 'data', + 'server', + 'target', + 'release', + 'rustboard'))) + + wheel = glob.glob('*.whl')[0] + args = std_pip_args + ['--prefix=' + prefix, wheel] + pip(*args) diff --git a/var/spack/repos/builtin/packages/py-tensorboard/package.py b/var/spack/repos/builtin/packages/py-tensorboard/package.py index 337a64f41c206a..5cbffad13e3b4b 100644 --- a/var/spack/repos/builtin/packages/py-tensorboard/package.py +++ b/var/spack/repos/builtin/packages/py-tensorboard/package.py @@ -16,15 +16,20 @@ class PyTensorboard(Package): maintainers = ['aweits'] + version('2.7.0', sha256='5632812bb9450e5741083b5b7826244ffdb732fb5bce970d526c81874a3e7fb2') + version('2.6.0', sha256='3d1e0a05828b25c1c28bd90c73d981a0a65c6a5550510bc7983d03ab915e6503') + version('2.5.0', sha256='58c9e0c31062821ab1c02845c3b7902da92574ef7192d701b1828dacbe4ee610') version('2.4.1', sha256='736dc204aa292d221f5871077e60994a9a9ea8e33b841f0d754d510fe6cc7635') version('2.4.0', sha256='28a30794c1c797357b2086477394b59afa0b18ca48592ca3c0627f7f10536373') version('2.3.0', sha256='947a58702c2841eb4559637dbf8639633f79de9a0f422be9737f3563a1725440') version('2.2.0', sha256='d0dfbf0e4b3b5ebbc3fafa6d281d4b9aa5478eac6bac3330652ab6674278ab77') - depends_on('python@2.7:2.8,3.2:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.2:', type=('build', 'run'), when='@:2.5') + depends_on('python@3.6:', type=('build', 'run'), when='@2.6:') depends_on('bazel@2.1.0:', type='build', when='@2.2.0:') + depends_on('bazel@3.7.0:', type='build', when='@2.5.0:') depends_on('py-pip', type='build') - depends_on('py-wheel', type='build') + depends_on('py-wheel@0.26:', type='build') depends_on('py-setuptools@41.0.0:', type=('build', 'run')) depends_on('py-absl-py@0.4:', type=('build', 'run')) depends_on('py-markdown@2.6.8:', type=('build', 'run')) @@ -32,22 +37,31 @@ class PyTensorboard(Package): depends_on('py-futures@3.1.1:', type=('build', 'run'), when='^python@:2') depends_on('py-grpcio@1.24.3:', type=('build', 'run'), when='@2.3:') depends_on('py-grpcio@1.23.3:', type=('build', 'run'), when='@2.2') - depends_on('py-google-auth@1.6.3:1', type=('build', 'run')) + depends_on('py-google-auth@1.6.3:1', type=('build', 'run'), when='@:2.6') + depends_on('py-google-auth@1.6.3:2', type=('build', 'run'), when='@2.7:') depends_on('py-numpy@1.12.0:', type=('build', 'run')) depends_on('py-protobuf@3.6.0:', type=('build', 'run')) - depends_on('py-six@1.10.0:', type=('build', 'run')) + depends_on('py-six@1.10.0:', type=('build', 'run'), when='@:2.4') depends_on('py-werkzeug@0.11.15:', type=('build', 'run')) - depends_on('py-wheel', type=('build', 'run')) - depends_on('py-wheel@0.26:', type=('build', 'run'), when='@0.6: ^python@3:') depends_on('py-google-auth-oauthlib@0.4.1:0.4', type=('build', 'run')) - depends_on('py-tensorboard-plugin-wit@1.6.0:', type=('build', 'run'), when='@2.2.0:') + + depends_on('py-tensorboard-plugin-wit@1.6.0:', type=('build', 'run')) + + depends_on('py-tensorboard-data-server@0.6', type=('build', 'run'), when='@2.5:') extends('python') - patch('tboard_shellenv.patch') + patch('tboard_shellenv.patch', when='@:2.4') + patch('webapp.patch', when='@2.7:') + patch('vz_projector.patch', when='@2.7:') phases = ['configure', 'build', 'install'] + # Version 2.6.0 and above do not build in parallel + @property + def parallel(self): + return self.spec.version < Version('2.6.0') + def patch(self): filter_file('build --define=angular_ivy_enabled=True', 'build --define=angular_ivy_enabled=True\n' @@ -57,7 +71,7 @@ def patch(self): '.bazelrc') def setup_build_environment(self, env): - self.tmp_path = tempfile.mkdtemp(dir='/tmp', prefix='spack') + self.tmp_path = tempfile.mkdtemp(prefix='spack') env.set('TEST_TMPDIR', self.tmp_path) def configure(self, spec, prefix): @@ -100,6 +114,7 @@ def build(self, spec, prefix): '--verbose_failures', '--spawn_strategy=local', '--subcommands=pretty_print', + '--jobs={0}'.format(make_jobs), '//tensorboard/pip_package') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-tensorboard/vz_projector.patch b/var/spack/repos/builtin/packages/py-tensorboard/vz_projector.patch new file mode 100644 index 00000000000000..5eb50968fb86b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tensorboard/vz_projector.patch @@ -0,0 +1,11 @@ +diff -ru a/tensorboard/plugins/projector/vz_projector/BUILD b/tensorboard/plugins/projector/vz_projector/BUILD +--- a/tensorboard/plugins/projector/vz_projector/BUILD 2021-10-13 11:04:47.000000000 -0500 ++++ b/tensorboard/plugins/projector/vz_projector/BUILD 2021-12-02 14:27:59.275004056 -0600 +@@ -64,6 +64,7 @@ + "@npm//@polymer/decorators", + "@npm//@polymer/polymer", + "@npm//numeric", ++ "@npm//@types/three", + "@npm//three", + "@npm//umap-js", + ], diff --git a/var/spack/repos/builtin/packages/py-tensorboard/webapp.patch b/var/spack/repos/builtin/packages/py-tensorboard/webapp.patch new file mode 100644 index 00000000000000..e3bd2ada8e3a75 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tensorboard/webapp.patch @@ -0,0 +1,11 @@ +diff -ru a/tensorboard/webapp/runs/views/runs_table/regex_edit_dialog_component.ts b/tensorboard/webapp/runs/views/runs_table/regex_edit_dialog_component.ts +--- a/tensorboard/webapp/runs/views/runs_table/regex_edit_dialog_component.ts 2021-10-13 11:04:47.000000000 -0500 ++++ b/tensorboard/webapp/runs/views/runs_table/regex_edit_dialog_component.ts 2021-12-01 20:39:45.512831971 -0600 +@@ -79,6 +79,6 @@ + + handleFocusOut() { + clearTimeout(this.timeOutId); +- this.timeOutId = setTimeout(this.resetFocus.bind(this), 0); ++ this.timeOutId = window.setTimeout(this.resetFocus.bind(this), 0); + } + } 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 2fb615c7f99ac6..88c321cbbab5a9 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py @@ -17,6 +17,9 @@ class PyTensorflowEstimator(Package): maintainers = ['aweits'] + version('2.7.0', sha256='e5164e802638d3cf110ecc17912be9d514a9d3354ec48e77200b9403dcc15965') + version('2.6.0', sha256='947705c60c50da0b4a8ceec1bc058aaf6bf567a7efdcd50d5173ebf6bafcf30f') + version('2.5.0', sha256='66661f30ea05d57377c45267ca770935fb8c54f85b7901f0a7deb91766fe9f45') version('2.4.0', sha256='e6ea12014c3d8c89a81ace95f8f8b7c39ffcd3e4e4626709e4aee0010eefd962') version('2.3.0', sha256='75403e7de7e8ec30ec0781ede56ed84cbe5e90daad64a9c242cd489c8fe63a17') version('2.2.0', sha256='2d68cb6e6442e7dcbfa2e092aa25bdcb0eda420536a829b85d732854a4c85d46') @@ -26,6 +29,11 @@ class PyTensorflowEstimator(Package): extends('python') + depends_on('py-keras@2.7.0:2.7', type=('build', 'run'), when='@2.7.0') + depends_on('py-keras@2.6.0:2.6', type=('build', 'run'), when='@2.6.0') + depends_on('py-tensorflow@2.7.0:2.7', type=('build', 'run'), when='@2.7.0') + depends_on('py-tensorflow@2.6.0:2.6', type=('build', 'run'), when='@2.6.0') + depends_on('py-tensorflow@2.5.0:2.5', type=('build', 'run'), when='@2.5.0') depends_on('py-tensorflow@2.4.0:2.4', type=('build', 'run'), when='@2.4.0') depends_on('py-tensorflow@2.3.0:2.3', type=('build', 'run'), when='@2.3.0') depends_on('py-tensorflow@2.2.0:2.2', type=('build', 'run'), when='@2.2.0') @@ -36,10 +44,10 @@ class PyTensorflowEstimator(Package): depends_on('bazel@0.19.0:', type='build') depends_on('py-pip', type='build') depends_on('py-wheel', type='build') - depends_on('py-funcsigs@1.0.2:', type=('build', 'run')) + depends_on('py-funcsigs@1.0.2:', type=('build', 'run'), when='^python@:3.2') def install(self, spec, prefix): - self.tmp_path = tempfile.mkdtemp(dir='/tmp', prefix='spack') + self.tmp_path = tempfile.mkdtemp(prefix='spack') env['TEST_TMPDIR'] = self.tmp_path env['HOME'] = self.tmp_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 cd0b7d281f4cfa..0c7db4ed7b1d79 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py @@ -44,7 +44,7 @@ class PyTensorflowProbability(Package): depends_on('bazel@3.2.0:', type='build') def install(self, spec, prefix): - self.tmp_path = tempfile.mkdtemp(dir='/tmp', prefix='spack') + self.tmp_path = tempfile.mkdtemp(prefix='spack') env['TEST_TMPDIR'] = self.tmp_path env['HOME'] = self.tmp_path diff --git a/var/spack/repos/builtin/packages/py-tensorflow/0008-Fix-protobuf-errors-when-using-system-protobuf.patch b/var/spack/repos/builtin/packages/py-tensorflow/0008-Fix-protobuf-errors-when-using-system-protobuf.patch new file mode 100644 index 00000000000000..201129fe25c182 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tensorflow/0008-Fix-protobuf-errors-when-using-system-protobuf.patch @@ -0,0 +1,29 @@ +From 2ea8d31a2a75de75f838b4650e1531c346dfa6fe Mon Sep 17 00:00:00 2001 +From: sclarkson +Date: Thu, 12 Aug 2021 03:23:28 -0700 +Subject: [PATCH 8/8] Fix protobuf errors when using system protobuf + +When tensorflow and python protobuf use the same instance of +libprotobuf, pywrap_tensorflow must be imported before anything +else that would import protobuf definitions. +--- + tensorflow/python/__init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tensorflow/python/__init__.py b/tensorflow/python/__init__.py +index 6efba380ca0..38d1eb55027 100644 +--- a/tensorflow/python/__init__.py ++++ b/tensorflow/python/__init__.py +@@ -37,8 +37,8 @@ import traceback + # go/tf-wildcard-import + # pylint: disable=wildcard-import,g-bad-import-order,g-import-not-at-top + +-from tensorflow.python.eager import context + from tensorflow.python import pywrap_tensorflow as _pywrap_tensorflow ++from tensorflow.python.eager import context + + # pylint: enable=wildcard-import + +-- +2.32.0 + diff --git a/var/spack/repos/builtin/packages/py-tensorflow/example_parsing.patch b/var/spack/repos/builtin/packages/py-tensorflow/example_parsing.patch new file mode 100644 index 00000000000000..b16fd6e3889beb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tensorflow/example_parsing.patch @@ -0,0 +1,11 @@ +--- a/tensorflow/core/kernels/example_parsing_ops.cc ++++ b/tensorflow/core/kernels/example_parsing_ops.cc +@@ -1218,7 +1218,7 @@ class DecodeJSONExampleOp : public OpKernel { + resolver_.get(), "type.googleapis.com/tensorflow.Example", &in, &out); + OP_REQUIRES(ctx, status.ok(), + errors::InvalidArgument("Error while parsing JSON: ", +- string(status.error_message()))); ++ string(status.message()))); + } + } + diff --git a/var/spack/repos/builtin/packages/py-tensorflow/null_linker_bin_path.patch b/var/spack/repos/builtin/packages/py-tensorflow/null_linker_bin_path.patch new file mode 100644 index 00000000000000..439120037e1d68 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tensorflow/null_linker_bin_path.patch @@ -0,0 +1,15 @@ +diff -ru a/third_party/gpus/cuda_configure.bzl b/third_party/gpus/cuda_configure.bzl +--- a/third_party/gpus/cuda_configure.bzl 2021-05-12 13:26:41.000000000 +0000 ++++ b/third_party/gpus/cuda_configure.bzl 2021-10-28 21:38:06.949271099 +0000 +@@ -1205,10 +1205,7 @@ + # TODO: when bazel stops adding '-B/usr/bin' by default, remove this + # flag from the CROSSTOOL completely (see + # https://github.com/bazelbuild/bazel/issues/5634) +- if should_download_clang: +- cuda_defines["%{linker_bin_path}"] = "" +- else: +- cuda_defines["%{linker_bin_path}"] = host_compiler_prefix ++ cuda_defines["%{linker_bin_path}"] = "" + + cuda_defines["%{extra_no_canonical_prefixes_flags}"] = "" + cuda_defines["%{unfiltered_compile_flags}"] = "" diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index 5853b4bb06c1f6..38452d9c225d89 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -17,6 +17,11 @@ class PyTensorflow(Package, CudaPackage): maintainers = ['adamjstewart', 'aweits'] import_modules = ['tensorflow'] + version('2.7.0', sha256='bb124905c7fdacd81e7c842b287c169bbf377d29c74c9dacc04f96c9793747bb') + version('2.6.2', sha256='e68c1d346fc3d529653530ca346b2c62f5b31bd4fcca7ffc9c65bb39ab2f6ed3') + version('2.6.1', sha256='8e457f617bc2eb43de2a51900e7922b60a8107e2524b2576438f1acccee1d043') + version('2.6.0', sha256='41b32eeaddcbc02b0583660bcf508469550e4cd0f86b22d2abe72dfebeacde0f') + version('2.5.0', sha256='233875ea27fc357f6b714b2a0de5f6ff124b50c1ee9b3b41f9e726e9e677b86c') version('2.4.1', sha256='f681331f8fc0800883761c7709d13cda11942d4ad5ff9f44ad855e9dc78387e0') version('2.4.0', sha256='26c833b7e1873936379e810a39d14700281125257ddda8cd822c89111db6f6ae') version('2.3.2', sha256='21a703d2e68cd0677f6f9ce329198c24fd8203125599d791af9f1de61aadf31f') @@ -111,7 +116,8 @@ class PyTensorflow(Package, CudaPackage): # Need to investigate further. # See _TF_MIN_BAZEL_VERSION and _TF_MAX_BAZEL_VERSION in configure.py - depends_on('bazel@3.1.0:3', type='build', when='@2.3:') + depends_on('bazel@3.7.2:4.99.0', type='build', when='@2.7:') + depends_on('bazel@3.1.0:3.99.0', type='build', when='@2.3:2.6') depends_on('bazel@2.0.0', type='build', when='@2.2.0:2.2') depends_on('bazel@0.27.1:0.29.1', type='build', when='@2.1.0:2.1') depends_on('bazel@0.24.1:0.26.1', type='build', when='@1.15:2.0') @@ -140,38 +146,50 @@ class PyTensorflow(Package, CudaPackage): depends_on('py-future', type='build', when='^python@:2') # Listed under REQUIRED_PACKAGES in tensorflow/tools/pip_package/setup.py - depends_on('py-absl-py@0.10:0', type=('build', 'run'), when='@2.4.0:') + depends_on('py-absl-py@0.4:', type=('build', 'run'), when='@2.7:') + depends_on('py-absl-py@0.10:0', type=('build', 'run'), when='@2.4.0:2.6') depends_on('py-absl-py@0.7.0:', type=('build', 'run'), when='@1.12.1,1.14:2.3') depends_on('py-absl-py@0.1.6:', type=('build', 'run'), when='@1.5:1.11') - depends_on('py-astunparse@1.6.3:1.6', type=('build', 'run'), when='@2.4.0:') + depends_on('py-astunparse@1.6.0:', type=('build', 'run'), when='@2.7:') + depends_on('py-astunparse@1.6.3:1.6', type=('build', 'run'), when='@2.4.0:2.6') depends_on('py-astunparse@1.6.3', type=('build', 'run'), when='@2.2:2.3') depends_on('py-astor@0.6.0:', type=('build', 'run'), when='@1.6:2.1') depends_on('py-backports-weakref@1.0:', type=('build', 'run'), when='@1.3: ^python@:3.3') depends_on('py-backports-weakref@1.0rc1', type=('build', 'run'), when='@1.2.0:1.2.1') + depends_on('py-libclang@9.0.1:', type=('build', 'run'), when='@2.7:') depends_on('py-enum34@1.1.6:', type=('build', 'run'), when='@1.5: ^python@:3.3') depends_on('py-enum34@1.1.6:', type=('build', 'run'), when='@1.4.0:1.4.1') - depends_on('py-gast@0.3.3', type=('build', 'run'), when='@2.2:') + depends_on('py-gast@0.2.1:0.4', type=('build', 'run'), when='@2.7:') + depends_on('py-gast@0.4.0', type=('build', 'run'), when='@2.5:2.6') + depends_on('py-gast@0.3.3', type=('build', 'run'), when='@2.2:2.4') depends_on('py-gast@0.2.2', type=('build', 'run'), when='@1.15:2.1') depends_on('py-gast@0.2.0:', type=('build', 'run'), when='@1.6:1.14') - depends_on('py-google-pasta@0.2:0', type=('build', 'run'), when='@2.4.0:') + depends_on('py-google-pasta@0.1.1:', type=('build', 'run'), when='@2.7:') + depends_on('py-google-pasta@0.2:0', type=('build', 'run'), when='@2.4.0:2.6') depends_on('py-google-pasta@0.1.8:', type=('build', 'run'), when='@2.1:2.3') depends_on('py-google-pasta@0.1.6:', type=('build', 'run'), when='@1.14:2.0') depends_on('py-google-pasta@0.1.2:', type=('build', 'run'), when='@1.12.1') # propagate the mpi variant setting for h5py/hdf5 to avoid unexpected crashes - depends_on('py-h5py@2.10.0:2.10+mpi', type=('build', 'run'), when='@2.2:+mpi') - depends_on('py-h5py@2.10.0:2.10~mpi', type=('build', 'run'), when='@2.2:~mpi') + depends_on('py-h5py@2.9:+mpi', type=('build', 'run'), when='@2.7:+mpi') + depends_on('py-h5py@2.9:~mpi', type=('build', 'run'), when='@2.7:~mpi') + depends_on('py-h5py@3.1+mpi', type=('build', 'run'), when='@2.5:2.6+mpi') + depends_on('py-h5py@3.1~mpi', type=('build', 'run'), when='@2.5:2.6~mpi') + depends_on('py-h5py@2.10+mpi', type=('build', 'run'), when='@2.2:2.4+mpi') + depends_on('py-h5py@2.10~mpi', type=('build', 'run'), when='@2.2:2.4~mpi') depends_on('hdf5+mpi', type='build', when='@2.2:+mpi') depends_on('hdf5~mpi', type='build', when='@2.2:~mpi') depends_on('py-keras-applications@1.0.8:', type=('build', 'run'), when='@1.15:2.1') depends_on('py-keras-applications@1.0.6:', type=('build', 'run'), when='@1.12:1.14') depends_on('py-keras-applications@1.0.5:', type=('build', 'run'), when='@1.11.0:1.11') - depends_on('py-keras-preprocessing@1.1.2:1.1', type=('build', 'run'), when='@2.4:') + depends_on('py-keras-preprocessing@1.1.1:', type=('build', 'run'), when='@2.7:') + depends_on('py-keras-preprocessing@1.1.2:1.1', type=('build', 'run'), when='@2.4:2.6') depends_on('py-keras-preprocessing@1.1.1:1', type=('build', 'run'), when='@2.3.0:2.3') depends_on('py-keras-preprocessing@1.1.0:', type=('build', 'run'), when='@2.1:2.2') depends_on('py-keras-preprocessing@1.0.5:', type=('build', 'run'), when='@1.12:2.0') depends_on('py-keras-preprocessing@1.0.3:', type=('build', 'run'), when='@1.11.0:1.11') # https://github.com/tensorflow/tensorflow/issues/40688 - depends_on('py-numpy@1.19.2:1.19', type=('build', 'run'), when='@2.4.0:') + depends_on('py-numpy@1.14.5:', type=('build', 'run'), when='@2.7:') + depends_on('py-numpy@1.19.2:1.19', type=('build', 'run'), when='@2.4:2.6') depends_on('py-numpy@1.16.0:1.18', type=('build', 'run'), when='@1.13.2,1.15:2.3') depends_on('py-numpy@1.14.5:1.18', type=('build', 'run'), when='@1.12.1,1.14.0') depends_on('py-numpy@1.13.3:1.14.5', type=('build', 'run'), when='@1.10.0:1.10.1') @@ -181,8 +199,8 @@ class PyTensorflow(Package, CudaPackage): depends_on('py-numpy@1.10.1:', type=('build', 'run'), when='@0.7.1:0.7 platform=darwin') depends_on('py-numpy@1.8.2:', type=('build', 'run'), when='@0.6:0.10') depends_on('py-numpy@1.9.2:', type=('build', 'run'), when='@0.5.0') - depends_on('py-opt-einsum@3.3.0:3.3', type=('build', 'run'), when='@2.4.0:') - depends_on('py-opt-einsum@2.3.2:', type=('build', 'run'), when='@1.15:2.3') + depends_on('py-opt-einsum@3.3.0:3.3', type=('build', 'run'), when='@2.4.0:2.6') + depends_on('py-opt-einsum@2.3.2:', type=('build', 'run'), when='@1.15:2.3,2.7:') depends_on('py-protobuf@3.9.2:', type=('build', 'run'), when='@2.3:') depends_on('py-protobuf@3.8.0:', type=('build', 'run'), when='@2.1:2.2') depends_on('py-protobuf@3.6.1:', type=('build', 'run'), when='@1.12:2.0') @@ -195,30 +213,43 @@ class PyTensorflow(Package, CudaPackage): depends_on('py-protobuf@3.0.0', type=('build', 'run'), when='@0.11.0') depends_on('py-protobuf@3.0.0b2', type=('build', 'run'), when='@0.7.1:0.10') depends_on('py-protobuf@3.0.0a3', type=('build', 'run'), when='@0.6:0.7.0') - depends_on('protobuf') - depends_on('flatbuffers+python@1.12.0:1.12', type=('build', 'run'), when='@2.4.0:') + depends_on('protobuf@:3.12', when='@:2.4') + depends_on('protobuf@:3.17') + depends_on('flatbuffers+python@1.12:2', type=('build', 'run'), when='@2.7:') + depends_on('flatbuffers+python@1.12', type=('build', 'run'), when='@2.4:2.6') + # tensorboard - # tensorflow-estimator - depends_on('py-termcolor@1.1.0:1.1', type=('build', 'run'), when='@2.4.0:') - depends_on('py-termcolor@1.1.0:', type=('build', 'run'), when='@1.6:2.3') - depends_on('py-wrapt@1.12.1:1.12', type=('build', 'run'), when='@2.4.0:') + depends_on('py-tensorboard@2.5.0:2.5', type=('build', 'run'), when='@2.5') + depends_on('py-tensorboard@2.6.0:2.6', type=('build', 'run'), when='@2.6') + depends_on('py-tensorboard@2.7.0:2.7', type=('build', 'run'), when='@2.7') + + depends_on('py-termcolor@1.1.0:1.1', type=('build', 'run'), when='@2.4:2.6') + depends_on('py-termcolor@1.1.0:', type=('build', 'run'), when='@1.6:2.3,2.7:') + depends_on('py-wrapt@1.11.0:', type=('build', 'run'), when='@2.7:') + depends_on('py-wrapt@1.12.1:1.12', type=('build', 'run'), when='@2.4:2.6') depends_on('py-wrapt@1.11.1:', type=('build', 'run'), when='@1.12.1,1.14:2.3') + depends_on('py-wheel@0.32:0', type=('build', 'run'), when='@2.7:') + depends_on('py-wheel@0.35:0', type=('build', 'run'), when='@2.4:2.6 ^python@3:') depends_on('py-wheel', type=('build', 'run'), when='@0.6:2.3') depends_on('py-wheel@0.26:', type=('build', 'run'), when='@0.6:2.3 ^python@3:') - depends_on('py-wheel@0.35:0', type=('build', 'run'), when='@2.4.0: ^python@3:') depends_on('py-mock@2.0.0:', type=('build', 'run'), when='@0.10: ^python@:2') depends_on('py-functools32@3.2.3:', type=('build', 'run'), when='@1.15: ^python@:2') - depends_on('py-six@1.15.0:1.15', type=('build', 'run'), when='@2.4.0:') - depends_on('py-six@1.12.0:', type=('build', 'run'), when='@2.1:2.3') + depends_on('py-six@1.15.0:1.15', type=('build', 'run'), when='@2.4:2.6') + depends_on('py-six@1.12.0:', type=('build', 'run'), when='@2.1:2.3,2.7:') depends_on('py-six@1.10.0:', type=('build', 'run'), when='@:2.0') depends_on('py-scipy@1.2.2', type=('build', 'run'), when='@2.1.0:2.1.1,2.2.0,2.3.0 ^python@:2') depends_on('py-scipy@1.4.1', type=('build', 'run'), when='@2.1.0:2.1.1,2.2.0,2.3.0 ^python@3:') depends_on('py-grpcio@1.8.6:', type=('build', 'run'), when='@1.6:1.7') - depends_on('py-typing-extensions@3.7.4:3.7', type=('build', 'run'), when='@2.4.0:') + depends_on('py-typing-extensions@3.6.6:', type=('build', 'run'), when='@2.7:') + depends_on('py-typing-extensions@3.7.4:3.7', type=('build', 'run'), when='@2.4.0:2.6') + if sys.byteorder == 'little': # Only builds correctly on little-endian machines depends_on('py-grpcio@1.8.6:', type=('build', 'run'), when='@1.8:2.3') - depends_on('py-grpcio@1.32.0:1.32', type=('build', 'run'), when='@2.4:') + depends_on('py-grpcio@1.32.0:1.32', type=('build', 'run'), when='@2.4.0:2.4') + depends_on('py-grpcio@1.34.0:1.34', type=('build', 'run'), when='@2.5.0:2.5') + depends_on('py-grpcio@1.37.0:1', type=('build', 'run'), when='@2.6.0:2.6') + depends_on('py-grpcio@1.24.3:1', type=('build', 'run'), when='@2.7.0:') # TODO: add packages for some of these dependencies depends_on('mkl', when='+mkl') @@ -226,14 +257,19 @@ class PyTensorflow(Package, CudaPackage): # depends_on('computecpp', when='+opencl+computecpp') # depends_on('trisycl', when='+opencl~computepp') depends_on('cuda@:10.2', when='+cuda @:2.3') - depends_on('cuda@:11.1', when='+cuda @2.4.0:') + depends_on('cuda@:11.4', when='+cuda @2.4:') depends_on('cudnn', when='+cuda') + depends_on('cudnn@:6', when='@0.5:0.6 +cuda') + depends_on('cudnn@:7', when='@0.7:2.2 +cuda') # depends_on('tensorrt', when='+tensorrt') depends_on('nccl', when='+nccl') depends_on('mpi', when='+mpi') # depends_on('android-ndk@10:18', when='+android') # depends_on('android-sdk', when='+android') + # TODO: add support for tensorflow-io-gcs-filesystem + # depends_on('tensorflow-io-gcs-filesystem + # Check configure and configure.py to see when these variants are supported conflicts('+mkl', when='@:1.0') conflicts('+mkl', when='platform=darwin', msg='Darwin is not yet supported') @@ -294,14 +330,28 @@ class PyTensorflow(Package, CudaPackage): patch('1-1_fcc_tf_patch.patch', when='@2.1.0:2.1%fj') # do not import contrib.cloud if not available - patch('https://github.com/tensorflow/tensorflow/commit/ed62ac8203999513dfae03498e871ea35eb60cc4.patch', - sha256='c37d14622a86b164e2411ea45a04f756ac61b2044d251f19ab17733c508e5305', when='@1.14.0') + patch('https://github.com/tensorflow/tensorflow/commit/ed62ac8203999513dfae03498e871ea35eb60cc4.patch?full_index=1', + sha256='ff02e249532a5661b123108734a39534992d81da90f0c8187bf4e151a865effc', when='@1.14.0') # import_contrib_cloud patch for older versions patch('contrib_cloud_1.10.patch', when='@1.10:1.13') patch('contrib_cloud_1.9.patch', when='@1.9') patch('contrib_cloud_1.4.patch', when='@1.4:1.8') patch('contrib_cloud_1.1.patch', when='@1.1:1.3') + # needed for protobuf-3.16 and greater + patch('example_parsing.patch', when='^protobuf@3.16:') + + # allow linker to be found in PATH + # https://github.com/tensorflow/tensorflow/issues/39263 + patch('null_linker_bin_path.patch', when='@2.5:') + + # Reset import order to that of 2.4. Part of + # https://bugs.gentoo.org/800824#c3 From the patch: + # When tensorflow and python protobuf use the same instance of libprotobuf, + # pywrap_tensorflow must be imported before anything else that would import + # protobuf definitions. + patch('0008-Fix-protobuf-errors-when-using-system-protobuf.patch', when='@2.5:2.6') + phases = ['configure', 'build', 'install'] # https://www.tensorflow.org/install/source @@ -555,9 +605,10 @@ def setup_build_environment(self, env): env.set('TEST_TMPDIR', tmp_path) env.set('TF_SYSTEM_LIBS', 'com_google_protobuf') - # NOTE: INCLUDEDIR is not just relevant to protobuf - # see third_party/systemlibs/jsoncpp.BUILD - env.set('INCLUDEDIR', spec['protobuf'].prefix.include) + if spec.satisfies('@:2.3'): + # NOTE: INCLUDEDIR is not just relevant to protobuf + # see third_party/systemlibs/jsoncpp.BUILD + env.set('INCLUDEDIR', spec['protobuf'].prefix.include) def patch(self): if self.spec.satisfies('@2.3.0:'): @@ -565,20 +616,31 @@ def patch(self): 'deps = protodeps,', 'tensorflow/core/platform/default/build_config.bzl', string=True) - if self.spec.satisfies('@2.4.0:'): + if self.spec.satisfies('@2.4.0:2.5'): text = ''' def protobuf_deps(): pass ''' with open('third_party/systemlibs/protobuf_deps.bzl', 'w') as f: f.write(text) + + if self.spec.satisfies('@2.5.0'): + file_to_patch = 'tensorflow/workspace2.bzl' + else: + file_to_patch = 'tensorflow/workspace.bzl' + filter_file( '"//third_party/systemlibs:protobuf.bzl": "protobuf.bzl",', '"//third_party/systemlibs:protobuf.bzl": "protobuf.bzl",\n' '"//third_party/systemlibs:protobuf_deps.bzl": "protobuf_deps.bzl",', # noqa: E501 - 'tensorflow/workspace.bzl', + file_to_patch, string=True) + # Set protobuf path + filter_file(r'(^build:linux --define=PROTOBUF_INCLUDE_PATH=).*', + r'\1{0}'.format(self.spec['protobuf'].prefix.include), + '.bazelrc') + def configure(self, spec, prefix): # NOTE: configure script is interactive. If you set the appropriate # environment variables, this interactivity is skipped. If you don't, @@ -593,72 +655,114 @@ def post_configure_fixes(self): # make sure xla is actually turned off if spec.satisfies('~xla'): - filter_file(r'--define with_xla_support=true', - r'--define with_xla_support=false', - '.tf_configure.bazelrc') + filter_file( + r'--define with_xla_support=true', + r'--define with_xla_support=false', + '.tf_configure.bazelrc') if spec.satisfies('@1.5.0: ~android'): # env variable is somehow ignored -> brute force # TODO: find a better solution - filter_file(r'if workspace_has_any_android_rule\(\)', - r'if True', - 'configure.py') + filter_file( + r'if workspace_has_any_android_rule\(\)', + r'if True', + 'configure.py') # version dependent fixes if spec.satisfies('@1.3.0:1.5.0'): # checksum for protobuf that bazel downloads (@github) changed - filter_file(r'sha256 = "6d43b9d223ce09e5d4ce8b0060cb8a7513577a35a64c7e3dad10f0703bf3ad93"', - r'sha256 = "e5fdeee6b28cf6c38d61243adff06628baa434a22b5ebb7432d2a7fbabbdb13d"', - 'tensorflow/workspace.bzl') + filter_file( + r'sha256 = "6d43b9d223ce09e5d4ce8b0060cb8a7513577a35a64c7e3dad10f0703bf3ad93"', + r'sha256 = "e5fdeee6b28cf6c38d61243adff06628baa434a22b5ebb7432d2a7fbabbdb13d"', + 'tensorflow/workspace.bzl') + # starting with tensorflow 1.3, tensorboard becomes a dependency - # (...but is not really needed? Tensorboard should depend on - # tensorflow, not the other way!) # -> remove from list of required packages - filter_file(r"'tensorflow-tensorboard", - r"#'tensorflow-tensorboard", - 'tensorflow/tools/pip_package/setup.py') + filter_file( + r"'tensorflow-tensorboard", + r"#'tensorflow-tensorboard", + 'tensorflow/tools/pip_package/setup.py') + if spec.satisfies('@1.5.0: ~gcp'): # google cloud support seems to be installed on default, leading # to boringssl error manually set the flag to false to avoid # installing gcp support # https://github.com/tensorflow/tensorflow/issues/20677#issuecomment-404634519 - filter_file(r'--define with_gcp_support=true', - r'--define with_gcp_support=false', - '.tf_configure.bazelrc') - if spec.satisfies('@1.6.0:'): + filter_file( + r'--define with_gcp_support=true', + r'--define with_gcp_support=false', + '.tf_configure.bazelrc') + + if spec.satisfies('@1.6.0:2.1'): # tensorboard name changed - filter_file(r"'tensorboard >=", - r"#'tensorboard >=", - 'tensorflow/tools/pip_package/setup.py') + # there are no corresponding versions of these in spack + filter_file( + r"(^\s*)'tensorboard (>=|~=)", + r"\1#'tensorboard \2", + 'tensorflow/tools/pip_package/setup.py') + if spec.satisfies('@1.8.0: ~opencl'): # 1.8.0 and 1.9.0 aborts with numpy import error during python_api # generation somehow the wrong PYTHONPATH is used... # set --distinct_host_configuration=false as a workaround # https://github.com/tensorflow/tensorflow/issues/22395#issuecomment-431229451 - filter_file('build --action_env TF_NEED_OPENCL_SYCL="0"', - 'build --action_env TF_NEED_OPENCL_SYCL="0"\n' - 'build --distinct_host_configuration=false\n' - 'build --action_env PYTHONPATH="{0}"'.format( - env['PYTHONPATH']), - '.tf_configure.bazelrc') - if spec.satisfies('@1.13.1'): + with open('.tf_configure.bazelrc', mode='a') as f: + f.write('build --distinct_host_configuration=false\n') + f.write('build --action_env PYTHONPATH="{0}"\n'.format( + env['PYTHONPATH'])) + + if spec.satisfies('@1.13.1:'): # tensorflow_estimator is an API for tensorflow # tensorflow-estimator imports tensorflow during build, so # tensorflow has to be set up first - filter_file(r"'tensorflow_estimator >=", - r"#'tensorflow_estimator >=", - 'tensorflow/tools/pip_package/setup.py') + filter_file( + r"(^\s*)'tensorflow_estimator (>=|~=)", + r"\1#'tensorflow_estimator \2", + 'tensorflow/tools/pip_package/setup.py') + + if spec.satisfies('@2.5'): + filter_file( + r"(^\s*)'keras-nightly (>=|~=)", + r"\1#'keras-nightly \2", + 'tensorflow/tools/pip_package/setup.py') + + if spec.satisfies('@2.6:'): + filter_file( + r"(^\s*)'keras (>=|~=)", + r"\1#'keras \2", + 'tensorflow/tools/pip_package/setup.py') + + if spec.satisfies('@2.6'): + filter_file( + r"(^\s*)'clang (>=|~=)", + r"\1#'clang \2", + 'tensorflow/tools/pip_package/setup.py') + + # TODO: add support for tensorflow-io-gcs-filesystem + if spec.satisfies('@2.7:'): + filter_file( + r"(^\s*)'tensorflow-io-gcs-filesystem (>=|~=)", + r"\1#'tensorflow-io-gcs-filesystem \2", + 'tensorflow/tools/pip_package/setup.py') + if spec.satisfies('@2.0.0:'): # now it depends on the nightly versions... - filter_file(r"'tf-estimator-nightly >=", - r"#'tf-estimator-nightly >=", - 'tensorflow/tools/pip_package/setup.py') - filter_file(r"REQUIRED_PACKAGES\[i\] = 'tb-nightly >=", - r"pass #REQUIRED_PACKAGES\[i\] = 'tb-nightly >=", - 'tensorflow/tools/pip_package/setup.py') - filter_file(r"'tb-nightly >=", - r"#'tb-nightly >=", - 'tensorflow/tools/pip_package/setup.py') + filter_file( + r"REQUIRED_PACKAGES\[i\] = 'tb-nightly (>=|~=)", + r"pass #REQUIRED_PACKAGES[i] = 'tb-nightly \1", + 'tensorflow/tools/pip_package/setup.py') + filter_file( + r"REQUIRED_PACKAGES\[i\] = 'tensorflow-estimator-2.0-preview", + r"pass #REQUIRED_PACKAGES[i] = 'tensorflow-estimator-2.0-preview", + 'tensorflow/tools/pip_package/setup.py') + filter_file( + r"REQUIRED_PACKAGES\[i\] = 'tf-estimator-nightly (>=|~=)", + r"pass #REQUIRED_PACKAGES[i] = 'tf-estimator-nightly \1", + 'tensorflow/tools/pip_package/setup.py') + filter_file( + r"REQUIRED_PACKAGES\[i\] = 'keras-nightly (>=|~=)", + r"pass #REQUIRED_PACKAGES[i] = 'keras-nightly \1", + 'tensorflow/tools/pip_package/setup.py') if spec.satisfies('@1.13.1 +nccl'): filter_file( @@ -674,23 +778,23 @@ def post_configure_fixes(self): # see tensorflow issue #31187 on github if spec.satisfies('@2.0.0:2.0'): - filter_file(r'\#define RUY_DONOTUSEDIRECTLY_AVX512 1', - '#define RUY_DONOTUSEDIRECTLY_AVX512 0', - 'tensorflow/lite/experimental/ruy/platform.h') + filter_file( + r'\#define RUY_DONOTUSEDIRECTLY_AVX512 1', + '#define RUY_DONOTUSEDIRECTLY_AVX512 0', + 'tensorflow/lite/experimental/ruy/platform.h') if spec.satisfies('+cuda'): libs = spec['cuda'].libs.directories libs.extend(spec['cudnn'].libs.directories) if '+nccl' in spec: libs.extend(spec['nccl'].libs.directories) + if '+tensorrt' in spec: libs.extend(spec['tensorrt'].libs.directories) slibs = ':'.join(libs) - filter_file('build --action_env TF_NEED_OPENCL_SYCL="0"', - 'build --action_env TF_NEED_OPENCL_SYCL="0"\n' - 'build --action_env LD_LIBRARY_PATH="' + slibs + '"', - '.tf_configure.bazelrc') + with open('.tf_configure.bazelrc', mode='a') as f: + f.write('build --action_env LD_LIBRARY_PATH="' + slibs + '"') filter_file('build:opt --copt=-march=native', '', '.tf_configure.bazelrc') diff --git a/var/spack/repos/builtin/packages/py-testpath/package.py b/var/spack/repos/builtin/packages/py-testpath/package.py index ff9ebd31648c93..57f3c9386ac65e 100644 --- a/var/spack/repos/builtin/packages/py-testpath/package.py +++ b/var/spack/repos/builtin/packages/py-testpath/package.py @@ -13,8 +13,10 @@ class PyTestpath(PythonPackage): homepage = "https://github.com/jupyter/testpath" pypi = "testpath/testpath-0.4.2.tar.gz" + version('0.6.0', sha256='2f1b97e6442c02681ebe01bd84f531028a7caea1af3825000f52345c30285e0f') version('0.5.0', sha256='1acf7a0bcd3004ae8357409fc33751e16d37ccc650921da1094a86581ad1e417') version('0.4.2', sha256='b694b3d9288dbd81685c5d2e7140b81365d46c29f5db4bc659de5aa6b98780f8') depends_on('python@3.5:', type=('build', 'run'), when='@0.5.0:') - depends_on('py-flit-core@3.2.0:3.2', type='build') + depends_on('py-flit-core@3.2.0:3.2', type='build', when='@:0.5.0') + depends_on('py-flit-core@3.2.0:3', type='build', when='@0.6.0:') diff --git a/var/spack/repos/builtin/packages/py-tomli-w/package.py b/var/spack/repos/builtin/packages/py-tomli-w/package.py new file mode 100644 index 00000000000000..9093d39458bf00 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tomli-w/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2022 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 import * + + +class PyTomliW(PythonPackage): + """A lil' TOML writer.""" + + homepage = "https://github.com/hukkin/tomli-w" + pypi = "tomli_w/tomli_w-1.0.0.tar.gz" + + version('1.0.0', sha256='f463434305e0336248cac9c2dc8076b707d8a12d019dd349f5c1e382dd1ae1b9') + + depends_on('python@3.7:', type=('build', 'run')) + depends_on('py-flit-core@3.2.0:3', type='build') diff --git a/var/spack/repos/builtin/packages/py-torch-sparse/package.py b/var/spack/repos/builtin/packages/py-torch-sparse/package.py index 0becc1b9f6d78f..602f948ea7a1a7 100644 --- a/var/spack/repos/builtin/packages/py-torch-sparse/package.py +++ b/var/spack/repos/builtin/packages/py-torch-sparse/package.py @@ -22,6 +22,7 @@ class PyTorchSparse(PythonPackage): depends_on('py-setuptools', type='build') depends_on('py-pytest-runner', type='build') depends_on('py-scipy', type=('build', 'run')) + depends_on('py-torch', type=('build', 'run')) depends_on('py-torch-scatter+cuda', when='+cuda') depends_on('py-torch-scatter~cuda', when='~cuda') diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.10.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.10.patch new file mode 100644 index 00000000000000..bcd2c37804c1ba --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.10.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index ca560288a4..f5a29ecf43 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -130,7 +130,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "ATLAS;BLIS;Eigen;FLAME;Generic;MKL;OpenBLAS;vecLib") ++set_property(CACHE BLAS PROPERTY STRINGS "ATLAS;BLIS;Eigen;FLAME;Generic;MKL;OpenBLAS;SSL2;vecLib") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -185,6 +185,20 @@ elseif(BLAS STREQUAL "vecLib") + set(BLAS_INFO "veclib") + set(BLAS_FOUND 1) + set(BLAS_LIBRARIES ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + elseif(BLAS STREQUAL "Generic") + # On Debian family, the CBLAS ABIs have been merged into libblas.so + find_library(BLAS_LIBRARIES blas) +@@ -201,7 +215,7 @@ if(NOT INTERN_BUILD_MOBILE) + set(AT_MKL_ENABLED 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR BLIS_FOUND OR GENERIC_BLAS_FOUND OR MKL_FOUND OR OpenBLAS_FOUND OR VECLIB_FOUND)) ++ if(NOT (ATLAS_FOUND OR BLIS_FOUND OR GENERIC_BLAS_FOUND OR MKL_FOUND OR OpenBLAS_FOUND OR SSL2_FOUND OR VECLIB_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if(NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index 47c80b45f6..efd4a87d06 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -276,6 +276,28 @@ if((NOT BLAS_LIBRARIES) + endif() + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.11.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.11.patch new file mode 100644 index 00000000000000..af41e5bb93931c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.11.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 557ab649a4..56d1699736 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -174,7 +174,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "ATLAS;BLIS;Eigen;FLAME;Generic;MKL;OpenBLAS;vecLib") ++set_property(CACHE BLAS PROPERTY STRINGS "ATLAS;BLIS;Eigen;FLAME;Generic;MKL;OpenBLAS;SSL2;vecLib") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -229,6 +229,20 @@ elseif(BLAS STREQUAL "vecLib") + set(BLAS_INFO "veclib") + set(BLAS_FOUND 1) + set(BLAS_LIBRARIES ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + elseif(BLAS STREQUAL "FlexiBLAS") + find_package(FlexiBLAS REQUIRED) + include_directories(SYSTEM ${FlexiBLAS_INCLUDE_DIR}) +@@ -250,7 +264,7 @@ if(NOT INTERN_BUILD_MOBILE) + set(AT_MKL_SEQUENTIAL 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR BLIS_FOUND OR GENERIC_BLAS_FOUND OR MKL_FOUND OR OpenBLAS_FOUND OR VECLIB_FOUND OR FlexiBLAS_FOUND)) ++ if(NOT (ATLAS_FOUND OR BLIS_FOUND OR GENERIC_BLAS_FOUND OR MKL_FOUND OR OpenBLAS_FOUND OR SSL2_FOUND OR VECLIB_FOUND OR FlexiBLAS_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if(NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index 94942d520f..ae5b8db963 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -289,6 +289,28 @@ if((NOT BLAS_LIBRARIES) + endif() + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.2.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.2.patch new file mode 100644 index 00000000000000..826c5c2b078de0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.2.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 00dcabd131..bddd3716ca 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -107,7 +107,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib") ++set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;SSL2") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -147,6 +147,20 @@ elseif(BLAS STREQUAL "vecLib") + find_package(vecLib REQUIRED) + include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + else() + message(FATAL_ERROR "Unrecognized BLAS option: " ${BLAS}) + endif() +@@ -156,7 +170,7 @@ if (NOT INTERN_BUILD_MOBILE) + set(AT_MKL_ENABLED 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND)) ++ if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND OR SSL2_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if (NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index d6c0346739..72f4e18da2 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -225,6 +225,28 @@ if((NOT BLAS_LIBRARIES) + endif (BLAS_LIBRARIES) + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.3-1.5.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.3-1.5.patch new file mode 100644 index 00000000000000..0ea87500b0a60e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.3-1.5.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index a8e9769536..f0f91304c2 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -107,7 +107,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;FLAME") ++set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;SSL2;FLAME") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -147,6 +147,20 @@ elseif(BLAS STREQUAL "vecLib") + find_package(vecLib REQUIRED) + include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + else() + message(FATAL_ERROR "Unrecognized BLAS option: " ${BLAS}) + endif() +@@ -156,7 +170,7 @@ if (NOT INTERN_BUILD_MOBILE) + set(AT_MKL_ENABLED 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND)) ++ if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND OR SSL2_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if (NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index e93e98a609..d43a6c40bd 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -239,6 +239,28 @@ if((NOT BLAS_LIBRARIES) + endif (BLAS_LIBRARIES) + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.6-1.7.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.6-1.7.patch new file mode 100644 index 00000000000000..423af3f2129939 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.6-1.7.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 36e1ab7682..0f02f51c47 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -114,7 +114,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;FLAME;Generic") ++set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;SSL2;FLAME;Generic") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -154,6 +154,20 @@ elseif(BLAS STREQUAL "vecLib") + find_package(vecLib REQUIRED) + include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + elseif(BLAS STREQUAL "Generic") + # On Debian family, the CBLAS ABIs have been merged into libblas.so + find_library(BLAS_LIBRARIES blas) +@@ -168,7 +182,7 @@ if(NOT INTERN_BUILD_MOBILE) + set(AT_MKL_ENABLED 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND OR GENERIC_BLAS_FOUND)) ++ if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND OR SSL2_FOUND OR GENERIC_BLAS_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if(NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index e93e98a609..d43a6c40bd 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -239,6 +239,28 @@ if((NOT BLAS_LIBRARIES) + endif (BLAS_LIBRARIES) + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.8.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.8.patch new file mode 100644 index 00000000000000..461c1a2976b7a1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.8.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 06464e799a..7f50bd8fa0 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -118,7 +118,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;FLAME;Generic") ++set_property(CACHE BLAS PROPERTY STRINGS "Eigen;ATLAS;OpenBLAS;MKL;vecLib;SSL2;FLAME;Generic") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -157,6 +157,20 @@ elseif(BLAS STREQUAL "vecLib") + find_package(vecLib REQUIRED) + include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + elseif(BLAS STREQUAL "Generic") + # On Debian family, the CBLAS ABIs have been merged into libblas.so + find_library(BLAS_LIBRARIES blas) +@@ -171,7 +185,7 @@ if(NOT INTERN_BUILD_MOBILE) + set(AT_MKL_ENABLED 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND OR GENERIC_BLAS_FOUND)) ++ if(NOT (ATLAS_FOUND OR OpenBLAS_FOUND OR MKL_FOUND OR VECLIB_FOUND OR SSL2_FOUND OR GENERIC_BLAS_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if(NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index e8f5d7c950..29219e057f 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -257,6 +257,28 @@ if((NOT BLAS_LIBRARIES) + endif() + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.9.patch b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.9.patch new file mode 100644 index 00000000000000..0febb57586fc12 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/fj-ssl2_1.9.patch @@ -0,0 +1,76 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 5d57b9ca78..a74fe73b9f 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -118,7 +118,7 @@ else() + set(AT_MKLDNN_ENABLED 0) + set(AT_MKL_ENABLED 0) + endif() +-set_property(CACHE BLAS PROPERTY STRINGS "ATLAS;BLIS;Eigen;FLAME;Generic;MKL;OpenBLAS;vecLib") ++set_property(CACHE BLAS PROPERTY STRINGS "ATLAS;BLIS;Eigen;FLAME;Generic;MKL;OpenBLAS;SSL2;vecLib") + message(STATUS "Trying to find preferred BLAS backend of choice: " ${BLAS}) + + if(BLAS STREQUAL "Eigen") +@@ -161,6 +161,20 @@ elseif(BLAS STREQUAL "vecLib") + find_package(vecLib REQUIRED) + include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS ${vecLib_LINKER_LIBS}) ++elseif(BLAS STREQUAL "SSL2") ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ message(STATUS "SSL2 Selected BLAS library") ++ list(APPEND Caffe2_PUBLIC_DEPENDENCY_LIBS "fjlapackexsve.so") ++ set(SSL2_FOUND ON) ++ message(STATUS "set CMAKE_SHARED_LINKER_FLAGS: -SSL2 --linkfortran") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ set(WITH_BLAS "ssl2") ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() + elseif(BLAS STREQUAL "Generic") + # On Debian family, the CBLAS ABIs have been merged into libblas.so + find_library(BLAS_LIBRARIES blas) +@@ -175,7 +189,7 @@ if(NOT INTERN_BUILD_MOBILE) + set(AT_MKL_ENABLED 0) + set(AT_MKL_MT 0) + set(USE_BLAS 1) +- if(NOT (ATLAS_FOUND OR BLIS_FOUND OR GENERIC_BLAS_FOUND OR MKL_FOUND OR OpenBLAS_FOUND OR VECLIB_FOUND)) ++ if(NOT (ATLAS_FOUND OR BLIS_FOUND OR GENERIC_BLAS_FOUND OR MKL_FOUND OR OpenBLAS_FOUND OR SSL2_FOUND OR VECLIB_FOUND)) + message(WARNING "Preferred BLAS (" ${BLAS} ") cannot be found, now searching for a general BLAS library") + find_package(BLAS) + if(NOT BLAS_FOUND) +diff --git a/cmake/Modules/FindBLAS.cmake b/cmake/Modules/FindBLAS.cmake +index eefd6d475a..92ad75d32e 100644 +--- a/cmake/Modules/FindBLAS.cmake ++++ b/cmake/Modules/FindBLAS.cmake +@@ -276,6 +276,28 @@ if((NOT BLAS_LIBRARIES) + endif() + endif() + ++# BLAS in SSL2 library? ++if((NOT BLAS_LIBRARIES) ++ AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "ssl2"))) ++ if(CMAKE_CXX_COMPILER MATCHES ".*/FCC$" ++ AND CMAKE_C_COMPILER MATCHES ".*/fcc$") ++ check_fortran_libraries( ++ BLAS_LIBRARIES ++ BLAS ++ sgemm ++ "-SSL2;--linkfortran" ++ "fjlapackexsve") ++ if (BLAS_LIBRARIES) ++ set(BLAS_INFO "ssl2") ++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -SSL2 --linkfortran") ++ endif (BLAS_LIBRARIES) ++ else() ++ message(STATUS "Not built using fcc and FCC.") ++ message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") ++ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") ++ endif() ++endif() ++ + # Generic BLAS library? + if((NOT BLAS_LIBRARIES) + AND ((NOT WITH_BLAS) OR (WITH_BLAS STREQUAL "generic"))) diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 94242beeaf6f96..59248a31913144 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -23,6 +23,7 @@ class PyTorch(PythonPackage, CudaPackage): import_modules = ['torch', 'torch.autograd', 'torch.nn', 'torch.utils'] version('master', branch='master', submodules=True) + version('1.11.0', tag='v1.11.0', submodules=True) version('1.10.2', tag='v1.10.2', submodules=True) version('1.10.1', tag='v1.10.1', submodules=True) version('1.10.0', tag='v1.10.0', submodules=True) @@ -87,10 +88,13 @@ class PyTorch(PythonPackage, CudaPackage): 'https://developer.nvidia.com/cuda-gpus') # Required dependencies + depends_on('cmake@3.13:', when='@1.11:', type='build') + depends_on('cmake@3.10:', when='@1.10:', type='build') depends_on('cmake@3.5:', type='build') # Use Ninja generator to speed up build times, automatically used if found depends_on('ninja@1.5:', when='@1.1:', type='build') # See python_min_version in setup.py + depends_on('python@3.7:', when='@1.11:', type=('build', 'link', 'run')) depends_on('python@3.6.2:', when='@1.7.1:', type=('build', 'link', 'run')) depends_on('python@3.6.1:', when='@1.6:1.7.0', type=('build', 'link', 'run')) depends_on('python@3.5:', when='@1.5', type=('build', 'link', 'run')) @@ -166,13 +170,13 @@ class PyTorch(PythonPackage, CudaPackage): # Fix BLAS being overridden by MKL # https://github.com/pytorch/pytorch/issues/60328 - patch('https://patch-diff.githubusercontent.com/raw/pytorch/pytorch/pull/59220.patch', - sha256='e37afffe45cf7594c22050109942370e49983ad772d12ebccf508377dc9dcfc9', + patch('https://github.com/pytorch/pytorch/pull/59220.patch?full_index=1', + sha256='6d5717267f901e8ee493dfacd08734d9bcc48ad29a76ca9ef702368e96bee675', when='@1.2:') # Fixes build on older systems with glibc <2.12 - patch('https://patch-diff.githubusercontent.com/raw/pytorch/pytorch/pull/55063.patch', - sha256='e17eaa42f5d7c18bf0d7c37d7b0910127a01ad53fdce3e226a92893356a70395', + patch('https://github.com/pytorch/pytorch/pull/55063.patch?full_index=1', + sha256='2229bcbf20fbe88aa9f7318f89c126ec7f527875ffe689a763c78abfa127a65c', when='@1.1:1.8.1') # Fixes CMake configuration error when XNNPACK is disabled @@ -190,8 +194,8 @@ class PyTorch(PythonPackage, CudaPackage): # Fixes compilation with Clang 9.0.0 and Apple Clang 11.0.3 # https://github.com/pytorch/pytorch/pull/37086 - patch('https://github.com/pytorch/pytorch/commit/e921cd222a8fbeabf5a3e74e83e0d8dfb01aa8b5.patch', - sha256='17561b16cd2db22f10c0fe1fdcb428aecb0ac3964ba022a41343a6bb8cba7049', + patch('https://github.com/pytorch/pytorch/commit/e921cd222a8fbeabf5a3e74e83e0d8dfb01aa8b5.patch?full_index=1', + sha256='0f3ad037a95af9d34b1d085050c1e7771fd00f0b89e5b3a276097b7c9f4fabf8', when='@1.1:1.5') # Removes duplicate definition of getCusparseErrorString @@ -202,10 +206,19 @@ class PyTorch(PythonPackage, CudaPackage): # to detect openmp settings used by Fujitsu compiler. patch('detect_omp_of_fujitsu_compiler.patch', when='%fj') + # Fixes to build with fujitsu-ssl2 + patch('fj-ssl2_1.11.patch', when='@1.11:^fujitsu-ssl2') + patch('fj-ssl2_1.10.patch', when='@1.10^fujitsu-ssl2') + patch('fj-ssl2_1.9.patch', when='@1.9^fujitsu-ssl2') + patch('fj-ssl2_1.8.patch', when='@1.8^fujitsu-ssl2') + patch('fj-ssl2_1.6-1.7.patch', when='@1.6:1.7^fujitsu-ssl2') + patch('fj-ssl2_1.3-1.5.patch', when='@1.3:1.5^fujitsu-ssl2') + patch('fj-ssl2_1.2.patch', when='@1.2^fujitsu-ssl2') + # Fix compilation of +distributed~tensorpipe # https://github.com/pytorch/pytorch/issues/68002 - patch('https://github.com/pytorch/pytorch/commit/c075f0f633fa0136e68f0a455b5b74d7b500865c.patch', - sha256='e69e41b5c171bfb00d1b5d4ee55dd5e4c8975483230274af4ab461acd37e40b8', when='@1.10.0+distributed~tensorpipe') + patch('https://github.com/pytorch/pytorch/commit/c075f0f633fa0136e68f0a455b5b74d7b500865c.patch?full_index=1', + sha256='41271e494a3a60a65a8dd45ac053d1a6e4e4d5b42c2dac589ac67524f61ac41e', when='@1.10.0+distributed~tensorpipe') @property def libs(self): @@ -356,12 +369,20 @@ def enable_or_disable(variant, keyword='USE', var=None, newer=False): 'intel-mkl', 'intel-parallel-studio', 'intel-oneapi-mkl']: env.set('BLAS', 'MKL') env.set('WITH_BLAS', 'mkl') + # help find MKL + if self.spec['mkl'].name == 'intel-oneapi-mkl': + env.set('INTEL_MKL_DIR', self.spec['mkl'].prefix.mkl.latest) + else: + env.set('INTEL_MKL_DIR', self.spec['mkl'].prefix.mkl) elif self.spec['blas'].name == 'openblas': env.set('BLAS', 'OpenBLAS') env.set('WITH_BLAS', 'open') elif self.spec['blas'].name == 'veclibfort': env.set('BLAS', 'vecLib') env.set('WITH_BLAS', 'veclib') + elif self.spec['blas'].name == 'fujitsu-ssl2': + env.set('BLAS', 'SSL2') + env.set('WITH_BLAS', 'ssl2') else: env.set('BLAS', 'Generic') env.set('WITH_BLAS', 'generic') diff --git a/var/spack/repos/builtin/packages/py-torchgeo/package.py b/var/spack/repos/builtin/packages/py-torchgeo/package.py index a7016afeab1fd5..596840d98afc52 100644 --- a/var/spack/repos/builtin/packages/py-torchgeo/package.py +++ b/var/spack/repos/builtin/packages/py-torchgeo/package.py @@ -20,6 +20,7 @@ class PyTorchgeo(PythonPackage): maintainers = ['adamjstewart', 'calebrob6'] version('main', branch='main') + version('0.2.1', sha256='218bd5aed7680244688dbf0f1398f5251ad243267eb19a6a7332668ac779a1cc') version('0.2.0', sha256='968c4bf68c7e487bf495f2f306d8bb0f5824eb67e24b26772a510e753e04ba4c') version('0.1.1', sha256='6e28132f75e9d8cb3a3a0e8b443aba3cde26c8f3140b9426139ee6e8f8058b26') version('0.1.0', sha256='44eb3cf10ab2ac63ff95e92fcd3807096bac3dcb9bdfe15a8edac9d440d2f323') @@ -43,13 +44,15 @@ class PyTorchgeo(PythonPackage): depends_on('py-pyproj@2.2:', type=('build', 'run')) depends_on('py-pytorch-lightning@1.3:', type=('build', 'run')) depends_on('py-rasterio@1.0.16:', type=('build', 'run')) + depends_on('py-rtree@0.9.4:', when='@0.2.1:', type=('build', 'run')) depends_on('py-rtree@0.5:', type=('build', 'run')) depends_on('py-scikit-learn@0.18:', type=('build', 'run')) depends_on('py-segmentation-models-pytorch@0.2:', type=('build', 'run')) depends_on('py-shapely@1.3:', type=('build', 'run')) depends_on('py-timm@0.2.1:', type=('build', 'run')) depends_on('py-torch@1.7:', type=('build', 'run')) - depends_on('py-torchmetrics', type=('build', 'run')) + depends_on('py-torchmetrics@0.7:', when='@0.2.1:', type=('build', 'run')) + depends_on('py-torchmetrics@:0.7', when='@:0.2.0', type=('build', 'run')) depends_on('py-torchvision@0.10:', when='@0.2:', type=('build', 'run')) depends_on('py-torchvision@0.3:', type=('build', 'run')) @@ -65,6 +68,7 @@ class PyTorchgeo(PythonPackage): depends_on('py-radiant-mlhub@0.2.1:', type='run') depends_on('py-rarfile@3:', type='run') depends_on('py-scipy@0.9:', type='run') + depends_on('py-zipfile-deflate64@0.2:', when='@0.2.1:', type='run') with when('+style'): depends_on('py-black@21:', type='run') diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 7d71ce946d2b2d..b1bc5908a99d6e 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -16,12 +16,14 @@ class PyTorchvision(PythonPackage): version('main', branch='main') version('master', branch='main', deprecated=True) + version('0.12.0', sha256='99e6d3d304184895ff4f6152e2d2ec1cbec89b3e057d9c940ae0125546b04e91') version('0.11.3', sha256='b4c51d27589783e6e6941ecaa67b55f6f41633874ec37f80b64a0c92c3196e0c') version('0.11.2', sha256='55689c57c29f82438a133d0af3315991037be59c8e02471bdcaa31731154a714') version('0.11.1', sha256='32a06ccf755e4d75006ce03701f207652747a63dbfdf65f0f20a1b6f93a2e834') version('0.11.0', sha256='8e85acf8f5d39f27e92e610ccb506dac0bf4412bb366a318d2aa5f384cbd4d2c') version('0.10.1', sha256='4d595cf0214c8adc817f8e3cd0043a027b52b481e05d67b04f4947fcb43d4277') version('0.10.0', sha256='82bb2c2b03d8a65f4ea74bb0ee5566b0876a1992aceefb1e11475c7b5d2e857b') + version('0.9.2', sha256='b41fc99bbf18450750bcd1804393e7c09dc8d4873c6b7e544b11c70fda59cbc8') version('0.9.1', sha256='79964773729880e0eee0e6af13f336041121d4cc8491a3e2c0e5f184cac8a718') version('0.9.0', sha256='9351ed92aded632f8c7f59dfadac13c191a834babe682f5785ea47e6fcf6b472') version('0.8.2', sha256='9a866c3c8feb23b3221ce261e6153fc65a98ce9ceaa71ccad017016945c178bf') @@ -41,23 +43,29 @@ class PyTorchvision(PythonPackage): values=('pil', 'accimage', 'png', 'jpeg'), multi=False) # https://github.com/pytorch/vision#installation - depends_on('python@3.6:', when='@0.7:', type=('build', 'link', 'run')) - depends_on('python@3.5:', when='@0.6.0:0.6', type=('build', 'link', 'run')) - depends_on('python@2.7:2.8,3.5:3.8', when='@0.5.0', type=('build', 'link', 'run')) - depends_on('python@2.7:2.8,3.5:3.7', when='@:0.4', type=('build', 'link', 'run')) + depends_on('python@3.7:3.10', when='@0.12:', type=('build', 'link', 'run')) + depends_on('python@3.6:3.9', when='@0.8.2:0.11', type=('build', 'link', 'run')) + depends_on('python@3.6:3.8', when='@0.7:0.8.1', type=('build', 'link', 'run')) + depends_on('python@3.5:3.8', when='@0.6', type=('build', 'link', 'run')) + depends_on('python@2.7,3.5:3.8', when='@0.5', type=('build', 'link', 'run')) + depends_on('python@2.7,3.5:3.7', when='@:0.4', type=('build', 'link', 'run')) depends_on('py-setuptools', type='build') depends_on('ninja', type='build') + depends_on('py-typing-extensions', when='@0.12:', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) + depends_on('py-requests', when='@0.12:', type=('build', 'run')) depends_on('py-six', when='@:0.5', type=('build', 'run')) # https://github.com/pytorch/vision#installation depends_on('py-torch@master', when='@master', type=('build', 'link', 'run')) + depends_on('py-torch@1.11.0', when='@0.12.0', type=('build', 'link', 'run')) depends_on('py-torch@1.10.2', when='@0.11.3', type=('build', 'link', 'run')) depends_on('py-torch@1.10.1', when='@0.11.2', type=('build', 'link', 'run')) depends_on('py-torch@1.10.0', when='@0.11.0:0.11.1', type=('build', 'link', 'run')) depends_on('py-torch@1.9.1', when='@0.10.1', type=('build', 'link', 'run')) depends_on('py-torch@1.9.0', when='@0.10.0', type=('build', 'link', 'run')) + depends_on('py-torch@1.8.2', when='@0.9.2', type=('build', 'link', 'run')) depends_on('py-torch@1.8.1', when='@0.9.1', type=('build', 'link', 'run')) depends_on('py-torch@1.8.0', when='@0.9.0', type=('build', 'link', 'run')) depends_on('py-torch@1.7.1', when='@0.8.2', type=('build', 'link', 'run')) @@ -77,10 +85,10 @@ class PyTorchvision(PythonPackage): depends_on('pil@4.1.1:6', when='@:0.4 backend=pil', type=('build', 'run')) depends_on('pil@4.1.1:', when='@0.5: backend=pil', type=('build', 'run')) # https://github.com/pytorch/vision/issues/4146 - depends_on('pil@5.3:8.2,8.3.1:', when='@0.10: backend=pil', type=('build', 'run')) + depends_on('pil@5.3:8.2,8.4:', when='@0.10: backend=pil', type=('build', 'run')) depends_on('py-accimage', when='backend=accimage', type=('build', 'run')) depends_on('libpng@1.6.0:', when='backend=png') - depends_on('jpeg', when='backend=jpeg') + depends_on('jpeg') # Many of the datasets require additional dependencies to use. # These can be installed after the fact. diff --git a/var/spack/repos/builtin/packages/py-warpx/package.py b/var/spack/repos/builtin/packages/py-warpx/package.py index 983b6f2e595a4b..cb5a3d36903fda 100644 --- a/var/spack/repos/builtin/packages/py-warpx/package.py +++ b/var/spack/repos/builtin/packages/py-warpx/package.py @@ -18,15 +18,16 @@ class PyWarpx(PythonPackage): """ homepage = "https://ecp-warpx.github.io" - url = "https://github.com/ECP-WarpX/WarpX/archive/refs/tags/22.02.tar.gz" + url = "https://github.com/ECP-WarpX/WarpX/archive/refs/tags/22.03.tar.gz" git = "https://github.com/ECP-WarpX/WarpX.git" maintainers = ['ax3l', 'dpgrote', 'RemiLehe'] - tags = ['e4s'] + tags = ['e4s', 'ecp'] # NOTE: if you update the versions here, also see warpx version('develop', branch='development') + version('22.03', sha256='ddbef760c8000f2f827dfb097ca3359e7aecbea8766bec5c3a91ee28d3641564') version('22.02', sha256='d74b593d6f396e037970c5fbe10c2e5d71d557a99c97d40e4255226bc6c26e42') version('22.01', sha256='e465ffadabb7dc360c63c4d3862dc08082b5b0e77923d3fb05570408748b0d28') version('21.12', sha256='847c98aac20c73d94c823378803c82be9a14139f1c14ea483757229b452ce4c1') @@ -42,7 +43,7 @@ class PyWarpx(PythonPackage): variant('mpi', default=True, description='Enable MPI support') - for v in ['22.02', '22.01', + for v in ['22.03', '22.02', '22.01', '21.12', '21.11', '21.10', '21.09', '21.08', '21.07', '21.06', '21.05', '21.04', 'develop']: @@ -58,7 +59,7 @@ class PyWarpx(PythonPackage): depends_on('py-picmistandard@0.0.14', type=('build', 'run'), when='@21.03:21.11') depends_on('py-picmistandard@0.0.16', type=('build', 'run'), when='@21.12') depends_on('py-picmistandard@0.0.18', type=('build', 'run'), when='@22.01') - depends_on('py-picmistandard@0.0.19', type=('build', 'run'), when='@22.02') + depends_on('py-picmistandard@0.0.19', type=('build', 'run'), when='@22.02:') depends_on('py-setuptools@42:', type='build') # Since we use PYWARPX_LIB_DIR to pull binaries out of the # 'warpx' spack package, we don't need py-cmake as declared diff --git a/var/spack/repos/builtin/packages/py-watchdog/package.py b/var/spack/repos/builtin/packages/py-watchdog/package.py index 07d57da7672438..559206c7efe8c9 100644 --- a/var/spack/repos/builtin/packages/py-watchdog/package.py +++ b/var/spack/repos/builtin/packages/py-watchdog/package.py @@ -10,19 +10,48 @@ class PyWatchdog(PythonPackage): """Python library and shell utilities to monitor filesystem events.""" homepage = "https://github.com/gorakhargosh/watchdog" - url = "https://github.com/gorakhargosh/watchdog/archive/v0.10.3.tar.gz" - - version('0.10.3', sha256='f7e5040b483cc9a8618a4e72c11a527b42434a0766ea96dce633e8b44b1369de') - version('0.10.2', sha256='4dba861f5e6960c8063ad68137772ff35f1516ea47d64b53042dabd2d8f8dbdc') - version('0.10.1', sha256='972c6050eb5d275b582c75e6ff71ef562a6c3be6361d6d9b37110e0ba718994d') - version('0.10.0', sha256='39e2966b8c9596e45b463815668989b87c7d205e47c7e6e4a7db9a58354b99ff') - version('0.9.0', sha256='e8a32701dff43a4e671a40acf92f55a8fffd8ca74333b75436d63a94d104faef') - version('0.8.3', sha256='e9a27d0ab121fc86217ab833e778c76880aad4ecdb623796f4b7aee9925394ed') - version('0.8.2', sha256='386e882c8bc7df8a3c4c8803e6fcf2f7cf836c9a8867ff9d91b4af19d262d023') - version('0.8.1', sha256='05e5d8acd5061aff789359cd8f25a85ba4c848a8feded3fc68f9c57f0b181373') - version('0.8.0', sha256='5abac06e63ad8d5b001626a16bfdd1b918637aa8d85cf933e68de2e627b56053') - version('0.7.1', sha256='d795fa85ce9252eeb2294a5182c99013433aeb736cc7a1fc9e14e1e2a1a19690') - - depends_on('python@2.7,3.4:', type=('build', 'run')) - depends_on('py-setuptools', type='build') - depends_on('py-pyyaml', type=('build', 'run')) + pypi = "watchdog/watchdog-0.10.3.tar.gz" + + version('2.1.6', sha256='a36e75df6c767cbf46f61a91c70b3ba71811dfa0aca4a324d9407a06a8b7a2e7') + version('0.10.3', sha256='4214e1379d128b0588021880ccaf40317ee156d4603ac388b9adcf29165e0c04') + version('0.10.2', sha256='c560efb643faed5ef28784b2245cf8874f939569717a4a12826a173ac644456b') + version('0.10.1', sha256='d64786787b14c8c6a71a8cc014056776ba6b52e85d1164ef2ab50aec02723a3d') + version('0.10.0', sha256='8e800496cdfb921cfdc62b58a11966d0d2203a35dc005b4b5b8e1ab3097b2eb5') + version('0.9.0', sha256='965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d') + version('0.8.3', sha256='7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162') + version('0.8.2', sha256='33a9ab3ce2e6b1aca4d2a50752231668d69bdba4ab096d9742195ccfbef1e023') + version('0.8.1', sha256='d6ec6be582b244834a888c8ccc2d451816184ab104b5454b5e5cd7649e8f671c') + version('0.8.0', sha256='a86bb2d8b94bb4bf76fcc2ff36f741c0e511ec24c4d3a1059b47d49e377d64f5') + version('0.7.1', sha256='54ca64fdf0a2fb23cecba6349f9587e62fd31840ae22a71898a65adb8c6b52f9') + + variant('watchmedo', default=False, when='@0.10:', description="Build optional watchmedo utility script") + + depends_on('python@2.6:2,3.2:', type=('build', 'run'), when='@0.9.0:') + depends_on('python@2.7:2,3.4:', type=('build', 'run'), when='@0.10.0:') + depends_on('python@3.6:', type=('build', 'run'), when='@2.1.6:') + + depends_on('py-setuptools', type='build') + + depends_on('py-pyyaml@3.9:', type=('build', 'run'), when='@0.7.1') + depends_on('py-pyyaml@3.10:', type=('build', 'run'), when='@0.8.0:0.8.3') + depends_on('py-pyyaml@:3.12', type=('build', 'run'), when='@0.9.0 ^python@3.2') + depends_on('py-pyyaml@3.10:', type=('build', 'run'), when='@0.9.0 ^python@2.6:2,3.3:') + depends_on('py-pyyaml@3.10:', type=('build', 'run'), when='@0.10.0: +watchmedo') + depends_on('py-pyyaml@3.10:', type=('build', 'run'), when='@2.1.6: +watchmedo') + + depends_on('py-argh@0.8.1:', type=('build', 'run'), when='@0.7.1') + depends_on('py-argh@0.24.1:', type=('build', 'run'), when='@0.8.0:0.9.0') + depends_on('py-argh@0.24.1:', type=('build', 'run'), when='@0.10.0:0.10.3 +watchmedo') + + depends_on('py-pathtools@0.1.1:', type=('build', 'run'), when='@0:0.10.3') + + # Missing dependencies + conflicts('platform=darwin', when='@0.10.0:0.10.1') + # depends_on('py-pyobjc-framework-cocoa@4.2.2:', + # when='@0.10.0:0.10.1 platform=darwin') + # depends_on('py-pyobjc-framework-fsevents@4.2.2:', + # when='@0.10.0:0.10.1 platform=darwin') + + # Missing dependencies + conflicts('platform=darwin', when='@:0.9.0 ^python@:2.6') + # depends_on('py-select-backport@0.2:', when='@:0.9.0 ^python@:2.6 platform=darwin') diff --git a/var/spack/repos/builtin/packages/py-wsproto/package.py b/var/spack/repos/builtin/packages/py-wsproto/package.py new file mode 100644 index 00000000000000..86158dcc84d3a6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-wsproto/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2022 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 import * + + +class PyWsproto(PythonPackage): + """This repository contains a pure-Python implementation of + a WebSocket protocol stack. It's written from the ground up + to be embeddable in whatever program you choose to use, + ensuring that you can communicate via WebSockets, as + defined in RFC6455, regardless of your programming + paradigm.""" + + homepage = "https://github.com/python-hyper/wsproto/" + pypi = "wsproto/wsproto-1.0.0.tar.gz" + + version('1.0.0', sha256='868776f8456997ad0d9720f7322b746bbe9193751b5b290b7f924659377c8c38') + + depends_on('python@3.6.1:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-dataclasses', type=('build', 'run'), when='^python@:3.6') + depends_on('py-h11@0.9.0:0', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-xarray/package.py b/var/spack/repos/builtin/packages/py-xarray/package.py index f984cb069453a4..a8bc0d1753266f 100644 --- a/var/spack/repos/builtin/packages/py-xarray/package.py +++ b/var/spack/repos/builtin/packages/py-xarray/package.py @@ -29,6 +29,7 @@ class PyXarray(PythonPackage): version('0.9.1', sha256='89772ed0e23f0e71c3fb8323746374999ecbe79c113e3fadc7ae6374e6dc0525') variant('io', default=False, description='Build io backends') + variant('parallel', default=False, description='Build parallel backend') depends_on('python@2.7:2.8,3.5:', when='@0.11:', type=('build', 'run')) depends_on('python@3.5:', when='@0.12', type=('build', 'run')) @@ -63,3 +64,4 @@ class PyXarray(PythonPackage): depends_on('py-rasterio', when='+io', type=('build', 'run')) depends_on('py-cfgrib', when='+io', type=('build', 'run')) depends_on('py-pooch', when='+io', type=('build', 'run')) + depends_on('py-dask+array+dataframe+distributed+diagnostics+delayed', when='+parallel', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-yaspin/package.py b/var/spack/repos/builtin/packages/py-yaspin/package.py new file mode 100644 index 00000000000000..78d9ea994d49f3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-yaspin/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2022 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 import * + + +class PyYaspin(PythonPackage): + """Yet Another Terminal Spinner""" + + homepage = "https://github.com/pavdmyt/yaspin" + pypi = "yaspin/yaspin-2.1.0.tar.gz" + + version('2.1.0', sha256='c8d34eca9fda3f4dfbe59f57f3cf0f3641af3eefbf1544fbeb9b3bacf82c580a') + + depends_on('python@3.6.2:3', type=('build', 'run')) + depends_on('py-poetry-core@1:', type='build') + depends_on('py-termcolor@1.1.0:1', type=('build', 'run')) + depends_on('py-dataclasses@0.8', type=('build', 'run'), when='^python@3.6') diff --git a/var/spack/repos/builtin/packages/py-ytopt/package.py b/var/spack/repos/builtin/packages/py-ytopt/package.py index 0c26be289dc6fc..52304bc4686be5 100644 --- a/var/spack/repos/builtin/packages/py-ytopt/package.py +++ b/var/spack/repos/builtin/packages/py-ytopt/package.py @@ -15,12 +15,16 @@ class PyYtopt(PythonPackage): homepage = "https://github.com/ytopt-team/ytopt" url = "https://github.com/ytopt-team/ytopt/archive/refs/tags/v0.0.1.tar.gz" + version('0.0.3', sha256='eac6ab87d4fd27517f136880016359c5b24836ec009e8cc9b4073a6c5edb17af') version('0.0.2', sha256='5a624aa678b976ff6ef867610bafcb0dfd5c8af0d880138ca5d56d3f776e6d71') version('0.0.1', sha256='3ca616922c8e76e73f695a5ddea5dd91b0103eada726185f008343cc5cbd7744') + variant('online', default=False, description='Install requirements for online tuning.', when='@0.0.3:') + depends_on('python@3.6:', type=('build', 'run')) depends_on('py-setuptools', type='build') - depends_on('py-scikit-learn@0.23.1', type=('build', 'run')) + depends_on('py-scikit-learn@0.23.1', type=('build', 'run'), when='@:0.0.2') + depends_on('py-scikit-learn@1.0.0:', type=('build', 'run'), when='@0.0.3:') depends_on('py-dh-scikit-optimize', type=('build', 'run')) depends_on('py-configspace', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) @@ -30,3 +34,4 @@ class PyYtopt(PythonPackage): depends_on('py-tqdm', type=('build', 'run')) depends_on('py-ray', type=('build', 'run')) depends_on('py-mpi4py@3.0.0:', type=('build', 'run')) + depends_on('py-sdv@0.13.1:0.13', type=('build', 'run'), when='@0.0.3: +online') diff --git a/var/spack/repos/builtin/packages/python/cpython-windows-externals.patch b/var/spack/repos/builtin/packages/python/cpython-windows-externals.patch new file mode 100644 index 00000000000000..c3bcce983f0ea5 --- /dev/null +++ b/var/spack/repos/builtin/packages/python/cpython-windows-externals.patch @@ -0,0 +1,28 @@ +diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat +index b5a44e3..52941c7 100644 +--- a/PCbuild/get_externals.bat ++++ b/PCbuild/get_externals.bat +@@ -76,7 +76,7 @@ for %%e in (%libraries%) do ( + echo.Fetching external binaries... + + set binaries= +-if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi ++if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.3.0 + if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-1.1.1k-1 + if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.9.0 + if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06 +diff --git a/PCbuild/python.props b/PCbuild/python.props +index 419d5eb..c66fb07 100644 +--- a/PCbuild/python.props ++++ b/PCbuild/python.props +@@ -59,8 +59,8 @@ + $(ExternalsDir)sqlite-3.35.5.0\ + $(ExternalsDir)bzip2-1.0.6\ + $(ExternalsDir)xz-5.2.2\ +- $(ExternalsDir)libffi\ +- $(ExternalsDir)libffi\$(ArchName)\ ++ $(ExternalsDir)libffi-3.3.0\ ++ $(ExternalsDir)libffi-3.3.0\$(ArchName)\ + $(libffiOutDir)include + $(ExternalsDir)openssl-1.1.1k\ + $(ExternalsDir)openssl-bin-1.1.1k-1\$(ArchName)\ diff --git a/var/spack/repos/builtin/packages/python/fj-rpath-3.9.patch b/var/spack/repos/builtin/packages/python/fj-rpath-3.9.patch new file mode 100644 index 00000000000000..1542b367e94257 --- /dev/null +++ b/var/spack/repos/builtin/packages/python/fj-rpath-3.9.patch @@ -0,0 +1,11 @@ +--- spack-src/Lib/distutils/unixccompiler.py.org 2022-01-31 14:42:34.000000000 +0900 ++++ spack-src/Lib/distutils/unixccompiler.py 2022-01-31 14:43:19.000000000 +0900 +@@ -212,7 +212,7 @@ + + def _is_gcc(self, compiler_name): + # clang uses same syntax for rpath as gcc +- return any(name in compiler_name for name in ("gcc", "g++", "clang")) ++ return any(name in compiler_name for name in ("gcc", "g++", "clang", "fcc", "FCC")) + + def runtime_library_dir_option(self, dir): + # XXX Hackish, at the very least. See Python bug #445902: diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index a9103aca6d3d03..7231e9e48b356e 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -8,10 +8,16 @@ import os import platform import re +import subprocess import sys +from shutil import copy import llnl.util.tty as tty -from llnl.util.filesystem import get_filetype, path_contains_subdirectory +from llnl.util.filesystem import ( + copy_tree, + is_nonsymlink_exe_with_shebang, + path_contains_subdirectory, +) from llnl.util.lang import match_predicate from spack import * @@ -19,8 +25,10 @@ from spack.util.environment import is_system_path from spack.util.prefix import Prefix +is_windows = sys.platform == 'win32' + -class Python(AutotoolsPackage): +class Python(Package): """The Python programming language.""" homepage = "https://www.python.org/" @@ -30,6 +38,13 @@ class Python(AutotoolsPackage): maintainers = ['adamjstewart', 'skosukhin', 'scheibelp', 'varioustoxins'] + phases = ['configure', 'build', 'install'] + + #: phase + install_targets = ['install'] + build_targets = [] + + version('3.10.3', sha256='5a3b029bad70ba2a019ebff08a65060a8b9b542ffc1a83c697f1449ecca9813b') version('3.10.2', sha256='3c0ede893011319f9b0a56b44953a3d52c7abf9657c23fb4bc9ced93b86e9c97') version('3.10.1', sha256='b76117670e7c5064344b9c138e141a377e686b9063f3a8a620ff674fa8ec90d3') version('3.10.0', sha256='c4e0cbad57c90690cb813fb4663ef670b4d0f587d8171e2c42bd4c9245bd2758') @@ -147,12 +162,12 @@ class Python(AutotoolsPackage): description='Enable expensive build-time optimizations, if available' ) # See https://legacy.python.org/dev/peps/pep-0394/ - variant('pythoncmd', default=True, + variant('pythoncmd', default=not is_windows, description="Symlink 'python3' executable to 'python' " "(not PEP 394 compliant)") # Optional Python modules - variant('readline', default=True, description='Build readline module') + variant('readline', default=not is_windows, description='Build readline module') variant('ssl', default=True, description='Build ssl module') variant('sqlite3', default=True, description='Build sqlite3 module') variant('dbm', default=True, description='Build dbm module') @@ -167,33 +182,34 @@ class Python(AutotoolsPackage): variant('tix', default=False, description='Build Tix module') variant('ensurepip', default=True, description='Build ensurepip module', when='@2.7.9:2,3.4:') - depends_on('pkgconfig@0.9.0:', type='build') - depends_on('gettext +libxml2', when='+libxml2') - depends_on('gettext ~libxml2', when='~libxml2') - - # Optional dependencies - # See detect_modules() in setup.py for details - depends_on('readline', when='+readline') - depends_on('ncurses', when='+readline') - depends_on('openssl', when='+ssl') - # https://raw.githubusercontent.com/python/cpython/84471935ed2f62b8c5758fd544c7d37076fe0fa5/Misc/NEWS - # https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-4rc1 - depends_on('openssl@:1.0.2z', when='@:2.7.13,3.0.0:3.5.2+ssl') - depends_on('openssl@1.0.2:', when='@3.7:+ssl') # https://docs.python.org/3/whatsnew/3.7.html#build-changes - depends_on('openssl@1.1.1:', when='@3.10:+ssl') # https://docs.python.org/3.10/whatsnew/3.10.html#build-changes - depends_on('sqlite@3.0.8:', when='@:3.9+sqlite3') - depends_on('sqlite@3.7.15:', when='@3.10:+sqlite3') # https://docs.python.org/3.10/whatsnew/3.10.html#build-changes - depends_on('gdbm', when='+dbm') # alternatively ndbm or berkeley-db - depends_on('libnsl', when='+nis') - depends_on('zlib@1.1.3:', when='+zlib') - depends_on('bzip2', when='+bz2') - depends_on('xz', when='@3.3:+lzma') - depends_on('expat', when='+pyexpat') - depends_on('libffi', when='+ctypes') - depends_on('tk', when='+tkinter') - depends_on('tcl', when='+tkinter') - depends_on('uuid', when='+uuid') - depends_on('tix', when='+tix') + if not is_windows: + depends_on('pkgconfig@0.9.0:', type='build') + depends_on('gettext +libxml2', when='+libxml2') + depends_on('gettext ~libxml2', when='~libxml2') + + # Optional dependencies + # See detect_modules() in setup.py for details + depends_on('readline', when='+readline') + depends_on('ncurses', when='+readline') + depends_on('openssl', when='+ssl') + # https://raw.githubusercontent.com/python/cpython/84471935ed2f62b8c5758fd544c7d37076fe0fa5/Misc/NEWS + # https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-4rc1 + depends_on('openssl@:1.0.2z', when='@:2.7.13,3.0.0:3.5.2+ssl') + depends_on('openssl@1.0.2:', when='@3.7:+ssl') # https://docs.python.org/3/whatsnew/3.7.html#build-changes + depends_on('openssl@1.1.1:', when='@3.10:+ssl') # https://docs.python.org/3.10/whatsnew/3.10.html#build-changes + depends_on('sqlite@3.0.8:', when='@:3.9+sqlite3') + depends_on('sqlite@3.7.15:', when='@3.10:+sqlite3') # https://docs.python.org/3.10/whatsnew/3.10.html#build-changes + depends_on('gdbm', when='+dbm') # alternatively ndbm or berkeley-db + depends_on('libnsl', when='+nis') + depends_on('zlib@1.1.3:', when='+zlib') + depends_on('bzip2', when='+bz2') + depends_on('xz', when='@3.3:+lzma') + depends_on('expat', when='+pyexpat') + depends_on('libffi', when='+ctypes') + depends_on('tk', when='+tkinter') + depends_on('tcl', when='+tkinter') + depends_on('uuid', when='+uuid') + depends_on('tix', when='+tix') # Python needs to be patched to build extensions w/ mixed C/C++ code: # https://github.com/NixOS/nixpkgs/pull/19585/files @@ -212,7 +228,7 @@ class Python(AutotoolsPackage): patch('python-3.7.3-distutils-C++.patch', when='@3.7.3') patch('python-3.7.4+-distutils-C++.patch', when='@3.7.4:') patch('python-3.7.4+-distutils-C++-testsuite.patch', when='@3.7.4:') - + patch('cpython-windows-externals.patch', when='@:3.9.6 platform=windows') patch('tkinter.patch', when='@:2.8,3.3:3.7 platform=darwin') # Patch the setup script to deny that tcl/x11 exists rather than allowing # autodetection of (possibly broken) system components @@ -225,7 +241,8 @@ class Python(AutotoolsPackage): # Ensure that distutils chooses correct compiler option for RPATH on fj: patch('fj-rpath-2.3.patch', when='@2.3:3.0.1 %fj') - patch('fj-rpath-3.1.patch', when='@3.1:3 %fj') + patch('fj-rpath-3.1.patch', when='@3.1:3.9.7,3.10.0 %fj') + patch('fj-rpath-3.9.patch', when='@3.9.8:3.9,3.10.1: %fj') # Fixes an alignment problem with more aggressive optimization in gcc8 # https://github.com/python/cpython/commit/0b91f8a668201fc58fa732b8acc496caedfdbae0 @@ -253,6 +270,9 @@ class Python(AutotoolsPackage): conflicts('%nvhpc') + conflicts('@:2.7', when='platform=darwin target=aarch64:', + msg='Python 2.7 is too old for Apple Silicon') + # Used to cache various attributes that are expensive to compute _config_vars = {} @@ -268,8 +288,10 @@ def determine_version(cls, exe): # Python 2 sends to STDERR, while Python 3 sends to STDOUT # Output looks like: # Python 3.7.7 + # On pre-production Ubuntu, this is also possible: + # Python 3.10.2+ output = Executable(exe)('-V', output=str, error=str) - match = re.search(r'Python\s+(\S+)', output) + match = re.search(r'Python\s+([A-Za-z0-9_.-]+)', output) return match.group(1) if match else None @classmethod @@ -416,12 +438,14 @@ def setup_build_environment(self, env): 'errors may occur when installing Python modules w/ ' 'mixed C/C++ source files.').format(self.version)) - # Need this to allow python build to find the Python installation. - env.set('MACOSX_DEPLOYMENT_TARGET', platform.mac_ver()[0]) - env.unset('PYTHONPATH') env.unset('PYTHONHOME') + # avoid build error on fugaku + if spec.satisfies('@3.10.0 arch=linux-rhel8-a64fx'): + if spec.satisfies('%gcc') or spec.satisfies('%fj'): + env.unset('LC_ALL') + def flag_handler(self, name, flags): # python 3.8 requires -fwrapv when compiled with intel if self.spec.satisfies('@3.8: %intel'): @@ -431,6 +455,86 @@ def flag_handler(self, name, flags): # allow flags to be passed through compiler wrapper return (flags, None, None) + @property + def plat_arch(self): + """ + String referencing platform architecture + filtered through Python's Windows build file + architecture support map + + Note: This function really only makes + sense to use on Windows, could be overridden to + cross compile however. + """ + + arch_map = {"AMD64": "x64", "x86": "Win32", + "IA64": "Win32", "EM64T": "Win32"} + arch = platform.machine() + if arch in arch_map: + arch = arch_map[arch] + return arch + + @property + def win_build_params(self): + """ + Arguments must be passed to the Python build batch script + in order to configure it to spec and system. + A number of these toggle optional MSBuild Projects + directly corresponding to the python support of the same + name. + """ + args = [] + args.append("-p %s" % self.plat_arch) + if self.spec.satisfies('+debug'): + args.append('-d') + if self.spec.satisfies('~ctypes'): + args.append('--no-ctypes') + if self.spec.satisfies('~ssl'): + args.append('--no-ssl') + if self.spec.satisfies('~tkinter'): + args.append('--no-tkinter') + return args + + def win_installer(self, prefix): + """ + Python on Windows does not export an install target + so we must handcraft one here. This structure + directly mimics the install tree of the Python + Installer on Windows. + + Parameters: + prefix (str): Install prefix for package + """ + proj_root = self.stage.source_path + pcbuild_root = os.path.join(proj_root, "PCbuild") + build_root = os.path.join(pcbuild_root, platform.machine().lower()) + include_dir = os.path.join(proj_root, "Include") + copy_tree(include_dir, prefix.include) + doc_dir = os.path.join(proj_root, "Doc") + copy_tree(doc_dir, prefix.Doc) + tools_dir = os.path.join(proj_root, "Tools") + copy_tree(tools_dir, prefix.Tools) + lib_dir = os.path.join(proj_root, "Lib") + copy_tree(lib_dir, prefix.Lib) + pyconfig = os.path.join(proj_root, "PC", "pyconfig.h") + copy(pyconfig, prefix.include) + shared_libraries = [] + shared_libraries.extend(glob.glob("%s\\*.exe" % build_root)) + shared_libraries.extend(glob.glob("%s\\*.dll" % build_root)) + shared_libraries.extend(glob.glob("%s\\*.pyd" % build_root)) + os.makedirs(prefix.DLLs) + for lib in shared_libraries: + file_name = os.path.basename(lib) + if file_name.endswith(".exe") or\ + (file_name.endswith(".dll") and "python" in file_name)\ + or "vcruntime" in file_name: + copy(lib, prefix) + else: + copy(lib, prefix.DLLs) + static_libraries = glob.glob("%s\\*.lib") + for lib in static_libraries: + copy(lib, prefix.libs) + def configure_args(self): spec = self.spec config_args = [] @@ -438,7 +542,7 @@ def configure_args(self): # setup.py needs to be able to read the CPPFLAGS and LDFLAGS # as it scans for the library and headers to build - link_deps = spec.dependencies('link') + link_deps = spec.dependencies(deptype='link') if link_deps: # Header files are often included assuming they reside in a @@ -542,6 +646,54 @@ def configure_args(self): return config_args + def configure(self, spec, prefix): + """Runs configure with the arguments specified in + :meth:`~spack.build_systems.autotools.AutotoolsPackage.configure_args` + and an appropriately set prefix. + """ + with working_dir(self.stage.source_path, create=True): + if is_windows: + pass + else: + options = getattr(self, 'configure_flag_args', []) + options += ['--prefix={0}'.format(prefix)] + options += self.configure_args() + configure(*options) + + def build(self, spec, prefix): + """Makes the build targets specified by + :py:attr:``~.AutotoolsPackage.build_targets`` + """ + # Windows builds use a batch script to drive + # configure and build in one step + with working_dir(self.stage.source_path): + if is_windows: + pcbuild_root = os.path.join(self.stage.source_path, "PCbuild") + builder_cmd = os.path.join(pcbuild_root, 'build.bat') + try: + subprocess.check_output( # novermin + " ".join([builder_cmd] + self.win_build_params), + stderr=subprocess.STDOUT + ) + except subprocess.CalledProcessError as e: + raise ProcessError("Process exited with status %d" % e.returncode, + long_message=e.output.decode('utf-8')) + else: + # See https://autotools.io/automake/silent.html + params = ['V=1'] + params += self.build_targets + make(*params) + + def install(self, spec, prefix): + """Makes the install targets specified by + :py:attr:``~.AutotoolsPackage.install_targets`` + """ + with working_dir(self.stage.source_path): + if is_windows: + self.win_installer(prefix) + else: + make(*self.install_targets) + @run_after('install') def filter_compilers(self): """Run after install to tell the configuration files and Makefiles @@ -550,7 +702,8 @@ def filter_compilers(self): If this isn't done, they'll have CC and CXX set to Spack's generic cc and c++. We want them to be bound to whatever compiler they were built with.""" - + if is_windows: + return kwargs = {'ignore_absent': True, 'backup': False, 'string': True} filenames = [ @@ -563,6 +716,8 @@ def filter_compilers(self): @run_after('install') def symlink(self): + if is_windows: + return spec = self.spec prefix = self.prefix @@ -706,9 +861,13 @@ def command(self): # in that order if using python@3.6.5, for example. version = self.spec.version for ver in [version.up_to(2), version.up_to(1), '']: - path = os.path.join(self.prefix.bin, 'python{0}'.format(ver)) + if not is_windows: + path = os.path.join(self.prefix.bin, 'python{0}'.format(ver)) + else: + path = os.path.join(self.prefix, 'python{0}.exe'.format(ver)) if os.path.exists(path): return Executable(path) + else: msg = 'Unable to locate {0} command in {1}' raise RuntimeError(msg.format(self.name, self.prefix.bin)) @@ -874,7 +1033,7 @@ def libs(self): if '+shared' in self.spec: ldlibrary = self.config_vars['LDLIBRARY'] - + win_bin_dir = self.config_vars['BINDIR'] if os.path.exists(os.path.join(libdir, ldlibrary)): return LibraryList(os.path.join(libdir, ldlibrary)) elif os.path.exists(os.path.join(libpl, ldlibrary)): @@ -884,6 +1043,9 @@ def libs(self): elif macos_developerdir and \ os.path.exists(os.path.join(macos_developerdir, ldlibrary)): return LibraryList(os.path.join(macos_developerdir, ldlibrary)) + elif is_windows and \ + os.path.exists(os.path.join(win_bin_dir, ldlibrary)): + return LibraryList(os.path.join(win_bin_dir, ldlibrary)) else: msg = 'Unable to locate {0} libraries in {1}' raise RuntimeError(msg.format(ldlibrary, libdir)) @@ -1068,7 +1230,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): # fact that LDSHARED is set in the environment, therefore we export # the variable only if the new value is different from what we got # from the sysconfigdata file: - if config_link != new_link: + if config_link != new_link and not is_windows: env.set(link_var, new_link) def setup_dependent_run_environment(self, env, dependent_spec): @@ -1203,14 +1365,15 @@ def deactivate(self, ext_pkg, view, **args): self.spec )) - def add_files_to_view(self, view, merge_map): - bin_dir = self.spec.prefix.bin + def add_files_to_view(self, view, merge_map, skip_if_exists=True): + bin_dir = self.spec.prefix.bin if sys.platform != 'win32'\ + else self.spec.prefix for src, dst in merge_map.items(): if not path_contains_subdirectory(src, bin_dir): view.link(src, dst, spec=self.spec) elif not os.path.islink(src): copy(src, dst) - if 'script' in get_filetype(src): + if is_nonsymlink_exe_with_shebang(src): filter_file( self.spec.prefix, os.path.abspath( @@ -1236,7 +1399,8 @@ def add_files_to_view(self, view, merge_map): view.link(new_link_target, dst, spec=self.spec) def remove_files_from_view(self, view, merge_map): - bin_dir = self.spec.prefix.bin + bin_dir = self.spec.prefix.bin if not is_windows\ + else self.spec.prefix for src, dst in merge_map.items(): if not path_contains_subdirectory(src, bin_dir): view.remove_file(src, dst) diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py index ec282fb8ce9d55..80a25246d14f81 100644 --- a/var/spack/repos/builtin/packages/qmcpack/package.py +++ b/var/spack/repos/builtin/packages/qmcpack/package.py @@ -6,6 +6,7 @@ import llnl.util.tty as tty from spack import * +from spack.pkg.builtin.boost import Boost class Qmcpack(CMakePackage, CudaPackage): @@ -23,6 +24,8 @@ class Qmcpack(CMakePackage, CudaPackage): # can occasionally change. # NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack. version('develop') + version('3.13.0', tag='v3.13.0') + version('3.12.0', tag='v3.12.0') version('3.11.0', tag='v3.11.0') version('3.10.0', tag='v3.10.0') version('3.9.2', tag='v3.9.2') @@ -153,7 +156,11 @@ class Qmcpack(CMakePackage, CudaPackage): depends_on('cmake@3.4.3:', when='@:3.5.0', type='build') depends_on('cmake@3.6.0:', when='@3.6.0:', type='build') depends_on('cmake@3.14.0:', when='@3.10.0:', type='build') - depends_on('boost', type='build') + + # 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, type='build') depends_on('boost@1.61.0:', when='@3.6.0:', type='build') depends_on('libxml2') depends_on('mpi', when='+mpi') @@ -181,18 +188,18 @@ class Qmcpack(CMakePackage, CudaPackage): # Backport several patches from recent versions of QMCPACK # The test_numerics unit test is broken prior to QMCPACK 3.3.0 - patch_url = 'https://patch-diff.githubusercontent.com/raw/QMCPACK/qmcpack/pull/621.patch' - patch_checksum = 'e2ff7a6f0f006856085d4aab6d31f32f16353e41f760a33a7ef75f3ecce6a5d6' + patch_url = 'https://github.com/QMCPACK/qmcpack/pull/621.patch?full_index=1' + patch_checksum = '54484b722df264dae3fd0c1094883b17431617e278eeba2cffbd720b36c9e21a' patch(patch_url, sha256=patch_checksum, when='@3.1.0:3.3.0') # FindMKL.cmake has an issues prior to QMCPACK 3.3.0 - patch_url = 'https://patch-diff.githubusercontent.com/raw/QMCPACK/qmcpack/pull/623.patch' - patch_checksum = '3eb9dec05fd1a544318ff84cd8b5926cfc6b46b375c7f3b012ccf0b50cf617b7' + patch_url = 'https://github.com/QMCPACK/qmcpack/pull/623.patch?full_index=1' + patch_checksum = '9e444d627ab22ad5f31797aec0c0d662463055955eff1c84fbde274e0259db6b' patch(patch_url, sha256=patch_checksum, when='@3.1.0:3.3.0') # git-rev files for not git builds issues prior to QMCPACK 3.3.0 - patch_url = 'https://patch-diff.githubusercontent.com/raw/QMCPACK/qmcpack/pull/643.patch' - patch_checksum = 'c066c79901a612cf8848135e0d544efb114534cca70b90bfccc8ed989d3d9dde' + patch_url = 'https://github.com/QMCPACK/qmcpack/pull/643.patch?full_index=1' + patch_checksum = 'd6410e7843f6c062bf9aa8ecf107e573b35c32022927d63f8cf5ad36ccf873c3' patch(patch_url, sha256=patch_checksum, when='@3.1.0:3.3.0') # the default flag_handler for Spack causes problems for QMCPACK diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 87806c431d756c..8bc9e920af3fff 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -30,6 +30,7 @@ class Qt(Package): phases = ['configure', 'build', 'install'] + version('5.15.3', sha256='b7412734698a87f4a0ae20751bab32b1b07fdc351476ad8e35328dbe10efdedb') version('5.15.2', sha256='3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202240') version('5.14.2', sha256='c6fcd53c744df89e7d3223c02838a33309bd1c291fcb6f9341505fe99f7f19fa') version('5.14.1', sha256='6f17f488f512b39c2feb57d83a5e0a13dcef32999bea2e2a8f832f54a29badb8', deprecated=True) @@ -117,8 +118,8 @@ class Qt(Package): # https://bugreports.qt.io/browse/QTBUG-58038 patch('qt5-8-freetype.patch', when='@5.8.0 +gui') # https://codereview.qt-project.org/c/qt/qtbase/+/245425 - patch('https://github.com/qt/qtbase/commit/a52d7861edfb5956de38ba80015c4dd0b596259b.patch', - sha256='c49b228c27e3ad46ec3af4bac0e9985af5b5b28760f238422d32e14f98e49b1e', + patch('https://github.com/qt/qtbase/commit/a52d7861edfb5956de38ba80015c4dd0b596259b.patch?full_index=1', + sha256='c113b4e31fc648d15d6d401f7625909d84f88320172bd1fbc5b100cc2cbf71e9', working_dir='qtbase', when='@5.10:5.12.0 %gcc@9:') # https://github.com/Homebrew/homebrew-core/pull/5951 @@ -147,8 +148,14 @@ class Qt(Package): sha256='84b099109d08adf177adf9d3542b6215ec3e42138041d523860dbfdcb59fdaae', working_dir='qtwebsockets', when='@5.14: %gcc@11:') + # https://github.com/microsoft/vcpkg/issues/21055 + patch('qt5-macos12.patch', + working_dir='qtbase', + when='@5.14: %apple-clang@13:') + conflicts('%gcc@10:', when='@5.9:5.12.6 +opengl') conflicts('%gcc@11:', when='@5.8') + conflicts('%apple-clang@13:', when='@:5.13') # Build-only dependencies depends_on("pkgconfig", type='build') @@ -176,7 +183,7 @@ class Qt(Package): depends_on("libpng", when='@4:') depends_on("dbus", when='@4:+dbus') depends_on("gl", when='@4:+opengl') - depends_on("assimp@5.0.0:5.0", when='@5.14:+opengl') + depends_on("assimp@5.0.0:5", when='@5.14:+opengl') depends_on("harfbuzz", when='@5:') depends_on("double-conversion", when='@5.7:') @@ -250,6 +257,8 @@ class Qt(Package): else: conflicts('platform=darwin', when='@:4.8.6', msg="QT 4 for macOS is only patched for 4.8.7") + conflicts('target=aarch64:', when='@:5.15.3', + msg='Apple Silicon requires a very new version of qt') use_xcode = True @@ -257,12 +266,13 @@ class Qt(Package): compiler_mapping = {'intel': ('icc',), 'apple-clang': ('clang-libc++', 'clang'), 'clang': ('clang-libc++', 'clang'), + 'fj': ('clang',), 'gcc': ('g++',)} platform_mapping = {'darwin': ('macx'), 'cray': ('linux')} def url_for_version(self, version): # URL keeps getting more complicated with every release - url = self.list_url.replace('http:', 'https:') + url = self.list_url if version < Version('5.12') and version.up_to(2) != Version('5.9'): # As of 28 April 2021: @@ -290,7 +300,10 @@ def url_for_version(self, version): url += 'x11-' if version >= Version('5.10.0'): - url += 'src-' + if version >= Version('5.15.3'): + url += 'opensource-src-' + else: + url += 'src-' elif version >= Version('4.0'): url += 'opensource-src-' elif version >= Version('3'): @@ -482,6 +495,21 @@ def patch(self): os.unlink(join_path(self.stage.source_path, 'qtscript/src/3rdparty/javascriptcore/version')) + @when('@4: %fj') + def patch(self): + (mkspec_dir, platform) = self.get_mkspec() + + conf = os.path.join(mkspec_dir, 'common', 'clang.conf') + + # Fix qmake compilers in the default mkspec + filter_file('^QMAKE_CC .*', 'QMAKE_CC = fcc', conf) + filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = FCC', conf) + + if self.spec.satisfies('@4'): + conf_file = os.path.join(mkspec_dir, platform, "qmake.conf") + with open(conf_file, 'a') as f: + f.write("QMAKE_CXXFLAGS += -std=gnu++98\n") + @property def common_config_args(self): spec = self.spec @@ -716,6 +744,12 @@ def configure(self, spec, prefix): '-no-alsa', ]) + if spec.satisfies('platform=darwin target=aarch64:'): + # https://www.qt.io/blog/qt-on-apple-silicon + # Not currently working for qt@5 + config_args.extend(['-device-option', + 'QMAKE_APPLE_DEVICE_ARCHS=arm64']) + configure(*config_args) def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/qt/qt5-macos12.patch b/var/spack/repos/builtin/packages/qt/qt5-macos12.patch new file mode 100644 index 00000000000000..242c38c861acac --- /dev/null +++ b/var/spack/repos/builtin/packages/qt/qt5-macos12.patch @@ -0,0 +1,12 @@ +diff --git a/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h b/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h +index e070ba97..07c75b04 100644 +--- a/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h ++++ b/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h +@@ -40,6 +40,7 @@ + #ifndef QIOSURFACEGRAPHICSBUFFER_H + #define QIOSURFACEGRAPHICSBUFFER_H + ++#include + #include + #include + diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py index 5cf2b1bd5daef5..5e3c39549f80e8 100644 --- a/var/spack/repos/builtin/packages/quantum-espresso/package.py +++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py @@ -15,7 +15,7 @@ class QuantumEspresso(CMakePackage): url = 'https://gitlab.com/QEF/q-e/-/archive/qe-6.6/q-e-qe-6.6.tar.gz' git = 'https://gitlab.com/QEF/q-e.git' - maintainers = ['ye-luo'] + maintainers = ['ye-luo', 'danielecesarini'] version('develop', branch='develop') version('7.0', sha256='85beceb1aaa1678a49e774c085866d4612d9d64108e0ac49b23152c8622880ee') @@ -220,30 +220,30 @@ class QuantumEspresso(CMakePackage): msg='6.4.x is the latest QE series supported by Environ') # 7.0 - patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-7.0.diff' + patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/v3.13.0/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-7.0.diff' patch_checksum = 'ef60641d8b953b4ba21d9c662b172611305bb63786996ad6e81e7609891677ff' patch(patch_url, sha256=patch_checksum, when='@7.0+qmcpack') # 6.8 - patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.8.diff' + patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/v3.13.0/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.8.diff' patch_checksum = '69f7fbd72aba810c35a0b034188e45bea8f9f11d3150c0715e1b3518d5c09248' patch(patch_url, sha256=patch_checksum, when='@6.8+qmcpack') # 6.7 - patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.7.0.diff' + patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/v3.13.0/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.7.0.diff' patch_checksum = '72564c168231dd4a1279a74e76919af701d47cee9a851db6e205753004fe9bb5' patch(patch_url, sha256=patch_checksum, when='@6.7+qmcpack') # 6.4.1 - patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.4.1.diff' + patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/v3.13.0/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.4.1.diff' patch_checksum = '57cb1b06ee2653a87c3acc0dd4f09032fcf6ce6b8cbb9677ae9ceeb6a78f85e2' patch(patch_url, sha256=patch_checksum, when='@6.4.1+qmcpack') # 6.4 - patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.4.diff' + patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/v3.13.0/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.4.diff' patch_checksum = 'ef08f5089951be902f0854a4dbddaa7b01f08924cdb27decfade6bef0e2b8994' patch(patch_url, sha256=patch_checksum, when='@6.4:6.4.0+qmcpack') # 6.3 - patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/develop/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.3.diff' + patch_url = 'https://raw.githubusercontent.com/QMCPACK/qmcpack/v3.13.0/external_codes/quantum_espresso/add_pw2qmcpack_to_qe-6.3.diff' patch_checksum = '2ee346e24926479f5e96f8dc47812173a8847a58354bbc32cf2114af7a521c13' patch(patch_url, sha256=patch_checksum, when='@6.3+qmcpack') diff --git a/var/spack/repos/builtin/packages/quinoa/package.py b/var/spack/repos/builtin/packages/quinoa/package.py index 1f824ae994dd81..6d7fb58bc0a63d 100644 --- a/var/spack/repos/builtin/packages/quinoa/package.py +++ b/var/spack/repos/builtin/packages/quinoa/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Quinoa(CMakePackage): @@ -22,7 +23,10 @@ class Quinoa(CMakePackage): depends_on('hdf5+mpi') depends_on("charmpp backend=mpi") depends_on("trilinos+exodus+mpi") - depends_on("boost") + # 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("hypre~internal-superlu") depends_on("random123") depends_on("netlib-lapack+lapacke") diff --git a/var/spack/repos/builtin/packages/r-a4/package.py b/var/spack/repos/builtin/packages/r-a4/package.py index ad008b9a6b0bf3..eb71a3f894cd23 100644 --- a/var/spack/repos/builtin/packages/r-a4/package.py +++ b/var/spack/repos/builtin/packages/r-a4/package.py @@ -7,14 +7,14 @@ class RA4(RPackage): - """Automated Affymetrix Array Analysis Umbrella Package + """Automated Affymetrix Array Analysis Umbrella Package. Umbrella package is available for the entire Automated Affymetrix Array Analysis suite of package.""" - homepage = "https://bioconductor.org/packages/a4" - git = "https://git.bioconductor.org/packages/a4.git" + bioc = "a4" + version('1.42.0', commit='fc26809e2bce7cd50d99d6f6dd5f85c38342fdea') version('1.38.0', commit='5b7a9087bab10c55e24707e96e48046995236c94') version('1.32.0', commit='03770d4e53be4eed1bd0ab8f8cddba66854b4712') version('1.30.0', commit='771e01ae3aaac1c4db12f781c41d90fa7191b64d') diff --git a/var/spack/repos/builtin/packages/r-a4base/package.py b/var/spack/repos/builtin/packages/r-a4base/package.py index 9d008bc5890342..ae17ec8bc4110f 100644 --- a/var/spack/repos/builtin/packages/r-a4base/package.py +++ b/var/spack/repos/builtin/packages/r-a4base/package.py @@ -7,14 +7,14 @@ class RA4base(RPackage): - """Automated Affymetrix Array Analysis Base Package + """Automated Affymetrix Array Analysis Base Package. Base utility functions are available for the Automated Affymetrix Array Analysis set of packages.""" - homepage = "https://bioconductor.org/packages/a4Base" - git = "https://git.bioconductor.org/packages/a4Base.git" + bioc = "a4Base" + version('1.42.0', commit='d7296e2792020e9c5b1c19101104326ee8bebfe6') version('1.38.0', commit='4add242fa9c62795aca5b0dfca34a43484c5aa82') version('1.32.0', commit='8a1e15d25494c54db8c1de5dbbd69e628569e3d7') version('1.30.0', commit='fc370b2bd8286acc1e42a10344d91974f5b94229') @@ -32,4 +32,5 @@ class RA4base(RPackage): depends_on('r-multtest', type=('build', 'run')) depends_on('r-glmnet', type=('build', 'run')) depends_on('r-gplots', type=('build', 'run')) - depends_on('r-annotationdbi', when='@:1.32.0', type=('build', 'run')) + + depends_on('r-annotationdbi', type=('build', 'run'), when='@:1.32.0') diff --git a/var/spack/repos/builtin/packages/r-a4classif/package.py b/var/spack/repos/builtin/packages/r-a4classif/package.py index 5a646d34ccccb6..4a3a0207fa44d3 100644 --- a/var/spack/repos/builtin/packages/r-a4classif/package.py +++ b/var/spack/repos/builtin/packages/r-a4classif/package.py @@ -7,15 +7,15 @@ class RA4classif(RPackage): - """Automated Affymetrix Array Analysis Classification Package + """Automated Affymetrix Array Analysis Classification Package. Functionalities for classification of Affymetrix microarray data, integrating within the Automated Affymetrix Array Analysis set of packages.""" - homepage = "https://bioconductor.org/packages/a4Classif" - git = "https://git.bioconductor.org/packages/a4Classif.git" + bioc = "a4Classif" + version('1.42.0', commit='820854a7ca9ed0c295479a25b7e3375c6d01d0b5') version('1.38.0', commit='c4d058813efb835774813b2d69c52912162f8e75') version('1.32.0', commit='aa4f22df2da54b71e1a238d2b9cbcb3afa6f7f88') version('1.30.0', commit='b62841bff2f8894a3011a4e74afc37076d1322a3') @@ -25,9 +25,10 @@ class RA4classif(RPackage): depends_on('r-a4core', type=('build', 'run')) depends_on('r-a4preproc', type=('build', 'run')) - depends_on('r-biobase', when='@1.38.0:', type=('build', 'run')) + depends_on('r-biobase', type=('build', 'run'), when='@1.38.0:') depends_on('r-rocr', type=('build', 'run')) depends_on('r-pamr', type=('build', 'run')) depends_on('r-glmnet', type=('build', 'run')) depends_on('r-varselrf', type=('build', 'run')) - depends_on('r-mlinterfaces', when='@:1.32.0', type=('build', 'run')) + + depends_on('r-mlinterfaces', type=('build', 'run'), when='@:1.32.0') diff --git a/var/spack/repos/builtin/packages/r-a4core/package.py b/var/spack/repos/builtin/packages/r-a4core/package.py index bef3fb71fdb50f..8e36d4d69a0446 100644 --- a/var/spack/repos/builtin/packages/r-a4core/package.py +++ b/var/spack/repos/builtin/packages/r-a4core/package.py @@ -7,14 +7,14 @@ class RA4core(RPackage): - """Automated Affymetrix Array Analysis Core Package + """Automated Affymetrix Array Analysis Core Package. Utility functions for the Automated Affymetrix Array Analysis set of packages.""" - homepage = "https://bioconductor.org/packages/a4Core" - git = "https://git.bioconductor.org/packages/a4Core.git" + bioc = "a4Core" + version('1.42.0', commit='6985950b72c2a0f20ec44fe2067d8864e004bfaa') version('1.38.0', commit='a027dcd3486c64950815ec7c7271f1f65ba3d8a1') version('1.32.0', commit='2916a29723bdd514d5d987f89725d141d1d2dfce') version('1.30.0', commit='e392b1b4339a34f93d5d9bc520a1a9385ea63141') diff --git a/var/spack/repos/builtin/packages/r-a4preproc/package.py b/var/spack/repos/builtin/packages/r-a4preproc/package.py index 8d7fad15c26397..76ebcb34699575 100644 --- a/var/spack/repos/builtin/packages/r-a4preproc/package.py +++ b/var/spack/repos/builtin/packages/r-a4preproc/package.py @@ -7,14 +7,14 @@ class RA4preproc(RPackage): - """Automated Affymetrix Array Analysis Preprocessing Package + """Automated Affymetrix Array Analysis Preprocessing Package. Utility functions to pre-process data for the Automated Affymetrix Array Analysis set of packages.""" - homepage = "https://bioconductor.org/packages/a4Preproc" - git = "https://git.bioconductor.org/packages/a4Preproc.git" + bioc = "a4Preproc" + version('1.42.0', commit='773a91e884d2ada16fe9cf57d5ed53c0155e3fa2') version('1.38.0', commit='c93c223bd531bff090531a109b51f8dcd710d0cb') version('1.32.0', commit='0da742e500892b682feeb39256906282ad20c558') version('1.30.0', commit='e6fb9fa2e7c703974e6ca10c0e9681b097b05978') @@ -22,6 +22,7 @@ class RA4preproc(RPackage): version('1.26.0', commit='be7403acc06670c05ead1adaf60533b0fe3a65ea') version('1.24.0', commit='651014b8102807aea4f1274e34e083e70b5e7ee7') - depends_on('r-biocgenerics', when='@1.38.0:', type=('build', 'run')) - depends_on('r-biobase', when='@1.38.0:', type=('build', 'run')) - depends_on('r-annotationdbi', when='@:1.32.0', type=('build', 'run')) + depends_on('r-biocgenerics', type=('build', 'run'), when='@1.38.0:') + depends_on('r-biobase', type=('build', 'run'), when='@1.38.0:') + + depends_on('r-annotationdbi', type=('build', 'run'), when='@:1.32.0') diff --git a/var/spack/repos/builtin/packages/r-a4reporting/package.py b/var/spack/repos/builtin/packages/r-a4reporting/package.py index 5edf49c30d7e36..2216c3364eaa28 100644 --- a/var/spack/repos/builtin/packages/r-a4reporting/package.py +++ b/var/spack/repos/builtin/packages/r-a4reporting/package.py @@ -7,14 +7,14 @@ class RA4reporting(RPackage): - """Automated Affymetrix Array Analysis Reporting Package + """Automated Affymetrix Array Analysis Reporting Package. Utility functions to facilitate the reporting of the Automated Affymetrix Array Analysis Reporting set of packages.""" - homepage = "https://bioconductor.org/packages/a4Reporting" - git = "https://git.bioconductor.org/packages/a4Reporting.git" + bioc = "a4Reporting" + version('1.42.0', commit='b0d715b9cdac80bc412f0a9a6b33941c4a7582bb') version('1.38.0', commit='cd3cf244e7a299b2485684ed15519cbbda1c590f') version('1.32.0', commit='8d781899c625892080eb50f322694dd640d5f792') version('1.30.0', commit='ae9b9ade45cfac2636d0445a7e0a029dfe3b9390') @@ -23,4 +23,5 @@ class RA4reporting(RPackage): version('1.24.0', commit='bf22c4d50daf40fc9eaf8c476385bf4a24a5b5ce') depends_on('r-xtable', type=('build', 'run')) - depends_on('r-annaffy', when='@:1.32.0', type=('build', 'run')) + + depends_on('r-annaffy', type=('build', 'run'), when='@:1.32.0') diff --git a/var/spack/repos/builtin/packages/r-abadata/package.py b/var/spack/repos/builtin/packages/r-abadata/package.py index 04ec686b86414f..9695cc41eab5e8 100644 --- a/var/spack/repos/builtin/packages/r-abadata/package.py +++ b/var/spack/repos/builtin/packages/r-abadata/package.py @@ -7,7 +7,7 @@ class RAbadata(RPackage): - """Averaged gene expression in human brain regions from Allen Brain Atlas + """Averaged gene expression in human brain regions from Allen Brain Atlas. Provides the data for the gene expression enrichment analysis conducted in the package 'ABAEnrichment'. The package includes three datasets @@ -18,9 +18,9 @@ class RAbadata(RPackage): Developing Human Brain expression data. All datasets are restricted to protein coding genes.""" - homepage = "https://bioconductor.org/packages/ABAData" - git = "https://git.bioconductor.org/packages/ABAData.git" + bioc = "ABAData" + version('1.24.0', commit='c4c42701f995ab8d5ede7f36ff06650493c82e36') version('1.20.0', commit='c08a841ffb54d6555eb80b90a7a8afe7e48201b3') version('1.14.0', commit='ed7460e7d2948684db69dd4b4f8e135af50198bd') version('1.12.0', commit='9c2f0fbda75b06a0807bd714528915920899282d') diff --git a/var/spack/repos/builtin/packages/r-abaenrichment/package.py b/var/spack/repos/builtin/packages/r-abaenrichment/package.py index e97282839010c1..b9501c29bb9f80 100644 --- a/var/spack/repos/builtin/packages/r-abaenrichment/package.py +++ b/var/spack/repos/builtin/packages/r-abaenrichment/package.py @@ -7,7 +7,7 @@ class RAbaenrichment(RPackage): - """Gene expression enrichment in human brain regions + """Gene expression enrichment in human brain regions. The package ABAEnrichment is designed to test for enrichment of user defined candidate genes in the set of expressed genes in different human @@ -22,9 +22,9 @@ class RAbaenrichment(RPackage): tests are implemented, e.g. for cases when genes are ranked instead of divided into candidate and background.""" - homepage = "https://bioconductor.org/packages/ABAEnrichment" - git = "https://git.bioconductor.org/packages/ABAEnrichment.git" + bioc = "ABAEnrichment" + version('1.24.0', commit='5d20752263ae8f18ea5f5a6cfbdd5921a0f236d7') version('1.20.0', commit='608433a0b07e6dd99915dc536a038d960f1be1d5') version('1.14.1', commit='e1ebfb5de816b924af16675a5ba9ed1a6b527b23') version('1.12.0', commit='1320e932deafd71d67c7a6f758d15b00d6d7f7d7') @@ -34,10 +34,10 @@ class RAbaenrichment(RPackage): depends_on('r+X', type=('build', 'run')) depends_on('r@3.2:', type=('build', 'run')) - depends_on('r@3.4:', when='@1.8.0:', type=('build', 'run')) + depends_on('r@3.4:', type=('build', 'run'), when='@1.8.0:') depends_on('r-rcpp@0.11.5:', type=('build', 'run')) depends_on('r-gplots@2.14.2:', type=('build', 'run')) depends_on('r-gtools@3.5.0:', type=('build', 'run')) depends_on('r-abadata@0.99.2:', type=('build', 'run')) - depends_on('r-data-table@1.10.4:', when='@1.8.0:', type=('build', 'run')) - depends_on('r-gofuncr@1.1.2:', when='@1.12.0:', type=('build', 'run')) + depends_on('r-data-table@1.10.4:', type=('build', 'run'), when='@1.8.0:') + depends_on('r-gofuncr@1.1.2:', type=('build', 'run'), when='@1.12.0:') diff --git a/var/spack/repos/builtin/packages/r-abind/package.py b/var/spack/repos/builtin/packages/r-abind/package.py index 87170ef0c916be..791a1254954217 100644 --- a/var/spack/repos/builtin/packages/r-abind/package.py +++ b/var/spack/repos/builtin/packages/r-abind/package.py @@ -7,14 +7,15 @@ class RAbind(RPackage): - """Combine multidimensional arrays into a single array. This is a + """ + Combine Multidimensional Arrays. + + Combine multidimensional arrays into a single array. This is a generalization of 'cbind' and 'rbind'. Works with vectors, matrices, and higher-dimensional arrays. Also provides functions 'adrop', 'asub', and 'afill' for manipulating, extracting and replacing data in arrays.""" - homepage = "https://cloud.r-project.org/package=abind" - url = "https://cloud.r-project.org/src/contrib/abind_1.4-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/abind" + cran = "abind" version('1.4-5', sha256='3a3ace5afbcb86e56889efcebf3bf5c3bb042a282ba7cc4412d450bb246a3f2c') version('1.4-3', sha256='b6c255878c1ab81701ae701f34546e88be115629b984ac4272e311fa3c0ea6ce') diff --git a/var/spack/repos/builtin/packages/r-absseq/package.py b/var/spack/repos/builtin/packages/r-absseq/package.py index b0db7f2ee88c9a..a78748aca50435 100644 --- a/var/spack/repos/builtin/packages/r-absseq/package.py +++ b/var/spack/repos/builtin/packages/r-absseq/package.py @@ -8,16 +8,16 @@ class RAbsseq(RPackage): """ABSSeq: a new RNA-Seq analysis method based on modelling absolute - expression differences + expression differences. Inferring differential expression genes by absolute counts difference between two groups, utilizing Negative binomial distribution and moderating fold-change according to heterogeneity of dispersion across expression level.""" - homepage = "https://bioconductor.org/packages/ABSSeq" - git = "https://git.bioconductor.org/packages/ABSSeq.git" + bioc = "ABSSeq" + version('1.48.0', commit='b237c967d44d075ca306c35e92df8b66a60ce72d') version('1.44.0', commit='c202b4a059021ed1228ccee7303c69b0aa4ca1ee') version('1.38.0', commit='b686d92f0f0efdb835982efe761d059bc24b34ce') version('1.36.0', commit='bd419072432cba4ef58b4b37b3c69c85d78b1c4a') diff --git a/var/spack/repos/builtin/packages/r-acde/package.py b/var/spack/repos/builtin/packages/r-acde/package.py index a4ee88d51e5419..7143029d67eca1 100644 --- a/var/spack/repos/builtin/packages/r-acde/package.py +++ b/var/spack/repos/builtin/packages/r-acde/package.py @@ -7,7 +7,7 @@ class RAcde(RPackage): - """Artificial Components Detection of Differentially Expressed Genes + """Artificial Components Detection of Differentially Expressed Genes. This package provides a multivariate inferential analysis method for detecting differentially expressed genes in gene expression data. It @@ -20,9 +20,9 @@ class RAcde(RPackage): Expression Experiments' by J. P. Acosta, L. Lopez-Kleine and S. Restrepo (2015, pending publication).""" - homepage = "https://bioconductor.org/packages/acde" - git = "https://git.bioconductor.org/packages/acde.git" + bioc = "acde" + version('1.24.0', commit='0c3c4d47af7eaff37420032ea5245743a65124cf') version('1.20.0', commit='cefb4f2e2b0ef3c5f51944c0ece7a71294020350') version('1.14.0', commit='6017c7436a46f186b2a3cea9d2b93274f6dd3417') version('1.12.0', commit='f6ce5926ac915c2d73436f47daf7f9791645dad4') diff --git a/var/spack/repos/builtin/packages/r-acepack/package.py b/var/spack/repos/builtin/packages/r-acepack/package.py index 1deee0c1b0a663..7283792512532f 100644 --- a/var/spack/repos/builtin/packages/r-acepack/package.py +++ b/var/spack/repos/builtin/packages/r-acepack/package.py @@ -7,10 +7,24 @@ class RAcepack(RPackage): - """ACE and AVAS for Selecting Multiple Regression Transformations.""" + """ACE and AVAS for Selecting Multiple Regression Transformations. - homepage = "https://cloud.r-project.org/package=acepack" - url = "https://cloud.r-project.org/src/contrib/acepack_1.4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/acepack" + Two nonparametric methods for multiple regression transform selection are + provided. The first, Alternative Conditional Expectations (ACE), is an + algorithm to find the fixed point of maximal correlation, i.e. it finds a + set of transformed response variables that maximizes R^2 using smoothing + functions [see Breiman, L., and J.H. Friedman. 1985. "Estimating Optimal + Transformations for Multiple Regression and Correlation". Journal of the + American Statistical Association. 80:580-598. + ]. Also included is the Additivity + Variance Stabilization (AVAS) method which works better than ACE when + correlation is low [see Tibshirani, R.. 1986. "Estimating Transformations + for Regression via Additivity and Variance Stabilization". Journal of the + American Statistical Association. 83:394-405. + ]. A good introduction to these two + methods is in chapter 16 of Frank Harrel's "Regression Modeling Strategies" + in the Springer Series in Statistics.""" + + cran = "acepack" version('1.4.1', sha256='82750507926f02a696f6cc03693e8d4a5ee7e92500c8c15a16a9c12addcd28b9') diff --git a/var/spack/repos/builtin/packages/r-acgh/package.py b/var/spack/repos/builtin/packages/r-acgh/package.py index ec12f172634c9f..5ab1245868fe6b 100644 --- a/var/spack/repos/builtin/packages/r-acgh/package.py +++ b/var/spack/repos/builtin/packages/r-acgh/package.py @@ -7,16 +7,16 @@ class RAcgh(RPackage): - """Classes and functions for Array Comparative Genomic Hybridization data + """Classes and functions for Array Comparative Genomic Hybridization data. Functions for reading aCGH data from image analysis output files and clone information files, creation of aCGH S3 objects for storing these data. Basic methods for accessing/replacing, subsetting, printing and plotting aCGH objects.""" - homepage = "https://bioconductor.org/packages/aCGH" - git = "https://git.bioconductor.org/packages/aCGH.git" + bioc = "aCGH" + version('1.72.0', commit='b5d4022ac487125194d3913f1b8c2948db6e2792') version('1.68.0', commit='91f41a3917ddce43eb05e11c90eb99c467ba2247') version('1.62.0', commit='3b68b69c3380fa3b66dfb060457628a4a9c22d4f') version('1.60.0', commit='ae581758aaa1755448f0cfef5adfb30d1e820b21') diff --git a/var/spack/repos/builtin/packages/r-acme/package.py b/var/spack/repos/builtin/packages/r-acme/package.py index 78f7736350445f..a3e79454dab656 100644 --- a/var/spack/repos/builtin/packages/r-acme/package.py +++ b/var/spack/repos/builtin/packages/r-acme/package.py @@ -7,7 +7,7 @@ class RAcme(RPackage): - """Algorithms for Calculating Microarray Enrichment (ACME) + """Algorithms for Calculating Microarray Enrichment (ACME). ACME (Algorithms for Calculating Microarray Enrichment) is a set of tools for analysing tiling array ChIP/chip, DNAse hypersensitivity, or @@ -19,9 +19,9 @@ class RAcme(RPackage): fast and can be applied on whole-genome tiling array experiments quite easily with enough memory.""" - homepage = "https://bioconductor.org/packages/ACME" - git = "https://git.bioconductor.org/packages/ACME.git" + bioc = "ACME" + version('2.50.0', commit='d55a19a8c091e8ea5fd35041520107a7f7603e14') version('2.46.0', commit='68f45c9f7d34c28adf6a0fc4245fdf63881109de') version('2.40.0', commit='38499e512998d54d874a0bfdc173f4ba5de5f01a') version('2.38.0', commit='cd03196428e8adf62e84f25c4d4545429e2c908b') diff --git a/var/spack/repos/builtin/packages/r-ada/package.py b/var/spack/repos/builtin/packages/r-ada/package.py index 6edbfa04a567d9..2b2d40f7781395 100644 --- a/var/spack/repos/builtin/packages/r-ada/package.py +++ b/var/spack/repos/builtin/packages/r-ada/package.py @@ -7,12 +7,14 @@ class RAda(RPackage): - """Performs discrete, real, and gentle boost under both exponential - and logistic loss on a given data set.""" + """The R Package Ada for Stochastic Boosting. - homepage = "https://cloud.r-project.org/package=ada" - url = "https://cloud.r-project.org/src/contrib/ada_2.0-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ada" + Performs discrete, real, and gentle boost under both exponential and + logistic loss on a given data set. The package ada provides a + straightforward, well-documented, and broad boosting routine for + classification, ideally suited for small to moderate-sized data sets.""" + + cran = "ada" version('2.0-5', sha256='d900172059eebeef30c27944fc29737a231fc4f92e3c2661868383fbd9016ac0') diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py index 7722990de15de4..adb0c7b1dd3fe0 100644 --- a/var/spack/repos/builtin/packages/r-adabag/package.py +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -7,17 +7,37 @@ class RAdabag(RPackage): - """Applies Multiclass AdaBoost.M1, SAMME and Bagging.""" + """Applies Multiclass AdaBoost.M1, SAMME and Bagging. - homepage = "https://cloud.r-project.org/package=adabag" - url = "https://cloud.r-project.org/src/contrib/adabag_4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/adabag" + It implements Freund and Schapire's Adaboost.M1 algorithm and Breiman's + Bagging algorithm using classification trees as individual classifiers. + Once these classifiers have been trained, they can be used to predict on + new data. Also, cross validation estimation of the error can be done. Since + version 2.0 the function margins() is available to calculate the margins + for these classifiers. Also a higher flexibility is achieved giving access + to the rpart.control() argument of 'rpart'. Four important new features + were introduced on version 3.0, AdaBoost-SAMME (Zhu et al., 2009) is + implemented and a new function errorevol() shows the error of the ensembles + as a function of the number of iterations. In addition, the ensembles can + be pruned using the option 'newmfinal' in the predict.bagging() and + predict.boosting() functions and the posterior probability of each class + for observations can be obtained. Version 3.1 modifies the relative + importance measure to take into account the gain of the Gini index given by + a variable in each tree and the weights of these trees. Version 4.0 + includes the margin-based ordered aggregation for Bagging pruning (Guo and + Boukir, 2013) and a function to auto prune the 'rpart' tree. Moreover, + three new plots are also available importanceplot(), plot.errorevol() and + plot.margins(). Version 4.1 allows to predict on unlabeled data. Version + 4.2 includes the parallel computation option for some of the functions.""" + + cran = "adabag" version('4.2', sha256='47019eb8cefc8372996fbb2642f64d4a91d7cedc192690a8d8be6e7e03cd3c81') version('4.1', sha256='ff938c36122cdf58a71a59a6bf79a3c7816966ee7cc4907c4a0a3c0732e3d028') depends_on('r-rpart', type=('build', 'run')) - depends_on('r-mlbench', when='@:4.1', type=('build', 'run')) depends_on('r-caret', type=('build', 'run')) depends_on('r-foreach', type=('build', 'run')) depends_on('r-doparallel', type=('build', 'run')) + + depends_on('r-mlbench', type=('build', 'run'), when='@:4.1') diff --git a/var/spack/repos/builtin/packages/r-ade4/package.py b/var/spack/repos/builtin/packages/r-ade4/package.py index 4db3ebfb33704f..16caa08e365bcd 100644 --- a/var/spack/repos/builtin/packages/r-ade4/package.py +++ b/var/spack/repos/builtin/packages/r-ade4/package.py @@ -8,7 +8,7 @@ class RAde4(RPackage): """Analysis of Ecological Data : Exploratory and Euclidean Methods in - Environmental Sciences + Environmental Sciences. Tools for multivariate data analysis. Several methods are provided for the analysis (i.e., ordination) of one-table (e.g., principal component @@ -17,10 +17,9 @@ class RAde4(RPackage): STATIS, multiple coinertia analysis). The philosophy of the package is described in Dray and Dufour (2007) .""" - homepage = "https://pbil.univ-lyon1.fr/ADE-4" - url = "https://cloud.r-project.org/src/contrib/ade4_1.7-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ade4" + cran = "ade4" + version('1.7-18', sha256='ecb6f4c42c60f39702aa96f454bb536a333049c9608ee2b6bdf8795e059cc525') version('1.7-16', sha256='9bd7a25ff4fe30a32fd8f6b71909f4c638a0e2f002fc8303c0a4795423385590') version('1.7-13', sha256='f5d0a7356ae63f82d3adb481a39007e7b0d70211b8724aa686af0c89c994e99b') version('1.7-11', sha256='4ccd799ae99bd625840b866a697c4a48adb751660470bf0d6cf9207b1927a572') @@ -28,6 +27,7 @@ class RAde4(RPackage): depends_on('r@2.10:', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) - depends_on('r-pixmap', when='@1.7-16:', type=('build', 'run')) - depends_on('r-sp', when='@1.7-16:', type=('build', 'run')) - depends_on('r-progress', when='@1.7-16:', type=('build', 'run')) + depends_on('r-pixmap', type=('build', 'run'), when='@1.7-16:') + depends_on('r-sp', type=('build', 'run'), when='@1.7-16:') + + depends_on('r-progress', type=('build', 'run'), when='@1.7-16') diff --git a/var/spack/repos/builtin/packages/r-adegenet/package.py b/var/spack/repos/builtin/packages/r-adegenet/package.py index b226c6ef546a2b..9c17c86f09d715 100644 --- a/var/spack/repos/builtin/packages/r-adegenet/package.py +++ b/var/spack/repos/builtin/packages/r-adegenet/package.py @@ -7,22 +7,21 @@ class RAdegenet(RPackage): - """Exploratory Analysis of Genetic and Genomic Data - - Toolset for the exploration of genetic and genomic data. Adegenet - provides formal (S4) classes for storing and handling various genetic - data, including genetic markers with varying ploidy and hierarchical - population structure ('genind' class), alleles counts by populations - ('genpop'), and genome-wide SNP data ('genlight'). It also implements - original multivariate methods (DAPC, sPCA), graphics, statistical tests, - simulation tools, distance and similarity measures, and several spatial - methods. A range of both empirical and simulated datasets is also provided - to illustrate various methods.""" - - homepage = "https://github.com/thibautjombart/adegenet/wiki" - url = "https://cloud.r-project.org/src/contrib/adegenet_2.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/adegenet" + """Exploratory Analysis of Genetic and Genomic Data. + Toolset for the exploration of genetic and genomic data. Adegenet provides + formal (S4) classes for storing and handling various genetic data, + including genetic markers with varying ploidy and hierarchical population + structure ('genind' class), alleles counts by populations ('genpop'), and + genome-wide SNP data ('genlight'). It also implements original multivariate + methods (DAPC, sPCA), graphics, statistical tests, simulation tools, + distance and similarity measures, and several spatial methods. A range of + both empirical and simulated datasets is also provided to illustrate + various methods.""" + + cran = "adegenet" + + version('2.1.5', sha256='e4eee8c41dae6cb0841db74ec6f9adb2580873f3e313471f37df58324c1857f2') version('2.1.3', sha256='0790114ecb22642683b5be1f4b3a6a49856e06dc2f9e21b9cba4390c2257f6c6') version('2.1.1', sha256='3043fe5d731a38ff0e266f090dcda448640c3d0fd61934c76da32d082e5dce7a') version('2.1.0', sha256='7ee44061002b41164bbc09256307ab02e536f4f2ac03f36c7dc8f85f6af4639a') @@ -36,8 +35,9 @@ class RAdegenet(RPackage): depends_on('r-shiny', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-seqinr', type=('build', 'run')) - depends_on('r-spdep', type=('build', 'run')) depends_on('r-boot', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) depends_on('r-dplyr@0.4.1:', type=('build', 'run')) depends_on('r-vegan', type=('build', 'run')) + + depends_on('r-spdep', type=('build', 'run'), when='@:2.1.3') diff --git a/var/spack/repos/builtin/packages/r-adegraphics/package.py b/var/spack/repos/builtin/packages/r-adegraphics/package.py index 8b98e156096666..9ace764525155c 100644 --- a/var/spack/repos/builtin/packages/r-adegraphics/package.py +++ b/var/spack/repos/builtin/packages/r-adegraphics/package.py @@ -7,17 +7,15 @@ class RAdegraphics(RPackage): - """adegraphics: An S4 Lattice-Based Package for the Representation of - Multivariate Data. + """An S4 Lattice-Based Package for the Representation of Multivariate Data. - Graphical functionalities for the representation of multivariate data. - It is a complete re-implementation of the functions available in the 'ade4' + Graphical functionalities for the representation of multivariate data. It + is a complete re-implementation of the functions available in the 'ade4' package.""" - homepage = "https://pbil.univ-lyon1.fr/ADE-4" - url = "https://cloud.r-project.org/src/contrib/adegraphics_1.0-15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/adegraphics" + cran = "adegraphics" + version('1.0-16', sha256='7ba59ce9aeefe1c25b4b118d08ef458ffd34115412c147cc428629e72a82ec3a') version('1.0-15', sha256='87bbcd072e9a898955f5ede4315e82365086a50a2887bf5bd2e94bbb4d3f678a') depends_on('r@3.0.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-adephylo/package.py b/var/spack/repos/builtin/packages/r-adephylo/package.py index 9415006db3a765..8bcf366fd9dc1a 100644 --- a/var/spack/repos/builtin/packages/r-adephylo/package.py +++ b/var/spack/repos/builtin/packages/r-adephylo/package.py @@ -7,14 +7,12 @@ class RAdephylo(RPackage): - """adephylo: Exploratory Analyses for the Phylogenetic Comparative Method. + """Exploratory Analyses for the Phylogenetic Comparative Method. - Multivariate tools to analyze comparative data, i.e. a phylogeny and - some traits measured for each taxa.""" + Multivariate tools to analyze comparative data, i.e. a phylogeny and some + traits measured for each taxa.""" - homepage = "https://cloud.r-project.org/package=adephylo" - url = "https://cloud.r-project.org/src/contrib/adephylo_1.1-11.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/adephylo" + cran = "adephylo" 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 6b1397db79b78c..52201d7f5a36d6 100644 --- a/var/spack/repos/builtin/packages/r-adespatial/package.py +++ b/var/spack/repos/builtin/packages/r-adespatial/package.py @@ -7,7 +7,7 @@ class RAdespatial(RPackage): - """adespatial: Multivariate Multiscale Spatial Analysis. + """Multivariate Multiscale Spatial Analysis. Tools for the multiscale spatial analysis of multivariate data. Several methods are based on the use of a spatial weighting matrix and its @@ -15,10 +15,9 @@ class RAdespatial(RPackage): approaches are described in the review Dray et al (2012) .""" - homepage = "https://cloud.r-project.org/package=adespatial" - url = "https://cloud.r-project.org/src/contrib/adespatial_0.3-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/adespatial" + cran = "adespatial" + version('0.3-14', sha256='a2ef7549c1ed7a23651716c633b25eaff468af8ccbf2e9fcd164e485984cbfbf') version('0.3-8', sha256='e3fd3209ce3f0a862a0794187e8c884f1697c87c96e569a2f51f252e00022906') depends_on('r-ade4@1.7-13:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-adgoftest/package.py b/var/spack/repos/builtin/packages/r-adgoftest/package.py index dd93e0ed26687b..0a97c1fb637f22 100644 --- a/var/spack/repos/builtin/packages/r-adgoftest/package.py +++ b/var/spack/repos/builtin/packages/r-adgoftest/package.py @@ -7,11 +7,11 @@ class RAdgoftest(RPackage): - """Anderson-Darling GoF test with p-value calculation based on Marsaglia's - 2004 paper 'Evaluating the Anderson-Darling Distribution'""" + """Anderson-Darling GoF test. - homepage = "https://cloud.r-project.org/package=ADGofTest" - url = "https://cloud.r-project.org/src/contrib/ADGofTest_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ADGofTest" + Anderson-Darling GoF test with p-value calculation based on Marsaglia's + 2004 paper 'Evaluating the Anderson-Darling Distribution'.""" + + cran = "ADGofTest" version('0.3', sha256='9cd9313954f6ecd82480d373f6c5371ca84ab33e3f5c39d972d35cfcf1096846') diff --git a/var/spack/repos/builtin/packages/r-adsplit/package.py b/var/spack/repos/builtin/packages/r-adsplit/package.py index a160ccbad2d774..5f21fe1e2167a2 100644 --- a/var/spack/repos/builtin/packages/r-adsplit/package.py +++ b/var/spack/repos/builtin/packages/r-adsplit/package.py @@ -7,16 +7,16 @@ class RAdsplit(RPackage): - """Annotation-Driven Clustering + """Annotation-Driven Clustering. This package implements clustering of microarray gene expression profiles according to functional annotations. For each term genes are annotated to, splits into two subclasses are computed and a significance of the supporting gene set is determined.""" - homepage = "https://bioconductor.org/packages/adSplit" - git = "https://git.bioconductor.org/packages/adSplit.git" + bioc = "adSplit" + version('1.64.0', commit='32f150eb51c66b867301dceeb527de5b97f9f490') version('1.60.0', commit='de5abccfe652cbc5b5f49fb6ed77cdd15cc760cd') version('1.54.0', commit='ce8fb61f4a3d0942294da2baa28be1472acb0652') version('1.52.0', commit='3bd105dbd76c52798b7d52f60c17de62ef13da19') @@ -29,5 +29,7 @@ class RAdsplit(RPackage): depends_on('r-biobase@1.5.12:', type=('build', 'run')) depends_on('r-cluster@1.9.1:', type=('build', 'run')) depends_on('r-go-db@1.8.1:', type=('build', 'run')) - depends_on('r-kegg-db@1.8.1:', type=('build', 'run')) + depends_on('r-keggrest@1.30.1:', type=('build', 'run'), when='@1.62.0:') depends_on('r-multtest@1.6.0:', type=('build', 'run')) + + depends_on('r-kegg-db@1.8.1:', type=('build', 'run'), when='@:1.60.0') diff --git a/var/spack/repos/builtin/packages/r-aer/package.py b/var/spack/repos/builtin/packages/r-aer/package.py index 7677a61d894d40..30cf5ca89f8ac1 100644 --- a/var/spack/repos/builtin/packages/r-aer/package.py +++ b/var/spack/repos/builtin/packages/r-aer/package.py @@ -7,16 +7,13 @@ class RAer(RPackage): - """Applied Econometrics with R + """Applied Econometrics with R. - Functions, data sets, examples, demos, and vignettes - for the book Christian Kleiber and Achim Zeileis (2008), - Applied Econometrics with R, Springer-Verlag, New York. - ISBN 978-0-387-77316-2.""" + Functions, data sets, examples, demos, and vignettes for the book Christian + Kleiber and Achim Zeileis (2008), Applied Econometrics with R, + Springer-Verlag, New York. ISBN 978-0-387-77316-2.""" - homepage = "https://cloud.r-project.org/package=AER" - url = "https://cloud.r-project.org/src/contrib/AER_1.2-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/AER" + cran = "AER" 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 7afd1114fa409e..55983afb350f8b 100644 --- a/var/spack/repos/builtin/packages/r-afex/package.py +++ b/var/spack/repos/builtin/packages/r-afex/package.py @@ -7,25 +7,22 @@ class RAfex(RPackage): - """Analysis of Factorial Experiments + """Analysis of Factorial Experiments. Convenience functions for analyzing factorial experiments using ANOVA or mixed models. aov_ez(), aov_car(), and aov_4() allow specification of between, within (i.e., repeated-measures), or mixed (i.e., split-plot) ANOVAs for data in long format (i.e., one observation per row), - automatically aggregating multiple observations per individual and cell - of the design. mixed() fits mixed models using lme4::lmer() and computes + automatically aggregating multiple observations per individual and cell of + the design. mixed() fits mixed models using lme4::lmer() and computes p-values for all fixed effects using either Kenward-Roger or Satterthwaite - approximation for degrees of freedom (LMM only), parametric bootstrap - (LMMs and GLMMs), or likelihood ratio tests (LMMs and GLMMs). - afex_plot() provides a high-level interface for interaction or one-way - plots using ggplot2, combining raw data and model estimates. afex uses - type 3 sums of squares as default (imitating commercial statistical - software). - """ + approximation for degrees of freedom (LMM only), parametric bootstrap (LMMs + and GLMMs), or likelihood ratio tests (LMMs and GLMMs). afex_plot() + provides a high-level interface for interaction or one-way plots using + ggplot2, combining raw data and model estimates. afex uses type 3 sums of + squares as default (imitating commercial statistical software).""" - homepage = "https://github.com/singmann/afex" - cran = "afex" + cran = "afex" version('1.0-1', sha256='6febc34b87a1109f5cbcd213c08d2b7b3e9cf99065fa41c19bc88ac99fb104cc') version('0.28-1', sha256='cfb0b79bfa01b590afc3354a5b2ad3640d2f4974b036d6c256fa8e684bc69c2e') diff --git a/var/spack/repos/builtin/packages/r-affxparser/package.py b/var/spack/repos/builtin/packages/r-affxparser/package.py index c1c931d7d8faea..6b691d5a4e565b 100644 --- a/var/spack/repos/builtin/packages/r-affxparser/package.py +++ b/var/spack/repos/builtin/packages/r-affxparser/package.py @@ -7,7 +7,7 @@ class RAffxparser(RPackage): - """Affymetrix File Parsing SDK + """Affymetrix File Parsing SDK. Package for parsing Affymetrix files (CDF, CEL, CHP, BPMAP, BAR). It provides methods for fast and memory efficient parsing of Affymetrix @@ -18,9 +18,9 @@ class RAffxparser(RPackage): probesets can be extracted very quickly from a set of CEL files into a convenient list structure.""" - homepage = "https://bioconductor.org/packages/affxparser" - git = "https://git.bioconductor.org/packages/affxparser.git" + bioc = "affxparser" + version('1.66.0', commit='2ea72d4c924ac14bdd807b23563c8501c226ce3a') version('1.62.0', commit='b3e988e5c136c3f1a064e1da13730b403c8704c0') version('1.56.0', commit='20d27701ad2bdfacf34d857bb8ecb4f505b4d056') version('1.54.0', commit='dce83d23599a964086a84ced4afd13fc43e7cd4f') diff --git a/var/spack/repos/builtin/packages/r-affy/package.py b/var/spack/repos/builtin/packages/r-affy/package.py index c73cef1c9b99e3..5b2b11fbab9859 100644 --- a/var/spack/repos/builtin/packages/r-affy/package.py +++ b/var/spack/repos/builtin/packages/r-affy/package.py @@ -7,15 +7,15 @@ class RAffy(RPackage): - """Methods for Affymetrix Oligonucleotide Arrays + """Methods for Affymetrix Oligonucleotide Arrays. The package contains functions for exploratory oligonucleotide array analysis. The dependence on tkWidgets only concerns few convenience functions. 'affy' is fully functional without it.""" - homepage = "https://bioconductor.org/packages/affy" - git = "https://git.bioconductor.org/packages/affy.git" + bioc = "affy" + version('1.72.0', commit='3750b4eb8e5224b19100f6c881b67e568d8968a2') version('1.68.0', commit='1664399610c9aa519399445a2ef8bb9ea2233eac') version('1.62.0', commit='097ab4aa98a1700c5fae65d07bed44a477714605') version('1.60.0', commit='fcae363e58b322ad53584d9e15e80fa2f9d17206') @@ -24,10 +24,12 @@ class RAffy(RPackage): version('1.54.0', commit='a815f02906fcf491b28ed0a356d6fce95a6bd20e') depends_on('r@2.8.0:4.0', type=('build', 'run'), when='@:1.68.0') + depends_on('r@:4.0', type=('build', 'run'), when='@:1.68.0') depends_on('r-biocgenerics@0.1.12:', type=('build', 'run')) depends_on('r-biobase@2.5.5:', type=('build', 'run')) depends_on('r-affyio@1.13.3:', type=('build', 'run')) - depends_on('r-biocmanager', when='@1.60.0:', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@1.60.0:') depends_on('r-preprocesscore', type=('build', 'run')) depends_on('r-zlibbioc', type=('build', 'run')) - depends_on('r-biocinstaller', when='@1.54.0:1.58.0', type=('build', 'run')) + + depends_on('r-biocinstaller', type=('build', 'run'), when='@1.54.0:1.58.0') diff --git a/var/spack/repos/builtin/packages/r-affycomp/package.py b/var/spack/repos/builtin/packages/r-affycomp/package.py index a3e47c2bd8148d..6d2b546be1fb62 100644 --- a/var/spack/repos/builtin/packages/r-affycomp/package.py +++ b/var/spack/repos/builtin/packages/r-affycomp/package.py @@ -7,14 +7,14 @@ class RAffycomp(RPackage): - """Graphics Toolbox for Assessment of Affymetrix Expression Measures + """Graphics Toolbox for Assessment of Affymetrix Expression Measures. The package contains functions that can be used to compare expression measures for Affymetrix Oligonucleotide Arrays.""" - homepage = "https://bioconductor.org/packages/affycomp" - git = "https://git.bioconductor.org/packages/affycomp.git" + bioc = "affycomp" + version('1.70.0', commit='487f6775975092475581a6c02ddb27590559cf07') version('1.66.0', commit='388d01af8b1e6ab11051407f77d0206512df8424') version('1.60.0', commit='5dbe61fa04941529a0fc70b728021c8e00c4ba0c') version('1.58.0', commit='99607b2c4aad37e3e63eccbd12d0d533762f28ef') diff --git a/var/spack/repos/builtin/packages/r-affycompatible/package.py b/var/spack/repos/builtin/packages/r-affycompatible/package.py index 373f94c71ddf7e..cd20e9f0bacca9 100644 --- a/var/spack/repos/builtin/packages/r-affycompatible/package.py +++ b/var/spack/repos/builtin/packages/r-affycompatible/package.py @@ -7,7 +7,7 @@ class RAffycompatible(RPackage): - """Affymetrix GeneChip software compatibility + """Affymetrix GeneChip software compatibility. This package provides an interface to Affymetrix chip annotation and sample attribute files. The package allows an easy way for users to @@ -16,9 +16,9 @@ class RAffycompatible(RPackage): (GCOS) and GeneChip Command Console (AGCC)-compatible sample annotation files.""" - homepage = "https://bioconductor.org/packages/AffyCompatible" - git = "https://git.bioconductor.org/packages/AffyCompatible.git" + bioc = "AffyCompatible" + version('1.54.0', commit='fde7d86ccdb03c13c4838c18ac25477ffe6e0fe5') version('1.50.0', commit='3b12d12bd6d1a9f0d45e012817231d137d47089e') version('1.44.0', commit='98a27fbe880551fd32a5febb6c7bde0807eac476') version('1.42.0', commit='699303cc20f292591e2faa12e211c588efb9eaa8') diff --git a/var/spack/repos/builtin/packages/r-affycontam/package.py b/var/spack/repos/builtin/packages/r-affycontam/package.py index eb7bf1d0cf83cd..810abec572694b 100644 --- a/var/spack/repos/builtin/packages/r-affycontam/package.py +++ b/var/spack/repos/builtin/packages/r-affycontam/package.py @@ -7,14 +7,14 @@ class RAffycontam(RPackage): - """structured corruption of affymetrix cel file data + """structured corruption of affymetrix cel file data. structured corruption of cel file data to demonstrate QA effectiveness""" - homepage = "https://bioconductor.org/packages/affyContam" - git = "https://git.bioconductor.org/packages/affyContam.git" + bioc = "affyContam" + version('1.52.0', commit='47c1d86da330f157d3ece0e26b0657d66a5ca0c9') version('1.48.0', commit='88387a2ad4be4234d36710c65f2ca3a5b06b67da') version('1.42.0', commit='8a5e94a5ae8c2ecfafa6177b84a6e8ab07e14fbe') version('1.40.0', commit='dfd5fd6ae04941dddbda03f656540b71b2fbc614') diff --git a/var/spack/repos/builtin/packages/r-affycoretools/package.py b/var/spack/repos/builtin/packages/r-affycoretools/package.py index cea3da9d9227a0..f4eca87f30a9d5 100644 --- a/var/spack/repos/builtin/packages/r-affycoretools/package.py +++ b/var/spack/repos/builtin/packages/r-affycoretools/package.py @@ -8,14 +8,14 @@ class RAffycoretools(RPackage): """Functions useful for those doing repetitive analyses with Affymetrix - GeneChips + GeneChips. Various wrapper functions that have been written to streamline the more common analyses that a core Biostatistician might see.""" - homepage = "https://bioconductor.org/packages/affycoretools" - git = "https://git.bioconductor.org/packages/affycoretools.git" + bioc = "affycoretools" + version('1.66.0', commit='6bf769d70e196634097f465ed2fa85cce5312a6d') version('1.62.0', commit='c9779e4da648fd174c9bd575c6020be1c03047c4') version('1.56.0', commit='71eab04056a8d696470420a600b14900186be898') version('1.54.0', commit='1e1f9680bc3e1fa443f4a81ce5ab81349959b845') @@ -41,5 +41,5 @@ class RAffycoretools(RPackage): depends_on('r-edger', type=('build', 'run')) depends_on('r-rsqlite', type=('build', 'run')) depends_on('r-biocgenerics', type=('build', 'run')) - depends_on('r-dbi', when='@1.50.6:', type=('build', 'run')) - depends_on('r-glimma', when='@1.62.0:', type=('build', 'run')) + depends_on('r-dbi', type=('build', 'run'), when='@1.50.6:') + depends_on('r-glimma', type=('build', 'run'), when='@1.62.0:') diff --git a/var/spack/repos/builtin/packages/r-affydata/package.py b/var/spack/repos/builtin/packages/r-affydata/package.py index f8e494a8a74c9e..93dfcfbb2bab53 100644 --- a/var/spack/repos/builtin/packages/r-affydata/package.py +++ b/var/spack/repos/builtin/packages/r-affydata/package.py @@ -7,15 +7,15 @@ class RAffydata(RPackage): - """Affymetrix Data for Demonstration Purpose + """Affymetrix Data for Demonstration Purpose. Example datasets of a slightly large size. They represent 'real world examples', unlike the artificial examples included in the package affy.""" - homepage = "https://bioconductor.org/packages/affydata" - git = "https://git.bioconductor.org/packages/affydata.git" + bioc = "affydata" + version('1.42.0', commit='4b54c1206bedd27ff9be32affc999a279f4e96f0') version('1.38.0', commit='b5e843b2514789d0d87bea44d762c89a95314ee7') version('1.32.0', commit='c7cef93f6edd23024f4b1985b90e89058874c2bd') version('1.30.0', commit='d5408d84b37ebae73b40a448dd52baf7b4a13bea') diff --git a/var/spack/repos/builtin/packages/r-affyexpress/package.py b/var/spack/repos/builtin/packages/r-affyexpress/package.py index 2d559e3e27b4e0..b5c0e0c3e66bed 100644 --- a/var/spack/repos/builtin/packages/r-affyexpress/package.py +++ b/var/spack/repos/builtin/packages/r-affyexpress/package.py @@ -7,14 +7,13 @@ class RAffyexpress(RPackage): - """Affymetrix Quality Assessment and Analysis Tool + """Affymetrix Quality Assessment and Analysis Tool. The purpose of this package is to provide a comprehensive and easy-to- use tool for quality assessment and to identify differentially expressed genes in the Affymetrix gene expression data.""" - homepage = "https://bioconductor.org/packages/AffyExpress" - git = "https://git.bioconductor.org/packages/AffyExpress.git" + bioc = "AffyExpress" version('1.56.0', commit='e07085833de2bbf81537410cad526d39f8a82478') version('1.50.0', commit='8b98703b63396df9692afb0e15b594658125cc96') diff --git a/var/spack/repos/builtin/packages/r-affyilm/package.py b/var/spack/repos/builtin/packages/r-affyilm/package.py index 5f861b72d77759..a996e860bec4a8 100644 --- a/var/spack/repos/builtin/packages/r-affyilm/package.py +++ b/var/spack/repos/builtin/packages/r-affyilm/package.py @@ -7,16 +7,16 @@ class RAffyilm(RPackage): - """Linear Model of background subtraction and the Langmuir isotherm + """Linear Model of background subtraction and the Langmuir isotherm. affyILM is a preprocessing tool which estimates gene expression levels for Affymetrix Gene Chips. Input from physical chemistry is employed to first background subtract intensities before calculating concentrations on behalf of the Langmuir model.""" - homepage = "https://bioconductor.org/packages/affyILM" - git = "https://git.bioconductor.org/packages/affyILM.git" + bioc = "affyILM" + version('1.46.0', commit='67ffbfa6c881ed83d15604bf4463fe5dba81036b') version('1.42.0', commit='b97b29786b866de38802ebbb995169be91e90942') version('1.36.0', commit='619ced931ba72860ce4cb41c841bbca1636a1132') version('1.34.0', commit='2c02ed2d8fa9a9585d41cf4db0b75d0a07ad8564') diff --git a/var/spack/repos/builtin/packages/r-affyio/package.py b/var/spack/repos/builtin/packages/r-affyio/package.py index 4e546839e0f813..6b9cd31341a316 100644 --- a/var/spack/repos/builtin/packages/r-affyio/package.py +++ b/var/spack/repos/builtin/packages/r-affyio/package.py @@ -7,15 +7,15 @@ class RAffyio(RPackage): - """Tools for parsing Affymetrix data files + """Tools for parsing Affymetrix data files. Routines for parsing Affymetrix data files based upon file format information. Primary focus is on accessing the CEL and CDF file formats.""" - homepage = "https://bioconductor.org/packages/affyio" - git = "https://git.bioconductor.org/packages/affyio.git" + bioc = "affyio" + version('1.64.0', commit='aa7ce48f3f4110431f6f488d45961fde4019ffb0') version('1.60.0', commit='ee20528b32700e99768da48143d6d45c9a7bbe91') version('1.54.0', commit='c0e306e1805a556a1074d1af1acdd18e0a04477f') version('1.52.0', commit='9da725ac1098a22a370fa96eb03e51e4f6d5d963') diff --git a/var/spack/repos/builtin/packages/r-affypdnn/package.py b/var/spack/repos/builtin/packages/r-affypdnn/package.py index e7cdce2c56bb83..5be82ef00e05cd 100644 --- a/var/spack/repos/builtin/packages/r-affypdnn/package.py +++ b/var/spack/repos/builtin/packages/r-affypdnn/package.py @@ -12,8 +12,7 @@ class RAffypdnn(RPackage): The package contains functions to perform the PDNN method described by Li Zhang et al.""" - homepage = "https://bioconductor.org/packages/affypdnn" - git = "https://git.bioconductor.org/packages/affypdnn.git" + bioc = "affypdnn" version('1.58.0', commit='83d8b6b0d9606845bd77dbf7164dd5b160f32ccf') version('1.56.0', commit='5fd9c5265fb895a1f646cf72e8d5169669d979f2') diff --git a/var/spack/repos/builtin/packages/r-affyplm/package.py b/var/spack/repos/builtin/packages/r-affyplm/package.py index cf32a939d06f74..2fc2d792319ed5 100644 --- a/var/spack/repos/builtin/packages/r-affyplm/package.py +++ b/var/spack/repos/builtin/packages/r-affyplm/package.py @@ -7,7 +7,7 @@ class RAffyplm(RPackage): - """Methods for fitting probe-level models + """Methods for fitting probe-level models. A package that extends and improves the functionality of the base affy package. Routines that make heavy use of compiled code for speed. @@ -15,9 +15,9 @@ class RAffyplm(RPackage): models and tools using these models. PLM based quality assessment tools.""" - homepage = "https://bioconductor.org/packages/affyPLM" - git = "https://git.bioconductor.org/packages/affyPLM.git" + bioc = "affyPLM" + version('1.70.0', commit='64abfec92b347aa340b54a8c7b2fbd524fe9c312') version('1.66.0', commit='f0780c3d0e9dccaff83861b98beb5c1d324c4399') version('1.60.0', commit='b11e377d6af3fd0f28aba8195ebf171003da1a9d') version('1.58.0', commit='32764c7691d9a72a301d50042a8844112887a1c8') diff --git a/var/spack/repos/builtin/packages/r-affyqcreport/package.py b/var/spack/repos/builtin/packages/r-affyqcreport/package.py index 62a00d70472345..05bc17899bbde2 100644 --- a/var/spack/repos/builtin/packages/r-affyqcreport/package.py +++ b/var/spack/repos/builtin/packages/r-affyqcreport/package.py @@ -7,14 +7,13 @@ class RAffyqcreport(RPackage): - """QC Report Generation for affyBatch objects + """QC Report Generation for affyBatch objects. This package creates a QC report for an AffyBatch object. The report is intended to allow the user to quickly assess the quality of a set of arrays in an AffyBatch object.""" - homepage = "https://bioconductor.org/packages/affyQCReport" - git = "https://git.bioconductor.org/packages/affyQCReport.git" + bioc = "affyQCReport" version('1.68.0', commit='34b42a16f87a90a595146f4a1802ed04f6bfccca') version('1.62.0', commit='92d4124b688b90a6a9b8a21ab9d13d92b368cee4') @@ -27,7 +26,7 @@ class RAffyqcreport(RPackage): depends_on('r-affy', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-affyplm', type=('build', 'run')) - depends_on('r-biobase', when='@1.68.0:', type=('build', 'run')) + depends_on('r-biobase', type=('build', 'run'), when='@1.68.0:') depends_on('r-genefilter', type=('build', 'run')) depends_on('r-rcolorbrewer', type=('build', 'run')) depends_on('r-simpleaffy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-affyrnadegradation/package.py b/var/spack/repos/builtin/packages/r-affyrnadegradation/package.py index 23571114375293..8669331a785ef6 100644 --- a/var/spack/repos/builtin/packages/r-affyrnadegradation/package.py +++ b/var/spack/repos/builtin/packages/r-affyrnadegradation/package.py @@ -8,7 +8,7 @@ class RAffyrnadegradation(RPackage): """Analyze and correct probe positional bias in microarray data due to RNA - degradation + degradation. The package helps with the assessment and correction of RNA degradation effects in Affymetrix 3' expression arrays. The parameter d gives a @@ -16,9 +16,9 @@ class RAffyrnadegradation(RPackage): probe positional bias, and thus improves comparability of samples that are affected by RNA degradation.""" - homepage = "https://bioconductor.org/packages/AffyRNADegradation" - git = "https://git.bioconductor.org/packages/AffyRNADegradation.git" + bioc = "AffyRNADegradation" + version('1.40.0', commit='8539a91ee464d692a267bb17c91dc1ef9a231f41') version('1.36.0', commit='89662b93076659db2967a526899184c12c156bc5') version('1.30.0', commit='620c464fb09248e1c7a122828eab59a4fb778cc1') version('1.28.0', commit='aff91d78fa9e76edaa3ef6a9a43b98b86cc44c24') diff --git a/var/spack/repos/builtin/packages/r-agdex/package.py b/var/spack/repos/builtin/packages/r-agdex/package.py index afbba0d26b24e5..53a0442fc2bb21 100644 --- a/var/spack/repos/builtin/packages/r-agdex/package.py +++ b/var/spack/repos/builtin/packages/r-agdex/package.py @@ -7,14 +7,14 @@ class RAgdex(RPackage): - """Agreement of Differential Expression Analysis + """Agreement of Differential Expression Analysis. A tool to evaluate agreement of differential expression for cross- species genomics""" - homepage = "https://bioconductor.org/packages/AGDEX" - git = "https://git.bioconductor.org/packages/AGDEX.git" + bioc = "AGDEX" + version('1.42.0', commit='175cf1b384b0942103d841b1feb9e4f7d141ba06') version('1.38.0', commit='7e2c1f5f27ccbea6a7157f5122212e40408b74da') version('1.32.0', commit='254ad2c876ab9ac48c3c3b395160dccabc084acf') version('1.30.0', commit='d6cc21ed7e11e6644399495fa5f8b36368625d4b') diff --git a/var/spack/repos/builtin/packages/r-agilp/package.py b/var/spack/repos/builtin/packages/r-agilp/package.py index 348b60d7878a59..2f800e6dd035fb 100644 --- a/var/spack/repos/builtin/packages/r-agilp/package.py +++ b/var/spack/repos/builtin/packages/r-agilp/package.py @@ -7,13 +7,13 @@ class RAgilp(RPackage): - """Agilent expression array processing package + """Agilent expression array processing package. More about what it does (maybe more than one line).""" - homepage = "https://bioconductor.org/packages/agilp" - git = "https://git.bioconductor.org/packages/agilp.git" + bioc = "agilp" + version('3.26.0', commit='3170fe2b1cc459d5e2ca7f61a127aac17cd66a96') version('3.22.0', commit='7d089d576752e0526f15a1007e94436089954313') version('3.16.0', commit='2900d6066317f21d076b3a043b16f32eca168c47') version('3.14.0', commit='8feb047d70216013462ea7806e9227d192b60c61') diff --git a/var/spack/repos/builtin/packages/r-agimicrorna/package.py b/var/spack/repos/builtin/packages/r-agimicrorna/package.py index 09f0709c1f6dc6..b3ede02ce71a5c 100644 --- a/var/spack/repos/builtin/packages/r-agimicrorna/package.py +++ b/var/spack/repos/builtin/packages/r-agimicrorna/package.py @@ -8,13 +8,13 @@ class RAgimicrorna(RPackage): """Processing and Differential Expression Analysis of Agilent microRNA - chips + chips. Processing and Analysis of Agilent microRNA data.""" - homepage = "https://bioconductor.org/packages/AgiMicroRna" - git = "https://git.bioconductor.org/packages/AgiMicroRna.git" + bioc = "AgiMicroRna" + version('2.44.0', commit='8b308baa3b1b0afc0855ea263630a288689e3864') version('2.40.0', commit='cfa4acb2215da44767ab3a45845bcd587c309e74') version('2.34.0', commit='aaa8cdd70ed2696c313f6240ffbfa044f0d97a7a') version('2.32.0', commit='681ae17d07e8e533f798a607b761b71a31f407d8') diff --git a/var/spack/repos/builtin/packages/r-aims/package.py b/var/spack/repos/builtin/packages/r-aims/package.py index 45d63f81971269..c6558ee15b5fed 100644 --- a/var/spack/repos/builtin/packages/r-aims/package.py +++ b/var/spack/repos/builtin/packages/r-aims/package.py @@ -7,7 +7,7 @@ class RAims(RPackage): - """AIMS : Absolute Assignment of Breast Cancer Intrinsic Molecular Subtype + """Absolute Assignment of Breast Cancer Intrinsic Molecular Subtype. This package contains the AIMS implementation. It contains necessary functions to assign the five intrinsic molecular subtypes (Luminal A, @@ -15,9 +15,9 @@ class RAims(RPackage): done on individual samples as well as on dataset of gene expression data.""" - homepage = "https://bioconductor.org/packages/AIMS" - git = "https://git.bioconductor.org/packages/AIMS.git" + bioc = "AIMS" + version('1.26.0', commit='5dcf60eb4cdcf563ea848482c9c488f465c27bbd') version('1.22.0', commit='34a38978b24377abb864eff7683bb36344ff171d') version('1.16.0', commit='86cb8c998ade3003cd34a5405b218ae07d97bf84') version('1.14.1', commit='4125c4217a7e4f00169b5ba65dcc3778fdd33c6f') diff --git a/var/spack/repos/builtin/packages/r-aldex2/package.py b/var/spack/repos/builtin/packages/r-aldex2/package.py index 55bf2bb8e7b066..621a4bec5f4408 100644 --- a/var/spack/repos/builtin/packages/r-aldex2/package.py +++ b/var/spack/repos/builtin/packages/r-aldex2/package.py @@ -7,7 +7,7 @@ class RAldex2(RPackage): - """Analysis Of Differential Abundance Taking Sample Variation Into Account + """Analysis Of Differential Abundance Taking Sample Variation Into Account. A differential abundance analysis for the comparison of two or more conditions. Useful for analyzing data from standard RNA-seq or meta-RNA- @@ -21,9 +21,9 @@ class RAldex2(RPackage): aldex.glm), or a correlation test (via aldex.corr). All tests report p-values and Benjamini-Hochberg corrected p-values.""" - homepage = "https://bioconductor.org/packages/ALDEx2" - git = "https://git.bioconductor.org/packages/ALDEx2.git" + bioc = "ALDEx2" + version('1.26.0', commit='0876a2eac08d3f1c01df7414d97d391c80182ada') version('1.22.0', commit='ac7f0ab3f094ec52713da7620a27058b14c7181d') version('1.16.0', commit='bd698a896a5bea91187e3060e56a147bad1d586f') version('1.14.1', commit='a8b970c594a00a37c064227bf312d5f89dccabe8') @@ -31,10 +31,11 @@ class RAldex2(RPackage): version('1.10.0', commit='e43f99e4009ad4d5ed200cc8a19faf7091c0c98a') version('1.8.0', commit='24104824ca2402ad4f54fbf1ed9cee7fac2aaaf1') - depends_on('r-zcompositions', when='@1.22.0:', type=('build', 'run')) + depends_on('r-zcompositions', type=('build', 'run'), when='@1.22.0:') + depends_on('r-rfast', type=('build', 'run'), when='@1.26.0:') depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) depends_on('r-summarizedexperiment', type=('build', 'run')) - depends_on('r-multtest', when='@1.10.0:', type=('build', 'run')) + depends_on('r-multtest', type=('build', 'run'), when='@1.10.0:') diff --git a/var/spack/repos/builtin/packages/r-allelicimbalance/package.py b/var/spack/repos/builtin/packages/r-allelicimbalance/package.py index f11ff1bcc124db..fa0de7f2120394 100644 --- a/var/spack/repos/builtin/packages/r-allelicimbalance/package.py +++ b/var/spack/repos/builtin/packages/r-allelicimbalance/package.py @@ -7,14 +7,14 @@ class RAllelicimbalance(RPackage): - """Investigates Allele Specific Expression + """Investigates Allele Specific Expression. Provides a framework for allelic specific expression investigation using RNA-seq data.""" - homepage = "https://bioconductor.org/packages/AllelicImbalance" - git = "https://git.bioconductor.org/packages/AllelicImbalance.git" + bioc = "AllelicImbalance" + version('1.32.0', commit='428ab8c96bb15fab45e4084da25f98b01b9d60b6') version('1.28.0', commit='ac5d13c9ee0935bf9500ee542792644e752a1fde') version('1.22.0', commit='04692e367e8c6aac475d06adfd7cfa629baab05a') version('1.20.0', commit='4cd3a789d872151b0d906ec419677271fecdf7c3') @@ -23,29 +23,29 @@ class RAllelicimbalance(RPackage): version('1.14.0', commit='35958534945819baafde0e13d1eb4d05a514142c') depends_on('r@3.2.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@1.28.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.28.0:') depends_on('r-genomicranges', type=('build', 'run')) - depends_on('r-genomicranges@1.31.8:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.31.8:', type=('build', 'run'), when='@1.18.0:') depends_on('r-summarizedexperiment@0.2.0:', type=('build', 'run')) depends_on('r-genomicalignments', type=('build', 'run')) - depends_on('r-genomicalignments@1.15.6:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-genomicalignments@1.15.6:', type=('build', 'run'), when='@1.18.0:') depends_on('r-biocgenerics', type=('build', 'run')) depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-bsgenome', type=('build', 'run')) - depends_on('r-bsgenome@1.47.3:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-bsgenome@1.47.3:', type=('build', 'run'), when='@1.18.0:') depends_on('r-variantannotation', type=('build', 'run')) - depends_on('r-variantannotation@1.25.11:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-variantannotation@1.25.11:', type=('build', 'run'), when='@1.18.0:') depends_on('r-biostrings', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.18.0:') depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@1.18.0:') depends_on('r-iranges', type=('build', 'run')) - depends_on('r-iranges@2.13.12:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-iranges@2.13.12:', type=('build', 'run'), when='@1.18.0:') depends_on('r-rsamtools', type=('build', 'run')) - depends_on('r-rsamtools@1.31.2:', when='@1.18.0:', type=('build', 'run')) - depends_on('r-rsamtools@1.99.3:', when='@1.22.0:', type=('build', 'run')) + depends_on('r-rsamtools@1.31.2:', type=('build', 'run'), when='@1.18.0:') + depends_on('r-rsamtools@1.99.3:', type=('build', 'run'), when='@1.22.0:') depends_on('r-genomicfeatures', type=('build', 'run')) - depends_on('r-genomicfeatures@1.31.3:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-genomicfeatures@1.31.3:', type=('build', 'run'), when='@1.18.0:') depends_on('r-gviz', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-latticeextra', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-alpine/package.py b/var/spack/repos/builtin/packages/r-alpine/package.py index d063efbb904fc4..5031416049e589 100644 --- a/var/spack/repos/builtin/packages/r-alpine/package.py +++ b/var/spack/repos/builtin/packages/r-alpine/package.py @@ -7,14 +7,14 @@ class RAlpine(RPackage): - """alpine + """alpine. Fragment sequence bias modeling and correction for RNA-seq transcript abundance estimation.""" - homepage = "https://bioconductor.org/packages/alpine" - git = "https://git.bioconductor.org/packages/alpine.git" + bioc = "alpine" + version('1.20.0', commit='9348ef14128aa6be10cca1987736ddbc385df7e9') version('1.16.0', commit='aee397774ac6cd17ad45dc05be14c526647f3c13') version('1.10.0', commit='bf22597eb2c6c6aaa26900ed4ece96ce7256e77c') version('1.8.0', commit='ddaa0b4517f0909460aa1bd33c8e43dc6c8d23d4') diff --git a/var/spack/repos/builtin/packages/r-als/package.py b/var/spack/repos/builtin/packages/r-als/package.py index 16b19c97b3a1c2..a75631dfa943b2 100644 --- a/var/spack/repos/builtin/packages/r-als/package.py +++ b/var/spack/repos/builtin/packages/r-als/package.py @@ -7,17 +7,17 @@ class RAls(RPackage): - """Alternating least squares is often used to resolve components - contributing to data with a bilinear structure; the basic - technique may be extended to alternating constrained least squares. - Commonly applied constraints include unimodality, non-negativity, - and normalization of components. Several data matrices may be - decomposed simultaneously by assuming that one of the two matrices - in the bilinear decomposition is shared between datasets.""" + """Multivariate Curve Resolution Alternating Least Squares (MCR-ALS). - homepage = "https://cloud.r-project.org/package=ALS" - url = "https://cloud.r-project.org/src/contrib/ALS_0.0.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ALS" + Alternating least squares is often used to resolve components contributing + to data with a bilinear structure; the basic technique may be extended to + alternating constrained least squares. Commonly applied constraints + include unimodality, non-negativity, and normalization of components. + Several data matrices may be decomposed simultaneously by assuming that one + of the two matrices in the bilinear decomposition is shared between + datasets.""" + + cran = "ALS" version('0.0.6', sha256='ca90d27115ae9e476967f521bf6935723e410a3bf92477e7570e14bfd3b099eb') diff --git a/var/spack/repos/builtin/packages/r-alsace/package.py b/var/spack/repos/builtin/packages/r-alsace/package.py index f191b4a3dbfca4..e8c1f7fa3ddf5e 100644 --- a/var/spack/repos/builtin/packages/r-alsace/package.py +++ b/var/spack/repos/builtin/packages/r-alsace/package.py @@ -7,7 +7,7 @@ class RAlsace(RPackage): - """ALS for the Automatic Chemical Exploration of mixtures + """ALS for the Automatic Chemical Exploration of mixtures. Alternating Least Squares (or Multivariate Curve Resolution) for analytical chemical data, in particular hyphenated data where the first @@ -16,9 +16,9 @@ class RAlsace(RPackage): functionality for high-throughput analysis, including definition of time windows, clustering of profiles, retention time correction, etcetera.""" - homepage = "https://bioconductor.org/packages/alsace" - git = "https://git.bioconductor.org/packages/alsace.git" + bioc = "alsace" + version('1.30.0', commit='d0e09b283da2b4869d5d6e6801399676246bc5bc') version('1.26.0', commit='40a76404acb1466723a78a55d87c67eec3e6f306') version('1.20.0', commit='47f1cf8daafc864e5e3418009f349ce85d6b0389') version('1.18.0', commit='c9fc43c7b441de43b14ef1be69926c4c4a566191') diff --git a/var/spack/repos/builtin/packages/r-altcdfenvs/package.py b/var/spack/repos/builtin/packages/r-altcdfenvs/package.py index 36eb98f19c6ced..fe9b93a8e18ad6 100644 --- a/var/spack/repos/builtin/packages/r-altcdfenvs/package.py +++ b/var/spack/repos/builtin/packages/r-altcdfenvs/package.py @@ -7,13 +7,13 @@ class RAltcdfenvs(RPackage): - """alternative CDF environments (aka probeset mappings) + """alternative CDF environments (aka probeset mappings). Convenience data structures and functions to handle cdfenvs.""" - homepage = "https://bioconductor.org/packages/altcdfenvs" - git = "https://git.bioconductor.org/packages/altcdfenvs.git" + bioc = "altcdfenvs" + version('2.56.0', commit='941e00b97a33662a8230991e387070324b2e76bf') version('2.52.0', commit='21329abf82eae26f84b7c0270e81c8e089c548ce') version('2.46.0', commit='90a11e748a5af98cabfd6670a5b7b256420d172b') version('2.44.0', commit='d804f6432422bd532abab415710f890b36cc8133') diff --git a/var/spack/repos/builtin/packages/r-amap/package.py b/var/spack/repos/builtin/packages/r-amap/package.py index a614cf314dbb56..0570b9995d192d 100644 --- a/var/spack/repos/builtin/packages/r-amap/package.py +++ b/var/spack/repos/builtin/packages/r-amap/package.py @@ -7,18 +7,16 @@ class RAmap(RPackage): - """Another Multidimensional Analysis Package + """Another Multidimensional Analysis Package. Tools for Clustering and Principal Component Analysis (With robust methods, and parallelized functions).""" - homepage = "https://cran.r-project.org/web/packages/amap/index.html" - url = "https://cloud.r-project.org/src/contrib/amap_0.8-16.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/amap/" + cran = "amap" version('0.8-18', sha256='7afbbdd681a201121374821b733c9000ca1046a2353ee386507604c2c759ec7e') version('0.8-17', sha256='6b8473d1d35a9cbc611661882c8f681162e8f913f911ccd51629200ae72289c6') version('0.8-16', sha256='d3775ad7f660581f7d2f070e426be95ae0d6743622943e6f5491988e5217d4e2') - depends_on('r@2.10.0:', when='@:0.8-16', type=('build', 'run')) - depends_on('r@3.6.0:', when='@0.8-17:', type=('build', 'run')) + depends_on('r@2.10.0:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@0.8-17:') diff --git a/var/spack/repos/builtin/packages/r-amelia/package.py b/var/spack/repos/builtin/packages/r-amelia/package.py index c5b0e32bfdcfe4..9cce1e443bd201 100644 --- a/var/spack/repos/builtin/packages/r-amelia/package.py +++ b/var/spack/repos/builtin/packages/r-amelia/package.py @@ -7,21 +7,30 @@ class RAmelia(RPackage): - """Amelia: A Program for Missing Data + """A Program for Missing Data. - Amelia II "multiply imputes" missing data in a single - cross-section (such as a survey), from a time series (like - variables collected for each year in a country), or from a - time-series-cross-sectional data set (such as collected by - years for each of several countries).""" + A tool that "multiply imputes" missing data in a single cross-section (such + as a survey), from a time series (like variables collected for each year in + a country), or from a time-series-cross-sectional data set (such as + collected by years for each of several countries). Amelia II implements our + bootstrapping-based algorithm that gives essentially the same answers as + the standard IP or EMis approaches, is usually considerably faster than + existing approaches and can handle many more variables. Unlike Amelia I + and other statistically rigorous imputation software, it virtually never + crashes (but please let us know if you find to the contrary!). The program + also generalizes existing approaches by allowing for trends in time series + across observations within a cross-sectional unit, as well as priors that + allow experts to incorporate beliefs they have about the values of missing + cells in their data. Amelia II also includes useful diagnostics of the fit + of multiple imputation models. The program works from the R command line + or via a graphical user interface that does not require users to know R.""" - homepage = "https://gking.harvard.edu/amelia" - url = "https://cloud.r-project.org/src/contrib/Amelia_1.7.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Amelia" + cran = "Amelia" + version('1.8.0', sha256='3ec1d5a68dac601b354227916aa8ec72fa1216b603dd887aae2b24cb69b5995e') version('1.7.6', sha256='63c08d374aaf78af46c34dc78da719b3085e58d9fabdc76c6460d5193a621bea') - depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r-rcpp@0.11:', type=('build', 'run')) - depends_on('r-foreign', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r-rcpp@0.11:', type=('build', 'run')) + depends_on('r-foreign', type=('build', 'run')) depends_on('r-rcpparmadillo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ampliqueso/package.py b/var/spack/repos/builtin/packages/r-ampliqueso/package.py index 747d27b42cef2d..4da54c94e80c3a 100644 --- a/var/spack/repos/builtin/packages/r-ampliqueso/package.py +++ b/var/spack/repos/builtin/packages/r-ampliqueso/package.py @@ -12,8 +12,7 @@ class RAmpliqueso(RPackage): The package provides tools and reports for the analysis of amplicon sequencing panels, such as AmpliSeq""" - homepage = "https://bioconductor.org/packages/3.8/bioc/html/ampliQueso.html" - git = "https://git.bioconductor.org/packages/ampliQueso.git" + bioc = "ampliQueso" version('1.21.0', commit='ed99c5194a452ee299a93e981da2224e4dab5bdd') version('1.20.0', commit='ed064ffe9c5f2b47136e5f0f2e2c4214af4deae8') diff --git a/var/spack/repos/builtin/packages/r-analysispageserver/package.py b/var/spack/repos/builtin/packages/r-analysispageserver/package.py index d21d18285d7235..e626957693ee07 100644 --- a/var/spack/repos/builtin/packages/r-analysispageserver/package.py +++ b/var/spack/repos/builtin/packages/r-analysispageserver/package.py @@ -13,8 +13,7 @@ class RAnalysispageserver(RPackage): AnalysisPageServer is a modular system that enables sharing of customizable R analyses via the web.""" - homepage = "https://bioconductor.org/packages/AnalysisPageServer" - git = "https://git.bioconductor.org/packages/AnalysisPageServer.git" + bioc = "AnalysisPageServer" version('1.18.1', commit='08bd85e872d3f2b0c1fa148cf30bcd2d1a29b630') version('1.16.0', commit='67b063523f80e2af1d26262367ff50f34e195174') diff --git a/var/spack/repos/builtin/packages/r-anaquin/package.py b/var/spack/repos/builtin/packages/r-anaquin/package.py index 14e969d4f955ec..944494d997234a 100644 --- a/var/spack/repos/builtin/packages/r-anaquin/package.py +++ b/var/spack/repos/builtin/packages/r-anaquin/package.py @@ -7,7 +7,7 @@ class RAnaquin(RPackage): - """Statistical analysis of sequins + """Statistical analysis of sequins. The project is intended to support the use of sequins (synthetic sequencing spike-in controls) owned and made available by the Garvan @@ -15,9 +15,9 @@ class RAnaquin(RPackage): source library for quantitative analysis, modelling and visualization of spike-in controls.""" - homepage = "https://bioconductor.org/packages/Anaquin" - git = "https://git.bioconductor.org/packages/Anaquin.git" + bioc = "Anaquin" + version('2.18.0', commit='c8e3df3e299c32daac0dda23cea59a18673d886b') version('2.14.0', commit='d0a34c931a0e72080bff91dacb37dbbe26b45386') version('2.8.0', commit='f591d420740b77881ae0a4c16b208c63d460c601') version('2.6.1', commit='22b6c71697fe1e2db8f6d18f77728d0fd96fa6d6') diff --git a/var/spack/repos/builtin/packages/r-aneufinder/package.py b/var/spack/repos/builtin/packages/r-aneufinder/package.py index a50a9ae88443df..f24f6bd55c686b 100644 --- a/var/spack/repos/builtin/packages/r-aneufinder/package.py +++ b/var/spack/repos/builtin/packages/r-aneufinder/package.py @@ -7,15 +7,15 @@ class RAneufinder(RPackage): - """Analysis of Copy Number Variation in Single-Cell-Sequencing Data + """Analysis of Copy Number Variation in Single-Cell-Sequencing Data. AneuFinder implements functions for copy-number detection, breakpoint detection, and karyotype and heterogeneity analysis in single-cell whole genome sequencing and strand-seq data.""" - homepage = "https://bioconductor.org/packages/AneuFinder" - git = "https://git.bioconductor.org/packages/AneuFinder.git" + bioc = "AneuFinder" + version('1.22.0', commit='ea0beb3d827c2dd4bc56708a839a93c55304918b') version('1.18.0', commit='76ec9af947f97212084ca478e8e82f9e0eb79de9') version('1.12.1', commit='e788fd0c864f0bf0abd93df44c6d42f82eb37e0e') version('1.10.2', commit='56578ae69abac93dfea6bcac1fc205b14b6ba9dd') @@ -24,22 +24,22 @@ class RAneufinder(RPackage): version('1.4.0', commit='e5bdf4d5e4f84ee5680986826ffed636ed853b8e') depends_on('r@3.3:', type=('build', 'run')) - depends_on('r@3.5:', when='@1.10.2:', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@1.10.2:') depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-cowplot', type=('build', 'run')) depends_on('r-aneufinderdata', type=('build', 'run')) depends_on('r-foreach', type=('build', 'run')) depends_on('r-doparallel', type=('build', 'run')) - depends_on('r-biocgenerics', when='@1.4.0:1.6.0', type=('build', 'run')) - depends_on('r-biocgenerics@0.31.6:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-biocgenerics', type=('build', 'run'), when='@1.4.0:1.6.0') + depends_on('r-biocgenerics@0.31.6:', type=('build', 'run'), when='@1.18.0:') depends_on('r-s4vectors', type=('build', 'run')) depends_on('r-genomeinfodb', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) depends_on('r-rsamtools', type=('build', 'run')) depends_on('r-bamsignals', type=('build', 'run')) depends_on('r-dnacopy', type=('build', 'run')) - depends_on('r-ecp', when='@1.8.0:', type=('build', 'run')) + depends_on('r-ecp', type=('build', 'run'), when='@1.8.0:') depends_on('r-biostrings', type=('build', 'run')) depends_on('r-genomicalignments', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-aneufinderdata/package.py b/var/spack/repos/builtin/packages/r-aneufinderdata/package.py index ece58876a9b788..47ffd1ee8658f7 100644 --- a/var/spack/repos/builtin/packages/r-aneufinderdata/package.py +++ b/var/spack/repos/builtin/packages/r-aneufinderdata/package.py @@ -7,14 +7,14 @@ class RAneufinderdata(RPackage): - """WGSCS Data for Demonstration Purposes + """WGSCS Data for Demonstration Purposes. Whole-genome single cell sequencing data for demonstration purposes in the AneuFinder package.""" - homepage = "https://bioconductor.org/packages/AneuFinderData" - git = "https://git.bioconductor.org/packages/AneuFinderData.git" + bioc = "AneuFinderData" + version('1.22.0', commit='ae8eec3b0afdc351dc447aad2024df5b2c75e56b') version('1.18.0', commit='1bf1657b28fc8c1425e611980a692da952ce3d1e') version('1.12.0', commit='7350f38856b6278e07eca141f7f3cb24bc60c3a1') version('1.10.0', commit='ef7fc27f9af4f178fa45a21aba30709e1ebde035') diff --git a/var/spack/repos/builtin/packages/r-animation/package.py b/var/spack/repos/builtin/packages/r-animation/package.py index 420d14297a0279..301dea0458c82d 100644 --- a/var/spack/repos/builtin/packages/r-animation/package.py +++ b/var/spack/repos/builtin/packages/r-animation/package.py @@ -7,23 +7,25 @@ class RAnimation(RPackage): - """Provides functions for animations in statistics, covering topics - in probability theory, mathematical statistics, multivariate statistics, + """A Gallery of Animations in Statistics and Utilities to Create + Animations. + + Provides functions for animations in statistics, covering topics in + probability theory, mathematical statistics, multivariate statistics, non-parametric statistics, sampling survey, linear models, time series, - computational statistics, data mining and machine learning. - These functions maybe helpful in teaching statistics and data analysis.""" + computational statistics, data mining and machine learning. These + functions maybe helpful in teaching statistics and data analysis.""" - homepage = "https://cloud.r-project.org/package=animation" - url = "https://cloud.r-project.org/src/contrib/animation_2.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/animation" + cran = "animation" + version('2.7', sha256='88418f1b04ec785963bad492f30eb48b05914e9e5d88c7eef705d949cbd7e469') version('2.6', sha256='90293638920ac436e7e4de76ebfd92e1643ccdb0259b62128f16dd0b13245b0a') version('2.5', sha256='b232fef1b318c79710e5e1923d87baba4c85ffe2c77ddb188130e0911d8cb55f') depends_on('r+X', type=('build', 'run')) depends_on('r@2.14:', type=('build', 'run')) - depends_on('r-magick', when='@2.6:', type=('build', 'run')) + depends_on('r-magick', type=('build', 'run'), when='@2.6:') depends_on('imagemagick') - depends_on('ffmpeg') - depends_on('swftools') depends_on('texlive') + depends_on('swftools') + depends_on('ffmpeg') diff --git a/var/spack/repos/builtin/packages/r-annaffy/package.py b/var/spack/repos/builtin/packages/r-annaffy/package.py index 927bc8f253eac2..87430f1cd69a0c 100644 --- a/var/spack/repos/builtin/packages/r-annaffy/package.py +++ b/var/spack/repos/builtin/packages/r-annaffy/package.py @@ -7,16 +7,16 @@ class RAnnaffy(RPackage): - """Annotation tools for Affymetrix biological metadata + """Annotation tools for Affymetrix biological metadata. Functions for handling data from Bioconductor Affymetrix annotation data packages. Produces compact HTML and text reports including experimental data and URL links to many online databases. Allows searching biological metadata using various criteria.""" - homepage = "https://bioconductor.org/packages/annaffy" - git = "https://git.bioconductor.org/packages/annaffy.git" + bioc = "annaffy" + version('1.66.0', commit='aa1afa1509754128d27508228c1f39f51a8da043') version('1.62.0', commit='ad9c37e0e7e45e0f35c208ce528ba48000b37432') version('1.56.0', commit='8c8e16aa0f3073880c39684fd8e554a052ec6233') version('1.54.0', commit='e1b3bf10515255eb994cd8bdf85697ea728c3484') @@ -26,7 +26,9 @@ class RAnnaffy(RPackage): depends_on('r@2.5.0:', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@1.64.2:') depends_on('r-go-db', type=('build', 'run')) - depends_on('r-kegg-db', type=('build', 'run')) depends_on('r-annotationdbi@0.1.15:', type=('build', 'run')) depends_on('r-dbi', type=('build', 'run')) + + depends_on('r-kegg-db', type=('build', 'run'), when='@:1.62.0') diff --git a/var/spack/repos/builtin/packages/r-annotate/package.py b/var/spack/repos/builtin/packages/r-annotate/package.py index bfa3e86e175cd4..9fa7d17adced4e 100644 --- a/var/spack/repos/builtin/packages/r-annotate/package.py +++ b/var/spack/repos/builtin/packages/r-annotate/package.py @@ -7,13 +7,13 @@ class RAnnotate(RPackage): - """Annotation for microarrays + """Annotation for microarrays. Using R enviroments for annotation.""" - homepage = "https://bioconductor.org/packages/annotate" - git = "https://git.bioconductor.org/packages/annotate.git" + bioc = "annotate" + version('1.72.0', commit='67ac76a9ff6d60dc1620763d3aa98aef39443110') version('1.68.0', commit='98cdb12c612b3f3fc06329a89a1ffb0a92b555c0') version('1.62.0', commit='19af0b39747ea83fe8fe9b8bbb6036363bc815cd') version('1.60.1', commit='9d8f87db02bf0c1593e79da754335a24d3a8ed16') @@ -28,5 +28,6 @@ class RAnnotate(RPackage): depends_on('r-dbi', type=('build', 'run')) depends_on('r-xtable', type=('build', 'run')) depends_on('r-biocgenerics@0.13.8:', type=('build', 'run')) - depends_on('r-httr', when='@1.68.0:', type=('build', 'run')) - depends_on('r-rcurl', when='@:1.62.0', type=('build', 'run')) + depends_on('r-httr', type=('build', 'run'), when='@1.68.0:') + + depends_on('r-rcurl', type=('build', 'run'), when='@:1.62.0') diff --git a/var/spack/repos/builtin/packages/r-annotationdbi/package.py b/var/spack/repos/builtin/packages/r-annotationdbi/package.py index 9f8c6d285a8f1a..3a19789fa664da 100644 --- a/var/spack/repos/builtin/packages/r-annotationdbi/package.py +++ b/var/spack/repos/builtin/packages/r-annotationdbi/package.py @@ -7,14 +7,14 @@ class RAnnotationdbi(RPackage): - """Manipulation of SQLite-based annotations in Bioconductor + """Manipulation of SQLite-based annotations in Bioconductor. Implements a user-friendly interface for querying SQLite-based annotation data packages.""" - homepage = "https://bioconductor.org/packages/AnnotationDbi" - git = "https://git.bioconductor.org/packages/AnnotationDbi.git" + bioc = "AnnotationDbi" + version('1.56.2', commit='13fdc4a93852199ca6ec120a2fe1078f9f445f67') version('1.52.0', commit='c4e0ca9bd65362ae9cad6a98d90f54267b0ae838') version('1.46.1', commit='ff260913741d0fcf9487eeb1f44a6c6968ced5b9') version('1.44.0', commit='ce191b08cfd612d014431325c26c91b11c5f13ac') @@ -24,10 +24,11 @@ class RAnnotationdbi(RPackage): depends_on('r@2.7.0:', type=('build', 'run')) depends_on('r-biocgenerics@0.15.10:', type=('build', 'run')) - depends_on('r-biocgenerics@0.23.1:', when='@1.40.0:', type=('build', 'run')) - depends_on('r-biocgenerics@0.29.2:', when='@1.46.1:', type=('build', 'run')) + depends_on('r-biocgenerics@0.23.1:', type=('build', 'run'), when='@1.40.0:') + depends_on('r-biocgenerics@0.29.2:', type=('build', 'run'), when='@1.46.1:') depends_on('r-biobase@1.17.0:', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) depends_on('r-dbi', type=('build', 'run')) depends_on('r-rsqlite', type=('build', 'run')) depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) + depends_on('r-keggrest', type=('build', 'run'), when='@1.56.2:') diff --git a/var/spack/repos/builtin/packages/r-annotationfilter/package.py b/var/spack/repos/builtin/packages/r-annotationfilter/package.py index 71c8265e6bd579..6bad6a7aa55212 100644 --- a/var/spack/repos/builtin/packages/r-annotationfilter/package.py +++ b/var/spack/repos/builtin/packages/r-annotationfilter/package.py @@ -7,15 +7,15 @@ class RAnnotationfilter(RPackage): - """Facilities for Filtering Bioconductor Annotation Resources + """Facilities for Filtering Bioconductor Annotation Resources. This package provides class and other infrastructure to implement filters for manipulating Bioconductor annotation resources. The filters will be used by ensembldb, Organism.dplyr, and other packages.""" - homepage = "https://bioconductor.org/packages/AnnotationFilter" - git = "https://git.bioconductor.org/packages/AnnotationFilter.git" + bioc = "AnnotationFilter" + version('1.18.0', commit='60a9b666d7362d7ed5c357fd4a5d2744d8598c20') version('1.14.0', commit='6ee3a13ed93a535ed452cbc8c118151a2cbb732c') version('1.8.0', commit='9bf70ead899e32e84e2908f2b29cd38250d2d1ed') version('1.6.0', commit='fa40a7e17e93fac9e85091ff93f256adf145dec3') diff --git a/var/spack/repos/builtin/packages/r-annotationforge/package.py b/var/spack/repos/builtin/packages/r-annotationforge/package.py index 5364096858648d..76828473749a76 100644 --- a/var/spack/repos/builtin/packages/r-annotationforge/package.py +++ b/var/spack/repos/builtin/packages/r-annotationforge/package.py @@ -7,14 +7,14 @@ class RAnnotationforge(RPackage): - """Tools for building SQLite-based annotation data packages + """Tools for building SQLite-based annotation data packages. Provides code for generating Annotation packages and their databases. Packages produced are intended to be used with AnnotationDbi.""" - homepage = "https://bioconductor.org/packages/AnnotationForge" - git = "https://git.bioconductor.org/packages/AnnotationForge.git" + bioc = "AnnotationForge" + version('1.36.0', commit='523b5f0c3ffb77e59e1568e5f36a5a470bfeeae5') version('1.32.0', commit='3d17c2a945951c02fe152e5a8a8e9c6cb41e30f7') version('1.26.0', commit='5d181f32df1fff6446af64a2538a7d25c23fe46e') version('1.24.0', commit='3e1fe863573e5b0f69f35a9ad6aebce11ef83d0d') diff --git a/var/spack/repos/builtin/packages/r-annotationhub/package.py b/var/spack/repos/builtin/packages/r-annotationhub/package.py index 709f5400863973..ec6fe1b6a92a1e 100644 --- a/var/spack/repos/builtin/packages/r-annotationhub/package.py +++ b/var/spack/repos/builtin/packages/r-annotationhub/package.py @@ -7,7 +7,7 @@ class RAnnotationhub(RPackage): - """Client to access AnnotationHub resources + """Client to access AnnotationHub resources. This package provides a client for the Bioconductor AnnotationHub web resource. The AnnotationHub web resource provides a central location @@ -18,9 +18,9 @@ class RAnnotationhub(RPackage): cache of files retrieved by the user, helping with quick and reproducible access.""" - homepage = "https://bioconductor.org/packages/AnnotationHub" - git = "https://git.bioconductor.org/packages/AnnotationHub.git" + bioc = "AnnotationHub" + version('3.2.1', commit='ad1dfe86f0b0ea4711cc9cdb89e073e8794ec9aa') version('2.22.0', commit='3ab7dceebbc31ac14ca931f66c662cf9538b7d0a') version('2.16.1', commit='f8cefaae603b782e1c1ad277a3fb89d44e3aa1ed') version('2.14.5', commit='993a98ce3de04a0bbddcbde5b1ab2a9550275a12') @@ -29,16 +29,17 @@ class RAnnotationhub(RPackage): version('2.8.3', commit='8aa9c64262a8d708d2bf1c82f82dfc3d7d4ccc0c') depends_on('r-biocgenerics@0.15.10:', type=('build', 'run')) - depends_on('r-biocfilecache@1.5.1:', when='@2.16.1:', type=('build', 'run')) + depends_on('r-biocfilecache@1.5.1:', type=('build', 'run'), when='@2.16.1:') depends_on('r-rsqlite', type=('build', 'run')) - depends_on('r-biocmanager', when='@2.14.5:', type=('build', 'run')) - depends_on('r-biocversion', when='@2.22.0:', type=('build', 'run')) - depends_on('r-curl', when='@2.10.1:', type=('build', 'run')) - depends_on('r-rappdirs', when='@2.16.1:', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@2.14.5:') + depends_on('r-biocversion', type=('build', 'run'), when='@2.22.0:') + depends_on('r-curl', type=('build', 'run'), when='@2.10.1:') + depends_on('r-rappdirs', type=('build', 'run'), when='@2.16.1:') depends_on('r-annotationdbi@1.31.19:', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) depends_on('r-interactivedisplaybase', type=('build', 'run')) depends_on('r-httr', type=('build', 'run')) depends_on('r-yaml', type=('build', 'run')) - depends_on('r-dplyr', when='@2.16.1:', type=('build', 'run')) - depends_on('r-biocinstaller', when='@:2.16.1', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run'), when='@2.16.1:') + + depends_on('r-biocinstaller', type=('build', 'run'), when='@:2.16.1') diff --git a/var/spack/repos/builtin/packages/r-anytime/package.py b/var/spack/repos/builtin/packages/r-anytime/package.py index daa44ce090e0ac..5558631c67e17e 100644 --- a/var/spack/repos/builtin/packages/r-anytime/package.py +++ b/var/spack/repos/builtin/packages/r-anytime/package.py @@ -7,16 +7,14 @@ class RAnytime(RPackage): - """Anything to 'POSIXct' or 'Date' Converter + """Anything to 'POSIXct' or 'Date' Converter. - Convert input in any one of character, integer, numeric, - factor, or ordered type into 'POSIXct' (or 'Date') objects, - using one of a number of predefined formats, and relying on - Boost facilities for date and time parsing.""" + Convert input in any one of character, integer, numeric, factor, or ordered + type into 'POSIXct' (or 'Date') objects, using one of a number of + predefined formats, and relying on Boost facilities for date and time + parsing.""" - homepage = "https://dirk.eddelbuettel.com/code/anytime.html" - url = "https://cloud.r-project.org/src/contrib/anytime_0.3.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/anytime" + cran = "anytime" version('0.3.9', sha256='1096c15249ac70997a8a41c37eeb2a6d38530621abeae05d3dcd96a8acc7574a') diff --git a/var/spack/repos/builtin/packages/r-aod/package.py b/var/spack/repos/builtin/packages/r-aod/package.py index 3c5704941432e2..8ce19bf352d9b9 100644 --- a/var/spack/repos/builtin/packages/r-aod/package.py +++ b/var/spack/repos/builtin/packages/r-aod/package.py @@ -7,16 +7,15 @@ class RAod(RPackage): - """Provides a set of functions to analyse overdispersed counts or - proportions. Most of the methods are already available elsewhere but are - scattered in different packages. The proposed functions should be - considered as complements to more sophisticated methods such as generalized - estimating equations (GEE) or generalized linear mixed effect models - (GLMM).""" + """Analysis of Overdispersed Data. - homepage = "https://cloud.r-project.org/package=aod" - url = "https://cloud.r-project.org/src/contrib/aod_1.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/aod" + Provides a set of functions to analyse overdispersed counts or proportions. + Most of the methods are already available elsewhere but are scattered in + different packages. The proposed functions should be considered as + complements to more sophisticated methods such as generalized estimating + equations (GEE) or generalized linear mixed effect models (GLMM).""" + + cran = "aod" 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 c1ea7bc8dda642..4a489a309a3a30 100644 --- a/var/spack/repos/builtin/packages/r-ape/package.py +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -7,28 +7,27 @@ class RApe(RPackage): - """Analyses of Phylogenetics and Evolution + """Analyses of Phylogenetics and Evolution. Functions for reading, writing, plotting, and manipulating phylogenetic trees, analyses of comparative data in a phylogenetic framework, ancestral character analyses, analyses of diversification and macroevolution, computing distances from DNA sequences, reading and writing nucleotide - sequences as well as importing from BioConductor, and several tools such - as Mantel's test, generalized skyline plots, graphical exploration of + sequences as well as importing from BioConductor, and several tools such as + Mantel's test, generalized skyline plots, graphical exploration of phylogenetic data (alex, trex, kronoviz), estimation of absolute evolutionary rates and clock-like trees using mean path lengths and penalized likelihood, dating trees with non-contemporaneous sequences, translating DNA into AA sequences, and assessing sequence alignments. Phylogeny estimation can be done with the NJ, BIONJ, ME, MVR, SDM, and - triangle methods, and several methods handling incomplete distance - matrices (NJ*, BIONJ*, MVR*, and the corresponding triangle method). Some - functions call external applications (PhyML, Clustal, T-Coffee, Muscle) - whose results are returned into R.""" + triangle methods, and several methods handling incomplete distance matrices + (NJ*, BIONJ*, MVR*, and the corresponding triangle method). Some functions + call external applications (PhyML, Clustal, T-Coffee, Muscle) whose results + are returned into R.""" - homepage = "http://ape-package.ird.fr/" - url = "https://cloud.r-project.org/src/contrib/ape_4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ape" + cran = "ape" + version('5.6-1', sha256='25401e036576eed1200e15bf68879ccd85611303a3508b989e15164cd4c0f7f7') version('5.4-1', sha256='f0316c8e74ce900053e8b3e8c9322b9d10e7730f3be2150365f74630bee7eee4') version('5.3', sha256='08b0df134c523feb00a86896d1aa2a43f0f0dab20a53bc6b5d6268d867988b23') version('5.2', sha256='27eb02856c130d59de6e06276be4981709923756319e465a7f2d4756d4f46415') diff --git a/var/spack/repos/builtin/packages/r-aplot/package.py b/var/spack/repos/builtin/packages/r-aplot/package.py new file mode 100644 index 00000000000000..2b34b8fc791092 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-aplot/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2022 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 import * + + +class RAplot(RPackage): + """Decorate a 'ggplot' with Associated Information. + + For many times, we are not just aligning plots as what 'cowplot' and + 'patchwork' did. Users would like to align associated information that + requires axes to be exactly matched in subplots, e.g. hierarchical + clustering with a heatmap. This package provides utilities to aligns + associated subplots to a main plot at different sides (left, right, top and + bottom) with axes exactly matched.""" + + cran = "aplot" + + version('0.1.2', sha256='899c4d101ddcedb1eba9803d78cf02288b63de25e2879add8add1165167509f0') + + depends_on('r-ggfun@0.0.4:', type=('build', 'run')) + depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-ggplotify', type=('build', 'run')) + depends_on('r-patchwork', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run')) + depends_on('r-yulab-utils', 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 1a9af48c2ce28d..71e75a13ec6a4a 100644 --- a/var/spack/repos/builtin/packages/r-argparse/package.py +++ b/var/spack/repos/builtin/packages/r-argparse/package.py @@ -7,23 +7,23 @@ class RArgparse(RPackage): - """Command Line Optional and Positional Argument Parser + """Command Line Optional and Positional Argument Parser. A command line parser to be used with Rscript to write "#!" shebang scripts that gracefully accept positional and optional arguments and automatically generate usage.""" - homepage = "https://github.com/trevorld/argparse" - url = "https://cloud.r-project.org/src/contrib/argparse_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/argparse" + cran = "argparse" + version('2.1.3', sha256='aeda31a54a8d7a0a511cfbf7c5868637e129922671d43938165867437fb6a66e') version('2.0.3', sha256='d26139c610ea0adf8d6632699cd34c4595ae3e7963bfc7a00cb3b7504f2059b0') version('2.0.1', sha256='949843920d14fc7c162aedab331a936499541736e7dafbb103fbfd79be8147ab') version('1.1.1', sha256='441449f0816411a868fd1b15cf4b2bc45931bbd4b67d6592dbe48875905cf93b') - depends_on('r-proto@1:', when='@1.0.0:1.9.9', type=('build', 'run')) - depends_on('r-getopt', when='@1.0.0:1.9.9', type=('build', 'run')) - depends_on('r-r6', when='@2.0.0:', type=('build', 'run')) + depends_on('r-r6', type=('build', 'run'), when='@2.0.0:') depends_on('r-findpython', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) depends_on('python@3.2:', type=('build', 'run')) + + depends_on('r-proto@1:', type=('build', 'run'), when='@1.0.0:1.9.9') + depends_on('r-getopt', type=('build', 'run'), when='@1.0.0:1.9.9') diff --git a/var/spack/repos/builtin/packages/r-aroma-light/package.py b/var/spack/repos/builtin/packages/r-aroma-light/package.py index 5e4935dde2274c..e56aa3203d56ca 100644 --- a/var/spack/repos/builtin/packages/r-aroma-light/package.py +++ b/var/spack/repos/builtin/packages/r-aroma-light/package.py @@ -8,22 +8,22 @@ class RAromaLight(RPackage): """Light-Weight Methods for Normalization and Visualization of Microarray - Data using Only Basic R Data Types + Data using Only Basic R Data Types. Methods for microarray analysis that take basic data types such as matrices and lists of vectors. These methods can be used standalone, be utilized in other packages, or be wrapped up in higher-level classes.""" - homepage = "https://www.aroma-project.org/" - git = "https://git.bioconductor.org/packages/aroma.light" + bioc = "aroma.light" + version('3.24.0', commit='3ff48b8f546acc9803b3c652363cac78d3b81ae5') version('3.20.0', commit='02cde7fa166259bce73c396a87dca2ecc8249c39') version('3.16.0', commit='fc16179fc4bee8954c5415d7cd13e3112b75b4fd') depends_on('r@2.15.2:', type=('build', 'run')) depends_on('r-r-methodss3@1.7.1:', type=('build', 'run')) depends_on('r-r-oo@1.22.0:', type=('build', 'run')) - depends_on('r-r-oo@1.23.0:', when='@3.20.0:', type=('build', 'run')) + depends_on('r-r-oo@1.23.0:', type=('build', 'run'), when='@3.20.0:') depends_on('r-r-utils@2.9.0:', type=('build', 'run')) depends_on('r-matrixstats@0.54.0:', type=('build', 'run')) - depends_on('r-matrixstats@0.55.0:', when='@3.20.0:', type=('build', 'run')) + depends_on('r-matrixstats@0.55.0:', type=('build', 'run'), when='@3.20.0:') diff --git a/var/spack/repos/builtin/packages/r-ash/package.py b/var/spack/repos/builtin/packages/r-ash/package.py index 9d9658276f38cc..9b2bc4f602881f 100644 --- a/var/spack/repos/builtin/packages/r-ash/package.py +++ b/var/spack/repos/builtin/packages/r-ash/package.py @@ -5,7 +5,9 @@ class RAsh(RPackage): - """David Scott's ASH routines ported from S-PLUS to R.""" + """David Scott's ASH Routines. + + David Scott's ASH routines ported from S-PLUS to R.""" cran = 'ash' diff --git a/var/spack/repos/builtin/packages/r-askpass/package.py b/var/spack/repos/builtin/packages/r-askpass/package.py index e88404d6906f8f..abe0cc3edc8c90 100644 --- a/var/spack/repos/builtin/packages/r-askpass/package.py +++ b/var/spack/repos/builtin/packages/r-askpass/package.py @@ -7,7 +7,9 @@ class RAskpass(RPackage): - """Cross-platform utilities for prompting the user for credentials or a + """Safe Password Entry for R, Git, and SSH. + + Cross-platform utilities for prompting the user for credentials or a passphrase, for example to authenticate with a server or read a protected key. Includes native programs for MacOS and Windows, hence no 'tcltk' is required. Password entry can be invoked in two different ways: directly @@ -16,9 +18,7 @@ class RAskpass(RPackage): environment variables. Thereby the user can be prompted for credentials or a passphrase if needed when R calls out to git or ssh.""" - homepage = "https://github.com/jeroen/askpass#readme" - url = "https://cloud.r-project.org/src/contrib/askpass_1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/askpass" + cran = "askpass" version('1.1', sha256='db40827d1bdbb90c0aa2846a2961d3bf9d76ad1b392302f9dd84cc2fd18c001f') diff --git a/var/spack/repos/builtin/packages/r-assertive-base/package.py b/var/spack/repos/builtin/packages/r-assertive-base/package.py index b650706c57db8e..f43506932febc7 100644 --- a/var/spack/repos/builtin/packages/r-assertive-base/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-base/package.py @@ -7,18 +7,18 @@ class RAssertiveBase(RPackage): - """assertive.base: A Lightweight Core of the 'assertive' Package + """A Lightweight Core of the 'assertive' Package. A minimal set of predicates and assertions used by the assertive package. - This is mainly for use by other package developers who want to include run-time - testing features in their own packages. End-users will usually want to use - assertive directly.""" + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.base" - url = "https://cloud.r-project.org/src/contrib/assertive.base_0.0-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.base" + cran = "assertive.base" + version('0.0-9', sha256='4bf0910b0eaa507e0e11c3c43c316b524500c548d307eb045d6f89047e6ba01e') version('0.0-7', sha256='f02d4eca849f512500abb266a2a751d1fa2cf064f7142e5161a77c20b7f643f7') version('0.0-1', sha256='6a5fb06ad912f01cd8aaf2aa7c8ca03b8ebbb1c5eb2be47fa145930f15f4d258') depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.0-9:') 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 4c6bf2ecf54797..bcfdea42b9c9b7 100644 --- a/var/spack/repos/builtin/packages/r-assertive-code/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-code/package.py @@ -7,17 +7,14 @@ class RAssertiveCode(RPackage): - """assertive.code: Assertions to Check Properties of Code + """Assertions to Check Properties of Code. - A set of predicates and assertions for checking the - properties of code. This is mainly for use by other package - developers who want to include run-time testing features in - their own packages. End-users will usually want to use - assertive directly.""" + A set of predicates and assertions for checking the properties of code. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.code" - url = "https://cloud.r-project.org/src/contrib/assertive.code_0.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.code" + cran = "assertive.code" version('0.0-3', sha256='ef80e8d1d683d776a7618e78ddccffca7f72ab4a0fcead90c670bb8f8cb90be2') diff --git a/var/spack/repos/builtin/packages/r-assertive-data-uk/package.py b/var/spack/repos/builtin/packages/r-assertive-data-uk/package.py index 6498ee089f1ba7..6bdd67fc467124 100644 --- a/var/spack/repos/builtin/packages/r-assertive-data-uk/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-data-uk/package.py @@ -7,17 +7,14 @@ class RAssertiveDataUk(RPackage): - """assertive.data.uk: Assertions to Check Properties of Strings + """Assertions to Check Properties of Strings. - A set of predicates and assertions for checking the - properties of UK-specific complex data types. This is - mainly for use by other package developers who want to - include run-time testing features in their own packages. - End-users will usually want to use assertive directly.""" + A set of predicates and assertions for checking the properties of + UK-specific complex data types. This is mainly for use by other package + developers who want to include run-time testing features in their own + packages. End-users will usually want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.data.uk" - url = "https://cloud.r-project.org/src/contrib/assertive.data.uk_0.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.data.uk" + cran = "assertive.data.uk" version('0.0-2', sha256='ab48dab6977e8f43d6fffb33228d158865f68dde7026d123c693d77339dcf2bb') diff --git a/var/spack/repos/builtin/packages/r-assertive-data-us/package.py b/var/spack/repos/builtin/packages/r-assertive-data-us/package.py index 04874cce97cb04..5fa46f6d50e0d8 100644 --- a/var/spack/repos/builtin/packages/r-assertive-data-us/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-data-us/package.py @@ -7,17 +7,14 @@ class RAssertiveDataUs(RPackage): - """assertive.data.us: Assertions to Check Properties of Strings + """Assertions to Check Properties of Strings. - A set of predicates and assertions for checking the - properties of US-specific complex data types. This is - mainly for use by other package developers who want to - include run-time testing features in their own packages. - End-users will usually want to use assertive directly.""" + A set of predicates and assertions for checking the properties of + US-specific complex data types. This is mainly for use by other package + developers who want to include run-time testing features in their own + packages. End-users will usually want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.data.us" - url = "https://cloud.r-project.org/src/contrib/assertive.data.us_0.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.data.us" + cran = "assertive.data.us" version('0.0-2', sha256='180e64dfe6339d25dd27d7fe9e77619ef697ef6e5bb6a3cf4fb732a681bdfaad') diff --git a/var/spack/repos/builtin/packages/r-assertive-data/package.py b/var/spack/repos/builtin/packages/r-assertive-data/package.py index a1031c67c74723..c37636f7f1ff35 100644 --- a/var/spack/repos/builtin/packages/r-assertive-data/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-data/package.py @@ -7,17 +7,14 @@ class RAssertiveData(RPackage): - """assertive.data: Assertions to Check Properties of Data + """Assertions to Check Properties of Data. - A set of predicates and assertions for checking the - properties of (country independent) complex data types. - This is mainly for use by other package developers who want - to include run-time testing features in their own packages. - End-users will usually want to use assertive directly.""" + A set of predicates and assertions for checking the properties of (country + independent) complex data types. This is mainly for use by other package + developers who want to include run-time testing features in their own + packages. End-users will usually want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.data" - url = "https://cloud.r-project.org/src/contrib/assertive.data_0.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.data" + cran = "assertive.data" version('0.0-3', sha256='5a00fb48ad870d9b3c872ce3d6aa20a7948687a980f49fe945b455339e789b01') diff --git a/var/spack/repos/builtin/packages/r-assertive-datetimes/package.py b/var/spack/repos/builtin/packages/r-assertive-datetimes/package.py index ee335e0f4c6eb6..7d1667b51941d9 100644 --- a/var/spack/repos/builtin/packages/r-assertive-datetimes/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-datetimes/package.py @@ -7,16 +7,14 @@ class RAssertiveDatetimes(RPackage): - """assertive.datetimes: Assertions to Check Properties of Dates and Times + """Assertions to Check Properties of Dates and Times. - A set of predicates and assertions for checking the properties of - dates and times. This is mainly for use by other package developers - who want to include run-time testing features in their own packages. - End-users will usually want to use assertive directly.""" + A set of predicates and assertions for checking the properties of dates and + times. This is mainly for use by other package developers who want to + include run-time testing features in their own packages. End-users will + usually want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.datetimes" - url = "https://cloud.r-project.org/src/contrib/assertive.datetimes_0.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.datetimes" + cran = "assertive.datetimes" version('0.0-3', sha256='014e2162f5a8d95138ed8330f7477e71c908a29341697c09a1b7198b7e012d94') diff --git a/var/spack/repos/builtin/packages/r-assertive-files/package.py b/var/spack/repos/builtin/packages/r-assertive-files/package.py index 61fc5e590d9a71..01f1c03b7a17f3 100644 --- a/var/spack/repos/builtin/packages/r-assertive-files/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-files/package.py @@ -7,17 +7,14 @@ class RAssertiveFiles(RPackage): - """assertive.files: Assertions to Check Properties of Files + """Assertions to Check Properties of Files. - A set of predicates and assertions for checking the - properties of files and connections. This is mainly for use - by other package developers who want to include run-time - testing features in their own packages. End-users will + A set of predicates and assertions for checking the properties of files and + connections. This is mainly for use by other package developers who want to + include run-time testing features in their own packages. End-users will usually want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.files" - url = "https://cloud.r-project.org/src/contrib/assertive.files_0.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.files" + cran = "assertive.files" version('0.0-2', sha256='be6adda6f18a0427449249e44c2deff4444a123244b16fe82c92f15d24faee0a') diff --git a/var/spack/repos/builtin/packages/r-assertive-matrices/package.py b/var/spack/repos/builtin/packages/r-assertive-matrices/package.py index d1b17cc27c20e4..5a172263d81577 100644 --- a/var/spack/repos/builtin/packages/r-assertive-matrices/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-matrices/package.py @@ -7,18 +7,14 @@ class RAssertiveMatrices(RPackage): - """assertive.matrices: Assertions to Check Properties of - Matrices + """Assertions to Check Properties of Matrices. - A set of predicates and assertions for checking the - properties of matrices. This is mainly for use by other - package developers who want to include run-time testing - features in their own packages. End-users will usually want - to use assertive directly.""" + A set of predicates and assertions for checking the properties of matrices. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.matrices" - url = "https://cloud.r-project.org/src/contrib/assertive.matrices_0.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.matrices" + cran = "assertive.matrices" version('0.0-2', sha256='3462a7a7e11d7cc24180330d48cc3067cf92eab1699b3e4813deec66d99f5e9b') diff --git a/var/spack/repos/builtin/packages/r-assertive-models/package.py b/var/spack/repos/builtin/packages/r-assertive-models/package.py index 4fa585a63f1126..6c34b4f8a3b84f 100644 --- a/var/spack/repos/builtin/packages/r-assertive-models/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-models/package.py @@ -7,17 +7,14 @@ class RAssertiveModels(RPackage): - """assertive.models: Assertions to Check Properties of Models + """Assertions to Check Properties of Models. - A set of predicates and assertions for checking the - properties of models. This is mainly for use by other - package developers who want to include run-time testing - features in their own packages. End-users will usually want - to use assertive directly.""" + A set of predicates and assertions for checking the properties of models. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.models" - url = "https://cloud.r-project.org/src/contrib/assertive.models_0.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.models" + cran = "assertive.models" version('0.0-2', sha256='b9a6d8786f352d53371dbe8c5f2f2a62a7866e30313f268e69626d5c3691c42e') diff --git a/var/spack/repos/builtin/packages/r-assertive-numbers/package.py b/var/spack/repos/builtin/packages/r-assertive-numbers/package.py index e16d64c2dcb660..7d5fb3144735ac 100644 --- a/var/spack/repos/builtin/packages/r-assertive-numbers/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-numbers/package.py @@ -7,17 +7,14 @@ class RAssertiveNumbers(RPackage): - """assertive.numbers: Assertions to Check Properties of Numbers + """Assertions to Check Properties of Numbers. - A set of predicates and assertions for checking the - properties of numbers. This is mainly for use by other - package developers who want to include run-time testing - features in their own packages. End-users will usually want - to use assertive directly.""" + A set of predicates and assertions for checking the properties of numbers. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.numbers" - url = "https://cloud.r-project.org/src/contrib/assertive.numbers_0.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.numbers" + cran = "assertive.numbers" version('0.0-2', sha256='bae18c0b9e5b960a20636e127eb738ecd8a266e5fc29d8bc5ca712498cd68349') diff --git a/var/spack/repos/builtin/packages/r-assertive-properties/package.py b/var/spack/repos/builtin/packages/r-assertive-properties/package.py index 105956cedde2e8..32f294cb866275 100644 --- a/var/spack/repos/builtin/packages/r-assertive-properties/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-properties/package.py @@ -7,19 +7,15 @@ class RAssertiveProperties(RPackage): - """assertive.properties: Assertions to Check Properties of - Variables + """Assertions to Check Properties of Variables. - A set of predicates and assertions for checking the - properties of variables, such as length, names and - attributes. This is mainly for use by other package - developers who want to include run-time testing features in - their own packages. End-users will usually want to use - assertive directly.""" + A set of predicates and assertions for checking the properties of + variables, such as length, names and attributes. This is mainly for use by + other package developers who want to include run-time testing features in + their own packages. End-users will usually want to use assertive + directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.properties" - url = "https://cloud.r-project.org/src/contrib/assertive.properties_0.0-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.properties" + cran = "assertive.properties" version('0.0-4', sha256='5c0663fecb4b7c30f2e1d65da8644534fcfe97fb3d8b51f74c1327cd14291a6b') diff --git a/var/spack/repos/builtin/packages/r-assertive-reflection/package.py b/var/spack/repos/builtin/packages/r-assertive-reflection/package.py index 0b0a9dc713a85a..71d6a0cafcbb2b 100644 --- a/var/spack/repos/builtin/packages/r-assertive-reflection/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-reflection/package.py @@ -7,18 +7,15 @@ class RAssertiveReflection(RPackage): - """assertive.reflection: Assertions for Checking the State of R + """Assertions for Checking the State of R. - A set of predicates and assertions for checking the state - and capabilities of R, the operating system it is running - on, and the IDE being used. This is mainly for use by other - package developers who want to include run-time testing - features in their own packages. End-users will usually want - to use assertive directly.""" + A set of predicates and assertions for checking the state and capabilities + of R, the operating system it is running on, and the IDE being used. This + is mainly for use by other package developers who want to include run-time + testing features in their own packages. End-users will usually want to use + assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.reflection" - url = "https://cloud.r-project.org/src/contrib/assertive.reflection_0.0-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.reflection" + cran = "assertive.reflection" version('0.0-5', sha256='c2ca9b27cdddb9b9876351afd2ebfaf0fbe72c636cd12aa2af5d64e33fbf34bd') diff --git a/var/spack/repos/builtin/packages/r-assertive-sets/package.py b/var/spack/repos/builtin/packages/r-assertive-sets/package.py index a35ac01de181d6..cb2214c8a98c56 100644 --- a/var/spack/repos/builtin/packages/r-assertive-sets/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-sets/package.py @@ -7,17 +7,14 @@ class RAssertiveSets(RPackage): - """assertive.sets: Assertions to Check Properties of Sets + """Assertions to Check Properties of Sets. - A set of predicates and assertions for checking the - properties of sets. This is mainly for use by other package - developers who want to include run-time testing features in - their own packages. End-users will usually want to use - assertive directly.""" + A set of predicates and assertions for checking the properties of sets. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.sets" - url = "https://cloud.r-project.org/src/contrib/assertive.sets_0.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.sets" + cran = "assertive.sets" version('0.0-3', sha256='876975a16ed911ea1ad12da284111c6eada6abfc0118585033abc0edb5801bb3') diff --git a/var/spack/repos/builtin/packages/r-assertive-strings/package.py b/var/spack/repos/builtin/packages/r-assertive-strings/package.py index ea37fb6364aee3..2b6d49f2aed557 100644 --- a/var/spack/repos/builtin/packages/r-assertive-strings/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-strings/package.py @@ -7,17 +7,14 @@ class RAssertiveStrings(RPackage): - """assertive.strings: Assertions to Check Properties of Strings + """Assertions to Check Properties of Strings. - A set of predicates and assertions for checking the - properties of strings. This is mainly for use by other - package developers who want to include run-time testing - features in their own packages. End-users will usually want - to use assertive directly.""" + A set of predicates and assertions for checking the properties of strings. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.strings" - url = "https://cloud.r-project.org/src/contrib/assertive.strings_0.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.strings" + cran = "assertive.strings" version('0.0-3', sha256='d541d608a01640347d661cc9a67af8202904142031a20caa270f1c83d0ccd258') diff --git a/var/spack/repos/builtin/packages/r-assertive-types/package.py b/var/spack/repos/builtin/packages/r-assertive-types/package.py index c84b89cabdb965..a2834f62210902 100644 --- a/var/spack/repos/builtin/packages/r-assertive-types/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-types/package.py @@ -7,17 +7,14 @@ class RAssertiveTypes(RPackage): - """assertive.types: Assertions to Check Types of Variables + """Assertions to Check Types of Variables. - A set of predicates and assertions for checking the types - of variables. This is mainly for use by other package - developers who want to include run-time testing features in - their own packages. End-users will usually want to use - assertive directly.""" + A set of predicates and assertions for checking the types of variables. + This is mainly for use by other package developers who want to include + run-time testing features in their own packages. End-users will usually + want to use assertive directly.""" - homepage = "https://bitbucket.org/richierocks/assertive.types" - url = "https://cloud.r-project.org/src/contrib/assertive.types_0.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive.types" + cran = "assertive.types" version('0.0-3', sha256='ab6db2eb926e7bc885f2043fab679330aa336d07755375282d89bf9f9d0cb87f') diff --git a/var/spack/repos/builtin/packages/r-assertive/package.py b/var/spack/repos/builtin/packages/r-assertive/package.py index 5ba292bbeec908..1f979124d90243 100644 --- a/var/spack/repos/builtin/packages/r-assertive/package.py +++ b/var/spack/repos/builtin/packages/r-assertive/package.py @@ -7,15 +7,13 @@ class RAssertive(RPackage): - """assertive: Readable Check Functions to Ensure Code Integrity + """Readable Check Functions to Ensure Code Integrity. - Lots of predicates (is_* functions) to check the state of your - variables, and assertions (assert_* functions) to throw errors if - they aren't in the right form.""" + Lots of predicates (is_* functions) to check the state of your variables, + and assertions (assert_* functions) to throw errors if they aren't in the + right form.""" - homepage = "https://bitbucket.org/richierocks/assertive" - url = "https://cloud.r-project.org/src/contrib/assertive_0.3-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertive" + cran = "assertive" version('0.3-6', sha256='c403169e83c433b65e911f7fd640b378e2a4a4765a36063584b8458168a4ea0a') diff --git a/var/spack/repos/builtin/packages/r-assertthat/package.py b/var/spack/repos/builtin/packages/r-assertthat/package.py index e41e1af092b4ec..fd302e29b4af93 100644 --- a/var/spack/repos/builtin/packages/r-assertthat/package.py +++ b/var/spack/repos/builtin/packages/r-assertthat/package.py @@ -7,14 +7,13 @@ class RAssertthat(RPackage): - """assertthat is an extension to stopifnot() that makes it easy to declare - the pre and post conditions that you code should satisfy, while also - producing friendly error messages so that your users know what they've done - wrong.""" + """Easy Pre and Post Assertions. - homepage = "https://cloud.r-project.org/package=assertthat" - url = "https://cloud.r-project.org/src/contrib/assertthat_0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/assertthat" + An extension to stopifnot() that makes it easy to declare the pre and post + conditions that you code should satisfy, while also producing friendly + error messages so that your users know what's gone wrong.""" + + cran = "assertthat" version('0.2.1', sha256='85cf7fcc4753a8c86da9a6f454e46c2a58ffc70c4f47cac4d3e3bcefda2a9e9f') version('0.2.0', sha256='d73ef79b1e75293ed889a99571b237a95829c099f7da094d4763f83ea6fde5f2') diff --git a/var/spack/repos/builtin/packages/r-backports/package.py b/var/spack/repos/builtin/packages/r-backports/package.py index 79f14a79774b74..5df7aeda47870d 100644 --- a/var/spack/repos/builtin/packages/r-backports/package.py +++ b/var/spack/repos/builtin/packages/r-backports/package.py @@ -7,7 +7,7 @@ class RBackports(RPackage): - """Reimplementations of Functions Introduced Since R-3.0.0 + """Reimplementations of Functions Introduced Since R-3.0.0. Functions introduced or changed since R v3.0.0 are re-implemented in this package. The backports are conditionally exported in order to let R resolve @@ -16,9 +16,9 @@ class RBackports(RPackage): functions or arguments by selectively importing specific backports to support older installations.""" - homepage = "https://github.com/r-lib/backports" cran = "backports" + version('1.4.1', sha256='845c3c59fbb05e5a892c4231b955a0afdd331d82b7cc815bcff0672023242474') version('1.4.0', sha256='e7611565d24a852ad8b08579a7c67ad9121c1bda148bade98c7bec686e8dabbf') version('1.2.1', sha256='a2834bbd57e305e5d8010322f1906ea1789b3b5ba5eca77c5ff4248aceb7c2d5') version('1.1.4', sha256='ee4b5efef22fa7ef27d7983ffcd31db52f81e1fbb7189c6e89ee09b69349ff03') diff --git a/var/spack/repos/builtin/packages/r-bamsignals/package.py b/var/spack/repos/builtin/packages/r-bamsignals/package.py index 808dab89347913..79d676cd2100cf 100644 --- a/var/spack/repos/builtin/packages/r-bamsignals/package.py +++ b/var/spack/repos/builtin/packages/r-bamsignals/package.py @@ -7,16 +7,16 @@ class RBamsignals(RPackage): - """Extract read count signals from bam files + """Extract read count signals from bam files. This package allows to efficiently obtain count vectors from indexed bam files. It counts the number of reads in given genomic ranges and it computes reads profiles and coverage profiles. It also handles paired- end data.""" - homepage = "https://bioconductor.org/packages/bamsignals" - git = "https://git.bioconductor.org/packages/bamsignals.git" + bioc = "bamsignals" + version('1.26.0', commit='d57643441d04f77db0907637dc9e7cd5bed5842f') version('1.22.0', commit='5f533969c84212406bcb3ebf725ebb6d77e9947a') version('1.16.0', commit='dba9a4ae1613d2700f122ade1e9b90ca8fce5657') version('1.14.0', commit='3107d3a35830e879eeddf127a81016ea1ca9b53d') @@ -31,9 +31,9 @@ class RBamsignals(RPackage): depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-zlibbioc', type=('build', 'run')) depends_on('r-rhtslib', type=('build', 'run')) - depends_on('r-rhtslib@1.12.1:', when='@1.12.1:', type=('build', 'run')) - depends_on('r-rhtslib@1.13.1:', when='@1.14.0:', type=('build', 'run')) + depends_on('r-rhtslib@1.12.1:', type=('build', 'run'), when='@1.12.1:') + depends_on('r-rhtslib@1.13.1:', type=('build', 'run'), when='@1.14.0:') depends_on('gmake', type='build') - # this is no listed but is needed + # this is not listed but is needed depends_on('curl') diff --git a/var/spack/repos/builtin/packages/r-base64/package.py b/var/spack/repos/builtin/packages/r-base64/package.py index f48ffdc16d634a..2dc375af8530e4 100644 --- a/var/spack/repos/builtin/packages/r-base64/package.py +++ b/var/spack/repos/builtin/packages/r-base64/package.py @@ -7,13 +7,13 @@ class RBase64(RPackage): - """Compatibility wrapper to replace the orphaned package by Romain - Francois. New applications should use the 'openssl' or 'base64enc' - package instead.""" + """Base64 Encoder and Decoder. - homepage = "https://cloud.r-project.org/package=base64" - url = "https://cloud.r-project.org/src/contrib/base64_2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/base64" + Compatibility wrapper to replace the orphaned package by Romain Francois. + New applications should use the 'openssl' or 'base64enc' package + instead.""" + + cran = "base64" version('2.0', sha256='8e259c2b12446197d1152b83a81bab84ccb5a5b77021a9b5645dd4c63c804bd1') diff --git a/var/spack/repos/builtin/packages/r-base64enc/package.py b/var/spack/repos/builtin/packages/r-base64enc/package.py index 188d72a04257d9..9f7a2abc56caab 100644 --- a/var/spack/repos/builtin/packages/r-base64enc/package.py +++ b/var/spack/repos/builtin/packages/r-base64enc/package.py @@ -7,12 +7,12 @@ class RBase64enc(RPackage): - """This package provides tools for handling base64 encoding. It is more + """Tools for base64 encoding. + + This package provides tools for handling base64 encoding. It is more flexible than the orphaned base64 package.""" - homepage = "https://www.rforge.net/base64enc" - url = "https://cloud.r-project.org/src/contrib/base64enc_0.1-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/base64enc" + cran = "base64enc" version('0.1-3', sha256='6d856d8a364bcdc499a0bf38bfd283b7c743d08f0b288174fba7dbf0a04b688d') diff --git a/var/spack/repos/builtin/packages/r-bayesm/package.py b/var/spack/repos/builtin/packages/r-bayesm/package.py index 146e7eb353e27a..7ae38491f42d87 100644 --- a/var/spack/repos/builtin/packages/r-bayesm/package.py +++ b/var/spack/repos/builtin/packages/r-bayesm/package.py @@ -7,7 +7,7 @@ class RBayesm(RPackage): - """Bayesian Inference for Marketing/Micro-Econometrics + """Bayesian Inference for Marketing/Micro-Econometrics. Covers many important models used in marketing and micro-econometrics applications. The package includes: Bayes Regression (univariate or @@ -29,9 +29,7 @@ class RBayesm(RPackage): 2005) and Bayesian Non- and Semi-Parametric Methods and Applications (Princeton U Press 2014).""" - homepage = "https://cloud.r-project.org/package=bayesm" - url = "https://cloud.r-project.org/src/contrib/bayesm_3.1-0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bayesm" + cran = "bayesm" 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 743f695f0b9adb..ba073c77d33af5 100644 --- a/var/spack/repos/builtin/packages/r-bayesplot/package.py +++ b/var/spack/repos/builtin/packages/r-bayesplot/package.py @@ -7,7 +7,7 @@ class RBayesplot(RPackage): - """Plotting for Bayesian Models: + """Plotting for Bayesian Models. Plotting functions for posterior analysis, MCMC diagnostics, prior and posterior predictive checks, and other visualizations to support the @@ -18,8 +18,7 @@ class RBayesplot(RPackage): R packages for Bayesian modeling, particularly (but not exclusively) packages interfacing with 'Stan'.""" - homepage = "https://mc-stan.org/bayesplot/" - cran = "bayesplot" + cran = "bayesplot" version('1.8.1', sha256='d8d74201ea91fa5438714686ca22a947ec9375b6c12b0cfef010c57104b1aa2a') version('1.8.0', sha256='a605f9929e681593a3ef3ca9c836e713314994aaea00f359f71cfc42d151c948') diff --git a/var/spack/repos/builtin/packages/r-bbmisc/package.py b/var/spack/repos/builtin/packages/r-bbmisc/package.py index 932e15bb6b716c..4e194b616544a1 100644 --- a/var/spack/repos/builtin/packages/r-bbmisc/package.py +++ b/var/spack/repos/builtin/packages/r-bbmisc/package.py @@ -7,12 +7,12 @@ class RBbmisc(RPackage): - """Miscellaneous helper functions for and from B. Bischl and some other - guys, mainly for package development.""" + """Miscellaneous Helper Functions for B. Bischl. - homepage = "https://github.com/berndbischl/BBmisc" - url = "https://cloud.r-project.org/src/contrib/BBmisc_1.11.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/BBmisc" + Miscellaneous helper functions for and from B. Bischl and some other guys, + mainly for package development.""" + + cran = "BBmisc" version('1.11', sha256='1ea48c281825349d8642a661bb447e23bfd651db3599bf72593bfebe17b101d2') diff --git a/var/spack/repos/builtin/packages/r-beachmat/package.py b/var/spack/repos/builtin/packages/r-beachmat/package.py index afb8a745f3e8e8..e974fd6227df2b 100644 --- a/var/spack/repos/builtin/packages/r-beachmat/package.py +++ b/var/spack/repos/builtin/packages/r-beachmat/package.py @@ -7,7 +7,7 @@ class RBeachmat(RPackage): - """Compiling Bioconductor to Handle Each Matrix Type + """Compiling Bioconductor to Handle Each Matrix Type. Provides a consistent C++ class interface for reading from and writing data to a variety of commonly used matrix types. Ordinary matrices and @@ -15,9 +15,9 @@ class RBeachmat(RPackage): S4 classes may be supported by external linkage, while all other matrices are handled by DelayedArray block processing.""" - homepage = "https://bioconductor.org/packages/beachmat" - git = "https://git.bioconductor.org/packages/beachmat.git" + bioc = "beachmat" + version('2.10.0', commit='b7cc532d4a5b26d9073135cc9945258ea08e5079') version('2.6.4', commit='7d9dc6379017d723dda3e8dc9fd1f6de7fd33cdb') version('2.0.0', commit='2bdac6ce7b636fd16f78641a0bcc2181670107ab') version('1.4.0', commit='e3b7a21cae0080d077a0d40e35d1d148f088720a') @@ -25,17 +25,19 @@ class RBeachmat(RPackage): version('1.0.2', commit='6bd57b91d6428ac916f46572d685d3cb01a757f7') depends_on('r@3.4:', type=('build', 'run')) - depends_on('r@3.5:', when='@1.2.1:1.4.0', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@1.2.1:1.4.0') depends_on('r-delayedarray', type=('build', 'run')) - depends_on('r-delayedarray@0.5.30:', when='@1.2.1', type=('build', 'run')) - depends_on('r-delayedarray@0.7.38:', when='@1.4.0', type=('build', 'run')) - depends_on('r-delayedarray@0.15.14:', when='@2.6.4', type=('build', 'run')) - depends_on('r-biocgenerics', when='@1.4.0:', type=('build', 'run')) - depends_on('r-matrix', when='@2.6.4:', type=('build', 'run')) - depends_on('r-rhdf5lib', when='@1.0.2:1.4.0', type=('build', 'run')) - depends_on('r-rhdf5lib@1.1.4:', when='@1.2.1', type=('build', 'run')) - depends_on('r-hdf5array', when='@1.0.2:1.4.0', type=('build', 'run')) - depends_on('r-hdf5array@1.7.3:', when='@1.2.1', type=('build', 'run')) - depends_on('r-hdf5array@1.9.5:', when='@1.4.0', type=('build', 'run')) - depends_on('r-rcpp@0.12.14:', when='@1.0.2:1.4.0', type=('build', 'run')) - depends_on('r-rhdf5', when='@1.0.2:1.4.0', type=('build', 'run')) + depends_on('r-delayedarray@0.5.30:', type=('build', 'run'), when='@1.2.1') + depends_on('r-delayedarray@0.7.38:', type=('build', 'run'), when='@1.4.0') + depends_on('r-delayedarray@0.15.14:', type=('build', 'run'), when='@2.6.4') + depends_on('r-biocgenerics', type=('build', 'run'), when='@1.4.0:') + depends_on('r-matrix', type=('build', 'run'), when='@2.6.4:') + depends_on('r-rcpp@0.12.14:', type=('build', 'run'), when='@1.0.2:1.4.0') + depends_on('r-rcpp', type=('build', 'run'), when='@2.10.0:') + + depends_on('r-rhdf5lib', type=('build', 'run'), when='@1.0.2:1.4.0') + depends_on('r-rhdf5lib@1.1.4:', type=('build', 'run'), when='@1.2.1') + depends_on('r-hdf5array', type=('build', 'run'), when='@1.0.2:1.4.0') + depends_on('r-hdf5array@1.7.3:', type=('build', 'run'), when='@1.2.1') + depends_on('r-hdf5array@1.9.5:', type=('build', 'run'), when='@1.4.0') + depends_on('r-rhdf5', type=('build', 'run'), when='@1.0.2:1.4.0') diff --git a/var/spack/repos/builtin/packages/r-beanplot/package.py b/var/spack/repos/builtin/packages/r-beanplot/package.py index 4b944216a9ace8..d13ad54c8a1c05 100644 --- a/var/spack/repos/builtin/packages/r-beanplot/package.py +++ b/var/spack/repos/builtin/packages/r-beanplot/package.py @@ -7,11 +7,11 @@ class RBeanplot(RPackage): - """Plots univariate comparison graphs, an alternative to - boxplot/stripchart/violin plot.""" + """Visualization via Beanplots (like Boxplot/Stripchart/Violin Plot). - homepage = "https://cloud.r-project.org/package=beanplot" - url = "https://cloud.r-project.org/src/contrib/beanplot_1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/beanplot" + Plots univariate comparison graphs, an alternative to + boxplot/stripchart/violin plot.""" + + cran = "beanplot" version('1.2', sha256='49da299139a47171c5b4ccdea79ffbbc152894e05d552e676f135147c0c9b372') diff --git a/var/spack/repos/builtin/packages/r-beeswarm/package.py b/var/spack/repos/builtin/packages/r-beeswarm/package.py index 702f710d94db9e..cbcb00777ce35f 100644 --- a/var/spack/repos/builtin/packages/r-beeswarm/package.py +++ b/var/spack/repos/builtin/packages/r-beeswarm/package.py @@ -7,10 +7,12 @@ class RBeeswarm(RPackage): - """beeswarm: The Bee Swarm Plot, an Alternative to Stripchart""" + """The Bee Swarm Plot, an Alternative to Stripchart. - homepage = "https://www.cbs.dtu.dk/~eklund/beeswarm/" - url = "https://cloud.r-project.org/src/contrib/beeswarm_0.2.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/beeswarm" + The bee swarm plot is a one-dimensional scatter plot like "stripchart", but + with closely-packed, non-overlapping points.""" + cran = "beeswarm" + + version('0.4.0', sha256='51f4339bf4080a2be84bb49a844c636625657fbed994abeaa42aead916c3d504') version('0.2.3', sha256='0115425e210dced05da8e162c8455526a47314f72e441ad2a33dcab3f94ac843') diff --git a/var/spack/repos/builtin/packages/r-bfast/package.py b/var/spack/repos/builtin/packages/r-bfast/package.py index 835ca1c5697af5..4dd70c5f167d7c 100644 --- a/var/spack/repos/builtin/packages/r-bfast/package.py +++ b/var/spack/repos/builtin/packages/r-bfast/package.py @@ -7,17 +7,37 @@ class RBfast(RPackage): - """bfast: Breaks For Additive Season and Trend (BFAST)""" + """Breaks for Additive Season and Trend. - homepage = "https://cloud.r-project.org/package=bfast" - url = "https://cloud.r-project.org/src/contrib/bfast_1.5.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bfast" + Decomposition of time series into trend, seasonal, and remainder components + with methods for detecting and characterizing abrupt changes within the + trend and seasonal components. 'BFAST' can be used to analyze different + types of satellite image time series and can be applied to other + disciplines dealing with seasonal or non-seasonal time series, such as + hydrology, climatology, and econometrics. The algorithm can be extended to + label detected changes with information on the parameters of the fitted + piecewise linear models. 'BFAST' monitoring functionality is described in + Verbesselt et al. (2010) . 'BFAST monitor' + provides functionality to detect disturbance in near real-time based on + 'BFAST'- type models, and is described in Verbesselt et al. (2012) + . 'BFAST Lite' approach is a flexible + approach that handles missing data without interpolation, and will be + described in an upcoming paper. Furthermore, different models can now be + used to fit the time series data and detect structural changes (breaks).""" + cran = "bfast" + + version('1.6.1', sha256='aaf479af1924691cbec8c67c68005c00d97cead51b2b44863c18acd4cea453ee') version('1.5.7', sha256='01585fe8944d05ebdb13795214077bc1365f0c0372e2a1f7edb914356dace558') depends_on('r@2.15.0:', type=('build', 'run')) - depends_on('r-strucchange', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run'), when='@1.6.1:') + depends_on('r-strucchangercpp', type=('build', 'run'), when='@1.6.1:') depends_on('r-zoo', type=('build', 'run')) depends_on('r-forecast', type=('build', 'run')) - depends_on('r-sp', type=('build', 'run')) - depends_on('r-raster', type=('build', 'run')) + depends_on('r-rcpp@0.12.7:', type=('build', 'run'), when='@1.6.1:') + depends_on('r-rdpack@0.7:', type=('build', 'run'), when='@1.6.1:') + + depends_on('r-strucchange', type=('build', 'run'), when='@:1.5.7') + depends_on('r-sp', type=('build', 'run'), when='@:1.5.7') + depends_on('r-raster', type=('build', 'run'), when='@:1.5.7') diff --git a/var/spack/repos/builtin/packages/r-bglr/package.py b/var/spack/repos/builtin/packages/r-bglr/package.py index 81935cbc76a3b1..9013942a46f4e8 100644 --- a/var/spack/repos/builtin/packages/r-bglr/package.py +++ b/var/spack/repos/builtin/packages/r-bglr/package.py @@ -7,13 +7,13 @@ class RBglr(RPackage): - """BGLR: Bayesian Generalized Linear Regression""" + """Bayesian Generalized Linear Regression.""" - homepage = "https://cloud.r-project.org/package=BGLR" - url = "https://cloud.r-project.org/src/contrib/BGLR_1.0.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/BGLR" + cran = "BGLR" + version('1.0.9', sha256='440a96f9f502e0d6ecc8c00720d1ccdbab5ee8223e1def6c930edaa9a9de9099') version('1.0.8', sha256='5e969590d80b2f272c02a43b487ab1ffa13af386e0342993e6ac484fc82c9b95') depends_on('r@3.5.0:', type=('build', 'run')) depends_on('r-truncnorm', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run'), when='@1.0.9:') diff --git a/var/spack/repos/builtin/packages/r-bh/package.py b/var/spack/repos/builtin/packages/r-bh/package.py index 25d8efbaccda1c..15ef7efdd2420b 100644 --- a/var/spack/repos/builtin/packages/r-bh/package.py +++ b/var/spack/repos/builtin/packages/r-bh/package.py @@ -24,9 +24,9 @@ class RBh(RPackage): 'pending' 'phoenix' 'preprocessor' 'random' 'range' 'smart_ptr' 'spirit' 'tuple' 'type_trains' 'typeof' 'unordered' 'utility' 'uuid'.""" - homepage = "https://cloud.r-project.org/package=BH" cran = "BH" + version('1.78.0-0', sha256='3b9e9d07682013e0c06a396dda176b405eab99a7273eca6c40d1b4c4110e8cb3') version('1.75.0-0', sha256='ae4c10992607dd697663f60675a46a5770851da159330bb63c4a68890bdd6f5a') version('1.72.0-3', sha256='888ec1a3316bb69e1ba749b08ba7e0903ebc4742e3a185de8d148c13cddac8ab') version('1.69.0-1', sha256='a0fd4364b7e368f09c56dec030823f52c16da0787580af7e4615eddeb99baca2') diff --git a/var/spack/repos/builtin/packages/r-biasedurn/package.py b/var/spack/repos/builtin/packages/r-biasedurn/package.py index 83f24d9b64950e..91fe62d327515d 100644 --- a/var/spack/repos/builtin/packages/r-biasedurn/package.py +++ b/var/spack/repos/builtin/packages/r-biasedurn/package.py @@ -7,15 +7,15 @@ class RBiasedurn(RPackage): - """Statistical models of biased sampling in the form of univariate and - multivariate noncentral hypergeometric distributions, including - Wallenius' noncentral hypergeometric distribution and Fisher's - noncentral hypergeometric distribution (also called extended - hypergeometric distribution). See vignette("UrnTheory") for - explanation of these distributions.""" + """Biased Urn Model Distributions. - homepage = "https://www.agner.org/random/" - url = "https://cloud.r-project.org/src/contrib/BiasedUrn_1.07.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/BiasedUrn/" + Statistical models of biased sampling in the form of univariate and + multivariate noncentral hypergeometric distributions, including Wallenius' + noncentral hypergeometric distribution and Fisher's noncentral + hypergeometric distribution (also called extended hypergeometric + distribution). See vignette("UrnTheory") for explanation of these + distributions.""" + + cran = "BiasedUrn" version('1.07', sha256='2377c2e59d68e758a566452d7e07e88663ae61a182b9ee455d8b4269dda3228e') diff --git a/var/spack/repos/builtin/packages/r-bibtex/package.py b/var/spack/repos/builtin/packages/r-bibtex/package.py index ac7129552747df..64728425b26aca 100644 --- a/var/spack/repos/builtin/packages/r-bibtex/package.py +++ b/var/spack/repos/builtin/packages/r-bibtex/package.py @@ -7,13 +7,11 @@ class RBibtex(RPackage): - """Bibtex Parser + """Bibtex Parser. - Utility to parse a bibtex file.""" + Utility to parse a bibtex file.""" - homepage = "https://cloud.r-project.org/package=bibtex" - url = "https://cloud.r-project.org/src/contrib/bibtex_0.4.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bibtex/" + cran = "bibtex" version('0.4.2.3', sha256='7bad194920b412781ac9754ad41058d52d3cd7186e1851c2bce3640490e9bc6d') version('0.4.2', sha256='1f06ab3660c940405230ad16ff6e4ba38d4418a59cd9b16d78a4349f8b488372') diff --git a/var/spack/repos/builtin/packages/r-bigalgebra/package.py b/var/spack/repos/builtin/packages/r-bigalgebra/package.py index 92bfadb487f0f8..28933250026762 100644 --- a/var/spack/repos/builtin/packages/r-bigalgebra/package.py +++ b/var/spack/repos/builtin/packages/r-bigalgebra/package.py @@ -7,14 +7,23 @@ class RBigalgebra(RPackage): - """This package provides arithmetic functions for R matrix - and big.matrix objects.""" + """'BLAS' and 'LAPACK' Routines for Native R Matrices and 'big.matrix' + Objects. - homepage = "https://r-forge.r-project.org/R/?group_id=556" - url = "https://cloud.r-project.org/src/contrib/Archive/bigalgebra/bigalgebra_0.8.4.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bigalgebra" + Provides arithmetic functions for R matrix and 'big.matrix' objects as well + as functions for QR factorization, Cholesky factorization, General + eigenvalue, and Singular value decomposition (SVD). A method matrix + multiplication and an arithmetic method -for matrix addition, matrix + difference- allows for mixed type operation -a matrix class object and a + big.matrix class object- and pure type operation for two big.matrix class + objects.""" + cran = "bigalgebra" + + version('1.0.1', sha256='ff7e261d0aa0e0f498e926d923ac62fc5cb783fa1f74bb2ff76a09167388a9d2') + version('1.0.0', sha256='f186b603bd660be0cc5b7a52c943e23e92fef264f0bc96a8858e38df6cfc4085') version('0.8.4.2', sha256='29962468cbfa6416f8628563d5ed8c9f76089190311ff1c618f099ee8d9eea75') depends_on('r-bigmemory@4.0.0:', type=('build', 'run')) depends_on('r-bh', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run'), when='@1.0.0:') 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 390a0d0e31b64b..d2ab649def12b9 100644 --- a/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py +++ b/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py @@ -7,11 +7,11 @@ class RBigmemorySri(RPackage): - """This package provides a shared resource interface - for the bigmemory and synchronicity packages.""" + """A shared resource interface for Bigmemory Project packages. - homepage = "https://cloud.r-project.org/web/packages/bigmemory.sri/index.html" - url = "https://cloud.r-project.org/src/contrib/bigmemory.sri_0.1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bigmemory.sri" + This package provides a shared resource interface for the bigmemory and + synchronicity packages.""" + + cran = "bigmemory.sri" 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 4a9f2e4d6b70c1..6631228eef2ed1 100644 --- a/var/spack/repos/builtin/packages/r-bigmemory/package.py +++ b/var/spack/repos/builtin/packages/r-bigmemory/package.py @@ -7,14 +7,14 @@ class RBigmemory(RPackage): - """Create, store, access, and manipulate massive matrices. - Matrices are allocated to shared memory and may use - memory-mapped files. Packages 'biganalytics', 'bigtabulate', - 'synchronicity', and 'bigalgebra' provide advanced functionality.""" + """Manage Massive Matrices with Shared Memory and Memory-Mapped. - homepage = "https://cloud.r-project.org/web/packages/bigmemory/index.html" - url = "https://cloud.r-project.org/src/contrib/bigmemory_4.5.36.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bigmemory" + Files Create, store, access, and manipulate massive matrices. Matrices are + allocated to shared memory and may use memory-mapped files. Packages + 'biganalytics', 'bigtabulate', 'synchronicity', and 'bigalgebra' provide + advanced functionality.""" + + cran = "bigmemory" version('4.5.36', sha256='18c67fbe6344b2f8223456c4f19ceebcf6c1166255eab81311001fd67a45ef0e') diff --git a/var/spack/repos/builtin/packages/r-bindr/package.py b/var/spack/repos/builtin/packages/r-bindr/package.py index 590c3dab8c2563..4739fa27bcd3ed 100644 --- a/var/spack/repos/builtin/packages/r-bindr/package.py +++ b/var/spack/repos/builtin/packages/r-bindr/package.py @@ -7,12 +7,12 @@ class RBindr(RPackage): - """Provides a simple interface for creating active bindings where the - bound function accepts additional arguments.""" + """Parametrized Active Bindings. - homepage = "https://github.com/krlmlr/bindr" - url = "https://cloud.r-project.org/src/contrib/bindr_0.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bindr" + Provides a simple interface for creating active bindings where the bound + function accepts additional arguments.""" + + cran = "bindr" version('0.1.1', sha256='7c785ca77ceb3ab9282148bcecf64d1857d35f5b800531d49483622fe67505d0') version('0.1', sha256='cca166612eeafd6e1c961b34aaf177f9b47f8b4bc37520e277b9920eaa8b2535') diff --git a/var/spack/repos/builtin/packages/r-bindrcpp/package.py b/var/spack/repos/builtin/packages/r-bindrcpp/package.py index 1cdc12a5d559bb..63b298a5fc6ba1 100644 --- a/var/spack/repos/builtin/packages/r-bindrcpp/package.py +++ b/var/spack/repos/builtin/packages/r-bindrcpp/package.py @@ -7,12 +7,12 @@ class RBindrcpp(RPackage): - """Provides an easy way to fill an environment with active bindings that - call a C++ function.""" + """An 'Rcpp' Interface to Active Bindings. - homepage = "https://github.com/krlmlr/bindrcpp" - url = "https://cloud.r-project.org/src/contrib/bindrcpp_0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bindrcpp" + Provides an easy way to fill an environment with active bindings that call + a C++ function.""" + + cran = "bindrcpp" version('0.2.2', sha256='48130709eba9d133679a0e959e49a7b14acbce4f47c1e15c4ab46bd9e48ae467') version('0.2', sha256='d0efa1313cb8148880f7902a4267de1dcedae916f28d9a0ef5911f44bf103450') diff --git a/var/spack/repos/builtin/packages/r-bio3d/package.py b/var/spack/repos/builtin/packages/r-bio3d/package.py index a4a09482b57341..847963b16a03ed 100644 --- a/var/spack/repos/builtin/packages/r-bio3d/package.py +++ b/var/spack/repos/builtin/packages/r-bio3d/package.py @@ -7,7 +7,7 @@ class RBio3d(RPackage): - """Biological Structure Analysis + """Biological Structure Analysis. Utilities to process, organize and explore protein structure, sequence and dynamics data. Features include the ability to read and write structure, @@ -22,10 +22,9 @@ class RBio3d(RPackage): to work with biological sequence and structural data. Please refer to the URLs below for more information.""" - homepage = "http://thegrantlab.org/bio3d/" - url = "https://cloud.r-project.org/src/contrib/bio3d_2.3-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bio3d" + cran = "bio3d" + version('2.4-2', sha256='91415766cda0f96557e6bc568dbce8d44254a9460f2e2d0beed0ce14ffad6ccb') version('2.4-1', sha256='679fbd87fe9fb82a65427d281d3b68906509e411270cd87d2deb95d404333c1f') version('2.3-4', sha256='f9b39ab242cbedafcd98c1732cb1f5c0dd9ef66e28be39695e3420dd93e2bafe') diff --git a/var/spack/repos/builtin/packages/r-biobase/package.py b/var/spack/repos/builtin/packages/r-biobase/package.py index 14a194524f7bac..acde3d0e0065ac 100644 --- a/var/spack/repos/builtin/packages/r-biobase/package.py +++ b/var/spack/repos/builtin/packages/r-biobase/package.py @@ -7,14 +7,14 @@ class RBiobase(RPackage): - """Biobase: Base functions for Bioconductor + """Biobase: Base functions for Bioconductor. Functions that are needed by many other packages or which replace R functions.""" - homepage = "https://bioconductor.org/packages/Biobase" - git = "https://git.bioconductor.org/packages/Biobase.git" + bioc = "Biobase" + version('2.54.0', commit='8215d76ce44899e6d10fe8a2f503821a94ef6b40') version('2.50.0', commit='9927f90d0676382f2f99e099d8d2c8e2e6f1b4de') version('2.44.0', commit='bde2077f66047986297ec35a688751cdce150dd3') version('2.42.0', commit='3e5bd466b99e3cc4af1b0c3b32687fa56d6f8e4d') @@ -24,4 +24,4 @@ class RBiobase(RPackage): depends_on('r@2.10:', type=('build', 'run')) depends_on('r-biocgenerics@0.3.2:', type=('build', 'run')) - depends_on('r-biocgenerics@0.27.1:', when='@2.42.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.27.1:', type=('build', 'run'), when='@2.42.0:') diff --git a/var/spack/repos/builtin/packages/r-biocfilecache/package.py b/var/spack/repos/builtin/packages/r-biocfilecache/package.py index 9cbbaf7b8adcde..29555c09622923 100644 --- a/var/spack/repos/builtin/packages/r-biocfilecache/package.py +++ b/var/spack/repos/builtin/packages/r-biocfilecache/package.py @@ -7,16 +7,16 @@ class RBiocfilecache(RPackage): - """Manage Files Across Sessions + """Manage Files Across Sessions. This package creates a persistent on-disk cache of files that the user can add, update, and retrieve. It is useful for managing resources (such as custom Txdb objects) that are costly or difficult to create, web resources, and data files used across sessions.""" - homepage = "https://bioconductor.org/packages/BiocFileCache" - git = "https://git.bioconductor.org/packages/BiocFileCache.git" + bioc = "BiocFileCache" + version('2.2.1', commit='cc912123408803193bf37395f4d18baa8dcd6f47') version('1.14.0', commit='cdcde4b59ae73dda12aa225948dbd0a058d9be6d') version('1.8.0', commit='0e3542b6aae849b01240d8055a48da1b267bd5a0') version('1.6.0', commit='c2de6c1cdef6294e5d0adea31e4ebf25865742ba') @@ -26,9 +26,10 @@ class RBiocfilecache(RPackage): depends_on('r@3.4.0:', type=('build', 'run')) depends_on('r-dplyr', type=('build', 'run')) - depends_on('r-dbplyr@1.0.0:', when='@1.2.3:', type=('build', 'run')) + depends_on('r-dbplyr@1.0.0:', type=('build', 'run'), when='@1.2.3:') depends_on('r-rsqlite', type=('build', 'run')) depends_on('r-dbi', type=('build', 'run')) depends_on('r-rappdirs', type=('build', 'run')) - depends_on('r-curl', when='@1.6.0:', type=('build', 'run')) + depends_on('r-filelock', type=('build', 'run'), when='@2.2.1:') + depends_on('r-curl', type=('build', 'run'), when='@1.6.0:') depends_on('r-httr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-biocgenerics/package.py b/var/spack/repos/builtin/packages/r-biocgenerics/package.py index 3a300e7a2d1aaa..0c0e7dc866f499 100644 --- a/var/spack/repos/builtin/packages/r-biocgenerics/package.py +++ b/var/spack/repos/builtin/packages/r-biocgenerics/package.py @@ -7,13 +7,13 @@ class RBiocgenerics(RPackage): - """S4 generic functions used in Bioconductor + """S4 generic functions used in Bioconductor. The package defines S4 generic functions used in Bioconductor.""" - homepage = "https://bioconductor.org/packages/BiocGenerics" - git = "https://git.bioconductor.org/packages/BiocGenerics.git" + bioc = "BiocGenerics" + version('0.40.0', commit='0bc1e0ed4d20c7101cd782a14f6373e27478acfc') version('0.36.0', commit='0d5d169d7d64d648a22f9043837c93bc784e71ed') version('0.34.0', commit='f7c2020') version('0.30.0', commit='fc7c3af4a5635a30988a062ed09332c13ca1d1a8') @@ -22,5 +22,5 @@ class RBiocgenerics(RPackage): version('0.24.0', commit='3db111e8c1f876267da89f4f0c5406a9d5c31cd1') version('0.22.1', commit='9c90bb8926885289d596a81ff318ee3745cbb6ad') - depends_on('r@3.6.0:', when='@0.30.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@0.36.0:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@0.30.0:') + depends_on('r@4.0.0:', type=('build', 'run'), when='@0.36.0:') diff --git a/var/spack/repos/builtin/packages/r-biocinstaller/package.py b/var/spack/repos/builtin/packages/r-biocinstaller/package.py index 51fe13f7654682..4118acc5f17e07 100644 --- a/var/spack/repos/builtin/packages/r-biocinstaller/package.py +++ b/var/spack/repos/builtin/packages/r-biocinstaller/package.py @@ -12,8 +12,7 @@ class RBiocinstaller(RPackage): This package is used to install and update Bioconductor, CRAN, and (some) github packages.""" - homepage = "https://bioconductor.org/packages/3.8/bioc/html/BiocInstaller.html" - git = "https://git.bioconductor.org/packages/BiocInstaller.git" + bioc = "BiocInstaller" version('1.33.1', commit='6193f31c18e7e64d91e0e15ed0ba6924eda1416f') version('1.32.1', commit='4c2a39e1cae470af3a5cf1491715f272b70f4bb4') @@ -22,5 +21,4 @@ class RBiocinstaller(RPackage): version('1.26.1', commit='9049b82a77aefa98e3f8e4dd7068317505d70e98') depends_on('r@3.4.0:', type=('build', 'run')) - - depends_on('r@3.5.0:', when='@1.30.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.30.0:') diff --git a/var/spack/repos/builtin/packages/r-biocio/package.py b/var/spack/repos/builtin/packages/r-biocio/package.py new file mode 100644 index 00000000000000..f671dfb2f9b8bf --- /dev/null +++ b/var/spack/repos/builtin/packages/r-biocio/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2022 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 import * + + +class RBiocio(RPackage): + """Standard Input and Output for Bioconductor Packages. + + Implements `import()` and `export()` standard generics for importing and + exporting biological data formats. `import()` supports whole-file as well + as chunk-wise iterative import. The `import()` interface optionally + provides a standard mechanism for 'lazy' access via `filter()` (on row or + element-like components of the file resource), `select()` (on column-like + components of the file resource) and `collect()`. The `import()` interface + optionally provides transparent access to remote (e.g. via https) as well + as local access. Developers can register a file extension, e.g., `.loom` + for dispatch from character-based URIs to specific `import()` / `export()` + methods based on classes representing file types, e.g., `LoomFile()`.""" + + bioc = "BiocIO" + + version('1.4.0', commit='c335932526a38c75dbfa4970c1d90b8a21466d37') + + depends_on('r@4.0.0:', type=('build', 'run')) + depends_on('r-biocgenerics', type=('build', 'run')) + depends_on('r-s4vectors', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-biocmanager/package.py b/var/spack/repos/builtin/packages/r-biocmanager/package.py index f98d06af47258e..73e8e245a792fc 100644 --- a/var/spack/repos/builtin/packages/r-biocmanager/package.py +++ b/var/spack/repos/builtin/packages/r-biocmanager/package.py @@ -7,10 +7,11 @@ class RBiocmanager(RPackage): - """BiocManager: Access the Bioconductor Project Package Repository""" + """Access the Bioconductor Project Package Repository. - homepage = "https://cloud.r-project.org/package=BiocManager" - url = "https://cloud.r-project.org/src/contrib/BiocManager_1.30.10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/BiocManager" + A convenient tool to install and update Bioconductor packages.""" + cran = "BiocManager" + + version('1.30.16', sha256='75a754a55192ef6aa6ac9b054fd5381ff03fe6bb8b2e033eb8143da930ef3855') version('1.30.10', sha256='f3b7a412b42be0ab8df5fcd9bf981876ba9e5c55bc5faaca7af7ede3b6d0c90e') diff --git a/var/spack/repos/builtin/packages/r-biocneighbors/package.py b/var/spack/repos/builtin/packages/r-biocneighbors/package.py index db2e2aafe5974f..7b9ccaf764c48a 100644 --- a/var/spack/repos/builtin/packages/r-biocneighbors/package.py +++ b/var/spack/repos/builtin/packages/r-biocneighbors/package.py @@ -7,7 +7,7 @@ class RBiocneighbors(RPackage): - """Nearest Neighbor Detection for Bioconductor Packages + """Nearest Neighbor Detection for Bioconductor Packages. Implements exact and approximate methods for nearest neighbor detection, in a framework that allows them to be easily switched within @@ -19,18 +19,19 @@ class RBiocneighbors(RPackage): BiocParallel. Functions are also provided to search for all neighbors within a given distance.""" - homepage = "https://bioconductor.org/packages/BiocNeighbors" - git = "https://git.bioconductor.org/packages/BiocNeighbors.git" + bioc = "BiocNeighbors" + version('1.12.0', commit='3c8a290f75adc944b408e6e77a36f3a0c1509c4c') version('1.8.2', commit='889bc91f8cb45d210b47ae5c0b9cfb86fb071ca2') version('1.2.0', commit='f754c6300f835142536a4594ddf750481e0fe273') version('1.0.0', commit='e252fc04b6d22097f2c5f74406e77d85e7060770') - depends_on('r@3.5:', when='@1.0.0', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@1.0.0') depends_on('r-rcpp', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) depends_on('r-biocparallel', type=('build', 'run')) - depends_on('r-matrix', when='@1.8.2:', type=('build', 'run')) - depends_on('r-rcpphnsw', when='@1.2.0:', type=('build', 'run')) - depends_on('r-rcppannoy', when='@:1.2.0', type=('build', 'run')) - depends_on('r-biocgenerics', when='@1.2.0', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run'), when='@1.8.2:') + depends_on('r-rcpphnsw', type=('build', 'run'), when='@1.2.0:') + + depends_on('r-rcppannoy', type=('build', 'run'), when='@:1.2.0') + depends_on('r-biocgenerics', type=('build', 'run'), when='@1.2.0') diff --git a/var/spack/repos/builtin/packages/r-biocparallel/package.py b/var/spack/repos/builtin/packages/r-biocparallel/package.py index 6720fbc6eadd6a..8a8afe43e9978c 100644 --- a/var/spack/repos/builtin/packages/r-biocparallel/package.py +++ b/var/spack/repos/builtin/packages/r-biocparallel/package.py @@ -7,15 +7,15 @@ class RBiocparallel(RPackage): - """Bioconductor facilities for parallel evaluation + """Bioconductor facilities for parallel evaluation. This package provides modified versions and novel implementation of functions for parallel evaluation, tailored to use with Bioconductor objects.""" - homepage = "https://bioconductor.org/packages/BiocParallel" - git = "https://git.bioconductor.org/packages/BiocParallel.git" + bioc = "BiocParallel" + version('1.28.3', commit='2f9d88ad83659939e7911d49c2d24d2cd599c7cc') version('1.24.1', commit='f713caa4314ec0ddeba7fe0eb599ad417efb413f') version('1.18.1', commit='348264af782d7dcd41a1879400f348f836767f6e') version('1.16.6', commit='7f7a54c47f4949b600b9fd568289a519496bc4d4') @@ -23,6 +23,7 @@ class RBiocparallel(RPackage): version('1.12.0', commit='2143a9addceed0151a27b95c70aadd2add5cbace') version('1.10.1', commit='a76c58cf99fd585ba5ea33065649e68f1afe0a7d') + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.28.3:') depends_on('r-futile-logger', type=('build', 'run')) depends_on('r-snow', type=('build', 'run')) - depends_on('r-bh', when='@1.12.0:', type=('build', 'run')) + depends_on('r-bh', type=('build', 'run'), when='@1.12.0:') diff --git a/var/spack/repos/builtin/packages/r-biocsingular/package.py b/var/spack/repos/builtin/packages/r-biocsingular/package.py index 2727417aba7019..0f7d37137a7c9f 100644 --- a/var/spack/repos/builtin/packages/r-biocsingular/package.py +++ b/var/spack/repos/builtin/packages/r-biocsingular/package.py @@ -7,7 +7,7 @@ class RBiocsingular(RPackage): - """Singular Value Decomposition for Bioconductor Packages + """Singular Value Decomposition for Bioconductor Packages. Implements exact and approximate methods for singular value decomposition and principal components analysis, in a framework that @@ -15,9 +15,9 @@ class RBiocsingular(RPackage): workflows. Where possible, parallelization is achieved using the BiocParallel framework.""" - homepage = "https://bioconductor.org/packages/BiocSingular" - git = "https://git.bioconductor.org/packages/BiocSingular.git" + bioc = "BiocSingular" + version('1.10.0', commit='6615ae8cb124aba6507447c1081bd2eba655e57d') version('1.6.0', commit='11baf1080d6f791439cd5d97357589d6451643d9') version('1.0.0', commit='d2b091c072d0312698c9bb6611eb1bdf8aebf833') @@ -26,6 +26,7 @@ class RBiocsingular(RPackage): depends_on('r-matrix', type=('build', 'run')) depends_on('r-delayedarray', type=('build', 'run')) depends_on('r-biocparallel', type=('build', 'run')) + depends_on('r-scaledmatrix', type=('build', 'run'), when='@1.10.0:') depends_on('r-irlba', type=('build', 'run')) depends_on('r-rsvd', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-biocstyle/package.py b/var/spack/repos/builtin/packages/r-biocstyle/package.py index 276fe948f29146..c76a386e655fb9 100644 --- a/var/spack/repos/builtin/packages/r-biocstyle/package.py +++ b/var/spack/repos/builtin/packages/r-biocstyle/package.py @@ -7,14 +7,14 @@ class RBiocstyle(RPackage): - """Standard styles for vignettes and other Bioconductor documents + """Standard styles for vignettes and other Bioconductor documents. Provides standard formatting styles for Bioconductor PDF and HTML documents. Package vignettes illustrate use and functionality.""" - homepage = "https://bioconductor.org/packages/BiocStyle" - git = "https://git.bioconductor.org/packages/BiocStyle.git" + bioc = "BiocStyle" + version('2.22.0', commit='86250b637afa3a3463fac939b99c0402b47876ea') version('2.18.1', commit='956f0654e8e18882ba09305742401128c9c7d47d') version('2.12.0', commit='0fba3fe6e6a38504f9aadcd3dc95bb83d7e92498') version('2.10.0', commit='8fc946044c6b6a8a3104ddbc546baed49ee3aa70') @@ -25,7 +25,7 @@ class RBiocstyle(RPackage): depends_on('r+X', type=('build', 'run')) depends_on('r-bookdown', type=('build', 'run')) depends_on('r-knitr@1.12:', type=('build', 'run')) - depends_on('r-knitr@1.30:', when='@2.18.1:', type=('build', 'run')) + depends_on('r-knitr@1.30:', type=('build', 'run'), when='@2.18.1:') depends_on('r-rmarkdown@1.2:', type=('build', 'run')) depends_on('r-yaml', type=('build', 'run')) - depends_on('r-biocmanager', when='@2.10.0:', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@2.10.0:') diff --git a/var/spack/repos/builtin/packages/r-biocversion/package.py b/var/spack/repos/builtin/packages/r-biocversion/package.py index f15560325e5a72..f72c3861489009 100644 --- a/var/spack/repos/builtin/packages/r-biocversion/package.py +++ b/var/spack/repos/builtin/packages/r-biocversion/package.py @@ -7,14 +7,15 @@ class RBiocversion(RPackage): - """Set the appropriate version of Bioconductor packages + """Set the appropriate version of Bioconductor packages. This package provides repository information for the appropriate version of Bioconductor.""" - homepage = "https://bioconductor.org/packages/BiocVersion/" - git = "https://git.bioconductor.org/packages/BiocVersion" + bioc = "BiocVersion" + version('3.14.0', commit='aa56d93d0ea5dcdbf301f120502981740fd91e1e') version('3.12.0', commit='23b971963c6b73550a7e330dab5a046d58ce0223') depends_on('r@4.0.0:', type=('build', 'run')) + depends_on('r@4.1.0:', type=('build', 'run'), when='@3.14.0:') diff --git a/var/spack/repos/builtin/packages/r-biom-utils/package.py b/var/spack/repos/builtin/packages/r-biom-utils/package.py index dd6b8436ab23dc..9592481803af82 100644 --- a/var/spack/repos/builtin/packages/r-biom-utils/package.py +++ b/var/spack/repos/builtin/packages/r-biom-utils/package.py @@ -7,13 +7,12 @@ class RBiomUtils(RPackage): - """Provides utilities to facilitate import, export and computation with - the BIOM (Biological Observation Matrix) format (https://biom-format.org/). - """ + """Utilities for the BIOM (Biological Observation Matrix) Format. - homepage = "https://github.com/braithwaite/BIOM.utils/" - url = "https://cloud.r-project.org/src/contrib/BIOM.utils_0.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/biom/" + Provides utilities to facilitate import, export and computation with the + BIOM (Biological Observation Matrix) format (https://biom-format.org/).""" + + cran = "BIOM.utils" version('0.9', sha256='e7024469fb38e275aa78fbfcce15b9a7661317f632a7e9b8124695e076839375') diff --git a/var/spack/repos/builtin/packages/r-biomart/package.py b/var/spack/repos/builtin/packages/r-biomart/package.py index b2230bf631c656..2a8f2e22e7fbf1 100644 --- a/var/spack/repos/builtin/packages/r-biomart/package.py +++ b/var/spack/repos/builtin/packages/r-biomart/package.py @@ -7,7 +7,7 @@ class RBiomart(RPackage): - """Interface to BioMart databases (i.e. Ensembl) + """Interface to BioMart databases (i.e. Ensembl). In recent years a wealth of biological data has become available in public data repositories. Easy access to these valuable data resources @@ -22,9 +22,9 @@ class RBiomart(RPackage): range of powerful online queries from gene annotation to database mining.""" - homepage = "https://bioconductor.org/packages/biomaRt" - git = "https://git.bioconductor.org/packages/biomaRt.git" + bioc = "biomaRt" + version('2.50.3', commit='83a519ac13d73dc545cb6aafde5f4b5001e9e08f') version('2.46.2', commit='90d6abfdfa04259006f7b47efb10271ada76aec1') version('2.40.5', commit='ed9ddafb0d620168ea8e3ab4884f3457b8525c68') version('2.38.0', commit='16b997aba19a90a1c5fa64c442b1e7fcff99a658') @@ -34,11 +34,13 @@ class RBiomart(RPackage): depends_on('r-xml', type=('build', 'run')) depends_on('r-annotationdbi', type=('build', 'run')) - depends_on('r-progress', when='@2.34.2:', type=('build', 'run')) - depends_on('r-stringr', when='@2.34.2:', type=('build', 'run')) - depends_on('r-httr', when='@2.34.2:', type=('build', 'run')) - depends_on('r-openssl', when='@2.46.2:', type=('build', 'run')) - depends_on('r-biocfilecache', when='@2.46.2:', type=('build', 'run')) - depends_on('r-rappdirs', when='@2.46.2:', type=('build', 'run')) - depends_on('r-xml2', when='@2.46.2:', type=('build', 'run')) - depends_on('r-rcurl', when='@:2.40.5', type=('build', 'run')) + depends_on('r-progress', type=('build', 'run'), when='@2.34.2:') + depends_on('r-stringr', type=('build', 'run'), when='@2.34.2:') + depends_on('r-httr', type=('build', 'run'), when='@2.34.2:') + depends_on('r-digest', type=('build', 'run'), when='@2.50.3:') + depends_on('r-biocfilecache', type=('build', 'run'), when='@2.46.2:') + depends_on('r-rappdirs', type=('build', 'run'), when='@2.46.2:') + depends_on('r-xml2', type=('build', 'run'), when='@2.46.2:') + + depends_on('r-rcurl', type=('build', 'run'), when='@:2.40.5') + depends_on('r-openssl', type=('build', 'run'), when='@2.46.2') diff --git a/var/spack/repos/builtin/packages/r-biomartr/package.py b/var/spack/repos/builtin/packages/r-biomartr/package.py index 5c88b044342ce8..e2c93b918268b5 100644 --- a/var/spack/repos/builtin/packages/r-biomartr/package.py +++ b/var/spack/repos/builtin/packages/r-biomartr/package.py @@ -7,7 +7,9 @@ class RBiomartr(RPackage): - """Perform large scale genomic data retrieval and functional annotation + """Genomic Data Retrieval. + + Perform large scale genomic data retrieval and functional annotation retrieval. This package aims to provide users with a standardized way to automate genome, proteome, 'RNA', coding sequence ('CDS'), 'GFF', and metagenome retrieval from 'NCBI RefSeq', 'NCBI Genbank', 'ENSEMBL', @@ -19,9 +21,7 @@ class RBiomartr(RPackage): Genbank' (Benson et al. (2013) ), etc. as well as 'ENSEMBL' and 'ENSEMBLGENOMES' with only one command.""" - homepage = "https://docs.ropensci.org/biomartr" - url = "https://cloud.r-project.org/src/contrib/biomartr_0.9.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/biomartr" + cran = "biomartr" version('0.9.2', sha256='d88085696e9c5614828602254c33f2cdd3bbfeebc2f21a705eee3cb961097c89') diff --git a/var/spack/repos/builtin/packages/r-biomformat/package.py b/var/spack/repos/builtin/packages/r-biomformat/package.py index 86548dcdd60f96..d71f420e144986 100644 --- a/var/spack/repos/builtin/packages/r-biomformat/package.py +++ b/var/spack/repos/builtin/packages/r-biomformat/package.py @@ -7,7 +7,7 @@ class RBiomformat(RPackage): - """An interface package for the BIOM file format + """An interface package for the BIOM file format. This is an R package for interfacing with the BIOM format. This package includes basic tools for reading biom-format files, accessing and @@ -19,9 +19,9 @@ class RBiomformat(RPackage): includes S4 classes and methods, as well as extensions of common core functions/methods.""" - homepage = "https://bioconductor.org/packages/biomformat" - git = "https://git.bioconductor.org/packages/biomformat.git" + bioc = "biomformat" + version('1.22.0', commit='ab7c6411a038fec010baa72e663f362fd972cb34') version('1.18.0', commit='dc18859c139f4d76805adb6f01e199573cdd5a8b') version('1.12.0', commit='6e946123bb59da262cbb0c17dc5ab49328a89d4a') version('1.10.1', commit='e67c6f4b70201f748fa49a4938e1af0cd0613f09') diff --git a/var/spack/repos/builtin/packages/r-biostrings/package.py b/var/spack/repos/builtin/packages/r-biostrings/package.py index 849b532eda82b4..e445ba5c613310 100644 --- a/var/spack/repos/builtin/packages/r-biostrings/package.py +++ b/var/spack/repos/builtin/packages/r-biostrings/package.py @@ -7,15 +7,15 @@ class RBiostrings(RPackage): - """Efficient manipulation of biological strings + """Efficient manipulation of biological strings. Memory efficient string containers, string matching algorithms, and other utilities, for fast manipulation of large biological sequences or sets of sequences.""" - homepage = "https://bioconductor.org/packages/Biostrings" - git = "https://git.bioconductor.org/packages/Biostrings.git" + bioc = "Biostrings" + version('2.62.0', commit='53ed287e03d16fa523789af3131c60375ccf587f') version('2.58.0', commit='0ec1a5455d5e9eebd14b26228906bb04e2abb197') version('2.52.0', commit='b78fe7c1f3cdbbb7affb1ca7164fe5a1f8b868f5') version('2.50.2', commit='025e734641a93f6c5d44243297cb4264ea0e34a2') @@ -24,19 +24,22 @@ class RBiostrings(RPackage): version('2.44.2', commit='e4a2b320fb21c5cab3ece7b3c6fecaedfb1e5200') depends_on('r@2.8.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@2.50.2:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.50.2:') + depends_on('r@4.0.0:', type=('build', 'run'), when='@2.62.0:') depends_on('r-biocgenerics@0.15.6:', type=('build', 'run')) - depends_on('r-biocgenerics@0.31.5:', when='@2.58.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.31.5:', type=('build', 'run'), when='@2.58.0:') + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@2.62.0:') depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@2.48.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.21.13:', when='@2.52.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@2.58.0:', type=('build', 'run')) - depends_on('r-iranges@2.9.18:', when='@2.44.2:', type=('build', 'run')) - depends_on('r-iranges@2.13.24:', when='@2.48.0:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@2.58.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@2.48.0:') + depends_on('r-s4vectors@0.21.13:', type=('build', 'run'), when='@2.52.0:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@2.58.0:') + depends_on('r-iranges@2.9.18:', type=('build', 'run'), when='@2.44.2:') + depends_on('r-iranges@2.13.24:', type=('build', 'run'), when='@2.48.0:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@2.58.0:') depends_on('r-xvector@0.11.6:', type=('build', 'run')) - depends_on('r-xvector@0.19.8:', when='@2.48.0:', type=('build', 'run')) - depends_on('r-xvector@0.21.4:', when='@2.50.2:', type=('build', 'run')) - depends_on('r-xvector@0.23.2:', when='@2.52.0:', type=('build', 'run')) - depends_on('r-xvector@0.29.2:', when='@2.58.0:', type=('build', 'run')) - depends_on('r-crayon', when='@2.58.0:', type=('build', 'run')) + depends_on('r-xvector@0.19.8:', type=('build', 'run'), when='@2.48.0:') + depends_on('r-xvector@0.21.4:', type=('build', 'run'), when='@2.50.2:') + depends_on('r-xvector@0.23.2:', type=('build', 'run'), when='@2.52.0:') + depends_on('r-xvector@0.29.2:', type=('build', 'run'), when='@2.58.0:') + depends_on('r-genomeinfodb', type=('build', 'run'), when='@2.62.0:') + depends_on('r-crayon', type=('build', 'run'), when='@2.58.0:') diff --git a/var/spack/repos/builtin/packages/r-biovizbase/package.py b/var/spack/repos/builtin/packages/r-biovizbase/package.py index 358f6d74ee811b..d8b6148af5548d 100644 --- a/var/spack/repos/builtin/packages/r-biovizbase/package.py +++ b/var/spack/repos/builtin/packages/r-biovizbase/package.py @@ -14,9 +14,9 @@ class RBiovizbase(RPackage): various high-level packages for biological data visualization. This saves development effort and encourages consistency.""" - homepage = "https://bioconductor.org/packages/biovizBase" - git = "https://git.bioconductor.org/packages/biovizBase.git" + bioc = "biovizBase" + version('1.42.0', commit='f1627b2b567471837daca6e763acfc3e13937461') version('1.38.0', commit='d0f3362e0ad0e90b4b1d3e47b13ed57907d03403') version('1.32.0', commit='de044bf236cdcd71214ae7b77689a8f0ab4f5cc8') version('1.30.1', commit='b6776d0470e2920f71127652f185f68ca1fd2c82') @@ -25,14 +25,14 @@ class RBiovizbase(RPackage): version('1.24.0', commit='ae9cd2ff665b74a8f45ed9c1d17fc0a778b4af6c') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.38.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.38.0:') depends_on('r-scales', type=('build', 'run')) depends_on('r-hmisc', type=('build', 'run')) depends_on('r-rcolorbrewer', type=('build', 'run')) depends_on('r-dichromat', type=('build', 'run')) depends_on('r-biocgenerics', type=('build', 'run')) depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) - depends_on('r-s4vectors@0.23.19:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.23.19:', type=('build', 'run'), when='@1.38.0:') depends_on('r-iranges@1.99.28:', type=('build', 'run')) depends_on('r-genomeinfodb@1.5.14:', type=('build', 'run')) depends_on('r-genomicranges@1.23.21:', type=('build', 'run')) @@ -45,4 +45,4 @@ class RBiovizbase(RPackage): depends_on('r-variantannotation@1.11.4:', type=('build', 'run')) depends_on('r-ensembldb@1.99.13:', type=('build', 'run')) depends_on('r-annotationfilter@0.99.8:', type=('build', 'run')) - depends_on('r-rlang', when='@1.28.2:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@1.28.2:') diff --git a/var/spack/repos/builtin/packages/r-bit/package.py b/var/spack/repos/builtin/packages/r-bit/package.py index f1c232463b039d..c365648b649225 100644 --- a/var/spack/repos/builtin/packages/r-bit/package.py +++ b/var/spack/repos/builtin/packages/r-bit/package.py @@ -7,16 +7,14 @@ class RBit(RPackage): - """Classes and Methods for Fast Memory-Efficient Boolean Selections + """Classes and Methods for Fast Memory-Efficient Boolean Selections. Provided are classes for boolean and skewed boolean vectors, fast boolean methods, fast unique and non-unique integer sorting, fast set operations on sorted and unsorted sets of integers, and foundations for ff (range index, compression, chunked processing).""" - homepage = "https://cloud.r-project.org/package=bit" - url = "https://cloud.r-project.org/src/contrib/bit_1.1-12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bit" + cran = "bit" version('4.0.4', sha256='e404841fbe4ebefe4ecd4392effe673a8c9fa05f97952c4ce6e2f6159bd2f168') version('1.1-14', sha256='5cbaace1fb643a665a6ca69b90f7a6d624270de82420ca7a44f306753fcef254') diff --git a/var/spack/repos/builtin/packages/r-bit64/package.py b/var/spack/repos/builtin/packages/r-bit64/package.py index 4925b663bac124..ca6598eae6bff0 100644 --- a/var/spack/repos/builtin/packages/r-bit64/package.py +++ b/var/spack/repos/builtin/packages/r-bit64/package.py @@ -7,7 +7,7 @@ class RBit64(RPackage): - """A S3 Class for Vectors of 64bit Integers + """A S3 Class for Vectors of 64bit Integers. Package 'bit64' provides serializable S3 atomic 64bit (signed) integers. These are useful for handling database keys and exact counting in +-2^63. @@ -21,13 +21,11 @@ class RBit64(RPackage): active data exploration and manipulation and optionally leverage caching.""" - homepage = "https://cloud.r-project.org/package=bit64" - url = "https://cloud.r-project.org/src/contrib/bit64_0.9-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bit64" + cran = "bit64" version('4.0.5', sha256='25df6826ea5e93241c4874cad4fa8dadc87a40f4ff74c9107aa12a9e033e1578') version('0.9-7', sha256='7b9aaa7f971198728c3629f9ba1a1b24d53db5c7e459498b0fdf86bbd3dff61f') depends_on('r@3.0.1:', type=('build', 'run')) - depends_on('r-bit@1.1-12:', when='@:9.9-7', type=('build', 'run')) - depends_on('r-bit@4.0.0:', when='@4.0.5:', type=('build', 'run')) + depends_on('r-bit@1.1-12:', type=('build', 'run')) + depends_on('r-bit@4.0.0:', type=('build', 'run'), when='@4.0.5:') diff --git a/var/spack/repos/builtin/packages/r-bitops/package.py b/var/spack/repos/builtin/packages/r-bitops/package.py index b6723a1aa77bea..ce687cc335f89b 100644 --- a/var/spack/repos/builtin/packages/r-bitops/package.py +++ b/var/spack/repos/builtin/packages/r-bitops/package.py @@ -8,10 +8,11 @@ class RBitops(RPackage): - """Functions for bitwise operations on integer vectors.""" + """Bitwise Operations. - homepage = "https://cloud.r-project.org/package=bitops" - url = "https://cloud.r-project.org/src/contrib/bitops_1.0-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bitops" + Functions for bitwise operations on integer vectors.""" + cran = "bitops" + + 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 990478d01245cf..eb06e7f84f93ba 100644 --- a/var/spack/repos/builtin/packages/r-blavaan/package.py +++ b/var/spack/repos/builtin/packages/r-blavaan/package.py @@ -7,30 +7,37 @@ class RBlavaan(RPackage): - """Bayesian Latent Variable Analysis: + """Bayesian Latent Variable Analysis. - Fit a variety of Bayesian latent variable models, including confirmatory - factor analysis, structural equation models, and latent growth curve - models.""" +Fit a variety of Bayesian latent variable models, including confirmatory factor +analysis, structural equation models, and latent growth curve models. +References: Merkle & Rosseel (2018) ; Merkle et al. +(2021) .""" - cran = "blavaan" + cran = "blavaan" + version('0.4-1', sha256='afb077d72f84ef0b6f45ef2ccb8335358042943c32a3472a9ca239ebca1c4aa4') + version('0.3-18', sha256='373960a22fc741c765e2ad2e0d99c1d4b2162f5f2a230ef314778ef8f433e865') version('0.3-15', sha256='f73ead024bc3b65bdb0c5e5cd5458845158914eb579c07be2fd697a3573ebe6f') depends_on('r@3.5.0:', type=('build', 'run')) depends_on('r-lavaan@0.6-5:', type=('build', 'run')) + 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-rcpp@0.12.15:', type=('build', 'run')) - depends_on('r-rcppparallel@5.0.1:', type=('build', 'run')) depends_on('r-mcmcpack', type=('build', 'run')) depends_on('r-coda', type=('build', 'run')) depends_on('r-mnormt', type=('build', 'run')) depends_on('r-nonnest2@0.5-5:', type=('build', 'run')) 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-rstantools@1.5.0:', type=('build', 'run')) + depends_on('r-rcppparallel@5.0.1:', type=('build', 'run')) depends_on('r-bayesplot', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) 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-bh@1.69.0:', type=('build', 'run')) depends_on('r-rcppeigen@0.3.3.4.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-blob/package.py b/var/spack/repos/builtin/packages/r-blob/package.py index 47673efb7ccfe5..40b494b84e7153 100644 --- a/var/spack/repos/builtin/packages/r-blob/package.py +++ b/var/spack/repos/builtin/packages/r-blob/package.py @@ -7,14 +7,13 @@ class RBlob(RPackage): - """A Simple S3 Class for Representing Vectors of Binary Data ('BLOBS') + """A Simple S3 Class for Representing Vectors of Binary Data ('BLOBS'). - R's raw vector is useful for storing a single binary object. - What if you want to put a vector of them in a data frame? The blob - package provides the blob object, a list of raw vectors, suitable - for use as a column in data frame.""" + R's raw vector is useful for storing a single binary object. What if you + want to put a vector of them in a data frame? The blob package provides the + blob object, a list of raw vectors, suitable for use as a column in data + frame.""" - homepage = "https://blob.tidyverse.org" cran = "blob" version('1.2.2', sha256='4976053c65994c769a4c22b4553bea0bd9c623b3b991dbaf023d2a164770c7fa') @@ -22,8 +21,9 @@ class RBlob(RPackage): version('1.2.0', sha256='1af1cfa28607bc0e2f1f01598a00a7d5d1385ef160a9e79e568f30f56538e023') version('1.1.0', sha256='16d6603df3ddba177f0ac4d9469c938f89131c4bf8834345db838defd9ffea16') - depends_on('r-tibble', when='@:1.1.0', type=('build', 'run')) - depends_on('r-prettyunits', when='@1.2.0', type=('build', 'run')) - depends_on('r-rlang', when='@1.2.0:', type=('build', 'run')) - depends_on('r-vctrs@0.2.0:', when='@1.2.0:', type=('build', 'run')) - depends_on('r-vctrs@0.2.1:', when='@1.2.1:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@1.2.0:') + depends_on('r-vctrs@0.2.0:', type=('build', 'run'), when='@1.2.0:') + depends_on('r-vctrs@0.2.1:', type=('build', 'run'), when='@1.2.1:') + + depends_on('r-prettyunits', type=('build', 'run'), when='@1.2.0') + depends_on('r-tibble', type=('build', 'run'), when='@:1.1.0') diff --git a/var/spack/repos/builtin/packages/r-blockmodeling/package.py b/var/spack/repos/builtin/packages/r-blockmodeling/package.py index 096865c33f16ee..dbc963dbfa98db 100644 --- a/var/spack/repos/builtin/packages/r-blockmodeling/package.py +++ b/var/spack/repos/builtin/packages/r-blockmodeling/package.py @@ -7,21 +7,21 @@ class RBlockmodeling(RPackage): - """Generalized and Classical Blockmodeling of Valued Networks + """Generalized and Classical Blockmodeling of Valued Networks. This is primarily meant as an implementation of generalized blockmodeling for valued networks.""" - homepage = "https://cloud.r-project.org/package=blockmodeling" - url = "https://cloud.r-project.org/src/contrib/blockmodeling_0.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/blockmodeling/" + cran = "blockmodeling" + version('1.0.5', sha256='18c227bb52f28aff4dae8929563474e3e006e238438c823b67dc6baa897f88ed') version('1.0.0', sha256='f10c41fff56dc7dc46dffbceacb8ff905eca06578d610a5a590fb408f0149cfc') version('0.3.4', sha256='a269c83669dd5294cff0adddab36bc023db6a276a06b74b1fa94b7e407486987') version('0.3.1', sha256='39e8360400cec6baa920d5589d4e779568bdf2954f7331be0e3cadf22a217d31') depends_on('r@2.10:', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) - depends_on('r-doparallel', when='@:0.3.4', type=('build', 'run')) - depends_on('r-dorng', when='@:0.3.4', type=('build', 'run')) - depends_on('r-foreach', when='@:0.3.4', type=('build', 'run')) + + depends_on('r-doparallel', type=('build', 'run'), when='@:0.3.4') + depends_on('r-dorng', type=('build', 'run'), when='@:0.3.4') + depends_on('r-foreach', type=('build', 'run'), when='@:0.3.4') diff --git a/var/spack/repos/builtin/packages/r-bmp/package.py b/var/spack/repos/builtin/packages/r-bmp/package.py index e45f69cf84b8a8..a65ab87c57de5d 100644 --- a/var/spack/repos/builtin/packages/r-bmp/package.py +++ b/var/spack/repos/builtin/packages/r-bmp/package.py @@ -7,12 +7,12 @@ class RBmp(RPackage): - """Reads Windows BMP format images. Currently limited to 8 bit greyscale + """Read Windows Bitmap (BMP) Images. + + Reads Windows BMP format images. Currently limited to 8 bit greyscale images and 24,32 bit (A)RGB images. Pure R implementation without external dependencies.""" - homepage = "https://cloud.r-project.org/package=bmp" - url = "https://cloud.r-project.org/src/contrib/bmp_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bmp" + cran = "bmp" version('0.3', sha256='bdf790249b932e80bc3a188a288fef079d218856cf64ffb88428d915423ea649') diff --git a/var/spack/repos/builtin/packages/r-bookdown/package.py b/var/spack/repos/builtin/packages/r-bookdown/package.py index 17645f80dcea78..67f8c4015e61d2 100644 --- a/var/spack/repos/builtin/packages/r-bookdown/package.py +++ b/var/spack/repos/builtin/packages/r-bookdown/package.py @@ -7,15 +7,14 @@ class RBookdown(RPackage): - """Authoring Books and Technical Documents with R Markdown + """Authoring Books and Technical Documents with R Markdown. - Output formats and utilities for authoring books and technical - documents with R Markdown.""" + Output formats and utilities for authoring books and technical documents + with R Markdown.""" - homepage = "https://cloud.r-project.org/package=bookdown" - url = "https://cloud.r-project.org/src/contrib/bookdown_0.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/bookdown" + cran = "bookdown" + version('0.24', sha256='8bead2a20542d05f643fe77a949689a17b0ae9ff23efbb918ddab47597db1be3') version('0.21', sha256='47c0fa7a65da83753c2f445e0e972913f9203460f1daae3ab255d0d4b30eba76') version('0.12', sha256='38eb4c5b877ccd85b16cfe74a48c3bc53de2f276da98e5515f37e7a06e065bb0') version('0.5', sha256='b7331fd56f64bd2bddc34e2a188fc491f9ff5308f44f7e3151721247f21ca67e') @@ -23,11 +22,15 @@ class RBookdown(RPackage): depends_on('r+X', type=('build', 'run')) depends_on('r-htmltools@0.3.6:', type=('build', 'run')) depends_on('r-knitr@1.22:', type=('build', 'run')) - depends_on('r-rmarkdown@1.12:', when='@:0.12', type=('build', 'run')) - depends_on('r-rmarkdown@2.4:', when='@0.21:', type=('build', 'run')) - depends_on('r-xfun@0.6:', when='@:0.12', type=('build', 'run')) - depends_on('r-xfun@0.13:', when='@0.21:', type=('build', 'run')) - depends_on('r-tinytex@0.12:', when='@0.12:', type=('build', 'run')) - depends_on('r-yaml@2.1.14:', when='@:0.12', type=('build', 'run')) - depends_on('r-yaml@2.1.19:', when='@0.21:', type=('build', 'run')) + depends_on('r-knitr@1.31:', type=('build', 'run'), when='@0.24:') + depends_on('r-rmarkdown@1.12:', type=('build', 'run')) + depends_on('r-rmarkdown@2.4:', type=('build', 'run'), when='@0.21:') + depends_on('r-rmarkdown@2.9:', type=('build', 'run'), when='@0.24:') + depends_on('r-jquerylib', type=('build', 'run'), when='@0.24:') + depends_on('r-xfun@0.6:', type=('build', 'run')) + 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-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:') depends_on('pandoc@1.17.2:') diff --git a/var/spack/repos/builtin/packages/r-boot/package.py b/var/spack/repos/builtin/packages/r-boot/package.py index 52652d8781eedb..3e617c1a4334c5 100644 --- a/var/spack/repos/builtin/packages/r-boot/package.py +++ b/var/spack/repos/builtin/packages/r-boot/package.py @@ -7,15 +7,13 @@ class RBoot(RPackage): - """Bootstrap Functions (Originally by Angelo Canty for S) + """Bootstrap Functions (Originally by Angelo Canty for S). - Functions and datasets for bootstrapping from the book "Bootstrap - Methods and Their Application" by A. C. Davison and D. V. Hinkley (1997, - CUP), originally written by Angelo Canty for S.""" + Functions and datasets for bootstrapping from the book "Bootstrap Methods + and Their Application" by A. C. Davison and D. V. Hinkley (1997, CUP), + originally written by Angelo Canty for S.""" - homepage = "https://cloud.r-project.org/package=boot" - url = "https://cloud.r-project.org/src/contrib/boot_1.3-18.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/boot" + cran = "boot" version('1.3-28', sha256='9f7158fd2714659f590c3955651893dc24bd8f39196bc5a4cc35b0b031744a32') version('1.3-25', sha256='464835fcb453072346ce49e4ae318e04c9dba682349be49db616623b6088fbbe') diff --git a/var/spack/repos/builtin/packages/r-boruta/package.py b/var/spack/repos/builtin/packages/r-boruta/package.py index 385c6e14078bf6..e3ea8ff34e2451 100644 --- a/var/spack/repos/builtin/packages/r-boruta/package.py +++ b/var/spack/repos/builtin/packages/r-boruta/package.py @@ -7,15 +7,13 @@ class RBoruta(RPackage): - """An all relevant feature selection wrapper algorithm. It finds - relevant features by comparing original attributes' importance - with importance achievable at random, estimated using their - permuted copies (shadows). - """ + """Wrapper Algorithm for All Relevant Feature Selection. - homepage = "https://cloud.r-project.org/package=Boruta" - url = "https://cloud.r-project.org/src/contrib/Boruta_7.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Boruta" + An all relevant feature selection wrapper algorithm. It finds relevant + features by comparing original attributes' importance with importance + achievable at random, estimated using their permuted copies (shadows).""" + + cran = "Boruta" version('7.0.0', sha256='6ff520d27d68637058c33a34c547a656bb44d5e351b7cc7afed6cd4216275c78') version('6.0.0', sha256='1c9a7aabe09f040e147f6c614f5fe1d0b951d3b0f0024161fbb4c31da8fae8de') diff --git a/var/spack/repos/builtin/packages/r-brew/package.py b/var/spack/repos/builtin/packages/r-brew/package.py index 9be9612bb102c3..ad5b5debbcee78 100644 --- a/var/spack/repos/builtin/packages/r-brew/package.py +++ b/var/spack/repos/builtin/packages/r-brew/package.py @@ -7,12 +7,12 @@ class RBrew(RPackage): - """brew implements a templating framework for mixing text and R code for + """Templating Framework for Report Generation. + + Brew implements a templating framework for mixing text and R code for report generation. brew template syntax is similar to PHP, Ruby's erb module, Java Server Pages, and Python's psp module.""" - homepage = "https://cloud.r-project.org/package=brew" - url = "https://cloud.r-project.org/src/contrib/brew_1.0-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/brew" + cran = "brew" version('1.0-6', sha256='d70d1a9a01cf4a923b4f11e4374ffd887ad3ff964f35c6f9dc0f29c8d657f0ed') diff --git a/var/spack/repos/builtin/packages/r-bridgesampling/package.py b/var/spack/repos/builtin/packages/r-bridgesampling/package.py index 070a9994aa9a4a..47c3319d64dbaa 100644 --- a/var/spack/repos/builtin/packages/r-bridgesampling/package.py +++ b/var/spack/repos/builtin/packages/r-bridgesampling/package.py @@ -7,7 +7,7 @@ class RBridgesampling(RPackage): - """Bridge Sampling for Marginal Likelihoods and Bayes Factors: + """Bridge Sampling for Marginal Likelihoods and Bayes Factors. Provides functions for estimating marginal likelihoods, Bayes factors, posterior model probabilities, and normalizing constants in general, via @@ -15,8 +15,7 @@ class RBridgesampling(RPackage): ). Gronau, Singmann, & Wagenmakers (2020) .""" - homepage = "https://github.com/quentingronau/bridgesampling" - cran = "bridgesampling" + cran = "bridgesampling" version('1.1-2', sha256='54ecd39aa2e36d4d521d3d36425f9fe56a3f8547df6048c814c5931d790f3e6b') diff --git a/var/spack/repos/builtin/packages/r-brio/package.py b/var/spack/repos/builtin/packages/r-brio/package.py index d01679b97dbd84..a7e183fb2310b3 100644 --- a/var/spack/repos/builtin/packages/r-brio/package.py +++ b/var/spack/repos/builtin/packages/r-brio/package.py @@ -7,13 +7,12 @@ class RBrio(RPackage): - """Basic R Input Output + """Basic R Input Output. Functions to handle basic input output, these functions always read and write UTF-8 (8-bit Unicode Transformation Format) files and provide more explicit control over line endings.""" - homepage = "https://github.com/r-lib/brio" cran = "brio" version('1.1.3', sha256='eaa89041856189bee545bf1c42c7920a0bb0f1f70bb477487c467ee3e8fedcc6') diff --git a/var/spack/repos/builtin/packages/r-brms/package.py b/var/spack/repos/builtin/packages/r-brms/package.py index 669c5847646411..e3ac3ed4fb41e1 100644 --- a/var/spack/repos/builtin/packages/r-brms/package.py +++ b/var/spack/repos/builtin/packages/r-brms/package.py @@ -7,7 +7,7 @@ class RBrms(RPackage): - """Bayesian Regression Models using 'Stan': + """Bayesian Regression Models using 'Stan'. Fit Bayesian generalized (non-)linear multivariate multilevel models using 'Stan' for full Bayesian inference. A wide range of distributions and link @@ -25,8 +25,7 @@ class RBrms(RPackage): ; Burkner (2018) ; Carpenter et al. (2017) .""" - homepage = "https://github.com/paul-buerkner/brms" - cran = "brms" + cran = "brms" version('2.16.3', sha256='68302b10b5264f72d163d01c17792c002306cf37f0ee778dcec4c7e118f923e1') version('2.16.1', sha256='749efbd9fb061fe207cf2e729c1387d9a8538b922f12ceec4e82a9f8dd9c1bc4') @@ -37,13 +36,12 @@ class RBrms(RPackage): depends_on('r-rstan@2.19.2:', type=('build', 'run')) 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:', when='@2.16:', 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-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-projpred@2.0.0:', when='@:2.16.1', 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-future@1.19.0:', type=('build', 'run')) @@ -53,3 +51,5 @@ class RBrms(RPackage): depends_on('r-coda', type=('build', 'run')) depends_on('r-abind', type=('build', 'run')) depends_on('r-backports', type=('build', 'run')) + + depends_on('r-projpred@2.0.0:', type=('build', 'run'), when='@:2.16.1') diff --git a/var/spack/repos/builtin/packages/r-brobdingnag/package.py b/var/spack/repos/builtin/packages/r-brobdingnag/package.py index 548efde05be543..e456567ef9ac77 100644 --- a/var/spack/repos/builtin/packages/r-brobdingnag/package.py +++ b/var/spack/repos/builtin/packages/r-brobdingnag/package.py @@ -7,15 +7,15 @@ class RBrobdingnag(RPackage): - """Very Large Numbers in R: + """Very Large Numbers in R. Handles very large numbers in R. Real numbers are held using their natural logarithms, plus a logical flag indicating sign. The package includes a vignette that gives a step-by-step introduction to using S4 methods.""" - homepage = "https://github.com/RobinHankin/Brobdingnag.git" - cran = "Brobdingnag" + cran = "Brobdingnag" + version('1.2-7', sha256='73a734342736da5b29c2827d91f662101873503af7ad9cdf9e9e697bb32dd742') version('1.2-6', sha256='19eccaed830ce9d93b70642f6f126ac66722a98bbd48586899cc613dd9966ad4') depends_on('r@2.13.0:', 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 bda2de502ec1b5..8632aa022eabf5 100644 --- a/var/spack/repos/builtin/packages/r-broom/package.py +++ b/var/spack/repos/builtin/packages/r-broom/package.py @@ -7,7 +7,7 @@ class RBroom(RPackage): - """Convert Statistical Objects into Tidy Tibbles + """Convert Statistical Objects into Tidy Tibbles. Summarizes key information about statistical objects in tidy tibbles. This makes it easy to report results, create plots and consistently work with @@ -18,9 +18,10 @@ class RBroom(RPackage): measures like AIC and BIC. augment() adds information about individual observations to a dataset, such as fitted values or influence measures.""" - homepage = "https://github.com/tidyverse/broom" cran = "broom" + version('0.7.12', sha256='04fac12b2546689603a474fb92a0572f4241ae87b51b21b0808814a489227bd9') + version('0.7.11', sha256='9e3999d2635ac72e8f4c3a81decd50ee5d464c001c155375b5a970a629ba2e19') version('0.7.10', sha256='129fd5a53abef7f42b7efac6c64ebd71269b136aa648846d640562357927464f') version('0.7.9', sha256='1d5695f97b378b2b77fb8f64a4a54b72b278913d4adf9d61a7ca4f38a1c7c5fc') version('0.7.3', sha256='de5650e46ca6884876b63bc401d22bef9eace671147774466406d43324aebc2f') @@ -29,22 +30,22 @@ class RBroom(RPackage): version('0.4.2', sha256='9f409413623cf25e7110452e6215353af5114f7044d73af182bd6c10971c5a44') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r-backports', when='@0.5.0:', type=('build', 'run')) + 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:', when='@0.7.3:', type=('build', 'run')) - depends_on('r-ellipsis', when='@0.7.3:', type=('build', 'run')) - depends_on('r-generics@0.0.2:', when='@0.5.1:', type=('build', 'run')) - depends_on('r-glue', when='@0.7.3:', type=('build', 'run')) - depends_on('r-purrr', when='@0.5.0:', type=('build', 'run')) - depends_on('r-rlang', when='@0.7.3:', 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-purrr', type=('build', 'run'), when='@0.5.0:') + depends_on('r-rlang', type=('build', 'run'), when='@0.7.3:') depends_on('r-stringr', type=('build', 'run')) - depends_on('r-tibble', when='@0.5.0:', type=('build', 'run')) - depends_on('r-tibble@3.0.0:', when='@0.7.3:', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run'), when='@0.5.0:') + depends_on('r-tibble@3.0.0:', type=('build', 'run'), when='@0.7.3:') depends_on('r-tidyr', type=('build', 'run')) - depends_on('r-tidyr@1.0.0:', when='@0.7.3:', type=('build', 'run')) - depends_on('r-ggplot2', when='@0.7.10:', type=('build', 'run')) + depends_on('r-tidyr@1.0.0:', type=('build', 'run'), when='@0.7.3:') + depends_on('r-ggplot2', type=('build', 'run'), when='@0.7.10:') - depends_on('r-plyr', when='@:0.4.2', type=('build', 'run')) - depends_on('r-psych', when='@:0.4.2', type=('build', 'run')) - depends_on('r-reshape2', when='@:0.5.2', type=('build', 'run')) - depends_on('r-nlme', when='@:0.5.2', type=('build', 'run')) + 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') + depends_on('r-nlme', type=('build', 'run'), when='@:0.5.2') diff --git a/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py b/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py index 2a50ddb79d6111..1f52224518df39 100644 --- a/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py +++ b/var/spack/repos/builtin/packages/r-bsgenome-hsapiens-ucsc-hg19/package.py @@ -8,14 +8,14 @@ class RBsgenomeHsapiensUcscHg19(RPackage): """Full genome sequences for Homo sapiens (UCSC version hg19, based on - GRCh37.p13) + GRCh37.p13). Full genome sequences for Homo sapiens (Human) as provided by UCSC (hg19, Feb. 2009) and stored in Biostrings objects.""" # This is a bioconductor package but there is no available git repo. - homepage = "https://bioconductor.org/packages/BSgenome.Hsapiens.UCSC.hg19/" - url = "http://www.bioconductor.org/packages/release/data/annotation/src/contrib/BSgenome.Hsapiens.UCSC.hg19_1.4.0.tar.gz" + bioc = "BSgenome.Hsapiens.UCSC.hg19" + url = "http://www.bioconductor.org/packages/release/data/annotation/src/contrib/BSgenome.Hsapiens.UCSC.hg19_1.4.0.tar.gz" version('1.4.3', sha256='5bfa65d7836449d9b30c356968497cdfaa98be48c4e329e71e8f8a120f3e9d1a', @@ -25,4 +25,4 @@ class RBsgenomeHsapiensUcscHg19(RPackage): url='https://bioconductor.org/packages/3.10/data/annotation/src/contrib/BSgenome.Hsapiens.UCSC.hg19_1.4.0.tar.gz') depends_on('r-bsgenome@1.33.5:', type=('build', 'run')) - depends_on('r-bsgenome@1.54.0:', when='@1.4.3:', type=('build', 'run')) + depends_on('r-bsgenome@1.54.0:', type=('build', 'run'), when='@1.4.3:') diff --git a/var/spack/repos/builtin/packages/r-bsgenome/package.py b/var/spack/repos/builtin/packages/r-bsgenome/package.py index c59e29756fc47a..681f0053f47b3b 100644 --- a/var/spack/repos/builtin/packages/r-bsgenome/package.py +++ b/var/spack/repos/builtin/packages/r-bsgenome/package.py @@ -8,13 +8,13 @@ class RBsgenome(RPackage): """Software infrastructure for efficient representation of full genomes and - their SNPs + their SNPs. Infrastructure shared by all the Biostrings-based genome data packages.""" - homepage = "https://bioconductor.org/packages/BSgenome" - git = "https://git.bioconductor.org/packages/BSgenome.git" + bioc = "BSgenome" + version('1.62.0', commit='9b1859e11ffa082833f035a45274af6e4e83e863') version('1.58.0', commit='3a4926e03a7a1d7140a10c1b2bf6090808470145') version('1.52.0', commit='5398eba1cb56a873b29c04a7ce6858d5d60ff75b') version('1.50.0', commit='43910755f7477e4fe9bb968f186fddbb2f7355f9') @@ -25,22 +25,22 @@ class RBsgenome(RPackage): depends_on('r@2.8.0:', type=('build', 'run')) depends_on('r-biocgenerics@0.13.8:', type=('build', 'run')) depends_on('r-s4vectors@0.9.36:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.28:', when='@1.48.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.28:', type=('build', 'run'), when='@1.48.0:') depends_on('r-iranges@2.1.33:', type=('build', 'run')) - depends_on('r-iranges@2.11.16:', when='@1.46.0:', type=('build', 'run')) - depends_on('r-iranges@2.13.16:', when='@1.48.0:', type=('build', 'run')) + depends_on('r-iranges@2.11.16:', type=('build', 'run'), when='@1.46.0:') + depends_on('r-iranges@2.13.16:', type=('build', 'run'), when='@1.48.0:') depends_on('r-genomeinfodb@1.11.4:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.13.1:', when='@1.46.0:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.15.2:', when='@1.48.0:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.25.6:', when='@1.58.0:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.13.1:', type=('build', 'run'), when='@1.46.0:') + depends_on('r-genomeinfodb@1.15.2:', type=('build', 'run'), when='@1.48.0:') + depends_on('r-genomeinfodb@1.25.6:', type=('build', 'run'), when='@1.58.0:') depends_on('r-genomicranges@1.27.6:', type=('build', 'run')) - depends_on('r-genomicranges@1.29.14:', when='@1.46.0:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.10:', when='@1.48.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.29.14:', type=('build', 'run'), when='@1.46.0:') + depends_on('r-genomicranges@1.31.10:', type=('build', 'run'), when='@1.48.0:') depends_on('r-biostrings@2.35.3:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.48.0:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.48.0:') depends_on('r-rtracklayer@1.25.8:', type=('build', 'run')) - depends_on('r-rtracklayer@1.39.7:', when='@1.48.0:', type=('build', 'run')) - depends_on('r-matrixstats', when='@1.58.0:', type=('build', 'run')) + depends_on('r-rtracklayer@1.39.7:', type=('build', 'run'), when='@1.48.0:') + depends_on('r-matrixstats', type=('build', 'run'), when='@1.58.0:') depends_on('r-xvector', type=('build', 'run')) - depends_on('r-xvector@0.29.3:', when='@1.58.0:', type=('build', 'run')) + depends_on('r-xvector@0.29.3:', type=('build', 'run'), when='@1.58.0:') depends_on('r-rsamtools', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-bslib/package.py b/var/spack/repos/builtin/packages/r-bslib/package.py new file mode 100644 index 00000000000000..97437fffc6b12a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-bslib/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2022 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 import * + + +class RBslib(RPackage): + """Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'. + + Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via + 'Bootstrap' 'Sass'. Supports both 'Bootstrap' 3 and 4 as well as their + various 'Bootswatch' themes. An interactive widget is also provided for + previewing themes in real time.""" + + cran = "bslib" + + version('0.3.1', sha256='5f5cb56e5cab9039a24cd9d70d73b69c2cab5b2f5f37afc15f71dae0339d9849') + + depends_on('r@2.10:', type=('build', 'run')) + depends_on('r-htmltools@0.5.2:', type=('build', 'run')) + 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-rlang', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-bsseq/package.py b/var/spack/repos/builtin/packages/r-bsseq/package.py index 562621dc187b4e..c5d8828f77550b 100644 --- a/var/spack/repos/builtin/packages/r-bsseq/package.py +++ b/var/spack/repos/builtin/packages/r-bsseq/package.py @@ -7,31 +7,31 @@ class RBsseq(RPackage): - """Analyze, manage and store bisulfite sequencing data + """Analyze, manage and store bisulfite sequencing data. A collection of tools for analyzing and visualizing bisulfite sequencing data.""" - homepage = "https://github.com/kasperdanielhansen/bsseq" - git = "https://git.bioconductor.org/packages/bsseq" + bioc = "bsseq" + version('1.30.0', commit='7eb5223e9ee02fd08a52be56eaa9316a67c0d66b') version('1.26.0', commit='fae32292687625012a2938a48c93df55ad4257b5') version('1.24.4', commit='8fe7a03') version('1.22.0', commit='d4f7301') version('1.20.0', commit='07e398b') depends_on('r@3.5:', type=('build', 'run')) - depends_on('r@4.0:', when='@1.26.0:', type=('build', 'run')) + depends_on('r@4.0:', type=('build', 'run'), when='@1.26.0:') depends_on('r-biocgenerics', type=('build', 'run')) depends_on('r-genomicranges@1.29.14:', type=('build', 'run')) - depends_on('r-genomicranges@1.33.6:', when='@1.24.4:', type=('build', 'run')) - depends_on('r-genomicranges@1.41.5:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.33.6:', type=('build', 'run'), when='@1.24.4:') + depends_on('r-genomicranges@1.41.5:', type=('build', 'run'), when='@1.26.0:') depends_on('r-summarizedexperiment@1.9.18:', type=('build', 'run')) - depends_on('r-summarizedexperiment@1.17.4:', when='@1.24.4:', type=('build', 'run')) - depends_on('r-summarizedexperiment@1.19.5:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-summarizedexperiment@1.17.4:', type=('build', 'run'), when='@1.24.4:') + depends_on('r-summarizedexperiment@1.19.5:', type=('build', 'run'), when='@1.26.0:') depends_on('r-iranges@2.11.16:', type=('build', 'run')) - depends_on('r-iranges@2.22.2:', when='@1.24.4:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-iranges@2.22.2:', type=('build', 'run'), when='@1.24.4:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@1.26.0:') depends_on('r-genomeinfodb', type=('build', 'run')) depends_on('r-scales', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) @@ -39,20 +39,21 @@ class RBsseq(RPackage): depends_on('r-gtools', type=('build', 'run')) depends_on('r-data-table@1.11.8:', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) - depends_on('r-s4vectors@0.23.11:', when='@1.22.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.25.14:', when='@1.24.4:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.23.11:', type=('build', 'run'), when='@1.22.0:') + depends_on('r-s4vectors@0.25.14:', type=('build', 'run'), when='@1.24.4:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@1.26.0:') depends_on('r-r-utils@2.0.0:', type=('build', 'run')) depends_on('r-delayedmatrixstats@1.5.2:', type=('build', 'run')) depends_on('r-permute', type=('build', 'run')) depends_on('r-limma', type=('build', 'run')) depends_on('r-delayedarray@0.9.8:', type=('build', 'run')) - depends_on('r-delayedarray@0.15.16:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-delayedarray@0.15.16:', type=('build', 'run'), when='@1.26.0:') depends_on('r-rcpp', type=('build', 'run')) depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-bsgenome', type=('build', 'run')) depends_on('r-biostrings', type=('build', 'run')) depends_on('r-hdf5array@1.11.9:', type=('build', 'run')) - depends_on('r-hdf5array@1.15.19:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-hdf5array@1.15.19:', type=('build', 'run'), when='@1.26.0:') + depends_on('r-hdf5array@1.19.11:', type=('build', 'run'), when='@1.30.0:') depends_on('r-rhdf5', type=('build', 'run')) depends_on('r-beachmat', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-bumphunter/package.py b/var/spack/repos/builtin/packages/r-bumphunter/package.py index d3927410e03e0a..763d41a556a7f1 100644 --- a/var/spack/repos/builtin/packages/r-bumphunter/package.py +++ b/var/spack/repos/builtin/packages/r-bumphunter/package.py @@ -7,13 +7,13 @@ class RBumphunter(RPackage): - """Bump Hunter + """Bump Hunter. Tools for finding bumps in genomic data""" - homepage = "https://bioconductor.org/packages/bumphunter" - git = "https://git.bioconductor.org/packages/bumphunter.git" + bioc = "bumphunter" + version('1.36.0', commit='db50fcf7798c2eddfe48fd510d081dda82f2ee4e') version('1.32.0', commit='b7d39c2a6385ca217dceefc918b3ccd5c31bbaa0') version('1.26.0', commit='606bee8708a0911ced3efb197970b4c9fa52f2fa') version('1.24.5', commit='29b874033a38e86103b58ef2d4a55f285758147b') @@ -22,8 +22,8 @@ class RBumphunter(RPackage): version('1.16.0', commit='1c3ab4d1fd2d75b1586ccef12665960b3602080a') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r@3.4:', when='@1.20.0:', type=('build', 'run')) - depends_on('r@3.5:', when='@1.24.5:', type=('build', 'run')) + depends_on('r@3.4:', type=('build', 'run'), when='@1.20.0:') + depends_on('r@3.5:', type=('build', 'run'), when='@1.24.5:') depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) depends_on('r-iranges@2.3.23:', type=('build', 'run')) depends_on('r-genomeinfodb', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-bwstest/package.py b/var/spack/repos/builtin/packages/r-bwstest/package.py new file mode 100644 index 00000000000000..838646eb3a3d77 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-bwstest/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class RBwstest(RPackage): + """Baumgartner Weiss Schindler Test of Equal Distributions. + + Performs the 'Baumgartner-Weiss-Schindler' two-sample test of equal + probability distributions, . Also performs similar + rank-based tests for equal probability distributions due to Neuhauser + and Murakami + .""" + + cran = "BWStest" + + version('0.2.2', sha256='faff1dd698f1673a6befacb94d14281077d4c19be035a0a3bf85d77c1dfd5509') + + depends_on('r-memoise', type=('build', 'run')) + depends_on('r-rcpp@0.12.3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-c50/package.py b/var/spack/repos/builtin/packages/r-c50/package.py index 7a02f2c36e10e8..87f2d1685329d5 100644 --- a/var/spack/repos/builtin/packages/r-c50/package.py +++ b/var/spack/repos/builtin/packages/r-c50/package.py @@ -8,15 +8,14 @@ class RC50(RPackage): - """C5.0 Decision Trees and Rule-Based Models + """C5.0 Decision Trees and Rule-Based Models. C5.0 decision trees and rule-based models for pattern recognition that extend the work of Quinlan (1993, ISBN:1-55860-238-0).""" - homepage = "https://cloud.r-project.org/package=C50" - url = "https://cloud.r-project.org/src/contrib/C50_0.1.0-24.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/C50" + cran = "C50" + version('0.1.5', sha256='f0c17b4830371832ca64f5fcc702351a394ee90b384e0865307de9447f3f16d7') version('0.1.3.1', sha256='0b151ba8deef50ab2e2ad8469d87f54f0c6ab862f5c790ed8bb16cb3b8027546') version('0.1.2', sha256='8f459856e0309274bee24462b7145db4eba1d71031c236db39000a5375bdfaba') version('0.1.1', sha256='03bc1fc2f64bcd5c680568a24902deafab1965074a66f8802bc4cd0335bd01df') @@ -24,5 +23,6 @@ class RC50(RPackage): depends_on('r@2.10.0:', type=('build', 'run')) depends_on('r-partykit', type=('build', 'run')) - depends_on('r-cubist@0.2.1:', when='@:0.1.2', type=('build', 'run')) - depends_on('r-cubist@0.2.3:', when='@0.1.3.1:', type=('build', 'run')) + depends_on('r-cubist@0.2.1:', type=('build', 'run')) + depends_on('r-cubist@0.2.3:', type=('build', 'run'), when='@0.1.3.1:') + depends_on('r-cubist@0.3.0:', type=('build', 'run'), when='@0.1.5:') diff --git a/var/spack/repos/builtin/packages/r-ca/package.py b/var/spack/repos/builtin/packages/r-ca/package.py index 6e7a07c5651911..3fa69c422db80e 100644 --- a/var/spack/repos/builtin/packages/r-ca/package.py +++ b/var/spack/repos/builtin/packages/r-ca/package.py @@ -8,14 +8,12 @@ class RCa(RPackage): - """Simple, Multiple and Joint Correspondence Analysis + """Simple, Multiple and Joint Correspondence Analysis. - Computation and visualization of simple, multiple and joint - correspondence analysis.""" + Computation and visualization of simple, multiple and joint correspondence + analysis.""" - homepage = "http://www.carme-n.org/?sec=ca" - url = "https://cloud.r-project.org/src/contrib/ca_0.71.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ca" + cran = "ca" version('0.71.1', sha256='040c2fc94c356075f116cc7cd880530b3c9e02206c0035182c03a525ee99b424') diff --git a/var/spack/repos/builtin/packages/r-cachem/package.py b/var/spack/repos/builtin/packages/r-cachem/package.py new file mode 100644 index 00000000000000..461fd9e90d2922 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-cachem/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RCachem(RPackage): + """Cache R Objects with Automatic Pruning. + + Key-value stores with automatic pruning. Caches can limit either their + total size or the age of the oldest object (or both), automatically pruning + objects to maintain the constraints.""" + + cran = "cachem" + + version('1.0.6', sha256='9a9452f7bcf3f79436c418b3c3290449fb8fd338714d9b992153754d112f1864') + + depends_on('r-rlang', type=('build', 'run')) + depends_on('r-fastmap', 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 6f411beaa302d9..599c7e3f060e24 100644 --- a/var/spack/repos/builtin/packages/r-cairo/package.py +++ b/var/spack/repos/builtin/packages/r-cairo/package.py @@ -9,7 +9,7 @@ class RCairo(RPackage): """R graphics device using cairo graphics library for creating high-quality bitmap (PNG, JPEG, TIFF), vector (PDF, SVG, PostScript) and display (X11 - and Win32) output + and Win32) output. R graphics device using cairographics library that can be used to create high-quality vector (PDF, PostScript and SVG) and bitmap output @@ -23,10 +23,9 @@ class RCairo(RPackage): support or anti-aliasing. Backends are modular such that any subset of backends is supported.""" - homepage = "https://cloud.r-project.org/package=Cairo" - url = "https://cloud.r-project.org/src/contrib/Cairo_1.5-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Cairo" + cran = "Cairo" + version('1.5-14', sha256='067751face3b5771e72f9fb49bfeefb3a7bbecc060b672ab4393cb5935204c7b') version('1.5-12.2', sha256='dd524105c83b82b5c3b3ee2583ef90d4cafa54b0c29817dac48b425b79f90f92') version('1.5-10', sha256='7837f0c384cd49bb3342cb39a916d7a80b02fffbf123913a58014e597f69b5d5') version('1.5-9', sha256='2a867b6cae96671d6bc3acf9334d6615dc01f6ecf1953a27cde8a43c724a38f4') diff --git a/var/spack/repos/builtin/packages/r-callr/package.py b/var/spack/repos/builtin/packages/r-callr/package.py index fe0b148e17563d..de4e7e93611ae1 100644 --- a/var/spack/repos/builtin/packages/r-callr/package.py +++ b/var/spack/repos/builtin/packages/r-callr/package.py @@ -7,13 +7,12 @@ class RCallr(RPackage): - """Call R from R + """Call R from R. It is sometimes useful to perform a computation in a separate R process, without affecting the current R process at all. This packages does exactly that.""" - homepage = "https://github.com/MangoTheCat/callr" cran = "callr" version('3.7.0', sha256='d67255148595c6d0ba4c4d241bc9f6b5e00cafe25fdc13e38c10acc38653360a') @@ -24,6 +23,6 @@ class RCallr(RPackage): version('3.0.0', sha256='e36361086c65660a6ecbbc09b5ecfcddee6b59caf75e983e48b21d3b8defabe7') version('1.0.0', sha256='2c56808c723aba2ea8a8b6bbdc9b8332c96f59b119079861dd52f5988c27f715') - depends_on('r-processx@3.4.0:', when='@3.0.0:', type=('build', 'run')) - depends_on('r-processx@3.5.0:', when='@3.6.0:', type=('build', 'run')) - depends_on('r-r6', when='@3.0.0:', type=('build', 'run')) + depends_on('r-processx@3.4.0:', type=('build', 'run'), when='@3.0.0:') + depends_on('r-processx@3.5.0:', type=('build', 'run'), when='@3.6.0:') + depends_on('r-r6', type=('build', 'run'), when='@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-car/package.py b/var/spack/repos/builtin/packages/r-car/package.py index 1d51e1cf8b87ed..484309ab83ee28 100644 --- a/var/spack/repos/builtin/packages/r-car/package.py +++ b/var/spack/repos/builtin/packages/r-car/package.py @@ -7,12 +7,11 @@ class RCar(RPackage): - """Companion to Applied Regression + """Companion to Applied Regression. - Functions and Datasets to Accompany J. Fox and S. Weisberg, An R - Companion to Applied Regression, Second Edition, Sage, 2011.""" + Functions and Datasets to Accompany J. Fox and S. Weisberg, An R Companion + to Applied Regression, Second Edition, Sage, 2011.""" - homepage = "https://r-forge.r-project.org/projects/car/" cran = "car" version('3.0-12', sha256='b899a6efae3842a90a2349d381dbcf4b4ed36bd03108ebe7380e81120e457302') @@ -23,17 +22,17 @@ class RCar(RPackage): version('2.1-4', sha256='fd39cf1750cb560a66623fea3fa9e6a94fc24e3dc36367aff24df7d0743edb28') version('2.1-2', sha256='8cc3e57f172c8782a08960b508906d3201596a21f4b6c1dab8d4e59353093652') - depends_on('r@3.2.0:', when='@:3.0-2', type=('build', 'run')) - depends_on('r@3.5.0:', when='@3.0-3:', type=('build', 'run')) - depends_on('r-cardata@3.0-0:', when='@3.0:', type=('build', 'run')) - depends_on('r-abind', when='@3.0:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.0-3:') + depends_on('r-cardata@3.0-0:', type=('build', 'run'), when='@3.0:') + depends_on('r-abind', type=('build', 'run'), when='@3.0:') depends_on('r-mass', type=('build', 'run')) depends_on('r-mgcv', type=('build', 'run')) depends_on('r-nnet', type=('build', 'run')) depends_on('r-pbkrtest@0.4-4:', type=('build', 'run')) depends_on('r-quantreg', type=('build', 'run')) - depends_on('r-maptools', when='@3.0:', type=('build', 'run')) - depends_on('r-rio', when='@3.0:3.0-11', type=('build', 'run')) - depends_on('r-lme4@1.1-27.1:', when='@3.0-11:', type=('build', 'run')) - depends_on('r-lme4', when='@3.0:', type=('build', 'run')) - depends_on('r-nlme', when='@3.0:', type=('build', 'run')) + depends_on('r-maptools', type=('build', 'run'), when='@3.0:') + depends_on('r-rio', type=('build', 'run'), when='@3.0:3.0-11') + depends_on('r-lme4@1.1-27.1:', type=('build', 'run'), when='@3.0-11:') + depends_on('r-lme4', type=('build', 'run'), when='@3.0:') + depends_on('r-nlme', type=('build', 'run'), when='@3.0:') diff --git a/var/spack/repos/builtin/packages/r-caracas/package.py b/var/spack/repos/builtin/packages/r-caracas/package.py index d2134463a2551e..72bacbc2503e98 100644 --- a/var/spack/repos/builtin/packages/r-caracas/package.py +++ b/var/spack/repos/builtin/packages/r-caracas/package.py @@ -7,19 +7,19 @@ class RCaracas(RPackage): - """Computer Algebra + """Computer Algebra. Computer algebra via the 'SymPy' library (). This makes it possible to solve equations symbolically, find symbolic integrals, symbolic sums and other important quantities.""" - homepage = "https://cloud.r-project.org/package=caracas" - url = "https://cloud.r-project.org/src/contrib/caracas_1.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/caracas" + cran = "caracas" + version('1.1.1', sha256='e14487c9492417cf5c7d7373c37dbb4fea4d91180a1a03154e51eaa7878b2769') version('1.0.1', sha256='2482dd7b77791243b8174cb41b80b735c3ebd7db837bbf991127514f492af594') version('1.0.0', sha256='0da6f1d94d1dacb1c11a3635bdff8f7cd8f84373deffa7126636d0876d48e42b') depends_on('r@3.0:', type=('build', 'run')) depends_on('r-reticulate@1.14:', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run'), when='@1.1.1:') depends_on('python@3.6:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-cardata/package.py b/var/spack/repos/builtin/packages/r-cardata/package.py index c6d010dbaf794d..ae19934b5169d1 100644 --- a/var/spack/repos/builtin/packages/r-cardata/package.py +++ b/var/spack/repos/builtin/packages/r-cardata/package.py @@ -7,17 +7,16 @@ class RCardata(RPackage): - """Companion to Applied Regression Data Sets + """Companion to Applied Regression Data Sets. Datasets to Accompany J. Fox and S. Weisberg, An R Companion to Applied Regression, Third Edition, Sage (2019).""" - homepage = "https://r-forge.r-project.org/projects/car/" - url = "https://cloud.r-project.org/src/contrib/carData_3.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/carData" + cran = "carData" + version('3.0-5', sha256='02e77159b33e3afb8cd9cfab11cf5a996a93175f924b07d991ce44bc6e16451a') version('3.0-4', sha256='cda6f5e3efc1d955a4a0625e9c33f90d49f5455840e88b3bd757129b86044724') version('3.0-2', sha256='3b5c4eff1cc1e456a5331084774503eaa06cf61fb7acf6b9e8a6bfabd5735494') depends_on('r@3.0:', type=('build', 'run')) - depends_on('r@3.5:', when='@3.0-4:', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@3.0-4:') diff --git a/var/spack/repos/builtin/packages/r-caret/package.py b/var/spack/repos/builtin/packages/r-caret/package.py index f33c575bc71326..51e8b12fd4cf04 100644 --- a/var/spack/repos/builtin/packages/r-caret/package.py +++ b/var/spack/repos/builtin/packages/r-caret/package.py @@ -7,15 +7,14 @@ class RCaret(RPackage): - """Classification and Regression Training + """Classification and Regression Training. Misc functions for training and plotting classification and regression models.""" - homepage = "https://github.com/topepo/caret/" - url = "https://cloud.r-project.org/src/contrib/caret_6.0-73.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/caret" + cran = "caret" + version('6.0-90', sha256='e851a4ed7d939c665e57e3551a5464b09fe4285e7c951236efdd890b0da866bc') version('6.0-86', sha256='da4a1c7c3fbf645c5b02871e563a77404622b83623f0d1c5dc1425de7aa4ce37') version('6.0-84', sha256='a1831c086a9c71b469f7405649ba04517683cdf229e119c005189cf57244090d') version('6.0-83', sha256='9bde5e4da1f0b690bfe06c2439c0136504e851a8d360bf56b644f171fe20dcef') @@ -23,17 +22,19 @@ class RCaret(RPackage): version('6.0-70', sha256='21c5bdf7cf07bece38729465366564d8ca104c2466ee9fd800ca1fd88eb82f38') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r@3.2.0:', when='@6.0-82:', type=('build', 'run')) - depends_on('r-lattice@0.20:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@6.0-82:') depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-lattice@0.20:', type=('build', 'run')) + depends_on('r-e1071', type=('build', 'run'), when='@6.0-90:') depends_on('r-foreach', type=('build', 'run')) - depends_on('r-plyr', type=('build', 'run')) depends_on('r-modelmetrics@1.1.0:', type=('build', 'run')) - depends_on('r-modelmetrics@1.2.2.2:', when='@6.0-86:', type=('build', 'run')) + depends_on('r-modelmetrics@1.2.2.2:', type=('build', 'run'), when='@6.0-86:') depends_on('r-nlme', type=('build', 'run')) + depends_on('r-plyr', type=('build', 'run')) + depends_on('r-proc', type=('build', 'run'), when='@6.0-86:') + depends_on('r-recipes@0.1.4:', type=('build', 'run'), when='@6.0-83:6.0-84') + depends_on('r-recipes@0.1.10:', type=('build', 'run'), when='@6.0-86:') depends_on('r-reshape2', type=('build', 'run')) - depends_on('r-recipes@0.1.4:', when='@6.0-83:6.0-84', type=('build', 'run')) - depends_on('r-recipes@0.1.10:', when='@6.0-86:', type=('build', 'run')) - depends_on('r-withr@2.0.0:', when='@6.0-83:', type=('build', 'run')) - depends_on('r-proc', when='@6.0-86:', type=('build', 'run')) - depends_on('r-car', when='@:6.0-73', type=('build', 'run')) + depends_on('r-withr@2.0.0:', type=('build', 'run'), when='@6.0-83:') + + depends_on('r-car', type=('build', 'run'), when='@:6.0-73') diff --git a/var/spack/repos/builtin/packages/r-caretensemble/package.py b/var/spack/repos/builtin/packages/r-caretensemble/package.py index 8380dc81d56163..51b3025b9aab42 100644 --- a/var/spack/repos/builtin/packages/r-caretensemble/package.py +++ b/var/spack/repos/builtin/packages/r-caretensemble/package.py @@ -7,7 +7,7 @@ class RCaretensemble(RPackage): - """caretEnsemble: Ensembles of Caret Models + """Ensembles of Caret Models. Functions for creating ensembles of caret models: caretList() and caretStack(). caretList() is a convenience function for fitting multiple @@ -16,9 +16,7 @@ class RCaretensemble(RPackage): meta-model, and caretEnsemble() will make a robust linear combination of models using a GLM.""" - homepage = "https://github.com/zachmayer/caretEnsemble" - url = "https://cloud.r-project.org/src/contrib/caretEnsemble_2.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/caretEnsemble" + cran = "caretEnsemble" version('2.0.1', sha256='7e595e604ce2d9d32afbc5404e6fcbcd7f80e687316e9ca3303aca3e44c3ef88') diff --git a/var/spack/repos/builtin/packages/r-caroline/package.py b/var/spack/repos/builtin/packages/r-caroline/package.py index 6a2faa4f39e1e9..40e95fbd7c2343 100644 --- a/var/spack/repos/builtin/packages/r-caroline/package.py +++ b/var/spack/repos/builtin/packages/r-caroline/package.py @@ -7,12 +7,20 @@ class RCaroline(RPackage): - """caroline: A Collection of Database, Data Structure, Visualization, - andUtility Functions for R""" + """A Collection of Database, Data Structure, Visualization, andUtility + Functions for R. - homepage = "https://cloud.r-project.org/package=caroline" - url = "https://cloud.r-project.org/src/contrib/caroline_0.7.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/caroline" + The caroline R library contains dozens of functions useful for: database + migration (dbWriteTable2), database style joins & aggregation (nerge, + groupBy & bestBy), data structure conversion (nv, tab2df), legend table + making (sstable & leghead), plot annotation (labsegs & mvlabs), data + visualization (violins, pies & raPlot), character string manipulation (m & + pad), file I/O (write.delim), batch scripting and more. The package's + greatest contributions lie in the database style merge, aggregation and + interface functions as well as in it's extensive use and propagation of + row, column and vector names in most functions.""" + + cran = "caroline" version('0.7.6', sha256='e7ba948f7d87f091b498dd0eec2ca4fdad7af4e2bbb67e0945c2f0d3f2eadda9') diff --git a/var/spack/repos/builtin/packages/r-category/package.py b/var/spack/repos/builtin/packages/r-category/package.py index eb42c260414d5b..a38499b48e6355 100644 --- a/var/spack/repos/builtin/packages/r-category/package.py +++ b/var/spack/repos/builtin/packages/r-category/package.py @@ -7,14 +7,14 @@ class RCategory(RPackage): - """Category Analysis + """Category Analysis. A collection of tools for performing category (gene set enrichment) analysis.""" - homepage = "https://bioconductor.org/packages/Category" - git = "https://git.bioconductor.org/packages/Category.git" + bioc = "Category" + version('2.60.0', commit='55210d8c539474954d18cf913a219dce883eac2e') version('2.56.0', commit='ad478caa9d693dbc2770608e79dd852375b9a223') version('2.50.0', commit='d96f0b29cb778f6697b44d7ba7b0abd7086074a9') version('2.48.1', commit='941819a3d9dd129f47b4ea00fa74032e405be3a5') diff --git a/var/spack/repos/builtin/packages/r-catools/package.py b/var/spack/repos/builtin/packages/r-catools/package.py index d0fa2c3ab9029d..0ec682adeba4b4 100644 --- a/var/spack/repos/builtin/packages/r-catools/package.py +++ b/var/spack/repos/builtin/packages/r-catools/package.py @@ -8,22 +8,21 @@ class RCatools(RPackage): - """Tools: Moving Window Statistics, GIF, Base64, ROC AUC, etc + """Moving Window Statistics, GIF, Base64, ROC AUC, etc. Contains several basic utility functions including: moving (rolling, running) window statistic functions, read/write for GIF and ENVI binary files, fast calculation of AUC, LogitBoost classifier, base64 encoder/decoder, round-off-error-free sum and cumsum, etc.""" - homepage = "https://cloud.r-project.org/package=caTools" - url = "https://cloud.r-project.org/src/contrib/caTools_1.17.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/caTools" + cran = "caTools" + version('1.18.2', sha256='75d61115afec754b053ed1732cc034f2aeb27b13e6e1932aa0f26bf590cf0293') version('1.18.1', sha256='ffeba4ffbeed5d491bf79b1fde3477f413341e412f77316af20439f54447c9f9') version('1.17.1.2', sha256='69cc542fab5677462b1a768709d0c4a0a0790f5db53e1fe9ae7123787c18726b') version('1.17.1.1', sha256='d53e2c5c77f1bd4744703d7196dbc9b4671a120bbb5b9b3edc45fc57c0650c06') version('1.17.1', sha256='d32a73febf00930355cc00f3e4e71357412e0f163faae6a4bf7f552cacfe9af4') depends_on('r@2.2.0:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@1.18.1:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@1.18.1:') depends_on('r-bitops', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-cca/package.py b/var/spack/repos/builtin/packages/r-cca/package.py index dcc819bfb0b80c..7e583170e397bf 100644 --- a/var/spack/repos/builtin/packages/r-cca/package.py +++ b/var/spack/repos/builtin/packages/r-cca/package.py @@ -5,10 +5,12 @@ class RCca(RPackage): - """Provides a set of functions that extend the 'cancor' function - with new numerical and graphical outputs. It also include a - regularized extension of the canonical correlation analysis to - deal with datasets with more variables than observations.""" + """Canonical Correlation Analysis. + + Provides a set of functions that extend the 'cancor' function with new + numerical and graphical outputs. It also include a regularized extension of + the canonical correlation analysis to deal with datasets with more + variables than observations.""" cran = 'CCA' diff --git a/var/spack/repos/builtin/packages/r-ccp/package.py b/var/spack/repos/builtin/packages/r-ccp/package.py index a1eaf25e1581c7..c206f849640042 100644 --- a/var/spack/repos/builtin/packages/r-ccp/package.py +++ b/var/spack/repos/builtin/packages/r-ccp/package.py @@ -5,8 +5,10 @@ class RCcp(RPackage): - """Significance tests for canonical correlation analysis, - including asymptotic tests and a Monte Carlo method""" + """Significance Tests for Canonical Correlation Analysis (CCA). + + Significance tests for canonical correlation analysis, including asymptotic + tests and a Monte Carlo method""" cran = 'CCP' diff --git a/var/spack/repos/builtin/packages/r-cdcfluview/package.py b/var/spack/repos/builtin/packages/r-cdcfluview/package.py index 297950748f5f79..df99bd5391db0f 100644 --- a/var/spack/repos/builtin/packages/r-cdcfluview/package.py +++ b/var/spack/repos/builtin/packages/r-cdcfluview/package.py @@ -8,7 +8,7 @@ class RCdcfluview(RPackage): """Retrieve Flu Season Data from the United States Centers for Disease - Control and Prevention ('CDC') 'FluView' Portal + Control and Prevention ('CDC') 'FluView' Portal. The 'U.S.' Centers for Disease Control ('CDC') maintains a portal for accessing @@ -17,21 +17,20 @@ class RCdcfluview(RPackage): to select and retrieve influenza data. Tools are provided to access the data provided by the portal's underlying 'API'.""" - homepage = "https://cloud.r-project.org/package=cdcfluview" - url = "https://cloud.r-project.org/src/contrib/cdcfluview_0.7.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/cdcfluview" + cran = "cdcfluview" + version('0.9.4', sha256='776a155c4f0cc678fde94a6d47cc2783ff5c199f26cce642461092e1b6311dad') version('0.9.2', sha256='f2080fc80c5e0241f8b657f5ac3a251ea89dfc26c1ab13bdfaed4d4e97495015') version('0.9.0', sha256='1b2064886858cbb1790ef808d88fbab75d3a9cf55e720638221a3377ff8dd244') version('0.7.0', sha256='8c8978d081f8472a6ed5ec54c4e6dd906f97ee28d0f88eef1514088f041ecc03') - depends_on('r@3.2.0:', when='@:0.9.0', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.9.2:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.9.2:') depends_on('r-httr', type=('build', 'run')) - depends_on('r-progress', when='@0.9.2:', type=('build', 'run')) + depends_on('r-progress', type=('build', 'run'), when='@0.9.2:') depends_on('r-dplyr', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) - depends_on('r-tibble', when='@0.9.2:', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run'), when='@0.9.2:') depends_on('r-sf', type=('build', 'run')) depends_on('r-xml2', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-cellranger/package.py b/var/spack/repos/builtin/packages/r-cellranger/package.py index 836fc763108eaa..d31a6a65ce47f7 100644 --- a/var/spack/repos/builtin/packages/r-cellranger/package.py +++ b/var/spack/repos/builtin/packages/r-cellranger/package.py @@ -7,12 +7,12 @@ class RCellranger(RPackage): - """Helper functions to work with spreadsheets and the "A1:D10" - style of cell range specification.""" + """Translate Spreadsheet Cell Ranges to Rows and Columns. - homepage = "https://cloud.r-project.org/package=cellranger" - url = "https://cloud.r-project.org/src/contrib/cellranger_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/cellranger" + Helper functions to work with spreadsheets and the "A1:D10" style of cell + range specification.""" + + cran = "cellranger" version('1.1.0', sha256='5d38f288c752bbb9cea6ff830b8388bdd65a8571fd82d8d96064586bd588cf99') diff --git a/var/spack/repos/builtin/packages/r-champ/package.py b/var/spack/repos/builtin/packages/r-champ/package.py index 591ae8a4b2465f..d94d84c257ed25 100644 --- a/var/spack/repos/builtin/packages/r-champ/package.py +++ b/var/spack/repos/builtin/packages/r-champ/package.py @@ -8,14 +8,15 @@ class RChamp(RPackage): """Chip Analysis Methylation Pipeline for Illumina HumanMethylation450 and - EPIC: + EPIC. The package includes quality control metrics, a selection of normalization methods and novel methods to identify differentially methylated regions and to highlight copy number alterations.""" - bioc = "ChAMP" + bioc = "ChAMP" + version('2.24.0', commit='7ba19da74b61e1c40ced162ba753f0f9b9c7647a') version('2.20.1', commit='99ea0463bce59f5b06bcc91f479dcd4065074896') depends_on('r@3.3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-champdata/package.py b/var/spack/repos/builtin/packages/r-champdata/package.py index 64327236b1492d..b6cb7ddfa0349d 100644 --- a/var/spack/repos/builtin/packages/r-champdata/package.py +++ b/var/spack/repos/builtin/packages/r-champdata/package.py @@ -7,13 +7,14 @@ class RChampdata(RPackage): - """Packages for ChAMP package: + """Packages for ChAMP package. Provides datasets needed for ChAMP including a test dataset and blood controls for CNA analysis.""" - bioc = "ChAMPdata" + bioc = "ChAMPdata" + version('2.26.0', commit='ea7882707921af33eefab5133a1ccd4a409f045d') version('2.22.0', commit='eeedd4c477fac79f00743da8ff7da064221c5f3d') depends_on('r@3.3:', 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 b7ae065d18c791..4ec0a37f38b1ab 100644 --- a/var/spack/repos/builtin/packages/r-checkmate/package.py +++ b/var/spack/repos/builtin/packages/r-checkmate/package.py @@ -7,15 +7,13 @@ class RCheckmate(RPackage): - """Fast and Versatile Argument Checks + """Fast and Versatile Argument Checks. - Tests and assertions to perform frequent argument checks. - A substantial part of the package was written in C to - minimize any worries about execution time overhead.""" + Tests and assertions to perform frequent argument checks. A substantial + part of the package was written in C to minimize any worries about + execution time overhead.""" - homepage = "https://cloud.r-project.org/package=checkmate" - url = "https://cloud.r-project.org/src/contrib/checkmate_1.8.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/checkmate" + cran = "checkmate" version('2.0.0', sha256='0dc25b0e20c04836359df1885d099c6e4ad8ae0e585a9e4107f7ea945d9c6fa4') version('1.9.4', sha256='faa25754b757fe483b876f5d07b73f76f69a1baa971420892fadec4af4bbad21') diff --git a/var/spack/repos/builtin/packages/r-checkpoint/package.py b/var/spack/repos/builtin/packages/r-checkpoint/package.py index 4767d60d4b14fa..b12dce32e0dc74 100644 --- a/var/spack/repos/builtin/packages/r-checkpoint/package.py +++ b/var/spack/repos/builtin/packages/r-checkpoint/package.py @@ -7,7 +7,8 @@ class RCheckpoint(RPackage): - """Install Packages from Snapshots on the Checkpoint Server for Reproducibility + """Install Packages from Snapshots on the Checkpoint Server for + Reproducibility. The goal of checkpoint is to solve the problem of package reproducibility in R. Specifically, checkpoint allows you to install packages as they @@ -25,13 +26,19 @@ class RCheckpoint(RPackage): thus creating the archive. Snapshot archives exist starting from 2014-09-17.""" - homepage = "https://cloud.r-project.org/package=checkpoint" - url = "https://cloud.r-project.org/src/contrib/checkpoint_0.4.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/checkpoint" + cran = "checkpoint" + version('1.0.2', sha256='a80390d834534e908058a597a2a5ee60a111023e76f13f370949963582dd07a5') + version('1.0.1', sha256='8542029395b7d557c1b39423326611f408788fcd02f5cbeb5ed252f368f8dcd2') + version('1.0.0', sha256='d36146093763ca29e0296729399b96e0f2e7764745283d6cea1066a96fa085a7') version('0.4.10', sha256='7362ae9703763fe4652d0b592cd913ce506f072a18e5cf5970d08d7cdf4d126a') version('0.4.6', sha256='fd1a5edb5cb1a40d7ed26bb196de566110fe2ef62e70b4e947c003576a03ebb2') version('0.4.3', sha256='c3e862f89f8838183d6028f7ed13683aec562e6dab77ad4b6a5e24ec653cfb64') version('0.3.15', sha256='09f1feeb2b5b8b409a2e16a9185827b8da5e555f1aa84442a287f15e452beed7') depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-jsonlite', type=('build', 'run'), when='@1.0.0:') + depends_on('r-yaml', type=('build', 'run'), when='@1.0.0:') + depends_on('r-withr', type=('build', 'run'), when='@1.0.0:') + depends_on('r-pkgdepends', type=('build', 'run'), when='@1.0.0:') diff --git a/var/spack/repos/builtin/packages/r-chemometrics/package.py b/var/spack/repos/builtin/packages/r-chemometrics/package.py index e2d3b30b6c93eb..a757e9b7a50785 100644 --- a/var/spack/repos/builtin/packages/r-chemometrics/package.py +++ b/var/spack/repos/builtin/packages/r-chemometrics/package.py @@ -7,13 +7,12 @@ class RChemometrics(RPackage): - """R companion to the book "Introduction to Multivariate Statistical - Analysis in Chemometrics" written by K. Varmuza and P. Filzmoser - (2009).""" + """Multivariate Statistical Analysis in Chemometrics. - homepage = "https://cloud.r-project.org/package=chemometrics" - url = "https://cloud.r-project.org/src/contrib/chemometrics_1.4.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/chemometrics" + R companion to the book "Introduction to Multivariate Statistical Analysis + in Chemometrics" written by K. Varmuza and P. Filzmoser (2009).""" + + cran = "chemometrics" version('1.4.2', sha256='b705832fa167dc24b52b642f571ed1efd24c5f53ba60d02c7797986481b6186a') version('1.4.1', sha256='7646da0077657d672356204aa2094be68e10ec13617f92ae97ff53a389053905') diff --git a/var/spack/repos/builtin/packages/r-chipseq/package.py b/var/spack/repos/builtin/packages/r-chipseq/package.py index 4f6127bfd507d9..217297ef3b1e0d 100644 --- a/var/spack/repos/builtin/packages/r-chipseq/package.py +++ b/var/spack/repos/builtin/packages/r-chipseq/package.py @@ -7,15 +7,15 @@ class RChipseq(RPackage): - """A package for analyzing chipseq data + """A package for analyzing chipseq data, Tools for helping process short read data for chipseq experiments""" - homepage = "https://bioconductor.org/packages/release/bioc/html/chipseq.html" - git = "https://git.bioconductor.org/packages/chipseq" + bioc = "chipseq" maintainers = ['dorton21'] + version('1.44.0', commit='b64d0d28e9fcf0fdab9a7f9c521baf729426a594') version('1.40.0', commit='84bcbc0b7ad732730b5989a308f1624a6a358df1') depends_on('r@2.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-chron/package.py b/var/spack/repos/builtin/packages/r-chron/package.py index a5e42ecca21850..96a3b2c67f12fc 100644 --- a/var/spack/repos/builtin/packages/r-chron/package.py +++ b/var/spack/repos/builtin/packages/r-chron/package.py @@ -9,12 +9,9 @@ class RChron(RPackage): """Chronological objects which can handle dates and times. - Provides chronological objects which can handle dates and times. - """ + Provides chronological objects which can handle dates and times.""" - homepage = "https://cloud.r-project.org/package=chron" - url = "https://cloud.r-project.org/src/contrib/chron_2.3-47.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/chron" + cran = "chron" version('2.3-56', sha256='863ecbb951a3da994761ea9062fa96d34e94e19fbc4122521ac179274dfa3f5d') version('2.3-53', sha256='521814b46ba958eae28e29d8766aebd285da5e6fa16c5806603df3ae39f77309') diff --git a/var/spack/repos/builtin/packages/r-circlize/package.py b/var/spack/repos/builtin/packages/r-circlize/package.py index f0b9292c255f0d..3690f5610f6013 100644 --- a/var/spack/repos/builtin/packages/r-circlize/package.py +++ b/var/spack/repos/builtin/packages/r-circlize/package.py @@ -7,7 +7,7 @@ class RCirclize(RPackage): - """Circular Visualization + """Circular Visualization. Circular layout is an efficient way for the visualization of huge amounts of information. Here this package provides an implementation of circular @@ -21,17 +21,16 @@ class RCirclize(RPackage): package is described in Gu et al. 2014 .""" - homepage = "https://cloud.r-project.org/package=circlize" - url = "https://cloud.r-project.org/src/contrib/circlize_0.4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/circlize" + cran = "circlize" + version('0.4.13', sha256='6cbadbf8e8b1abbd71a79080677d2b95f2bdd18f2e4d707c32d5c2ff26c5369b') version('0.4.12', sha256='b3b60caa5292cf980cf474c85f59582f6862925631a4da86a78eac05903252f4') version('0.4.6', sha256='cec88cfc5e512a111cc37177552c25698ccc0e9bbecb0d6e60657e7b115a56fa') version('0.4.1', sha256='204a170ae3b982f09b652c4583189907cfa42a29bc7efaba02a1e0d79f1cf1f0') version('0.4.0', sha256='abdc1bbe264be42c1d7b65869979da7cd131032fd6fd3f11f9744dae54e83f5c') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r-globaloptions@0.1.0:', when='@:0.4.6', type=('build', 'run')) - depends_on('r-globaloptions@0.1.2:', when='@0.4.12:', type=('build', 'run')) + 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')) depends_on('r-colorspace', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-circstats/package.py b/var/spack/repos/builtin/packages/r-circstats/package.py index 821ccffed66c02..721165372a1663 100644 --- a/var/spack/repos/builtin/packages/r-circstats/package.py +++ b/var/spack/repos/builtin/packages/r-circstats/package.py @@ -7,14 +7,12 @@ class RCircstats(RPackage): - """Circular Statistics, from "Topics in Circular Statistics" (2001) + """Circular Statistics, from "Topics in Circular Statistics" (2001). - Circular Statistics, from "Topics in Circular Statistics" (2001) S. - Rao Jammalamadaka and A. SenGupta, World Scientific.""" + Circular Statistics, from "Topics in Circular Statistics" (2001) S. Rao + Jammalamadaka and A. SenGupta, World Scientific.""" - homepage = "https://cloud.r-project.org/package=CircStats" - url = "https://cloud.r-project.org/src/contrib/CircStats_0.2-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/CircStats" + cran = "CircStats" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-class/package.py b/var/spack/repos/builtin/packages/r-class/package.py index 4f7da7e9bb5efb..771d4b5fac8a30 100644 --- a/var/spack/repos/builtin/packages/r-class/package.py +++ b/var/spack/repos/builtin/packages/r-class/package.py @@ -7,15 +7,15 @@ class RClass(RPackage): - """Functions for Classification + """Functions for Classification. Various functions for classification, including k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.""" - homepage = "https://www.stats.ox.ac.uk/pub/MASS4/" - url = "https://cloud.r-project.org/src/contrib/class_7.3-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/class" + cran = "class" + version('7.3-20', sha256='e65b046bc72b312ff0c5dc7feba4fa3e9bc63387274d44911493782b85f65483') + version('7.3-19', sha256='7820ae94b22009561a69ed1f8b2ca2a3814be6a656e9884738206997caecbe37') version('7.3-17', sha256='be1f85b6df7556db93f50cb08106aac6620d4b5bb3fee846422863a022461313') version('7.3-15', sha256='f6bf33d610c726d58622b6cea78a808c7d6a317d02409d27c17741dfd1c730f4') version('7.3-14', sha256='18b876dbc18bebe6a00890eab7d04ef72b903ba0049d5ce50731406a82426b9c') diff --git a/var/spack/repos/builtin/packages/r-classint/package.py b/var/spack/repos/builtin/packages/r-classint/package.py index 390aaf036b14e7..75bf07e5ca3264 100644 --- a/var/spack/repos/builtin/packages/r-classint/package.py +++ b/var/spack/repos/builtin/packages/r-classint/package.py @@ -7,14 +7,12 @@ class RClassint(RPackage): - """Choose Univariate Class Intervals + """Choose Univariate Class Intervals. Selected commonly used methods for choosing univariate class intervals for mapping or other graphics purposes.""" - homepage = "https://cloud.r-project.org/package=classInt" - url = "https://cloud.r-project.org/src/contrib/classInt_0.1-24.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/classInt" + cran = "classInt" version('0.4-3', sha256='9ede7a2a7a6b6c114919a3315a884fb592e33b037a50a4fe45cbd4fe2fc434ac') version('0.4-1', sha256='39c63f8e37b379033d73d57929b5b8ea41b0023626cc1cec648d66bade5d0103') diff --git a/var/spack/repos/builtin/packages/r-cli/package.py b/var/spack/repos/builtin/packages/r-cli/package.py index 3ef62f346c9827..c4e84ee4832f22 100644 --- a/var/spack/repos/builtin/packages/r-cli/package.py +++ b/var/spack/repos/builtin/packages/r-cli/package.py @@ -7,7 +7,7 @@ class RCli(RPackage): - """Helpers for Developing Command Line Interfaces + """Helpers for Developing Command Line Interfaces. A suite of tools to build attractive command line interfaces ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs, etc. Supports @@ -16,9 +16,10 @@ class RCli(RPackage): 'ASCII' alternatives. It integrates with the 'crayon' package to support 'ANSI' terminal colors.""" - homepage = "https://github.com/r-lib/cli" cran = "cli" + version('3.2.0', sha256='cd5a1b754d09de33f088f25ecdb0494100f9a42bc0a66622bfd7d8ec5498e862') + version('3.1.1', sha256='c8b3e6014ad60593ba21897255acfe90c0e3f98bd4f7e22c1f3acb2644cf54cf') version('3.1.0', sha256='c70a61830bf706a84c59eb74a809978846cee93742198ab4192742a5df1ace11') version('3.0.1', sha256='d89a25b6cd760e157605676e104ce65473a7d8d64c289efdd9640e949968b4fd') version('2.2.0', sha256='39a77af61724f8cc1f5117011e17bb2a488cbac61a7c112db078a675d3ac40b8') @@ -28,7 +29,8 @@ class RCli(RPackage): version('1.0.0', sha256='8fa3dbfc954ca61b8510f767ede9e8a365dac2ef95fe87c715a0f37d721b5a1d') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r-glue', when='@2:', type=('build', 'run')) - depends_on('r-assertthat', when='@:2.3', type=('build', 'run')) - depends_on('r-crayon@1.3.4:', when='@:2.2', type=('build', 'run')) - depends_on('r-fansi', when='@2:2.2', type=('build', 'run')) + depends_on('r-glue', type=('build', 'run'), when='@2:') + + depends_on('r-assertthat', type=('build', 'run'), when='@:2.3') + depends_on('r-crayon@1.3.4:', type=('build', 'run'), when='@:2.2') + depends_on('r-fansi', type=('build', 'run'), when='@2:2.2') diff --git a/var/spack/repos/builtin/packages/r-clipr/package.py b/var/spack/repos/builtin/packages/r-clipr/package.py index 1ec8919a23d06a..7ab04944d7e5e7 100644 --- a/var/spack/repos/builtin/packages/r-clipr/package.py +++ b/var/spack/repos/builtin/packages/r-clipr/package.py @@ -7,18 +7,17 @@ class RClipr(RPackage): - """Read and Write from the System Clipboard + """Read and Write from the System Clipboard. Simple utility functions to read from and write to the Windows, OS X, and X11 clipboards.""" - homepage = "https://github.com/mdlincoln/clipr" - url = "https://cloud.r-project.org/src/contrib/clipr_0.4.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/clipr" + cran = "clipr" version('0.7.1', sha256='ffad477b07847e3b68f7e4406bbd323025a8dae7e3c768943d4d307ee3248afb') version('0.7.0', sha256='03a4e4b72ec63bd08b53fe62673ffc19a004cc846957a335be2b30d046b8c2e2') version('0.5.0', sha256='fd303f8b7f29badcdf490bb2d579acdfc4f4e1aa9c90ac77ab9d05ce3d053dbf') version('0.4.0', sha256='44a2f1ab4fde53e4fe81cf5800aa6ad45b72b5da93d6fe4d3661d7397220e8af') + depends_on('r+X') depends_on('xclip') diff --git a/var/spack/repos/builtin/packages/r-clisymbols/package.py b/var/spack/repos/builtin/packages/r-clisymbols/package.py index ac7534efd42f2b..d51c0d85603fb8 100644 --- a/var/spack/repos/builtin/packages/r-clisymbols/package.py +++ b/var/spack/repos/builtin/packages/r-clisymbols/package.py @@ -7,13 +7,13 @@ class RClisymbols(RPackage): - """A small subset of Unicode symbols, that are useful when building command + """Unicode Symbols at the R Prompt. + + A small subset of Unicode symbols, that are useful when building command line applications. They fall back to alternatives on terminals that do not support Unicode. Many symbols were taken from the 'figures' 'npm' package (see ).""" - homepage = "https://github.com/gaborcsardi/clisymbols" - url = "https://cloud.r-project.org/src/contrib/clisymbols_1.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/clisymbols" + cran = "clisymbols" version('1.2.0', sha256='0649f2ce39541820daee3ed408d765eddf83db5db639b493561f4e5fbf88efe0') diff --git a/var/spack/repos/builtin/packages/r-clue/package.py b/var/spack/repos/builtin/packages/r-clue/package.py index 0640318407eed4..41392115ffa48e 100644 --- a/var/spack/repos/builtin/packages/r-clue/package.py +++ b/var/spack/repos/builtin/packages/r-clue/package.py @@ -7,12 +7,11 @@ class RClue(RPackage): - """Cluster Ensembles""" + """Cluster Ensembles.""" - homepage = "https://cloud.r-project.org/package=clue" - url = "https://cloud.r-project.org/src/contrib/clue_0.3-57.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/clue" + cran = "clue" + version('0.3-60', sha256='6d21ddfd0d621ed3bac861890c600884b6ed5ff7d2a36c9778b892636dbbef2a') version('0.3-58', sha256='2ab6662eaa1103a7b633477e8ebd266b262ed54fac6f9326b160067a2ded9ce7') version('0.3-57', sha256='6e369d07b464a9624209a06b5078bf988f01f7963076e946649d76aea0622d17') diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index 5fdd4229a69f7d..839fc5315dea24 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -7,19 +7,21 @@ class RCluster(RPackage): - """Methods for Cluster analysis. Much extended the original from Peter + """"Finding Groups in Data": Cluster Analysis Extended Rousseeuw et al. + + Methods for Cluster analysis. Much extended the original from Peter Rousseeuw, Anja Struyf and Mia Hubert, based on Kaufman and Rousseeuw (1990) "Finding Groups in Data".""" - homepage = "https://cloud.r-project.org/package=cluster" - url = "https://cloud.r-project.org/src/contrib/cluster_2.0.7-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/cluster" + cran = "cluster" + version('2.1.2', sha256='5c8aa760fb6dda4fcfe6196e561ffcd2dc12b1a6c7659cb90be2cde747311499') version('2.1.0', sha256='eaf955bef8f616ea563351ec7f597c445aec43e65991ca975e382ef1fd70aa14') version('2.0.7-1', sha256='b10141090cf3c2b62260611a0ea822eb2f7bab9f4fd656c48bdc12b65c5c3dbf') version('2.0.5', sha256='4b309133bc2ad7b8fe4fa538dd69635bc8a4cd724a3c95f01084098876c57bae') version('2.0.4', sha256='d4d925c4fc1fc4f2e2e3c9208e518507aad6c28bb143b4358a05a8a8944ac6e4') - depends_on('r@3.0.1:', when='@:2.0.6', type=('build', 'run')) - depends_on('r@3.2.0:', when='@2.0.7:2.0.7-1', type=('build', 'run')) - depends_on('r@3.3.0:', when='@2.0.8:', type=('build', 'run')) + depends_on('r@3.0.1:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@2.0.7:') + depends_on('r@3.3.0:', type=('build', 'run'), when='@2.0.8:') + depends_on('r@3.4.0:', type=('build', 'run'), when='@2.1.2:') diff --git a/var/spack/repos/builtin/packages/r-clustergeneration/package.py b/var/spack/repos/builtin/packages/r-clustergeneration/package.py index 02ac6620b36608..6f862881a219da 100644 --- a/var/spack/repos/builtin/packages/r-clustergeneration/package.py +++ b/var/spack/repos/builtin/packages/r-clustergeneration/package.py @@ -7,7 +7,7 @@ class RClustergeneration(RPackage): - """Random Cluster Generation (with Specified Degree of Separation) + """Random Cluster Generation (with Specified Degree of Separation). We developed the clusterGeneration package to provide functions for generating random clusters, generating random covariance/correlation @@ -18,13 +18,11 @@ class RClustergeneration(RPackage): degree of separation, number of clusters, number of variables, number of noisy variables.""" - homepage = "https://cloud.r-project.org/package=clusterGeneration" - url = "https://cloud.r-project.org/src/contrib/clusterGeneration_1.3.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/clusterGeneration/" + cran = "clusterGeneration" version('1.3.7', sha256='534f29d8f7ed11e6e9a496f15845b588ec7133f3da5e6def8140b88500e52d5c') version('1.3.4', sha256='7c591ad95a8a9d7fb0e4d5d80dfd78f7d6a63cf7d11eb53dd3c98fdfb5b868aa') depends_on('r@2.9.1:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.3.7:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.3.7:') depends_on('r-mass', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-clusterprofiler/package.py b/var/spack/repos/builtin/packages/r-clusterprofiler/package.py index 2b7ffcfa3bbac1..135696279a4bde 100644 --- a/var/spack/repos/builtin/packages/r-clusterprofiler/package.py +++ b/var/spack/repos/builtin/packages/r-clusterprofiler/package.py @@ -8,14 +8,14 @@ class RClusterprofiler(RPackage): """statistical analysis and visualization of functional profiles for genes - and gene clusters + and gene clusters. This package implements methods to analyze and visualize functional profiles (GO and KEGG) of gene and gene clusters.""" - homepage = "https://bioconductor.org/packages/clusterProfiler" - git = "https://git.bioconductor.org/packages/clusterProfiler.git" + bioc = "clusterProfiler" + version('4.2.2', commit='4ebb9de8e03eedc971f54a57cf5bf1b250ed43d5') version('3.18.0', commit='064a6e612ce27e260e33af78b907bee4065ff821') version('3.12.0', commit='6ec88d10832bdfd938e9c065b377015eedb7eee2') version('3.10.1', commit='39927ef7ff6f97e27557bcf4147e2133b364fd3c') @@ -24,23 +24,26 @@ class RClusterprofiler(RPackage): version('3.4.4', commit='b86b00e8405fe130e439362651a5567736e2d9d7') depends_on('r@3.3.1:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@3.8.1:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@3.8.1:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@4.2.2:') depends_on('r-annotationdbi', type=('build', 'run')) - depends_on('r-downloader', when='@3.18.0:', type=('build', 'run')) + depends_on('r-downloader', type=('build', 'run'), when='@3.18.0:') depends_on('r-dose@3.1.3:', type=('build', 'run')) - depends_on('r-dose@3.3.2:', when='@3.6.0:', type=('build', 'run')) - depends_on('r-dose@3.5.1:', when='@3.8.1:', type=('build', 'run')) - depends_on('r-dose@3.13.1:', when='@3.18.0:', type=('build', 'run')) - depends_on('r-dplyr', when='@3.18.0:', type=('build', 'run')) - depends_on('r-enrichplot@0.99.7:', when='@3.8.1:', type=('build', 'run')) - depends_on('r-enrichplot@1.9.3:', when='@3.18.0:', type=('build', 'run')) + depends_on('r-dose@3.3.2:', type=('build', 'run'), when='@3.6.0:') + depends_on('r-dose@3.5.1:', type=('build', 'run'), when='@3.8.1:') + depends_on('r-dose@3.13.1:', type=('build', 'run'), when='@3.18.0:') + depends_on('r-dplyr', type=('build', 'run'), when='@3.18.0:') + depends_on('r-enrichplot@0.99.7:', type=('build', 'run'), when='@3.8.1:') + depends_on('r-enrichplot@1.9.3:', type=('build', 'run'), when='@3.18.0:') depends_on('r-go-db', type=('build', 'run')) depends_on('r-gosemsim', type=('build', 'run')) - depends_on('r-gosemsim@2.0.0:', when='@3.4.4:3.6.0', type=('build', 'run')) + depends_on('r-gosemsim@2.0.0:', type=('build', 'run'), when='@3.4.4:3.6.0') depends_on('r-magrittr', type=('build', 'run')) depends_on('r-plyr', type=('build', 'run')) depends_on('r-qvalue', type=('build', 'run')) - depends_on('r-rlang', when='@3.18.0:', type=('build', 'run')) - depends_on('r-rvcheck', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@3.18.0:') depends_on('r-tidyr', type=('build', 'run')) - depends_on('r-ggplot2', when='@:3.12.0', type=('build', 'run')) + depends_on('r-yulab-utils', type=('build', 'run'), when='@4.2.2:') + + depends_on('r-ggplot2', type=('build', 'run'), when='@:3.12.0') + depends_on('r-rvcheck', type=('build', 'run'), when='@:3.18.0') diff --git a/var/spack/repos/builtin/packages/r-cner/package.py b/var/spack/repos/builtin/packages/r-cner/package.py index f550e91a47eb96..04e65f05768ac1 100644 --- a/var/spack/repos/builtin/packages/r-cner/package.py +++ b/var/spack/repos/builtin/packages/r-cner/package.py @@ -7,14 +7,14 @@ class RCner(RPackage): - """CNE Detection and Visualization + """CNE Detection and Visualization. Large-scale identification and advanced visualization of sets of conserved noncoding elements.""" - homepage = "https://bioconductor.org/packages/CNEr" - git = "https://git.bioconductor.org/packages/CNEr.git" + bioc = "CNEr" + version('1.30.0', commit='e682f2a7c8ebb561c872cf51a58ba36eed341187') version('1.26.0', commit='e5e582da6feeae0618c4460f16ece724215e3b20') version('1.20.0', commit='9c25d8e8f6f5fd8a5311f554c86e7ca1140a4ca5') version('1.18.1', commit='66aa88af04364c81832f3b09bad898f3c117f606') @@ -23,10 +23,10 @@ class RCner(RPackage): version('1.12.1', commit='90d611f9cd19a73d0fe92ab03ef428519d64c017') depends_on('r@3.2.2:', type=('build', 'run')) - depends_on('r@3.4:', when='@1.14.0:', type=('build', 'run')) + depends_on('r@3.4:', type=('build', 'run'), when='@1.14.0:') depends_on('r-biostrings@2.33.4:', type=('build', 'run')) depends_on('r-dbi@0.6:', type=('build', 'run')) - depends_on('r-dbi@0.7:', when='@1.14.0:', type=('build', 'run')) + depends_on('r-dbi@0.7:', type=('build', 'run'), when='@1.14.0:') depends_on('r-rsqlite@0.11.4:', type=('build', 'run')) depends_on('r-genomeinfodb@1.1.3:', type=('build', 'run')) depends_on('r-genomicranges@1.23.16:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py index 105e9c0f0c4683..dcb4439506b46d 100644 --- a/var/spack/repos/builtin/packages/r-coda/package.py +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -7,15 +7,13 @@ class RCoda(RPackage): - """Output Analysis and Diagnostics for MCMC + """Output Analysis and Diagnostics for MCMC. Provides functions for summarizing and plotting the output from Markov Chain Monte Carlo (MCMC) simulations, as well as diagnostic tests of convergence to the equilibrium distribution of the Markov chain.""" - homepage = "https://cloud.r-project.org/package=coda" - url = "https://cloud.r-project.org/src/contrib/coda_0.19-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/coda" + cran = "coda" version('0.19-4', sha256='422d3cfd34797a3631e9c4812431940599c0ca4bb9937797bed07b7b1d6fe58f') version('0.19-3', sha256='d3df1fc848bcf1af8fae13d61eeab60e99a3d4b4db384bec4326f909f502c5d6') diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index 396f28e524aa19..46b52d3429ac84 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -9,9 +9,7 @@ class RCodetools(RPackage): """Code analysis tools for R.""" - homepage = "https://cloud.r-project.org/package=codetools" - url = "https://cloud.r-project.org/src/contrib/codetools_0.2-15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/codetools" + cran = "codetools" version('0.2-18', sha256='1a9ea6b9792dbd1688078455929385acc3a5e4bef945c77bec1261fa4a084c28') version('0.2-16', sha256='c276757c3adabaf700f2ea25835892b09bc1bd438ebd17c805ea9073ed8a74b6') diff --git a/var/spack/repos/builtin/packages/r-codex/package.py b/var/spack/repos/builtin/packages/r-codex/package.py index ddedceb8486ab4..465796e1f94997 100644 --- a/var/spack/repos/builtin/packages/r-codex/package.py +++ b/var/spack/repos/builtin/packages/r-codex/package.py @@ -8,7 +8,7 @@ class RCodex(RPackage): """A Normalization and Copy Number Variation Detection Method for Whole - Exome Sequencing + Exome Sequencing. A normalization and copy number variation calling procedure for whole exome DNA sequencing data. CODEX relies on the availability of multiple @@ -20,9 +20,9 @@ class RCodex(RPackage): segmentation procedure that explicitly models the count-based exome sequencing data.""" - homepage = "https://www.bioconductor.org/packages/release/bioc/html/CODEX.html" - git = "https://git.bioconductor.org/packages/CODEX" + bioc = "CODEX" + version('1.26.0', commit='729fd10bd42d12edcedd65b5a8fb1579e5949718') version('1.22.0', commit='aa0ee4278111a46e0c790312b0526ba07aab22eb') version('1.18.0', commit='9a95cccc7ff3fe587636317e21e39a07dddf80bc') diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py index 8d6a7bf0cd7c12..5892ed16be3c58 100644 --- a/var/spack/repos/builtin/packages/r-coin/package.py +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -7,26 +7,27 @@ class RCoin(RPackage): - """Conditional Inference Procedures in a Permutation Test Framework + """Conditional Inference Procedures in a Permutation Test Framework. Conditional inference procedures for the general independence problem including two-sample, K-sample (non-parametric ANOVA), correlation, censored, ordered and multivariate problems.""" - homepage = "https://cloud.r-project.org/package=coin" - url = "https://cloud.r-project.org/src/contrib/coin_1.1-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/coin" + cran = "coin" + version('1.4-2', sha256='7546d1f27a82d98b4b3e43e4659eba0f74a67d5919ce85d2fb360282ba3cfbb2') version('1.3-1', sha256='5de2519a6e2b059bba9d74c58085cccaff1aaaa0454586ed164a108ebd1b2062') version('1.3-0', sha256='adcebb37e0a7dfddbf8ec1e09c12a809bd76d90b5b8ff2b1048a75252ba11ef8') version('1.2-2', sha256='d518065d3e1eb00121cb4e0200e1e4ae6b68eca6e249afc38bbffa35d24105bb') version('1.1-3', sha256='8b88ecc25903c83539dfc73cdc31a160e2aa4a7bea1773b22c79133d2f006035') - depends_on('r@2.14.0:', when='@:1.2-2', type=('build', 'run')) - depends_on('r@3.4.0:', when='@1.3-0:', type=('build', 'run')) + depends_on('r@2.14.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@1.3-0:') + depends_on('r@3.6.0:', type=('build', 'run'), when='@1.4-2:') depends_on('r-survival', type=('build', 'run')) - depends_on('r-libcoin@1.0-0:', when='@1.3-0:', type=('build', 'run')) - depends_on('r-matrixstats@0.54.0:', when='@1.3-0:', type=('build', 'run')) + depends_on('r-libcoin@1.0-0:', type=('build', 'run'), when='@1.3-0:') + depends_on('r-libcoin@1.0-9:', type=('build', 'run'), when='@1.4-2:') + depends_on('r-matrixstats@0.54.0:', type=('build', 'run'), when='@1.3-0:') depends_on('r-modeltools@0.2-9:', type=('build', 'run')) depends_on('r-mvtnorm@1.0-5:', type=('build', 'run')) depends_on('r-multcomp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index c3f09c14fc5553..85e19c685122a6 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -7,7 +7,7 @@ class RColorspace(RPackage): - """A Toolbox for Manipulating and Assessing Colors and Palettes + """A Toolbox for Manipulating and Assessing Colors and Palettes. Carries out mapping between assorted color spaces including RGB, HSV, HLS, CIEXYZ, CIELUV, HCL (polar CIELUV), CIELAB, and polar CIELAB. Qualitative, @@ -25,7 +25,6 @@ class RColorspace(RPackage): scientific paper: Zeileis et al. (2020, Journal of Statistical Software, ).""" - homepage = "https://colorspace.R-Forge.R-project.org" cran = "colorspace" version('2.0-2', sha256='b891cd2ec129ed5f116429345947bcaadc33969758a108521eb0cf36bd12183a') diff --git a/var/spack/repos/builtin/packages/r-colourpicker/package.py b/var/spack/repos/builtin/packages/r-colourpicker/package.py index 84da831fd09af3..0e8d2d507f5ae5 100644 --- a/var/spack/repos/builtin/packages/r-colourpicker/package.py +++ b/var/spack/repos/builtin/packages/r-colourpicker/package.py @@ -7,7 +7,7 @@ class RColourpicker(RPackage): - """A Colour Picker Tool for Shiny and for Selecting Colours in Plots: + """A Colour Picker Tool for Shiny and for Selecting Colours in Plots. A colour picker that can be used as an input in 'Shiny' apps or Rmarkdown documents. The colour picker supports alpha opacity, custom colour @@ -16,8 +16,7 @@ class RColourpicker(RPackage): more generic Colour Picker 'RStudio' Addin is also provided to let you select colours to use in your R code.""" - homepage = "https://github.com/daattali/colourpicker" - cran = "colourpicker" + cran = "colourpicker" version('1.1.1', sha256='a0d09982b048b143e2c3438ccec039dd20d6f892fa0dedc9fdcb0d40de883ce0') version('1.1.0', sha256='2dfbb6262d187d3b17357ff9c22670ced3621feda5b2a2a500558478e4d551e2') diff --git a/var/spack/repos/builtin/packages/r-combinat/package.py b/var/spack/repos/builtin/packages/r-combinat/package.py index 2dada701e9476a..2baae0b0cff4c7 100644 --- a/var/spack/repos/builtin/packages/r-combinat/package.py +++ b/var/spack/repos/builtin/packages/r-combinat/package.py @@ -7,10 +7,10 @@ class RCombinat(RPackage): - """routines for combinatorics""" + """combinatorics utilities. - homepage = "https://cloud.r-project.org/package=combinat" - url = "https://cloud.r-project.org/src/contrib/combinat_0.0-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/combinat/" + routines for combinatorics.""" + + cran = "combinat" version('0.0-8', sha256='1513cf6b6ed74865bfdd9f8ca58feae12b62f38965d1a32c6130bef810ca30c1') diff --git a/var/spack/repos/builtin/packages/r-commonmark/package.py b/var/spack/repos/builtin/packages/r-commonmark/package.py index 8ebf5e0be4bf05..0c7fa616bda4cd 100644 --- a/var/spack/repos/builtin/packages/r-commonmark/package.py +++ b/var/spack/repos/builtin/packages/r-commonmark/package.py @@ -7,10 +7,15 @@ class RCommonmark(RPackage): - """commonmark: CommonMark and Github Markdown Rendering in R""" + """High Performance CommonMark and Github Markdown Rendering in R. - homepage = "https://cloud.r-project.org/package=commonmark" - url = "https://cloud.r-project.org/src/contrib/commonmark_1.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/commonmark/" + The CommonMark specification defines a rationalized version of markdown + syntax. This package uses the 'cmark' reference implementation for + converting markdown text into various formats including html, latex and + groff man. In addition it exposes the markdown parse tree in xml format. + Also includes opt-in support for GFM extensions including tables, + autolinks, and strikethrough text.""" + + cran = "commonmark" version('1.7', sha256='d14a767a3ea9778d6165f44f980dd257423ca6043926e3cd8f664f7171f89108') diff --git a/var/spack/repos/builtin/packages/r-complexheatmap/package.py b/var/spack/repos/builtin/packages/r-complexheatmap/package.py index 35f0e5ad930f8e..ab51443b5215de 100644 --- a/var/spack/repos/builtin/packages/r-complexheatmap/package.py +++ b/var/spack/repos/builtin/packages/r-complexheatmap/package.py @@ -7,16 +7,16 @@ class RComplexheatmap(RPackage): - """Make Complex Heatmaps + """Make Complex Heatmaps. Complex heatmaps are efficient to visualize associations between different sources of data sets and reveal potential patterns. Here the ComplexHeatmap package provides a highly flexible way to arrange multiple heatmaps and supports various annotation graphics.""" - homepage = "https://bioconductor.org/packages/ComplexHeatmap" - git = "https://git.bioconductor.org/packages/ComplexHeatmap.git" + bioc = "ComplexHeatmap" + version('2.10.0', commit='170df82a1568e879e4019e0ff6feb0047851684f') version('2.6.2', commit='0383bada2c76dc3dde71cf6a625016b619aec4d3') version('2.0.0', commit='97863d8ddfe36a52df0149b0b040dc386a03d2e4') version('1.20.0', commit='1501ecc92fda07efa3652e41626b21741951ce0f') @@ -25,19 +25,23 @@ class RComplexheatmap(RPackage): version('1.14.0', commit='0acd8974fb5cedde8cd96efea6dfa39324d25b34') depends_on('r@3.1.2:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.10.0:') depends_on('r-circlize@0.3.4:', type=('build', 'run')) - depends_on('r-circlize@0.4.1:', when='@1.17.1:', type=('build', 'run')) - depends_on('r-circlize@0.4.5:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-circlize@0.4.1:', type=('build', 'run'), when='@1.17.1:') + depends_on('r-circlize@0.4.5:', type=('build', 'run'), when='@2.0.0:') depends_on('r-getoptlong', type=('build', 'run')) depends_on('r-colorspace', type=('build', 'run')) - depends_on('r-clue', when='@2.0.0:', type=('build', 'run')) + depends_on('r-clue', type=('build', 'run'), when='@2.0.0:') depends_on('r-rcolorbrewer', type=('build', 'run')) depends_on('r-globaloptions@0.0.10:', type=('build', 'run')) - depends_on('r-globaloptions@0.1.0:', when='@1.20.0:', type=('build', 'run')) - depends_on('r-png', when='@2.0.0:', type=('build', 'run')) - depends_on('r-cairo', when='@2.6.2:', type=('build', 'run')) - depends_on('r-digest', when='@2.6.2:', type=('build', 'run')) - depends_on('r-s4vectors@0.26.1:', when='@2.6.2:', type=('build', 'run')) - depends_on('r-iranges', when='@2.6.2:', type=('build', 'run')) - depends_on('r-matrixstats', when='@2.6.2:', type=('build', 'run')) - depends_on('r-dendextend@1.0.1:', when='@1.14.0:1.17.1', type=('build', 'run')) + depends_on('r-globaloptions@0.1.0:', type=('build', 'run'), when='@1.20.0:') + depends_on('r-png', type=('build', 'run'), when='@2.0.0:') + depends_on('r-digest', type=('build', 'run'), when='@2.6.2:') + depends_on('r-iranges', type=('build', 'run'), when='@2.6.2:') + depends_on('r-matrixstats', type=('build', 'run'), when='@2.6.2:') + depends_on('r-foreach', type=('build', 'run'), when='@2.10.0:') + depends_on('r-doparallel', type=('build', 'run'), when='@2.10.0:') + + depends_on('r-dendextend@1.0.1:', type=('build', 'run'), when='@1.14.0:1.17.1') + depends_on('r-s4vectors@0.26.1:', type=('build', 'run'), when='@2.6.2') + depends_on('r-cairo', type=('build', 'run'), when='@2.6.2') diff --git a/var/spack/repos/builtin/packages/r-compositions/package.py b/var/spack/repos/builtin/packages/r-compositions/package.py index 1ac3a5fe6dd947..5e2aaf562bb8dd 100644 --- a/var/spack/repos/builtin/packages/r-compositions/package.py +++ b/var/spack/repos/builtin/packages/r-compositions/package.py @@ -7,22 +7,23 @@ class RCompositions(RPackage): - """Compositional Data Analysis + """Compositional Data Analysis. Provides functions for the consistent analysis of compositional data (e.g. portions of substances) and positive numbers (e.g. concentrations) in the way proposed by J. Aitchison and V. Pawlowsky-Glahn.""" - homepage = "https://cloud.r-project.org/package=compositions" - url = "https://cloud.r-project.org/src/contrib/compositions_1.40-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/compositions" + cran = "compositions" + version('2.0-4', sha256='7b9c7a3bf654fb02d9eb1b4a7566469b2f5232f3b2c1b324c02239fd31060faf') version('2.0-1', sha256='84a291308faf858e5a9d9570135c2da5e57b0887f407903485fa85d09da61a0f') version('1.40-2', sha256='110d71ae000561987cb73fc76cd953bd69d37562cb401ed3c36dca137d01b78a') depends_on('r@2.2.0:', type=('build', 'run')) + depends_on('r@3.6:', type=('build', 'run'), when='@2.0-4:') 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', when='@2.0-1:', type=('build', 'run')) - depends_on('r-energy', when='@:1.40-2', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run'), when='@2.0-1:') + + depends_on('r-energy', type=('build', 'run'), when='@:1.40-2') diff --git a/var/spack/repos/builtin/packages/r-compquadform/package.py b/var/spack/repos/builtin/packages/r-compquadform/package.py index 613d5ce4ea0031..137359af80aa4e 100644 --- a/var/spack/repos/builtin/packages/r-compquadform/package.py +++ b/var/spack/repos/builtin/packages/r-compquadform/package.py @@ -7,12 +7,12 @@ class RCompquadform(RPackage): - """Distribution Function of Quadratic Forms in Normal Variables: + """Distribution Function of Quadratic Forms in Normal Variables. Computes the distribution function of quadratic forms in normal variables using Imhof's method, Davies's algorithm, Farebrother's algorithm or Liu et al.'s algorithm.""" - cran = "CompQuadForm" + cran = "CompQuadForm" version('1.4.3', sha256='042fc56c800dd8f5f47a017e2efa832caf74f0602824abf7099898d9708660c4') diff --git a/var/spack/repos/builtin/packages/r-condop/package.py b/var/spack/repos/builtin/packages/r-condop/package.py index 950e4e162ef2b4..a7935b2c952d3e 100644 --- a/var/spack/repos/builtin/packages/r-condop/package.py +++ b/var/spack/repos/builtin/packages/r-condop/package.py @@ -7,16 +7,14 @@ class RCondop(RPackage): - """CONDOP: Condition-Dependent Operon Predictions. + """Condition-Dependent Operon Predictions. An implementation of the computational strategy for the comprehensive analysis of condition-dependent operon maps in prokaryotes proposed by Fortino et al. (2014) . It uses RNA-seq transcriptome profiles to improve prokaryotic operon map inference.""" - homepage = "https://cloud.r-project.org/package=CONDOP" - url = "https://cloud.r-project.org/src/contrib/CONDOP_1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/CONDOP" + cran = "CONDOP" version('1.0', sha256='3a855880f5c6b33f949c7e6de53c8e014b4d72b7024a93878b344d3e52b5296a') diff --git a/var/spack/repos/builtin/packages/r-conquer/package.py b/var/spack/repos/builtin/packages/r-conquer/package.py index ae0b337e99cab5..0820d1e795d7a0 100644 --- a/var/spack/repos/builtin/packages/r-conquer/package.py +++ b/var/spack/repos/builtin/packages/r-conquer/package.py @@ -7,14 +7,13 @@ class RConquer(RPackage): - """Convolution-Type Smoothed Quantile Regression + """Convolution-Type Smoothed Quantile Regression. Fast and accurate convolution-type smoothed quantile regression. Implemented using Barzilai-Borwein gradient descent with a Huber regression warm start. Construct confidence intervals for regression coefficients using multiplier bootstrap.""" - homepage = "https://github.com/XiaoouPan/conquer" cran = "conquer" version('1.2.1', sha256='1354f90f962a2124e155227cdc0ed2c6e54682f1e08934c49a827e51dc112f45') @@ -24,5 +23,5 @@ class RConquer(RPackage): depends_on('r-rcpp@1.0.3:', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) depends_on('r-matrixstats', type=('build', 'run')) - depends_on('r-caret', when='@1.2:', type=('build', 'run')) + depends_on('r-caret', type=('build', 'run'), when='@1.2:') depends_on('r-rcpparmadillo@0.9.850.1.0:', 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 2b4aa2a74cff38..fa1a631f0ebf74 100644 --- a/var/spack/repos/builtin/packages/r-construct/package.py +++ b/var/spack/repos/builtin/packages/r-construct/package.py @@ -7,7 +7,7 @@ class RConstruct(RPackage): - """Models Spatially Continuous and Discrete Population GeneticStructure + """Models Spatially Continuous and Discrete Population GeneticStructure. A method for modeling genetic data as a combination of discrete layers, within each of which relatedness may decay continuously with geographic @@ -16,9 +16,7 @@ class RConstruct(RPackage): interpreting output. See the paper for more details on the model and its utility.""" - homepage = "https://cloud.r-project.org/package=conStruct" - url = "https://cloud.r-project.org/src/contrib/conStruct_1.0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/conStruct" + cran = "conStruct" version('1.0.4', sha256='4e585b718a361061bc1432cea46fc65f802fb0ef58e4516d33e1af99bbfe90ce') version('1.0.3', sha256='b449c133a944ad05a28f84f312ed4ccbc1574c4659aa09c678618d2ae9008310') diff --git a/var/spack/repos/builtin/packages/r-convevol/package.py b/var/spack/repos/builtin/packages/r-convevol/package.py index 1944b5c25ed8f2..081c478ed78015 100644 --- a/var/spack/repos/builtin/packages/r-convevol/package.py +++ b/var/spack/repos/builtin/packages/r-convevol/package.py @@ -7,11 +7,14 @@ class RConvevol(RPackage): - """Quantifies and assesses the significance of convergent evolution""" + """Analysis of Convergent Evolution. - homepage = "https://cloud.r-project.org/package=convevol" - url = "https://cloud.r-project.org/src/contrib/convevol_1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/convevol/" + Quantifies and assesses the significance of convergent evolution using two + different methods (and 5 different measures) as described in Stayton (2015) + . Also displays results in a phylomorphospace + framework.""" + + cran = "convevol" version('1.3', sha256='d6b24b9796a559f5280e277746189d141151ade4b14cc6b4c2d9d496d7f314ac') diff --git a/var/spack/repos/builtin/packages/r-copula/package.py b/var/spack/repos/builtin/packages/r-copula/package.py index 8280c24559946b..1cfb22e1aae1c6 100644 --- a/var/spack/repos/builtin/packages/r-copula/package.py +++ b/var/spack/repos/builtin/packages/r-copula/package.py @@ -7,7 +7,7 @@ class RCopula(RPackage): - """Multivariate Dependence with Copulas + """Multivariate Dependence with Copulas. Classes (S4) of commonly used elliptical, Archimedean, extreme-value and other copula families, as well as their rotations, mixtures and @@ -22,15 +22,13 @@ class RCopula(RPackage): copula, smoothed versions, and non-parametric estimators of the Pickands dependence function.""" - homepage = "https://copula.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/copula_0.999-20.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/copula" + cran = "copula" version('1.0-1', sha256='d09b2ccffc7379e48b00952aa6b282baf502feebaf55cc44e93f881d7b909742') version('0.999-20', sha256='7d3d47bce2dacb05b94a772f84dbf3d83c99ac2ac11e5f1b4b03d50d9d5c0fb0') depends_on('r@3.2.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.0-1:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.0-1:') depends_on('r-matrix', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-colorspace', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-corhmm/package.py b/var/spack/repos/builtin/packages/r-corhmm/package.py index e78be071489358..ed7200541e6ba3 100644 --- a/var/spack/repos/builtin/packages/r-corhmm/package.py +++ b/var/spack/repos/builtin/packages/r-corhmm/package.py @@ -7,16 +7,15 @@ class RCorhmm(RPackage): - """Hidden Markov Models of Character Evolution + """Hidden Markov Models of Character Evolution. Fits hidden Markov models of discrete character evolution which allow different transition rate classes on different portions of a phylogeny. Beaulieu et al (2013) .""" - homepage = "https://cloud.r-project.org/package=corHMM" - url = "https://cloud.r-project.org/src/contrib/corHMM_1.22.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/corHMM/" + cran = "corHMM" + version('2.7', sha256='0d54ba0f6b3f884343bcc26919d8febc05efb0b739cb962d3072ca0bc0ce270a') version('2.6', sha256='726de9707ede8ef447915171a3abe1003a0e42fe8e17eb440442cac9adf8cdcf') version('1.22', sha256='d262fa1183eab32087afb70f1789fabae6fb49bec01d627974c54a088a48b10d') @@ -26,10 +25,10 @@ class RCorhmm(RPackage): depends_on('r-expm', type=('build', 'run')) depends_on('r-numderiv', type=('build', 'run')) depends_on('r-corpcor', type=('build', 'run')) - depends_on('r-mass', when='@2.6:', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run'), when='@2.6:') depends_on('r-nnet', type=('build', 'run')) depends_on('r-phangorn', type=('build', 'run')) - depends_on('r-viridis', when='@2.6:', type=('build', 'run')) + depends_on('r-viridis', type=('build', 'run'), when='@2.6:') depends_on('r-rmpfr', type=('build', 'run')) - depends_on('r-igraph', when='@2.6:', type=('build', 'run')) - depends_on('r-phytools', when='@2.6:', type=('build', 'run')) + depends_on('r-igraph', type=('build', 'run'), when='@2.6:') + depends_on('r-phytools', type=('build', 'run'), when='@2.6:') diff --git a/var/spack/repos/builtin/packages/r-corpcor/package.py b/var/spack/repos/builtin/packages/r-corpcor/package.py index f7cc51da05902c..631917e9768b65 100644 --- a/var/spack/repos/builtin/packages/r-corpcor/package.py +++ b/var/spack/repos/builtin/packages/r-corpcor/package.py @@ -7,12 +7,26 @@ class RCorpcor(RPackage): - """Efficient Estimation of Covariance and (Partial) Correlation""" + """Efficient Estimation of Covariance and (Partial) Correlation. - homepage = "https://cloud.r-project.org/package=corpcor" - url = "https://cloud.r-project.org/src/contrib/corpcor_1.6.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/corpcor" + Implements a James-Stein-type shrinkage estimator for the covariance + matrix, with separate shrinkage for variances and correlations. The + details of the method are explained in Schafer and Strimmer (2005) + and Opgen-Rhein and Strimmer (2007) + . The approach is both computationally as well + as statistically very efficient, it is applicable to "small n, large p" + data, and always returns a positive definite and well-conditioned + covariance matrix. In addition to inferring the covariance matrix the + package also provides shrinkage estimators for partial correlations and + partial variances. The inverse of the covariance and correlation matrix + can be efficiently computed, as well as any arbitrary power of the + shrinkage correlation matrix. Furthermore, functions are available for + fast singular value decomposition, for computing the pseudoinverse, and + for checking the rank and positive definiteness of a matrix.""" + cran = "corpcor" + + version('1.6.10', sha256='71a04c503c93ec95ddde09abe8c7ddeb36175b7da76365a14b27066383e10e09') version('1.6.9', sha256='2e4fabd1d3936fecea67fa365233590147ca50bb45cf80efb53a10345a8a23c2') depends_on('r@3.0.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py index e5c79c6f53e036..25649c9cb5d3a8 100644 --- a/var/spack/repos/builtin/packages/r-corrplot/package.py +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -7,12 +7,14 @@ class RCorrplot(RPackage): - """A graphical display of a correlation matrix or general matrix. - It also contains some algorithms to do matrix reordering.""" + """Visualization of a Correlation Matrix. - homepage = "https://cloud.r-project.org/package=corrplot" - url = "https://cloud.r-project.org/src/contrib/corrplot_0.77.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/corrplot" + Provides a visual exploratory tool on correlation matrix that supports + automatic variable reordering to help detect hidden patterns among + variables.""" + cran = "corrplot" + + 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 af2897eb354b54..0d7b8421c00ee4 100644 --- a/var/spack/repos/builtin/packages/r-countrycode/package.py +++ b/var/spack/repos/builtin/packages/r-countrycode/package.py @@ -7,13 +7,14 @@ class RCountrycode(RPackage): - """Countrycode standardizes country names, converts them into - ~40 different coding schemes, and assigns region descriptors.""" + """Convert Country Names and Country Codes. - homepage = "https://vincentarelbundock.github.io/countrycode/" - url = "https://cloud.r-project.org/src/contrib/countrycode_1.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/countrycode" + Countrycode standardizes country names, converts them into ~40 different + coding schemes, and assigns region descriptors.""" + cran = "countrycode" + + version('1.3.0', sha256='34361416e771ece1d56dc56f79416c8b7f9591885773becae270684d095bc70f') version('1.2.0', sha256='32c65702dcc33d512ff99f14c12f4e0c48fe7ed7c8aa2f0a64194576d129dd40') depends_on('r@2.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-covr/package.py b/var/spack/repos/builtin/packages/r-covr/package.py index 24b5e3e4f1284a..511d5c9f2c6e30 100644 --- a/var/spack/repos/builtin/packages/r-covr/package.py +++ b/var/spack/repos/builtin/packages/r-covr/package.py @@ -7,20 +7,17 @@ class RCovr(RPackage): - """Test Coverage for Packages + """Test Coverage for Packages. - Track and report code coverage for your package and (optionally) - upload the results to a coverage service like 'Codecov' - or 'Coveralls' . Code - coverage is a measure of the amount of code being exercised by a - set of tests. It is an indirect measure of test quality and - completeness. This package is compatible with any testing methodology - or framework and tracks coverage of both R code and compiled - C/C++/FORTRAN code.""" + Track and report code coverage for your package and (optionally) upload the + results to a coverage service like 'Codecov' or + 'Coveralls' . Code coverage is a measure of the + amount of code being exercised by a set of tests. It is an indirect measure + of test quality and completeness. This package is compatible with any + testing methodology or framework and tracks coverage of both R code and + compiled C/C++/FORTRAN code.""" - homepage = "https://cloud.r-project.org/package=covr" - url = "https://cloud.r-project.org/src/contrib/covr_3.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/covr" + cran = "covr" version('3.5.1', sha256='a54cfc3623ea56084158ac5d7fe33f216f45191f6dcddab9c9ed4ec1d9d8ac6c') version('3.5.0', sha256='cb919912018130164a40803ac573a37dde2186678c058c03c6303d79604979df') @@ -30,10 +27,10 @@ class RCovr(RPackage): version('3.0.1', sha256='66b799fd03cb83a9ab382d9cf4ff40603d1e3f3a89905a3174546b0c63e8d184') depends_on('r@3.1.0:', type=('build', 'run')) - depends_on('r-digest', when='@3.2.0:', type=('build', 'run')) + depends_on('r-digest', type=('build', 'run'), when='@3.2.0:') depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-rex', type=('build', 'run')) depends_on('r-httr', type=('build', 'run')) depends_on('r-crayon', type=('build', 'run')) depends_on('r-withr@1.0.2:', type=('build', 'run')) - depends_on('r-yaml', when='@3.3.0:', type=('build', 'run')) + depends_on('r-yaml', type=('build', 'run'), when='@3.3.0:') diff --git a/var/spack/repos/builtin/packages/r-cowplot/package.py b/var/spack/repos/builtin/packages/r-cowplot/package.py index c4af607d09d07e..5de23569125878 100644 --- a/var/spack/repos/builtin/packages/r-cowplot/package.py +++ b/var/spack/repos/builtin/packages/r-cowplot/package.py @@ -7,7 +7,7 @@ class RCowplot(RPackage): - """Streamlined Plot Theme and Plot Annotations for 'ggplot2' + """Streamlined Plot Theme and Plot Annotations for 'ggplot2'. Provides various features that help with creating publication-quality figures with 'ggplot2', such as a set of themes, functions to align plots @@ -17,9 +17,7 @@ class RCowplot(RPackage): O. Wilke's plot package). It has also been used extensively in the book Fundamentals of Data Visualization.""" - homepage = "https://cloud.r-project.org/package=cowplot" - url = "https://cloud.r-project.org/src/contrib/cowplot_0.8.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/cowplot" + cran = "cowplot" version('1.1.1', sha256='c7dce625b456dffc59ba100c816e16226048d12fdd29a7335dc1f6f6e12eed48') version('1.0.0', sha256='70f9a7c46d10f409d1599f1afc9fd3c947051cf2b430f01d903c64ef1e6c98a5') @@ -29,11 +27,12 @@ class RCowplot(RPackage): version('0.9.0', sha256='d5632f78294c3678c08d3eb090abe1eec5cc9cd15cb5d96f9c43794ead098cb5') version('0.8.0', sha256='a617fde25030fe764f20967fb753a953d73b47745a2146c97c2565eb4d06700d') - depends_on('r@3.3.0:', when='@:0.9.4', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-ggplot2@2.1.1:', when='@:1.0.0', type=('build', 'run')) - depends_on('r-ggplot2@2.2.1:', when='@1.1.1:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run')) + 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-gtable', type=('build', 'run')) - depends_on('r-rlang', when='@1.0.0:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@1.0.0:') depends_on('r-scales', type=('build', 'run')) - depends_on('r-plyr@1.8.2:', when='@:0.9.9', type=('build', 'run')) + + depends_on('r-plyr@1.8.2:', type=('build', 'run'), when='@:0.9.9') diff --git a/var/spack/repos/builtin/packages/r-cpp11/package.py b/var/spack/repos/builtin/packages/r-cpp11/package.py index 30daa693b3201b..b66d6d0a01754d 100644 --- a/var/spack/repos/builtin/packages/r-cpp11/package.py +++ b/var/spack/repos/builtin/packages/r-cpp11/package.py @@ -7,14 +7,13 @@ class RCpp11(RPackage): - """cpp11: A C++11 Interface for R's C Interface + """A C++11 Interface for R's C Interface. Provides a header only, C++11 interface to R's C interface. Compared to other approaches 'cpp11' strives to be safe against long jumps from the C API as well as C++ exceptions, conform to normal R function semantics and supports interaction with 'ALTREP' vectors.""" - homepage = "https://github.com/r-lib/cpp11" cran = "cpp11" version('0.4.2', sha256='403ce0bf82358d237176053b0fb1e958cb6bfa4d0fb3555bf5801db6a6939b99') diff --git a/var/spack/repos/builtin/packages/r-crayon/package.py b/var/spack/repos/builtin/packages/r-crayon/package.py index affa02b10c3171..060e073de7cf30 100644 --- a/var/spack/repos/builtin/packages/r-crayon/package.py +++ b/var/spack/repos/builtin/packages/r-crayon/package.py @@ -7,13 +7,14 @@ class RCrayon(RPackage): - """Colored terminal output on terminals that support 'ANSI' color and + """Colored Terminal Output. + + Colored terminal output on terminals that support 'ANSI' color and highlight codes. It also works in 'Emacs' 'ESS'. 'ANSI' color support is automatically detected. Colors and highlighting can be combined and nested. New styles can also be created easily. This package was inspired by the 'chalk' 'JavaScript' project.""" - homepage = "https://github.com/r-lib/crayon#readme" cran = "crayon" 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 11f16396d61870..4f4b67f4e53c28 100644 --- a/var/spack/repos/builtin/packages/r-credentials/package.py +++ b/var/spack/repos/builtin/packages/r-credentials/package.py @@ -7,7 +7,7 @@ class RCredentials(RPackage): - """Tools for Managing SSH and Git Credentials + """Tools for Managing SSH and Git Credentials. Setup and retrieve HTTPS and SSH credentials for use with 'git' and other services. For HTTPS remotes the package interfaces the 'git-credential' @@ -17,10 +17,9 @@ class RCredentials(RPackage): and also provides a back-end for git/ssh client libraries to authenticate with existing user credentials.""" - homepage = "https://docs.ropensci.org/credentials" - url = "https://cloud.r-project.org/src/contrib/credentials_1.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/credentials" + cran = "credentials" + version('1.3.2', sha256='2ffa7c11bedbfa034adf553d0a2f2e4f6a496b858af753a09a89219cff9028b8') version('1.3.0', sha256='c119ec26fd97b977c3b0cd1eb8fad3c59b84df6262c3adbf5ee9f3d6c9903ff1') depends_on('r-openssl@1.3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-crosstalk/package.py b/var/spack/repos/builtin/packages/r-crosstalk/package.py index d4a636f747764f..719d018f1ff7a8 100644 --- a/var/spack/repos/builtin/packages/r-crosstalk/package.py +++ b/var/spack/repos/builtin/packages/r-crosstalk/package.py @@ -7,13 +7,12 @@ class RCrosstalk(RPackage): - """Inter-Widget Interactivity for HTML Widgets + """Inter-Widget Interactivity for HTML Widgets. Provides building blocks for allowing HTML widgets to communicate with each other, with Shiny or without (i.e. static .html files). Currently supports linked brushing and filtering.""" - homepage = "https://rstudio.github.io/crosstalk" cran = "crosstalk" version('1.2.0', sha256='4237baab35cd246a8a98fb9cf4ce53b6ddbc31d00742ded4edea0479613d1ea0') @@ -21,9 +20,10 @@ class RCrosstalk(RPackage): version('1.0.0', sha256='b31eada24cac26f24c9763d9a8cbe0adfd87b264cf57f8725027fe0c7742ca51') depends_on('r-htmltools@0.3.5:', type=('build', 'run')) - depends_on('r-htmltools@0.3.6:', when='@1.1.0.1:', type=('build', 'run')) + depends_on('r-htmltools@0.3.6:', type=('build', 'run'), when='@1.1.0.1:') depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-lazyeval', type=('build', 'run')) depends_on('r-r6', type=('build', 'run')) - depends_on('r-ggplot2', when='@:1.0.0', type=('build', 'run')) - depends_on('r-shiny@0.11:', when='@:1.0.0', type=('build', 'run')) + + depends_on('r-ggplot2', type=('build', 'run'), when='@:1.0.0') + depends_on('r-shiny@0.11:', type=('build', 'run'), when='@:1.0.0') diff --git a/var/spack/repos/builtin/packages/r-crul/package.py b/var/spack/repos/builtin/packages/r-crul/package.py index 0a916d4a1209e1..fa8b4dc2a7b2d2 100644 --- a/var/spack/repos/builtin/packages/r-crul/package.py +++ b/var/spack/repos/builtin/packages/r-crul/package.py @@ -7,7 +7,7 @@ class RCrul(RPackage): - """HTTP Client + """HTTP Client. A simple HTTP client, with tools for making HTTP requests, and mocking HTTP requests. The package is built on R6, and takes inspiration from Ruby's @@ -16,10 +16,9 @@ class RCrul(RPackage): is built on top of the R package 'curl', an interface to 'libcurl' ().""" - homepage = "https://cloud.r-project.org/package=crul" - url = "https://cloud.r-project.org/src/contrib/crul_0.7.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/crul" + cran = "crul" + version('1.2.0', sha256='be1a149b21cf219ef55adfb56a6a5eb9892a9acf0d5f5421a22e52f2a7066f8c') version('1.0.0', sha256='2ade500f6cf89b2d0ca8496b8d4df9937d6f802a35c9ad10d9fab8632cdb1027') version('0.8.4', sha256='dbd950ad3b68402e5a5955615b1abcb5c9bdc846c93aa25f96a7a58913d04c8b') version('0.7.4', sha256='c963dd666ae3fc89b661ce19fce2fa19a16fc3825e1502105cae98ceb92c6014') @@ -28,5 +27,5 @@ class RCrul(RPackage): depends_on('r-r6@2.2.0:', type=('build', 'run')) depends_on('r-urltools@1.6.0:', type=('build', 'run')) depends_on('r-httpcode@0.2.0:', type=('build', 'run')) - depends_on('r-jsonlite', when='@0.8.4:', type=('build', 'run')) + depends_on('r-jsonlite', type=('build', 'run'), when='@0.8.4:') depends_on('r-mime', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ctc/package.py b/var/spack/repos/builtin/packages/r-ctc/package.py index cb29c5edc16520..6e33b7cf0e14f2 100644 --- a/var/spack/repos/builtin/packages/r-ctc/package.py +++ b/var/spack/repos/builtin/packages/r-ctc/package.py @@ -12,9 +12,9 @@ class RCtc(RPackage): Tools for export and import classification trees and clusters to other programs""" - homepage = "https://bioconductor.org/packages/ctc" - git = "https://git.bioconductor.org/packages/ctc.git" + bioc = "ctc" + version('1.68.0', commit='c2733534ef9d948e07ea654d1998a67ed8f7a98a') version('1.64.0', commit='35dbe620a21056b8f69890e6f9a7c320528d8621') version('1.58.0', commit='c41df03ac149db20c5e337142142d61cfb9b43fb') version('1.56.0', commit='cbd5befdda4630799f8fe0d868d83b094e3d352f') diff --git a/var/spack/repos/builtin/packages/r-cubature/package.py b/var/spack/repos/builtin/packages/r-cubature/package.py index 2bf5a13fab14b6..19747e7113448b 100644 --- a/var/spack/repos/builtin/packages/r-cubature/package.py +++ b/var/spack/repos/builtin/packages/r-cubature/package.py @@ -7,21 +7,24 @@ class RCubature(RPackage): - """Adaptive multivariate integration over hypercubes + """Adaptive multivariate integration over hypercubes. R wrappers around the cubature C library of Steven G. Johnson for adaptive multivariate integration over hypercubes and the Cuba C library of Thomas Hahn for deterministic and Monte Carlo integration. Scalar and vector - interfaces for cubature and Cuba routines are provided""" + interfaces for cubature and Cuba routines are provided; the vector + interfaces are highly recommended as demonstrated in the package + vignette.""" - homepage = "https://cloud.r-project.org/package=cubature" - url = "https://cloud.r-project.org/src/contrib/cubature_1.1-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/cubature" + cran = "cubature" + version('2.0.4.2', sha256='605bdd9d90fb6645359cccd1b289c5afae235b46360ef5bdd2001aa307a7694e') version('2.0.4.1', sha256='383fbdf49d1cdf760ad5d88d353e69118c7c663cde126c5bdd33b6fecc50d400') version('2.0.3', sha256='79bf03ebdb64b0de1ef19d24051b9d922df9310254bee459bb47764522407a73') version('2.0.2', sha256='641165c665ff490c523bccc05c42bb6851e42676b6b366b55fc442a51a8fbe8c') version('1.1-2', sha256='0a05469bdc85d6bd8165a42a3fc5c35a06700d279e4e8b3cf4669df19edffeed') - depends_on('r-rcpp', when='@2.0.3:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run'), when='@2.0.3:') depends_on('gmake', type='build') + + parallel = False diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py index 7f73798ee1c7fe..4b6927cfbef496 100644 --- a/var/spack/repos/builtin/packages/r-cubist/package.py +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -7,14 +7,13 @@ class RCubist(RPackage): - """Rule- And Instance-Based Regression Modeling + """Rule- And Instance-Based Regression Modeling. - Regression modeling using rules with added instance-based corrections""" + Regression modeling using rules with added instance-based corrections.""" - homepage = "https://cloud.r-project.org/package=Cubist" - url = "https://cloud.r-project.org/src/contrib/Cubist_0.0.19.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Cubist" + cran = "Cubist" + version('0.3.0', sha256='88a76e7f858a8e978a73a97ce6a3504201d889517b39ce862cef734dcf9eb263') version('0.2.3', sha256='19845f585e073f316bb4bdf74b28a624e839561faeedd40ef5548960c5b1e1f4') version('0.2.2', sha256='cd3e152cc72ab33f720a8fb6b8b6787171e1c037cfda48f1735ab692ed6d85d4') version('0.2.1', sha256='b310c3f166f15fa3e16f8d110d39931b0bb1b0aa8d0c9ac2af5a9a45081588a3') diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 73168ed77bbe38..c94b24d213b6e0 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -19,7 +19,6 @@ class RCurl(RPackage): more-user-friendly web client see the 'httr' package which builds on this package with http specific tools and logic.""" - homepage = "https://github.com/jeroen/curl" cran = "curl" version('4.3.2', sha256='90b1facb4be8b6315bb3d272ba2dd90b88973f6ea1ab7f439550230f8500a568') 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 9ed564c5938438..1f7ee72aa2c500 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -7,14 +7,13 @@ class RDataTable(RPackage): - """Extension of `data.frame` + """Extension of `data.frame`. Fast aggregation of large data (e.g. 100GB in RAM), fast ordered joins, fast add/modify/delete of columns by group using no copies at all, list columns and a fast file reader (fread). Offers a natural and flexible syntax, for faster development.""" - homepage = "https://github.com/Rdatatable/data.table/wiki" cran = "data.table" 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 0faade10a21a26..71ecf51cfe8ce7 100644 --- a/var/spack/repos/builtin/packages/r-dbi/package.py +++ b/var/spack/repos/builtin/packages/r-dbi/package.py @@ -9,13 +9,13 @@ class RDbi(RPackage): """R Database Interface. - A database interface definition for communication between R and - relational database management systems. All classes in this package are - virtual and need to be extended by the various R/DBMS implementations.""" + A database interface definition for communication between R and relational + database management systems. All classes in this package are virtual and + need to be extended by the various R/DBMS implementations.""" - homepage = "https://dbi.r-dbi.org" cran = "DBI" + version('1.1.2', sha256='56ec377d471c76ac234ddfd313bd01a050c99fb6fa5f704f5333b34a5d714f58') version('1.1.1', sha256='572ab3b8a6421d0ac3e7665c4c842826f1723af98fca25d4f43edb419e771344') version('1.1.0', sha256='a96db7fa39a58f1ed34c6e78d8f5f7e4cf0882afb301323b5c6975d6729203e4') version('1.0.0', sha256='ff16f118eb3f759183441835e932b87358dd80ab9800ce576a8f3df1b6f01cf5') diff --git a/var/spack/repos/builtin/packages/r-dbplyr/package.py b/var/spack/repos/builtin/packages/r-dbplyr/package.py index 08e13b2da46108..7728f420aebd87 100644 --- a/var/spack/repos/builtin/packages/r-dbplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dbplyr/package.py @@ -7,14 +7,13 @@ class RDbplyr(RPackage): - """A 'dplyr' Back End for Databases + """A 'dplyr' Back End for Databases. A 'dplyr' back end for databases that allows you to work with remote database tables as if they are in-memory data frames. Basic features works with any database that has a 'DBI' back end; more advanced features require 'SQL' translation to be provided by the package author.""" - homepage = "https://github.com/tidyverse/dbplyr" cran = "dbplyr" version('2.1.1', sha256='aba4cf47b85ab240fd3ec4cd8d512f6e1958201e151577c1a2ebc3d6ebc5bc08') @@ -28,20 +27,20 @@ class RDbplyr(RPackage): depends_on('r@3.1:', type=('build', 'run')) depends_on('r-assertthat@0.2.0:', type=('build', 'run')) - depends_on('r-blob@1.2.0:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-blob@1.2.0:', type=('build', 'run'), when='@2.0.0:') depends_on('r-dbi@1.0.0:', type=('build', 'run')) depends_on('r-dplyr@0.8.0:', type=('build', 'run')) - depends_on('r-dplyr@1.0.3:', when='@2.1.0', type=('build', 'run')) - depends_on('r-dplyr@1.0.4:', when='@2.1.1:', type=('build', 'run')) - depends_on('r-ellipsis', when='@2.1:', 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-ellipsis', type=('build', 'run'), when='@2.1:') depends_on('r-glue@1.2.0:', type=('build', 'run')) - depends_on('r-lifecycle', when='@2.0.0:', type=('build', 'run')) - depends_on('r-lifecycle@1.0.0:', when='@2.1.1:', type=('build', 'run')) - depends_on('r-magrittr', when='@2.0.0:', type=('build', 'run')) + 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-magrittr', type=('build', 'run'), when='@2.0.0:') depends_on('r-purrr@0.2.5:', type=('build', 'run')) depends_on('r-r6@2.2.2:', type=('build', 'run')) depends_on('r-rlang@0.2.0:', type=('build', 'run')) depends_on('r-tibble@1.4.2:', type=('build', 'run')) depends_on('r-tidyselect@0.2.4:', type=('build', 'run')) - depends_on('r-vctrs', when='@2.1:', type=('build', 'run')) - depends_on('r-withr', when='@2.0.0:', type=('build', 'run')) + depends_on('r-vctrs', type=('build', 'run'), when='@2.1:') + depends_on('r-withr', type=('build', 'run'), when='@2.0.0:') diff --git a/var/spack/repos/builtin/packages/r-debugme/package.py b/var/spack/repos/builtin/packages/r-debugme/package.py index 14728bfef75f3e..28dbdb67b4ce2b 100644 --- a/var/spack/repos/builtin/packages/r-debugme/package.py +++ b/var/spack/repos/builtin/packages/r-debugme/package.py @@ -7,12 +7,12 @@ class RDebugme(RPackage): - """Specify debug messages as special string constants, and control - debugging of packages via environment variables.""" + """Debug R Packages. - homepage = "https://github.com/r-lib/debugme#readme" - url = "https://cloud.r-project.org/src/contrib/debugme_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/debugme" + Specify debug messages as special string constants, and control debugging + of packages via environment variables.""" + + cran = "debugme" version('1.1.0', sha256='4dae0e2450d6689a6eab560e36f8a7c63853abbab64994028220b8fd4b793ab1') diff --git a/var/spack/repos/builtin/packages/r-decipher/package.py b/var/spack/repos/builtin/packages/r-decipher/package.py index 23933d1359a518..a4679807848925 100644 --- a/var/spack/repos/builtin/packages/r-decipher/package.py +++ b/var/spack/repos/builtin/packages/r-decipher/package.py @@ -7,13 +7,13 @@ class RDecipher(RPackage): - """Tools for curating, analyzing, and manipulating biological sequences + """Tools for curating, analyzing, and manipulating biological sequences. A toolset for deciphering and managing biological sequences.""" - homepage = "https://bioconductor.org/packages/DECIPHER" - git = "https://git.bioconductor.org/packages/DECIPHER.git" + bioc = "DECIPHER" + version('2.22.0', commit='45da5cab5869d83af797aa82b08ebcd24f5bdab3') version('2.18.1', commit='6a708421550e6705d05e2fb50a0f5ab4f9041cb0') version('2.12.0', commit='658ae23870383b25b96a03a18d4ecac228a2650f') version('2.10.2', commit='db7b017c9050a7ec1d4daa15352994890095e9c3') @@ -22,8 +22,9 @@ class RDecipher(RPackage): version('2.4.0', commit='1a57b8e4c7d7dec1c233f79c9a88d3705e0ad432') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@2.18.1:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.18.1:') depends_on('r-biostrings@2.35.12:', type=('build', 'run')) + depends_on('r-biostrings@2.59.1:', type=('build', 'run'), when='@2.22.0:') depends_on('r-rsqlite@1.1:', type=('build', 'run')) depends_on('r-dbi', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-delayedarray/package.py b/var/spack/repos/builtin/packages/r-delayedarray/package.py index bb3fb94a27906d..817dde0e7e8e11 100644 --- a/var/spack/repos/builtin/packages/r-delayedarray/package.py +++ b/var/spack/repos/builtin/packages/r-delayedarray/package.py @@ -8,7 +8,7 @@ class RDelayedarray(RPackage): """A unified framework for working transparently with on-disk and in-memory - array-like datasets + array-like datasets. Wrapping an array-like object (typically an on-disk object) in a DelayedArray object allows one to perform common array operations on it @@ -18,9 +18,9 @@ class RDelayedarray(RPackage): on in-memory array-like objects like DataFrame objects (typically with Rle columns), Matrix objects, and ordinary arrays and data frames.""" - homepage = "https://bioconductor.org/packages/DelayedArray" - git = "https://git.bioconductor.org/packages/DelayedArray.git" + bioc = "DelayedArray" + version('0.20.0', commit='829b52916ec54bb4f1a3c6f06c9955f3e28b3592') version('0.16.1', commit='c95eba771ad3fee1b49ec38c51cd8fd1486feadc') version('0.10.0', commit='4781d073110a3fd1e20c4083b6b2b0f260d0cb0a') version('0.8.0', commit='7c23cf46558de9dbe7a42fba516a9bb660a0f19f') @@ -29,20 +29,23 @@ class RDelayedarray(RPackage): version('0.2.7', commit='909c2ce1665ebae2543172ead50abbe10bd42bc4') depends_on('r@3.4:', type=('build', 'run')) - depends_on('r-matrix', when='@0.10.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@0.20.0:') + depends_on('r-matrix', type=('build', 'run'), when='@0.10.0:') depends_on('r-biocgenerics', type=('build', 'run')) - depends_on('r-biocgenerics@0.25.1:', when='@0.6.6:', type=('build', 'run')) - depends_on('r-biocgenerics@0.27.1:', when='@0.8.0:', type=('build', 'run')) - depends_on('r-biocgenerics@0.31.5:', when='@0.16.1:', type=('build', 'run')) - depends_on('r-matrixgenerics@1.1.3:', when='@0.16.1:', type=('build', 'run')) + depends_on('r-biocgenerics@0.25.1:', type=('build', 'run'), when='@0.6.6:') + depends_on('r-biocgenerics@0.27.1:', type=('build', 'run'), when='@0.8.0:') + depends_on('r-biocgenerics@0.31.5:', type=('build', 'run'), when='@0.16.1:') + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@0.20.1:') + depends_on('r-matrixgenerics@1.1.3:', type=('build', 'run'), when='@0.16.1:') depends_on('r-s4vectors@0.14.3:', type=('build', 'run')) - depends_on('r-s4vectors@0.15.3:', when='@0.4.1:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.43:', when='@0.6.6:', type=('build', 'run')) - depends_on('r-s4vectors@0.19.15:', when='@0.8.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.21.7:', when='@0.10.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.2:', when='@0.16.1:', type=('build', 'run')) + depends_on('r-s4vectors@0.15.3:', type=('build', 'run'), when='@0.4.1:') + depends_on('r-s4vectors@0.17.43:', type=('build', 'run'), when='@0.6.6:') + depends_on('r-s4vectors@0.19.15:', type=('build', 'run'), when='@0.8.0:') + depends_on('r-s4vectors@0.21.7:', type=('build', 'run'), when='@0.10.0:') + depends_on('r-s4vectors@0.27.2:', type=('build', 'run'), when='@0.16.1:') depends_on('r-iranges', type=('build', 'run')) - depends_on('r-iranges@2.11.17:', when='@0.4.1:', type=('build', 'run')) - depends_on('r-iranges@2.17.3:', when='@0.10.0:', type=('build', 'run')) - depends_on('r-matrixstats', when='@:0.10.0', type=('build', 'run')) - depends_on('r-biocparallel', when='@0.6.6:0.10.0', type=('build', 'run')) + depends_on('r-iranges@2.11.17:', type=('build', 'run'), when='@0.4.1:') + depends_on('r-iranges@2.17.3:', type=('build', 'run'), when='@0.10.0:') + + depends_on('r-matrixstats', type=('build', 'run'), when='@:0.10.0') + depends_on('r-biocparallel', type=('build', 'run'), when='@0.6.6:0.10.0') diff --git a/var/spack/repos/builtin/packages/r-delayedmatrixstats/package.py b/var/spack/repos/builtin/packages/r-delayedmatrixstats/package.py index 530a51f0bc40ee..a5f108a0e537ba 100644 --- a/var/spack/repos/builtin/packages/r-delayedmatrixstats/package.py +++ b/var/spack/repos/builtin/packages/r-delayedmatrixstats/package.py @@ -7,7 +7,7 @@ class RDelayedmatrixstats(RPackage): - """Functions that Apply to Rows and Columns of 'DelayedMatrix' Objects + """Functions that Apply to Rows and Columns of 'DelayedMatrix' Objects. A port of the 'matrixStats' API for use with DelayedMatrix objects from the 'DelayedArray' package. High-performing functions operating on rows @@ -16,29 +16,34 @@ class RDelayedmatrixstats(RPackage): for subsetted calculations such that both memory usage and processing time is minimized.""" - homepage = "https://github.com/PeteHaitch/DelayedMatrixStats" - git = "https://git.bioconductor.org/packages/DelayedMatrixStats.git" + bioc = "DelayedMatrixStats" + version('1.16.0', commit='d44a3d765769cb022193428a77af25bf19916be7') version('1.12.3', commit='2b3091dfa9b3bab914e3a4157182063714ba86ae') version('1.6.1', commit='4378d1898a403305a94b122c4f36d1215fa7708d') version('1.4.0', commit='eb5b390ef99651fe87a346848f807de95afe8971') version('1.2.0', commit='de868e730be6280dfad41a280ab09f4d3083c9ac') version('1.0.3', commit='e29a3444980ff727c5b12286884b06dfaebf5b5b') - depends_on('r-matrixgenerics', when='@1.12.2:', type=('build', 'run')) + depends_on('r-matrixgenerics', type=('build', 'run'), when='@1.12.2:') + depends_on('r-matrixgenerics@1.5.3:', type=('build', 'run'), when='@1.16.0:') depends_on('r-delayedarray', type=('build', 'run')) - depends_on('r-delayedarray@0.5.27:', when='@1.2.0:', type=('build', 'run')) - depends_on('r-delayedarray@0.7.37:', when='@1.4.0:', type=('build', 'run')) - depends_on('r-delayedarray@0.9.8:', when='@1.6.1:', type=('build', 'run')) - depends_on('r-delayedarray@0.15.3:', when='@1.12.2:', type=('build', 'run')) + depends_on('r-delayedarray@0.5.27:', type=('build', 'run'), when='@1.2.0:') + depends_on('r-delayedarray@0.7.37:', type=('build', 'run'), when='@1.4.0:') + depends_on('r-delayedarray@0.9.8:', type=('build', 'run'), when='@1.6.1:') + depends_on('r-delayedarray@0.15.3:', type=('build', 'run'), when='@1.12.2:') + depends_on('r-delayedarray@0.17.6:', type=('build', 'run'), when='@1.16.0:') depends_on('r-matrixstats@0.53.1:', type=('build', 'run')) - depends_on('r-matrixstats@0.55.0:', when='@1.6.1:', type=('build', 'run')) - depends_on('r-matrixstats@0.56.0:', when='@1.12.2:', type=('build', 'run')) - depends_on('r-sparsematrixstats', when='@1.12.2:', type=('build', 'run')) + depends_on('r-matrixstats@0.55.0:', type=('build', 'run'), when='@1.6.1:') + depends_on('r-matrixstats@0.56.0:', type=('build', 'run'), when='@1.12.2:') + depends_on('r-matrixstats@0.60.0:', type=('build', 'run'), when='@1.16.0:') + depends_on('r-sparsematrixstats', type=('build', 'run'), when='@1.12.2:') depends_on('r-matrix', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) - depends_on('r-s4vectors@0.17.5:', when='@1.2.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.5:', type=('build', 'run'), when='@1.2.0:') depends_on('r-iranges', type=('build', 'run')) - depends_on('r-hdf5array@1.7.10:', when='@1.4.0:', type=('build', 'run')) - depends_on('r-hdf5array@1.17.2:', when='@1.12.2:', type=('build', 'run')) - depends_on('r-biocparallel', when='@1.4.0:', type=('build', 'run')) + depends_on('r-iranges@2.25.10:', type=('build', 'run'), when='@1.16.0:') + + depends_on('r-hdf5array@1.7.10:', type=('build', 'run'), when='@1.4.0:1.12.3') + depends_on('r-hdf5array@1.17.2:', type=('build', 'run'), when='@1.12.2:1.12.3') + depends_on('r-biocparallel', type=('build', 'run'), when='@1.4.0:1.12.3') diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py index fd4a044a130537..7fe64faaee6835 100644 --- a/var/spack/repos/builtin/packages/r-deldir/package.py +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -7,22 +7,21 @@ class RDeldir(RPackage): - """Delaunay Triangulation and Dirichlet (Voronoi) Tessellation + """Delaunay Triangulation and Dirichlet (Voronoi) Tessellation. Calculates the Delaunay triangulation and the Dirichlet or Voronoi tessellation (with respect to the entire plane) of a planar point set. - Plots triangulations and tessellations in various ways. Clips - tessellations to sub-windows. Calculates perimeters of tessellations. - Summarises information about the tiles of the tessellation.""" + Plots triangulations and tessellations in various ways. Clips tessellations + to sub-windows. Calculates perimeters of tessellations. Summarises + information about the tiles of the tessellation.""" - homepage = "https://cloud.r-project.org/package=deldir" - url = "https://cloud.r-project.org/src/contrib/deldir_0.1-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/deldir" + cran = "deldir" + version('1.0-6', sha256='6df6d8325c607e0b7d63cbc53c29e774eff95ad4acf9c7ec8f70693b0505f8c5') version('0.2-3', sha256='2d24800f5ec6ad9dc57b9b265365b29c07717f4562d8f3e6344336d3340c364e') version('0.1-23', sha256='e0112bce9fc94daf73596a0fff9b3958b80872e3bbb487be73e157b13a6f201d') version('0.1-21', sha256='b9dabcc1813c7a0f8edaf720a94bdd611a83baf3d3e52e861d352369e815690c') version('0.1-14', sha256='89d365a980ef8589971e5d311c6bd59fe32c48dbac8000a880b9655032c99289') depends_on('r@0.99:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.2-3:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.2-3:') diff --git a/var/spack/repos/builtin/packages/r-dendextend/package.py b/var/spack/repos/builtin/packages/r-dendextend/package.py index 4661d3653efdd8..1210c24e0ac1d8 100644 --- a/var/spack/repos/builtin/packages/r-dendextend/package.py +++ b/var/spack/repos/builtin/packages/r-dendextend/package.py @@ -7,7 +7,7 @@ class RDendextend(RPackage): - """Extending 'Dendrogram' Functionality in R + """Extending 'Dendrogram' Functionality in R. Offers a set of functions for extending 'dendrogram' objects in R, letting you visualize and compare trees of 'hierarchical clusterings'. You can (1) @@ -15,10 +15,9 @@ class RDendextend(RPackage): branches, nodes and labels. (2) Visually and statistically compare different 'dendrograms' to one another.""" - homepage = "https://cloud.r-project.org/package=dendextend" - url = "https://cloud.r-project.org/src/contrib/dendextend_1.5.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dendextend" + cran = "dendextend" + version('1.15.2', sha256='4ba3885b66694589d455ffef31c218fe653fa25aff3efb7e8db6c25008d2921b') version('1.14.0', sha256='3789461bc474e146b077ad26566b1fa05be32fc7e57ab1fb5e78bdabcc797858') version('1.12.0', sha256='b487fed8c1878a23b9e28394ee11f16a1831b76c90793eb486e6963c7162fa55') version('1.10.0', sha256='88f0fb3362d69144daf4f35d0ea09f32c2df1adf614e040327a42552a8fd3224') @@ -28,5 +27,6 @@ class RDendextend(RPackage): depends_on('r-magrittr@1.0.1:', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-viridis', type=('build', 'run')) - depends_on('r-fpc', when='@:1.10.0', type=('build', 'run')) - depends_on('r-whisker', when='@:1.5.2', type=('build', 'run')) + + depends_on('r-fpc', type=('build', 'run'), when='@:1.10.0') + depends_on('r-whisker', type=('build', 'run'), when='@:1.5.2') diff --git a/var/spack/repos/builtin/packages/r-deoptim/package.py b/var/spack/repos/builtin/packages/r-deoptim/package.py index 818d9f3c6b9dbc..c5bbabaf2d3f57 100644 --- a/var/spack/repos/builtin/packages/r-deoptim/package.py +++ b/var/spack/repos/builtin/packages/r-deoptim/package.py @@ -8,15 +8,14 @@ class RDeoptim(RPackage): - """Global Optimization by Differential Evolution + """Global Optimization by Differential Evolution. - Implements the differential evolution algorithm for global optimization - of a real-valued function of a real-valued parameter vector.""" + Implements the differential evolution algorithm for global optimization of + a real-valued function of a real-valued parameter vector.""" - homepage = "https://cloud.r-project.org/package=DEoptim" - url = "https://cloud.r-project.org/src/contrib/DEoptim_2.2-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/DEoptim" + cran = "DEoptim" + version('2.2-6', sha256='8c63397d83a067212d003ef3e639fd81f5f00bf61e3c271b4e4999031a69e2e1') version('2.2-5', sha256='ae12dedcd4a43994e811e7285f8c12bfdb688e7c99d65515cf7e8cb6db13955a') version('2.2-4', sha256='0a547784090d1e9b93efc53768110621f35bed3692864f6ce5c0dda2ebd6d482') version('2.2-3', sha256='af2120feea3a736ee7a5a93c6767d464abc0d45ce75568074b233405e73c9a5d') diff --git a/var/spack/repos/builtin/packages/r-deoptimr/package.py b/var/spack/repos/builtin/packages/r-deoptimr/package.py index 5e8df0c7aec0e7..13e24dc92ad252 100644 --- a/var/spack/repos/builtin/packages/r-deoptimr/package.py +++ b/var/spack/repos/builtin/packages/r-deoptimr/package.py @@ -7,12 +7,17 @@ class RDeoptimr(RPackage): - """An implementation of a bespoke jDE variant of the Differential - Evolution stochastic algorithm for global optimization of - nonlinear programming problems.""" + """Differential Evolution Optimization in Pure R. - homepage = "https://cloud.r-project.org/package=DEoptimR" - url = "https://cloud.r-project.org/src/contrib/DEoptimR_1.0-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/DEoptimR" + Differential Evolution (DE) stochastic algorithms for global optimization + of problems with and without constraints. The aim is to curate a collection + of its state-of-the-art variants that (1) do not sacrifice simplicity of + design, (2) are essentially tuning-free, and (3) can be efficiently + implemented directly in the R language. Currently, it only provides an + implementation of the 'jDE' algorithm by Brest et al. (2006) + .""" + cran = "DEoptimR" + + version('1.0-10', sha256='774f7ba0ac9c73aaab4567024b98afdb58098905726e72bceeeb9e380e782ad5') version('1.0-8', sha256='846911c1b2561a9fae73a8c60a21a5680963ebb0050af3c1f1147ae9a121e5ef') diff --git a/var/spack/repos/builtin/packages/r-deriv/package.py b/var/spack/repos/builtin/packages/r-deriv/package.py index 025404dff5fd4d..7af74312a1c129 100644 --- a/var/spack/repos/builtin/packages/r-deriv/package.py +++ b/var/spack/repos/builtin/packages/r-deriv/package.py @@ -7,15 +7,13 @@ class RDeriv(RPackage): - """Deriv: Symbolic Differentiation + """Symbolic Differentiation. R-based solution for symbolic differentiation. It admits user-defined function as well as function substitution in arguments of functions to be differentiated. Some symbolic simplification is part of the work.""" - homepage = "https://cloud.r-project.org/package=Deriv" - url = "https://cloud.r-project.org/src/contrib/Deriv_4.1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Deriv" + cran = "Deriv" version('4.1.3', sha256='dbdbf5ed8babf706373ae33a937d013c46110a490aa821bcd158a70f761d0f8c') version('4.1.2', sha256='c4b0c3f351f6df53778d48033460cf8674e7a7878fbc542085d66a9a78803ac9') diff --git a/var/spack/repos/builtin/packages/r-desc/package.py b/var/spack/repos/builtin/packages/r-desc/package.py index 70a5ec2e87dccc..23291f795c397d 100644 --- a/var/spack/repos/builtin/packages/r-desc/package.py +++ b/var/spack/repos/builtin/packages/r-desc/package.py @@ -12,7 +12,6 @@ class RDesc(RPackage): Tools to read, write, create, and manipulate DESCRIPTION files. It is intended for packages that create or manipulate other packages.""" - homepage = "https://github.com/r-lib/desc" cran = "desc" version('1.4.0', sha256='8220e4c706449b8121b822e70b1414f391ef419aed574836a234c63b83e5d649') @@ -22,4 +21,5 @@ class RDesc(RPackage): depends_on('r-r6', type=('build', 'run')) depends_on('r-crayon', type=('build', 'run')) depends_on('r-rprojroot', type=('build', 'run')) - depends_on('r-assertthat', when='@:1.2', type=('build', 'run')) + + depends_on('r-assertthat', type=('build', 'run'), when='@:1.2') diff --git a/var/spack/repos/builtin/packages/r-deseq/package.py b/var/spack/repos/builtin/packages/r-deseq/package.py index 2447dffd801da2..11078e927396a2 100644 --- a/var/spack/repos/builtin/packages/r-deseq/package.py +++ b/var/spack/repos/builtin/packages/r-deseq/package.py @@ -8,14 +8,13 @@ class RDeseq(RPackage): """Differential gene expression analysis based on the negative binomial - distribution + distribution. Estimate variance-mean dependence in count data from high-throughput sequencing assays and test for differential expression based on a model using the negative binomial distribution""" - homepage = "https://bioconductor.org/packages/DESeq" - git = "https://git.bioconductor.org/packages/DESeq.git" + bioc = "DESeq" version('1.42.0', commit='da76bc64e8c4073b58eaf1c93aa4e89bec5c4e50') version('1.36.0', commit='db4af67b49d3bd8c321d19efbe9415cd2e4ddb7e') diff --git a/var/spack/repos/builtin/packages/r-deseq2/package.py b/var/spack/repos/builtin/packages/r-deseq2/package.py index 29db7e5bea4fc6..0bc46c04bb1ff0 100644 --- a/var/spack/repos/builtin/packages/r-deseq2/package.py +++ b/var/spack/repos/builtin/packages/r-deseq2/package.py @@ -8,7 +8,7 @@ class RDeseq2(RPackage): """Differential gene expression analysis based on the negative binomial - distribution + distribution. Estimate variance-mean dependence in count data from high-throughput sequencing assays and test for differential expression based on a model @@ -17,6 +17,7 @@ class RDeseq2(RPackage): homepage = "https://bioconductor.org/packages/DESeq2" git = "https://git.bioconductor.org/packages/DESeq2.git" + version('1.34.0', commit='25d4f74be59548122ccfbe8687d30c0bae5cf49a') version('1.30.0', commit='f4b47b208ee26ab23fe65c345f907fcfe70b3f77') version('1.24.0', commit='3ce7fbbebac526b726a6f85178063d02eb0314bf') version('1.22.2', commit='3c6a89b61add635d6d468c7fa00192314f8ca4ce') @@ -25,7 +26,7 @@ class RDeseq2(RPackage): version('1.16.1', commit='f41d9df2de25fb57054480e50bc208447a6d82fb') depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) - depends_on('r-s4vectors@0.23.18:', when='@1.30.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.23.18:', type=('build', 'run'), when='@1.30.0:') depends_on('r-iranges', type=('build', 'run')) depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-summarizedexperiment@1.1.6:', type=('build', 'run')) @@ -36,6 +37,7 @@ class RDeseq2(RPackage): depends_on('r-locfit', type=('build', 'run')) depends_on('r-geneplotter', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) - depends_on('r-hmisc', type=('build', 'run')) depends_on('r-rcpp@0.11.0:', type=('build', 'run')) depends_on('r-rcpparmadillo', type=('build', 'run')) + + depends_on('r-hmisc', type=('build', 'run'), when='@:1.30.0') diff --git a/var/spack/repos/builtin/packages/r-desolve/package.py b/var/spack/repos/builtin/packages/r-desolve/package.py index 663c280fb1b7e1..841bf43709a7df 100644 --- a/var/spack/repos/builtin/packages/r-desolve/package.py +++ b/var/spack/repos/builtin/packages/r-desolve/package.py @@ -8,7 +8,7 @@ class RDesolve(RPackage): """Solvers for Initial Value Problems of Differential Equations ('ODE', - 'DAE', 'DDE') + 'DAE', 'DDE'). Functions that solve initial value problems of a system of first-order ordinary differential equations ('ODE'), of partial differential equations @@ -21,14 +21,13 @@ class RDesolve(RPackage): 'ODEs' resulting from 1-D, 2-D and 3-D partial differential equations ('PDE') that have been converted to 'ODEs' by numerical differencing.""" - homepage = "https://cloud.r-project.org/package=deSolve" - url = "https://cloud.r-project.org/src/contrib/deSolve_1.20.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/deSolve" + cran = "deSolve" + version('1.30', sha256='39f65d7af6b4d85eb023cce2a200c2de470644b22d45e210c5b7d558c3abf548') version('1.28', sha256='4c55ef4cae841df91034382d277b483985af120240f87af587ff82177fdb5a49') version('1.24', sha256='3aa52c822abb0348a904d5bbe738fcea2b2ba858caab9f2831125d07f0d57b42') version('1.21', sha256='45c372d458fe4c7c11943d4c409517849b1be6782dc05bd9a74b066e67250c63') version('1.20', sha256='56e945835b0c66d36ebc4ec8b55197b616e387d990788a2e52e924ce551ddda2') depends_on('r@2.15.0:', type=('build', 'run')) - depends_on('r@3.3.0:', when='@1.28:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@1.28:') diff --git a/var/spack/repos/builtin/packages/r-devtools/package.py b/var/spack/repos/builtin/packages/r-devtools/package.py index 62b43a21149a2f..70843d32d01581 100644 --- a/var/spack/repos/builtin/packages/r-devtools/package.py +++ b/var/spack/repos/builtin/packages/r-devtools/package.py @@ -7,14 +7,13 @@ class RDevtools(RPackage): - """Tools to Make Developing R Packages Easier + """Tools to Make Developing R Packages Easier. Collection of package development tools.""" - homepage = "https://github.com/hadley/devtools" - url = "https://cloud.r-project.org/src/contrib/devtools_1.12.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/devtools" + cran = "devtools" + version('2.4.3', sha256='e42159a9bca0b219170e76c282862e27ca283649d6cbf6a868175d8982e06b4f') version('2.3.2', sha256='e5086106baef6bb925445dfdddb3cd5ff4f8fff96353365b135aba5618d1986d') version('2.3.0', sha256='4fc375c171335c67bd71df4e0b1b3dff2ae3aa17b3e0566b790ba0808b39dcd0') version('2.1.0', sha256='c1f75346a90adf0669b5508fe68cc78bd3b114c1303fa7d22bf90991edd9230d') @@ -23,57 +22,73 @@ class RDevtools(RPackage): version('1.11.1', sha256='51c876f9ddbfdf611f6ea0b06c0b46da8cefcb8cc98d60e06d576b61f0a06346') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r-usethis@1.5.0:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-usethis@1.6.0:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-usethis@1.6.3:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-callr', when='@2.0.0:', type=('build', 'run')) - depends_on('r-callr@3.4.3:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-callr@3.4.4:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-cli', when='@2.0.0:', type=('build', 'run')) - depends_on('r-cli@2.0.2:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-covr@3.5.0:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-covr@3.5.1:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-desc@1.2.0:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-dt@0.13:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-dt@0.15:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-ellipsis@0.3.0:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-ellipsis@0.3.1:', when='@2.3.2:', type=('build', 'run')) + depends_on('r-usethis@1.5.0:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-usethis@1.6.0:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-usethis@1.6.3:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-usethis@2.0.1:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-callr', type=('build', 'run'), when='@2.0.0:') + depends_on('r-callr@3.4.3:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-callr@3.4.4:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-callr@3.4.4:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-callr@3.6.0:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-cli', type=('build', 'run'), when='@2.0.0:') + depends_on('r-cli@2.0.2:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-cli@3.0.0:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-covr@3.5.0:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-covr@3.5.1:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-desc@1.2.0:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-desc@1.3.0:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-ellipsis@0.3.0:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-ellipsis@0.3.1:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-fs@1.5.0:', type=('build', 'run'), when='@2.4.3:') depends_on('r-httr@0.4:', type=('build', 'run')) - depends_on('r-httr@1.4.1:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-httr@1.4.2:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-jsonlite', type=('build', 'run')) - depends_on('r-jsonlite@1.6.1:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-jsonlite@1.7.1:', when='@2.3.2:', type=('build', 'run')) + depends_on('r-httr@1.4.1:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-httr@1.4.2:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-lifecycle@1.0.0:', type=('build', 'run'), when='@2.4.3:') depends_on('r-memoise@1.0.0:', type=('build', 'run')) - depends_on('r-memoise@1.1.0:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-pkgbuild@1.0.3:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-pkgbuild@1.0.6:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-pkgbuild@1.1.0:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-pkgload@1.0.2:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-pkgload@1.1.0:', when='@2.0.2:', type=('build', 'run')) - depends_on('r-rcmdcheck@1.3.3:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-remotes@2.1.0:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-remotes@2.1.1:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-remotes@2.2.0:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-rlang@0.4.5:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.7:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-roxygen2@6.1.1:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-roxygen2@7.1.0:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-roxygen2@7.1.1:', when='@2.3.2:', type=('build', 'run')) + depends_on('r-memoise@1.1.0:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-memoise@2.0.0:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-pkgbuild@1.0.3:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-pkgbuild@1.0.6:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-pkgbuild@1.1.0:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-pkgbuild@1.2.0:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-pkgload@1.0.2:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-pkgload@1.1.0:', type=('build', 'run'), when='@2.0.2:') + depends_on('r-pkgload@1.2.1:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-rcmdcheck@1.3.3:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-remotes@2.1.0:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-remotes@2.1.1:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-remotes@2.2.0:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-remotes@2.3.0:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-rlang@0.4.5:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-rlang@0.4.7:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-roxygen2@6.1.1:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-roxygen2@7.1.0:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-roxygen2@7.1.1:', type=('build', 'run'), when='@2.3.2:') depends_on('r-rstudioapi@0.7.0:', type=('build', 'run')) - depends_on('r-rstudioapi@0.11:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-rversions@2.0.1:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-rversions@2.0.2:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-sessioninfo@1.1.1:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-testthat@2.1.1:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-testthat@2.3.2:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-rstudioapi@0.11:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-rstudioapi@0.13:', type=('build', 'run'), when='@2.4.3:') + depends_on('r-rversions@2.0.1:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-rversions@2.0.2:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-sessioninfo@1.1.1:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-testthat@2.1.1:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-testthat@2.3.2:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-testthat@3.0.2:', type=('build', 'run'), when='@2.4.3:') depends_on('r-withr', type=('build', 'run')) - depends_on('r-withr@2.1.2:', when='@2.3.0:', type=('build', 'run')) - depends_on('r-withr@2.2.0:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-crayon@1.3.4:', when='@2.3.0', type=('build', 'run')) - depends_on('r-digest', when='@:2.3.0', type=('build', 'run')) - depends_on('r-digest@0.6.25:', when='@2.3.0', type=('build', 'run')) - depends_on('r-glue@1.4.0:', when='@2.3.0', type=('build', 'run')) - depends_on('r-git2r@0.23.0:', when='@:2.3.0', type=('build', 'run')) - depends_on('r-git2r@0.26.1:', when='@2.3.0', type=('build', 'run')) - depends_on('r-whisker', when='@:1.9.9', type=('build', 'run')) + depends_on('r-withr@2.1.2:', type=('build', 'run'), when='@2.3.0:') + depends_on('r-withr@2.2.0:', type=('build', 'run'), when='@2.3.2:') + depends_on('r-withr@2.4.1:', type=('build', 'run'), when='@2.4.3:') + + depends_on('r-crayon@1.3.4:', type=('build', 'run'), when='@2.3.0') + depends_on('r-digest', type=('build', 'run'), when='@:2.3.0') + depends_on('r-digest@0.6.25:', type=('build', 'run'), when='@2.3.0') + depends_on('r-glue@1.4.0:', type=('build', 'run'), when='@2.3.0') + depends_on('r-git2r@0.23.0:', type=('build', 'run'), when='@:2.3.0') + depends_on('r-git2r@0.26.1:', type=('build', 'run'), when='@2.3.0') + depends_on('r-whisker', type=('build', 'run'), when='@:1.12.0') + depends_on('r-dt@0.13:', type=('build', 'run'), when='@:2.3.0') + depends_on('r-dt@0.15:', type=('build', 'run'), when='@2.3.2') + depends_on('r-jsonlite', type=('build', 'run'), when='@:2.3.2') + depends_on('r-jsonlite@1.6.1:', type=('build', 'run'), when='@2.3.0') + depends_on('r-jsonlite@1.7.1:', type=('build', 'run'), when='@2.3.2') diff --git a/var/spack/repos/builtin/packages/r-dexseq/package.py b/var/spack/repos/builtin/packages/r-dexseq/package.py index fb521ff70fbcff..b7e0da0ec88fe6 100644 --- a/var/spack/repos/builtin/packages/r-dexseq/package.py +++ b/var/spack/repos/builtin/packages/r-dexseq/package.py @@ -7,7 +7,7 @@ class RDexseq(RPackage): - """Inference of differential exon usage in RNA-Seq + """Inference of differential exon usage in RNA-Seq. The package is focused on finding differential exon usage using RNA-seq exon counts between samples with different experimental designs. It @@ -21,16 +21,9 @@ class RDexseq(RPackage): maintainers = ['dorton21'] + version('1.40.0', commit='7d2d639b3a157e443058fc557132cd2629bb36f3') version('1.36.0', commit='f0a361af6954fcc2abb2db801c26e303570669b2') - depends_on('r-stringr', type=('build', 'run')) - depends_on('r-geneplotter', type=('build', 'run')) - depends_on('r-genefilter', type=('build', 'run')) - depends_on('r-biocgenerics', type=('build', 'run')) - depends_on('r-biomart', type=('build', 'run')) - depends_on('r-hwriter', type=('build', 'run')) - depends_on('r-rsamtools', type=('build', 'run')) - depends_on('r-statmod', type=('build', 'run')) depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) depends_on('r-summarizedexperiment', type=('build', 'run')) @@ -40,3 +33,11 @@ class RDexseq(RPackage): depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-rcolorbrewer', type=('build', 'run')) depends_on('r-s4vectors@0.23.18:', type=('build', 'run')) + depends_on('r-biocgenerics', type=('build', 'run')) + depends_on('r-biomart', type=('build', 'run')) + depends_on('r-hwriter', type=('build', 'run')) + depends_on('r-stringr', type=('build', 'run')) + depends_on('r-rsamtools', type=('build', 'run')) + depends_on('r-statmod', type=('build', 'run')) + depends_on('r-geneplotter', type=('build', 'run')) + depends_on('r-genefilter', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-diagrammer/package.py b/var/spack/repos/builtin/packages/r-diagrammer/package.py index 0bd68e8eae30f5..564921f466f46a 100644 --- a/var/spack/repos/builtin/packages/r-diagrammer/package.py +++ b/var/spack/repos/builtin/packages/r-diagrammer/package.py @@ -7,7 +7,7 @@ class RDiagrammer(RPackage): - """Graph/Network Visualization + """Graph/Network Visualization. Build graph/network structures using functions for stepwise addition and deletion of nodes and edges. Work with data available in tables for bulk @@ -16,44 +16,61 @@ class RDiagrammer(RPackage): graph algorithms allow for the analysis of graphs. Visualize the graphs and take advantage of any aesthetic properties assigned to nodes and edges.""" - homepage = "https://github.com/rich-iannone/DiagrammeR" - url = "https://cloud.r-project.org/src/contrib/DiagrammeR_0.8.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/DiagrammeR" + cran = "DiagrammeR" + version('1.0.8', sha256='b9157b26215edda4fe0a1b9330a597d5b01a5d7e660a9832f593b87c584dd233') + version('1.0.7', sha256='6af291a7136657b9f7c67b96cd7f3afe99662cf5a477ebbb213a6c53df623050') version('1.0.6.1', sha256='be4e4c520a3692902ce405e8225aef9f3d5f0cd11fcde614f6541e981b63673d') version('1.0.1', sha256='ccee8acf608fc909e73c6de4374cef5a570cb62e5f454ac55dda736f22f3f013') version('1.0.0', sha256='2b186dae1b19018681b979e9444bf16559c42740d8382676fbaf3b0f8a44337e') version('0.8.4', sha256='0503935fa120c7c7cdcfd4dce85558b23fd0bcb7e6b32fa6989087d3c88ec404') - depends_on('r@3.2.0:', when='@0.9.2:', type=('build', 'run')) - depends_on('r-dplyr@0.7.4:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-dplyr@0.7.6:', when='@1.0.6.1:', type=('build', 'run')) - depends_on('r-downloader@0.4:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-glue@1.2.0:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-glue@1.3.0:', when='@1.0.6.1:', type=('build', 'run')) - depends_on('r-htmltools@0.3.6:', when='@1.0.0:', type=('build', 'run')) + 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-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:') + depends_on('r-htmltools@0.3.6:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-htmltools@0.5.2:', type=('build', 'run'), when='@1.0.7:') depends_on('r-htmlwidgets@1.0:', type=('build', 'run')) - depends_on('r-htmlwidgets@1.2:', when='@1.0.6.1:', type=('build', 'run')) + depends_on('r-htmlwidgets@1.2:', type=('build', 'run'), when='@1.0.6.1:') + depends_on('r-htmlwidgets@1.5:', type=('build', 'run'), when='@1.0.7:') depends_on('r-igraph@1.1.2:', type=('build', 'run')) - depends_on('r-igraph@1.2.2:', when='@1.0.6.1:', 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-magrittr@1.5:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-purrr@0.2.4:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-purrr@0.2.5:', when='@1.0.6.1:', type=('build', 'run')) - depends_on('r-rcolorbrewer@1.1-2:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-readr@1.1.1:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-rlang@0.2.0:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-rlang@0.2.2:', when='@1.0.6.1:', type=('build', 'run')) + depends_on('r-influencer@0.1.0.1:', type=('build', 'run'), when='@1.0.7:') + 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:') + depends_on('r-purrr@0.3.4:', type=('build', 'run'), when='@1.0.7:') + depends_on('r-rcolorbrewer@1.1-2:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-readr@1.1.1:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-readr@2.1.1:', type=('build', 'run'), when='@1.0.7:') + 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-rstudioapi@0.7:', type=('build', 'run')) depends_on('r-scales@0.5.0:', type=('build', 'run')) - depends_on('r-scales@1.0.0:', when='@1.0.6.1:', type=('build', 'run')) + depends_on('r-scales@1.0.0:', type=('build', 'run'), when='@1.0.6.1:') + depends_on('r-scales@1.1:', type=('build', 'run'), when='@1.0.7:') depends_on('r-stringr@1.3.0:', type=('build', 'run')) - depends_on('r-stringr@1.3.1:', when='@1.0.6.1:', type=('build', 'run')) - depends_on('r-tibble@1.4.2:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-tidyr@0.8.0:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-tidyr@0.8.1:', when='@1.0.6.1:', type=('build', 'run')) - depends_on('r-viridis@0.5.0:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-viridis@0.5.1:', when='@1.0.6.1:', type=('build', 'run')) + depends_on('r-stringr@1.3.1:', type=('build', 'run'), when='@1.0.6.1:') + depends_on('r-stringr@1.4:', type=('build', 'run'), when='@1.0.7:') + depends_on('r-tibble@1.4.2:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-tibble@3.1:', type=('build', 'run'), when='@1.0.7:') + 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-visnetwork@2.0.3:', type=('build', 'run')) - depends_on('r-visnetwork@2.0.4:', when='@1.0.6.1:', type=('build', 'run')) - depends_on('r-rgexf@0.15.3:', when='@1.0.0:1.0.1', 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-rgexf@0.15.3:', type=('build', 'run'), when='@1.0.0:1.0.1') diff --git a/var/spack/repos/builtin/packages/r-dicekriging/package.py b/var/spack/repos/builtin/packages/r-dicekriging/package.py index 1f2b2599ed3f3d..7ebf99fe7a9fd0 100644 --- a/var/spack/repos/builtin/packages/r-dicekriging/package.py +++ b/var/spack/repos/builtin/packages/r-dicekriging/package.py @@ -7,15 +7,14 @@ class RDicekriging(RPackage): - """Kriging Methods for Computer Experiments + """Kriging Methods for Computer Experiments. Estimation, validation and prediction of kriging models. Important - functions : km, print.km, plot.km, predict.km.""" + functions: km, print.km, plot.km, predict.km.""" - homepage = "http://dice.emse.fr/" - url = "https://cloud.r-project.org/src/contrib/DiceKriging_1.5.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/DiceKriging" + cran = "DiceKriging" + version('1.6.0', sha256='ab5d1332809f2bb16d156ed234b102eb9fbd6de792e4291f9f6ea4652215cb49') version('1.5.8', sha256='11d02b894cb509dbb8887ae27b6d08ba25aa52ac3ece134c3759c2b3b1bf4d77') version('1.5.6', sha256='25466d2db9f17083d1c7b9545e5ec88f630be934f9373c2f7b36c38de4e64e92') version('1.5.5', sha256='55fe161f867a0c3772023c3047041b877aa54d29cb474ec87293ec31cc5cb30c') diff --git a/var/spack/repos/builtin/packages/r-dichromat/package.py b/var/spack/repos/builtin/packages/r-dichromat/package.py index d9258dc011389a..2163758ae5ebc0 100644 --- a/var/spack/repos/builtin/packages/r-dichromat/package.py +++ b/var/spack/repos/builtin/packages/r-dichromat/package.py @@ -7,12 +7,12 @@ class RDichromat(RPackage): - """Collapse red-green or green-blue distinctions to simulate the effects of + """Color Schemes for Dichromats. + + Collapse red-green or green-blue distinctions to simulate the effects of different types of color-blindness.""" - homepage = "https://cloud.r-project.org/package=dichromat" - url = "https://cloud.r-project.org/src/contrib/dichromat_2.0-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dichromat" + cran = "dichromat" version('2.0-0', sha256='31151eaf36f70bdc1172da5ff5088ee51cc0a3db4ead59c7c38c25316d580dd1') diff --git a/var/spack/repos/builtin/packages/r-diffobj/package.py b/var/spack/repos/builtin/packages/r-diffobj/package.py index 5167b76fe89123..81e5f746dd3aa3 100644 --- a/var/spack/repos/builtin/packages/r-diffobj/package.py +++ b/var/spack/repos/builtin/packages/r-diffobj/package.py @@ -7,12 +7,11 @@ class RDiffobj(RPackage): - """Diffs for R Objects + """Diffs for R Objects. Generate a colorized diff of two R objects for an intuitive visualization of their differences.""" - homepage = "https://github.com/brodieG/diffobj" cran = "diffobj" version('0.3.5', sha256='d860a79b1d4c9e369282d7391b539fe89228954854a65ba47181407c53e3cf60') diff --git a/var/spack/repos/builtin/packages/r-diffusionmap/package.py b/var/spack/repos/builtin/packages/r-diffusionmap/package.py index 6f3395b7a67658..20cf3ccd5b137f 100644 --- a/var/spack/repos/builtin/packages/r-diffusionmap/package.py +++ b/var/spack/repos/builtin/packages/r-diffusionmap/package.py @@ -7,16 +7,14 @@ class RDiffusionmap(RPackage): - """Diffusion Map + """Diffusion Map. Implements diffusion map method of data parametrization, including creation and visualization of diffusion map, clustering with diffusion K-means and regression using adaptive regression model. Richards (2009) .""" - homepage = "https://cloud.r-project.org/package=diffusionMap" - url = "https://cloud.r-project.org/src/contrib/diffusionMap_1.1-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/diffusionMap" + cran = "diffusionMap" version('1.2.0', sha256='523847592fbc3a29252bc92b5821e17564ce6b188c483c930e95e6950c3873e7') version('1.1-0.1', sha256='b24cf841af2566ac36f4ede2885f2ff355a7905398444d6d89747315d99a8486') @@ -26,7 +24,7 @@ class RDiffusionmap(RPackage): version('0.0-1', sha256='38c4af2d2a4fa4116c2e01a5e67ba313e7a8e76f724a3312a3c12b26e299f844') depends_on('r@2.4.0:', type=('build', 'run')) - depends_on('r@2.10:', when='@1.2.0:', type=('build', 'run')) + depends_on('r@2.10:', type=('build', 'run'), when='@1.2.0:') depends_on('r-scatterplot3d', type=('build', 'run')) depends_on('r-igraph', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 9a6e189e6a168d..d9bbadf287f502 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -7,10 +7,10 @@ class RDigest(RPackage): - """Create Compact Hash Digests of R Objects + """Create Compact Hash Digests of R Objects. - Implementation of a function 'digest()' for the creation of hash digests - of arbitrary R objects (using the md5, sha-1, sha-256, crc32, xxhash and + Implementation of a function 'digest()' for the creation of hash digests of + arbitrary R objects (using the md5, sha-1, sha-256, crc32, xxhash and murmurhash algorithms) permitting easy comparison of R language objects, as well as a function 'hmac()' to create hash-based message authentication code. The md5 algorithm by Ron Rivest is specified in RFC 1321, the sha-1 @@ -26,9 +26,9 @@ class RDigest(RPackage): comprehensive (and widely tested) libraries such as OpenSSL should be used.""" - homepage = "https://dirk.eddelbuettel.com/code/digest.html" cran = "digest" + version('0.6.29', sha256='792c1f14a4c8047745152f5e45ce7351978af8d770c29d2ea39c7acd5d619cd9') version('0.6.28', sha256='4a328c75e95f8522fc07390d1dd00c19fb643f558e761a8aed04f99c1dc7db00') version('0.6.27', sha256='f485f75122907da24c41d4a62c91a232f0c371befd2f77e973342a1bef00253f') version('0.6.25', sha256='15ccadb7b8bccaa221b6700bb549011719d0f4b38dbd3a1f29face3e019e2de5') @@ -39,5 +39,5 @@ class RDigest(RPackage): version('0.6.9', sha256='95fdc36011869fcfe21b40c3b822b931bc01f8a531e2c9260582ba79560dbe47') depends_on('r@2.4.1:', type=('build', 'run')) - depends_on('r@3.1.0:', when='@0.6.16:', type=('build', 'run')) - depends_on('r@3.3.0:', when='@0.6.27:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@0.6.16:') + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.6.27:') diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py index 5e98047876b59e..7c467d8d73a681 100644 --- a/var/spack/repos/builtin/packages/r-diptest/package.py +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -7,10 +7,13 @@ class RDiptest(RPackage): - """diptest: Hartigan's Dip Test Statistic for Unimodality - Corrected""" + """Hartigan's Dip Test Statistic for Unimodality - Corrected. - homepage = "https://cloud.r-project.org/package=diptest" - url = "https://cloud.r-project.org/src/contrib/diptest_0.75-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/diptest" + Compute Hartigan's dip test statistic for unimodality /; multimodality and + provide a test with simulation based p-values, where; the original public + code has been corrected.""" + cran = "diptest" + + version('0.76-0', sha256='508a5ebb161519cd0fcd156dc047b51becb216d545d62c6522496463f94ec280') version('0.75-7', sha256='462900100ca598ef21dbe566bf1ab2ce7c49cdeab6b7a600a50489b05f61b61b') diff --git a/var/spack/repos/builtin/packages/r-dirichletmultinomial/package.py b/var/spack/repos/builtin/packages/r-dirichletmultinomial/package.py index 66a4b32e0d090e..7377756b9c0d11 100644 --- a/var/spack/repos/builtin/packages/r-dirichletmultinomial/package.py +++ b/var/spack/repos/builtin/packages/r-dirichletmultinomial/package.py @@ -8,7 +8,7 @@ class RDirichletmultinomial(RPackage): """Dirichlet-Multinomial Mixture Model Machine Learning for Microbiome - Data + Data. Dirichlet-multinomial mixture models can be used to describe variability in microbial metagenomic data. This package is an interface to code @@ -16,9 +16,9 @@ class RDirichletmultinomial(RPackage): 7(2): 1-15, as discussed further in the man page for this package, ?DirichletMultinomial.""" - homepage = "https://bioconductor.org/packages/DirichletMultinomial" - git = "https://git.bioconductor.org/packages/DirichletMultinomial.git" + bioc = "DirichletMultinomial" + version('1.36.0', commit='926baff6c75cb498945c5895f25cc143c907a357') version('1.32.0', commit='6949abab2462b2c09f7a0ca5b5cbf0c95a40ad16') version('1.26.0', commit='7daa84948020811bb8a27d2e633fccfdcdd1018f') version('1.24.1', commit='50195d9b1986852da29100e77f6f09df5d6e2a35') diff --git a/var/spack/repos/builtin/packages/r-dismo/package.py b/var/spack/repos/builtin/packages/r-dismo/package.py index 482336a0879b79..d1c3ef1c012e33 100644 --- a/var/spack/repos/builtin/packages/r-dismo/package.py +++ b/var/spack/repos/builtin/packages/r-dismo/package.py @@ -7,20 +7,22 @@ class RDismo(RPackage): - """Species Distribution Modeling + """Species Distribution Modeling. Methods for species distribution modeling, that is, predicting the environmental similarity of any site to that of the locations of known occurrences of a species.""" - homepage = "https://cloud.r-project.org/package=dismo" - url = "https://cloud.r-project.org/src/contrib/dismo_1.1-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dismo" + cran = "dismo" + version('1.3-5', sha256='812e1932d42c0f40acf2ab5c5b2d068f93128caf648626e1d11baf1a09340ee7') version('1.3-3', sha256='fd65331ac18a4287ba0856b90508ddd0e2738c653eecc5f3eb2b14e1d06949ca') version('1.1-4', sha256='f2110f716cd9e4cca5fd2b22130c6954658aaf61361d2fe688ba22bbfdfa97c8') depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.3-5:') depends_on('r-raster@2.5-2:', type=('build', 'run')) + depends_on('r-raster@3.5-2:', type=('build', 'run'), when='@1.3-5:') depends_on('r-sp@1.2-0:', type=('build', 'run')) + depends_on('r-sp@1.4-5:', type=('build', 'run'), when='@1.3-5:') depends_on('java@8:', when='@1.3-3:') diff --git a/var/spack/repos/builtin/packages/r-distributional/package.py b/var/spack/repos/builtin/packages/r-distributional/package.py index 119bc95127eb21..5ea286b4c50946 100644 --- a/var/spack/repos/builtin/packages/r-distributional/package.py +++ b/var/spack/repos/builtin/packages/r-distributional/package.py @@ -12,14 +12,14 @@ class RDistributional(RPackage): Vectorised distribution objects with tools for manipulating, visualising, and using probability distributions. Designed to allow model prediction outputs to return distributions rather than their parameters, allowing - users to directly interact with predictive distributions in a - data-oriented workflow. In addition to providing generic replacements for - p/d/q/r functions, other useful statistics can be computed including - means, variances, intervals, and highest density regions.""" + users to directly interact with predictive distributions in a data-oriented + workflow. In addition to providing generic replacements for p/d/q/r + functions, other useful statistics can be computed including means, + variances, intervals, and highest density regions.""" - homepage = "https://github.com/mitchelloharawild/distributional" - cran = "distributional" + cran = "distributional" + version('0.3.0', sha256='fab36c7346617d8f2ca4b3cd0e3c9da93cb2f95fb7f102a3ae88670e694751d6') version('0.2.2', sha256='028e5a91aabe3a676eb7b7f3dc907f7f34735a123fe0d9adcabc03476504435f') depends_on('r-vctrs@0.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-diversitree/package.py b/var/spack/repos/builtin/packages/r-diversitree/package.py index 00f384565dafd8..d652343aa9b052 100644 --- a/var/spack/repos/builtin/packages/r-diversitree/package.py +++ b/var/spack/repos/builtin/packages/r-diversitree/package.py @@ -8,20 +8,18 @@ class RDiversitree(RPackage): - """Comparative 'Phylogenetic' Analyses of Diversification + """Comparative 'Phylogenetic' Analyses of Diversification. - Mostly focusing on analysing diversification and character - evolution. Contains implementations of 'BiSSE' (Binary State - 'Speciation' and Extinction) and its unresolved tree extensions, - 'MuSSE' (Multiple State 'Speciation' and Extinction), 'QuaSSE', - 'GeoSSE', and 'BiSSE-ness' Other included methods include Markov - models of discrete and continuous trait evolution and constant - rate 'speciation' and extinction.""" + Mostly focusing on analysing diversification and character evolution. + Contains implementations of 'BiSSE' (Binary State 'Speciation' and + Extinction) and its unresolved tree extensions, 'MuSSE' (Multiple State + 'Speciation' and Extinction), 'QuaSSE', 'GeoSSE', and 'BiSSE-ness' Other + included methods include Markov models of discrete and continuous trait + evolution and constant rate 'speciation' and extinction.""" - homepage = "https://www.zoology.ubc.ca/prog/diversitree" - url = "https://cloud.r-project.org/src/contrib/diversitree_0.9-10.tar.gz" - list_url = "https://cron.r-project.org/src/contrib/Archive/diversitree" + cran = "diversitree" + version('0.9-16', sha256='4c236970b58e56b922352f3f5d97010c74d8ec5783b375c311fe11abfb99f967') version('0.9-15', sha256='c739ef3d4fcc24fd6855b1d297d31e0f89fbaff1efe8a2d149044458ecd363ea') version('0.9-11', sha256='4caa6a468f93de9f1c8c30e4457f34bb8346e1acdaf74f684005bfa86a950ecb') version('0.9-10', sha256='e7df5910c8508a5c2c2d6d3deea53dd3f947bb762196901094c32a7033cb043e') diff --git a/var/spack/repos/builtin/packages/r-dmrcate/package.py b/var/spack/repos/builtin/packages/r-dmrcate/package.py index d9587188dad0dc..86a228a8074ef1 100644 --- a/var/spack/repos/builtin/packages/r-dmrcate/package.py +++ b/var/spack/repos/builtin/packages/r-dmrcate/package.py @@ -7,7 +7,7 @@ class RDmrcate(RPackage): - """Methylation array and sequencing spatial analysis methods: + """Methylation array and sequencing spatial analysis methods. De novo identification and extraction of differentially methylated regions (DMRs) from the human genome using Whole Genome Bisulfite Sequencing (WGBS) @@ -15,22 +15,24 @@ class RDmrcate(RPackage): for filtering probes possibly confounded by SNPs and cross-hybridisation. Includes GRanges generation and plotting functions.""" - bioc = "DMRcate" + bioc = "DMRcate" + version('2.8.5', commit='c65dc79a33a047c10932a98b3383709a6bcb8903') version('2.4.1', commit='bc6242a0291a9b997872f575a4417d38550c9550') depends_on('r@3.6.0:', type=('build', 'run')) - depends_on('r-minfi', type=('build', 'run')) - depends_on('r-summarizedexperiment', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@2.8.5:') depends_on('r-experimenthub', type=('build', 'run')) depends_on('r-bsseq', type=('build', 'run')) depends_on('r-genomeinfodb', type=('build', 'run')) depends_on('r-limma', type=('build', 'run')) depends_on('r-edger', type=('build', 'run')) depends_on('r-dss', type=('build', 'run')) + depends_on('r-minfi', type=('build', 'run')) depends_on('r-missmethyl', type=('build', 'run')) depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-plyr', type=('build', 'run')) depends_on('r-gviz', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) + depends_on('r-summarizedexperiment', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-dnacopy/package.py b/var/spack/repos/builtin/packages/r-dnacopy/package.py index 2058f07112e625..5f860f10884e00 100644 --- a/var/spack/repos/builtin/packages/r-dnacopy/package.py +++ b/var/spack/repos/builtin/packages/r-dnacopy/package.py @@ -7,15 +7,15 @@ class RDnacopy(RPackage): - """DNA copy number data analysis + """DNA copy number data analysis. Implements the circular binary segmentation (CBS) algorithm to segment DNA copy number data and identify genomic regions with abnormal copy number.""" - homepage = "https://bioconductor.org/packages/DNAcopy" - git = "https://git.bioconductor.org/packages/DNAcopy.git" + bioc = "DNAcopy" + version('1.68.0', commit='08f039f58bc2f5ed2cc3117ae817dbac333002a6') version('1.64.0', commit='01650266ea7a4e5c600de545fe70a1103e79b2d8') version('1.58.0', commit='1954745eafca990d6ddeefe84059c54a8c37df23') version('1.56.0', commit='e521826f2515b309921272f65db421cbe2ff961a') diff --git a/var/spack/repos/builtin/packages/r-do-db/package.py b/var/spack/repos/builtin/packages/r-do-db/package.py index 4d107c40583723..bb49023bed3107 100644 --- a/var/spack/repos/builtin/packages/r-do-db/package.py +++ b/var/spack/repos/builtin/packages/r-do-db/package.py @@ -7,15 +7,16 @@ class RDoDb(RPackage): - """A set of annotation maps describing the entire Disease Ontology + """A set of annotation maps describing the entire Disease Ontology. A set of annotation maps describing the entire Disease Ontology assembled using data from DO.""" + # There is no git repository for this package. homepage = "https://bioconductor.org/packages/DO.db/" url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/DO.db_2.9.tar.gz" version('2.9', sha256='762bcb9b5188274fd81d82f785cf2846a5acc61fad55e2ff8ec1502282c27881') depends_on('r@2.7.0:', type=('build', 'run')) - depends_on('r-annotationdbi', type=('build', 'run')) + depends_on('r-annotationdbi@1.9.7:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-domc/package.py b/var/spack/repos/builtin/packages/r-domc/package.py index e3925608963f4f..c769940bcdfb3c 100644 --- a/var/spack/repos/builtin/packages/r-domc/package.py +++ b/var/spack/repos/builtin/packages/r-domc/package.py @@ -7,14 +7,12 @@ class RDomc(RPackage): - """Foreach Parallel Adaptor for 'parallel' + """Foreach Parallel Adaptor for 'parallel'. - Provides a parallel backend for the %dopar% function using - the multicore functionality of the parallel package.""" + Provides a parallel backend for the %dopar% function using the multicore + functionality of the parallel package.""" - homepage = "https://cloud.r-project.org/package=doMC" - url = "https://cloud.r-project.org/src/contrib/doMC_1.3.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/doMC" + cran = "doMC" version('1.3.7', sha256='defab27adc298a6746896d83251f8355d62c01012d51ef96d491875a2e74b54d') version('1.3.6', sha256='2977fc9e2dc54d85d45b4a36cd286dff72834fbc73f38b6ee45a6eb8557fc9b2') diff --git a/var/spack/repos/builtin/packages/r-doparallel/package.py b/var/spack/repos/builtin/packages/r-doparallel/package.py index f1b735a2612b6b..0a203c5da5b69a 100644 --- a/var/spack/repos/builtin/packages/r-doparallel/package.py +++ b/var/spack/repos/builtin/packages/r-doparallel/package.py @@ -7,14 +7,12 @@ class RDoparallel(RPackage): - """Foreach Parallel Adaptor for the 'parallel' Package + """Foreach Parallel Adaptor for the 'parallel' Package. Provides a parallel backend for the %dopar% function using the parallel package.""" - homepage = "https://cloud.r-project.org/package=doParallel" - url = "https://cloud.r-project.org/src/contrib/doParallel_1.0.10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/doParallel" + cran = "doParallel" version('1.0.16', sha256='f1bb26f964f30d47ae4d6cf2b0a2ca0c2122d376424875e82d9abe9e7b054eb2') version('1.0.15', sha256='71ad7ea69616468996aefdd8d02a4a234759a21ddde9ed1657e3c537145cd86e') diff --git a/var/spack/repos/builtin/packages/r-dorng/package.py b/var/spack/repos/builtin/packages/r-dorng/package.py index 1e337c9f14b3f8..0ebace01c8937e 100644 --- a/var/spack/repos/builtin/packages/r-dorng/package.py +++ b/var/spack/repos/builtin/packages/r-dorng/package.py @@ -7,7 +7,7 @@ class RDorng(RPackage): - """Generic Reproducible Parallel Backend for 'foreach' Loops + """Generic Reproducible Parallel Backend for 'foreach' Loops. Provides functions to perform reproducible parallel foreach loops, using independent random streams as generated by L'Ecuyer's combined @@ -17,9 +17,7 @@ class RDorng(RPackage): workers, the task scheduling strategy, or the chosen parallel environment and associated foreach backend.""" - homepage = "https://cloud.r-project.org/package=doRNG" - url = "https://cloud.r-project.org/src/contrib/doRNG_1.6.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/doRNG" + cran = "doRNG" version('1.8.2', sha256='33e9d45b91b0fde2e35e911b9758d0c376049121a98a1e4c73a1edfcff11cec9') version('1.7.1', sha256='27533d54464889d1c21301594137fc0f536574e3a413d61d7df9463ab12a67e9') @@ -28,6 +26,7 @@ class RDorng(RPackage): depends_on('r@3.0.0:', type=('build', 'run')) depends_on('r-foreach', type=('build', 'run')) depends_on('r-rngtools@1.3:', type=('build', 'run')) - depends_on('r-rngtools@1.5:', when='@1.8.2:', type=('build', 'run')) + depends_on('r-rngtools@1.5:', type=('build', 'run'), when='@1.8.2:') depends_on('r-iterators', type=('build', 'run')) - depends_on('r-pkgmaker@0.20:', when='@:1.7.1', type=('build', 'run')) + + depends_on('r-pkgmaker@0.20:', type=('build', 'run'), when='@:1.7.1') diff --git a/var/spack/repos/builtin/packages/r-dose/package.py b/var/spack/repos/builtin/packages/r-dose/package.py index b9425c855f03c1..43ef1af5191de6 100644 --- a/var/spack/repos/builtin/packages/r-dose/package.py +++ b/var/spack/repos/builtin/packages/r-dose/package.py @@ -7,7 +7,7 @@ class RDose(RPackage): - """Disease Ontology Semantic and Enrichment analysis + """Disease Ontology Semantic and Enrichment analysis. This package implements five methods proposed by Resnik, Schlicker, Jiang, Lin and Wang respectively for measuring semantic similarities @@ -16,9 +16,9 @@ class RDose(RPackage): implemented for discovering disease associations of high-throughput biological data.""" - homepage = "https://bioconductor.org/packages/DOSE" - git = "https://git.bioconductor.org/packages/DOSE.git" + bioc = "DOSE" + version('3.20.1', commit='bf434f24d035217822cb1b0ab08a486b9a53edb4') version('3.16.0', commit='a534a4f2ef1e54e8b92079cf1bbedb5042fd90cd') version('3.10.2', commit='5ea51a2e2a04b4f3cc974cecb4537e14efd6a7e3') version('3.8.2', commit='4d3d1ca710aa7e4288a412c8d52b054b86a57639') @@ -27,8 +27,8 @@ class RDose(RPackage): version('3.2.0', commit='71f563fc39d02dfdf65184c94e0890a63b96b86b') depends_on('r@3.3.1:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@3.6.1:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@3.16.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@3.6.1:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.16.0:') depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-do-db', type=('build', 'run')) @@ -37,7 +37,8 @@ class RDose(RPackage): depends_on('r-gosemsim@2.0.0:', type=('build', 'run')) depends_on('r-qvalue', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) - depends_on('r-s4vectors', when='@:3.10.2', type=('build', 'run')) - depends_on('r-scales', when='@3.2.0:3.4.0', type=('build', 'run')) - depends_on('r-rvcheck', when='@3.4.0', type=('build', 'run')) - depends_on('r-igraph', when='@3.2.0:3.4.0', type=('build', 'run')) + + depends_on('r-s4vectors', type=('build', 'run'), when='@:3.10.2') + depends_on('r-scales', type=('build', 'run'), when='@3.2.0:3.4.0') + depends_on('r-rvcheck', type=('build', 'run'), when='@3.4.0') + depends_on('r-igraph', type=('build', 'run'), when='@3.2.0:3.4.0') diff --git a/var/spack/repos/builtin/packages/r-dosnow/package.py b/var/spack/repos/builtin/packages/r-dosnow/package.py index 11d3f84db36fcf..c903dccdf63a4a 100644 --- a/var/spack/repos/builtin/packages/r-dosnow/package.py +++ b/var/spack/repos/builtin/packages/r-dosnow/package.py @@ -7,14 +7,12 @@ class RDosnow(RPackage): - """Foreach Parallel Adaptor for the 'snow' Package + """Foreach Parallel Adaptor for the 'snow' Package. - Provides a parallel backend for the %dopar% function using the snow - package of Tierney, Rossini, Li, and Sevcikova.""" + Provides a parallel backend for the %dopar% function using the snow package + of Tierney, Rossini, Li, and Sevcikova.""" - homepage = "https://cloud.r-project.org/package=doSNOW" - url = "https://cloud.r-project.org/src/contrib/doSNOW_1.0.18.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/doSNOW" + cran = "doSNOW" version('1.0.19', sha256='4cd2d080628482f4c6ecab593313d7e42516f5ff13fbf9f90e461fcad0580738') version('1.0.18', sha256='70e7bd82186e477e3d1610676d4c6a75258ac08f104ecf0dcc971550ca174766') diff --git a/var/spack/repos/builtin/packages/r-dotcall64/package.py b/var/spack/repos/builtin/packages/r-dotcall64/package.py index a0cd901d2d7c0e..72a1dc799d6a89 100644 --- a/var/spack/repos/builtin/packages/r-dotcall64/package.py +++ b/var/spack/repos/builtin/packages/r-dotcall64/package.py @@ -7,13 +7,18 @@ class RDotcall64(RPackage): - """dotCall64: Enhanced Foreign Function Interface Supporting Long - Vectors.""" + """Enhanced Foreign Function Interface Supporting Long + Vectors. - homepage = "https://git.math.uzh.ch/reinhard.furrer/dotCall64" - url = "https://cloud.r-project.org/src/contrib/dotCall64_1.0-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dotCall64" + Provides .C64(), which is an enhanced version of .C() and .Fortran() from + the foreign function interface. .C64() supports long vectors, arguments of + type 64-bit integer, and provides a mechanism to avoid unnecessary copies + of read-only and write-only arguments. This makes it a convenient and fast + interface to C/C++ and Fortran code.""" + cran = "dotCall64" + + version('1.0-1', sha256='f10b28fcffb9453b1d8888a72c8fd2112038b5ac33e02a481492c7bd249aa5c6') version('1.0-0', sha256='69318dc6b8aecc54d4f789c8105e672198363b395f1a764ebaeb54c0473d17ad') depends_on('r@3.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-downloader/package.py b/var/spack/repos/builtin/packages/r-downloader/package.py index 5549b00bc4253a..8fc18c6715172e 100644 --- a/var/spack/repos/builtin/packages/r-downloader/package.py +++ b/var/spack/repos/builtin/packages/r-downloader/package.py @@ -7,16 +7,16 @@ class RDownloader(RPackage): - """Provides a wrapper for the download.file function, making it possible to - download files over HTTPS on Windows, Mac OS X, and other Unix-like - platforms. The 'RCurl' package provides this functionality - (and much more) but can be difficult to install because it must be - compiled with external dependencies. This package has no external - dependencies, so it is much easier to install.""" + """Download Files over HTTP and HTTPS. - homepage = "https://cloud.r-project.org/package=downloader" - url = "https://cloud.r-project.org/src/contrib/downloader_0.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/downloader" + Provides a wrapper for the download.file function, making it possible to + download files over HTTPS on Windows, Mac OS X, and other Unix-like + platforms. The 'RCurl' package provides this functionality (and much more) + but can be difficult to install because it must be compiled with external + dependencies. This package has no external dependencies, so it is much + easier to install.""" + + cran = "downloader" version('0.4', sha256='1890e75b028775154023f2135cafb3e3eed0fe908138ab4f7eff1fc1b47dafab') diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index 7143444c7ab876..3ea6b5d5ac7578 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -7,12 +7,11 @@ class RDplyr(RPackage): - """A Grammar of Data Manipulation + """A Grammar of Data Manipulation. - A fast, consistent tool for working with data frame like objects, both - in memory and out of memory.""" + A fast, consistent tool for working with data frame like objects, both in + memory and out of memory.""" - homepage = "https://cloud.r-project.org/package=dplyr" cran = "dplyr" version('1.0.7', sha256='d2fe3aedbce02fdddce09a8a80f85f5918a9d1f15f792ad4a98f254959d7123d') @@ -30,29 +29,29 @@ class RDplyr(RPackage): version('0.5.0', sha256='93d3b829f1c2d38e14a4f2fa7d6398fc6c1a9e4189b3e78bc38a0eb0e864454f') depends_on('r@3.1.2:', type=('build', 'run')) - depends_on('r@3.2.0:', when='@0.8.1:', type=('build', 'run')) - depends_on('r@3.3.0:', when='@1.0.3:', type=('build', 'run')) - depends_on('r-ellipsis', when='@1.0.3:', type=('build', 'run')) - depends_on('r-generics', when='@1.0.3:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@0.8.1:') + depends_on('r@3.3.0:', type=('build', 'run'), when='@1.0.3:') + depends_on('r-ellipsis', type=('build', 'run'), when='@1.0.3:') + depends_on('r-generics', type=('build', 'run'), when='@1.0.3:') depends_on('r-glue@1.3.0:', type=('build', 'run')) - depends_on('r-glue@1.3.2:', when='@1.0.3:', type=('build', 'run')) - depends_on('r-lifecycle@0.2.0:', when='@1.0.3:', type=('build', 'run')) - depends_on('r-lifecycle@1.0.0:', when='@1.0.5:', type=('build', 'run')) + depends_on('r-glue@1.3.2:', type=('build', 'run'), when='@1.0.3:') + depends_on('r-lifecycle@0.2.0:', type=('build', 'run'), when='@1.0.3:') + depends_on('r-lifecycle@1.0.0:', type=('build', 'run'), when='@1.0.5:') depends_on('r-magrittr@1.5:', type=('build', 'run')) depends_on('r-r6', type=('build', 'run')) depends_on('r-rlang@0.4.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.9:', when='@1.0.3:', type=('build', 'run')) - depends_on('r-rlang@0.4.10:', when='@1.0.5:', type=('build', 'run')) + depends_on('r-rlang@0.4.9:', type=('build', 'run'), when='@1.0.3:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@1.0.5:') depends_on('r-tibble@2.0.0:', type=('build', 'run')) - depends_on('r-tibble@2.1.3:', when='@1.0.3:', type=('build', 'run')) + depends_on('r-tibble@2.1.3:', type=('build', 'run'), when='@1.0.3:') depends_on('r-tidyselect@0.2.5:', type=('build', 'run')) - depends_on('r-tidyselect@1.1.0:', when='@1.0.3:', type=('build', 'run')) - depends_on('r-vctrs@0.3.5:', when='@1.0.3:', type=('build', 'run')) - depends_on('r-pillar@1.5.1:', when='@1.0.6:', type=('build', 'run')) - - depends_on('r-assertthat@0.2.0:', when='@:0.8.3', type=('build', 'run')) - depends_on('r-bindrcpp@0.2.0:', when='@:0.7.9', type=('build', 'run')) - depends_on('r-pkgconfig', when='@:0.8.3', type=('build', 'run')) - depends_on('r-rcpp@1.0.1:', when='@:0.8.3', type=('build', 'run')) - depends_on('r-bh', when='@:0.8.3', type=('build', 'run')) - depends_on('r-plogr@0.2.0:', when='@0.7.0:0.8.3', type=('build', 'run')) + depends_on('r-tidyselect@1.1.0:', type=('build', 'run'), when='@1.0.3:') + depends_on('r-vctrs@0.3.5:', type=('build', 'run'), when='@1.0.3:') + depends_on('r-pillar@1.5.1:', type=('build', 'run'), when='@1.0.6:') + + depends_on('r-assertthat@0.2.0:', type=('build', 'run'), when='@:0.8.3') + depends_on('r-bindrcpp@0.2.0:', type=('build', 'run'), when='@:0.7.9') + depends_on('r-pkgconfig', type=('build', 'run'), when='@:0.8.3') + depends_on('r-rcpp@1.0.1:', type=('build', 'run'), when='@:0.8.3') + depends_on('r-bh', type=('build', 'run'), when='@:0.8.3') + depends_on('r-plogr@0.2.0:', type=('build', 'run'), when='@0.7.0:0.8.3') diff --git a/var/spack/repos/builtin/packages/r-dqrng/package.py b/var/spack/repos/builtin/packages/r-dqrng/package.py index bbdb7e4db9fde5..9fbbfc7b170f6f 100644 --- a/var/spack/repos/builtin/packages/r-dqrng/package.py +++ b/var/spack/repos/builtin/packages/r-dqrng/package.py @@ -7,7 +7,9 @@ class RDqrng(RPackage): - """Several fast random number generators are provided as C++ header only + """Fast Pseudo Random Number Generators. + + Several fast random number generators are provided as C++ header only libraries: The PCG family by O'Neill (2014 ) as well as Xoroshiro128+ and Xoshiro256+ by Blackman and Vigna (2018 ). In @@ -20,10 +22,9 @@ class RDqrng(RPackage): 64 bit version of the 20 rounds Threefry engine (Salmon et al., 2011 ) as provided by the package 'sitmo'.""" - homepage = "https://www.daqana.org/dqrng" - url = "https://cloud.r-project.org/src/contrib/dqrng_0.2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dqrng" + cran = "dqrng" + version('0.3.0', sha256='4beeabfe245ce7196b07369f2a7d277cb08869ad8b45a22c6354c4cc70a39abb') version('0.2.1', sha256='e149c105b1db31e7f46b1aebf31d911a109e380923f3696fc56a53197fc1e866') depends_on('r@3.1.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-dss/package.py b/var/spack/repos/builtin/packages/r-dss/package.py index b8b4c3dab5828b..666509197b97e9 100644 --- a/var/spack/repos/builtin/packages/r-dss/package.py +++ b/var/spack/repos/builtin/packages/r-dss/package.py @@ -7,7 +7,7 @@ class RDss(RPackage): - """Dispersion shrinkage for sequencing data + """Dispersion shrinkage for sequencing data. DSS is an R library performing differntial analysis for count-based sequencing data. It detectes differentially expressed genes (DEGs) from @@ -16,9 +16,9 @@ class RDss(RPackage): shrinkage method for estimating the dispersion parameter from Gamma-Poisson or Beta-Binomial distributions.""" - homepage = "https://bioconductor.org/packages/DSS/" - git = "https://git.bioconductor.org/packages/DSS" + bioc = "DSS" + version('2.42.0', commit='33e87450fbb64bb3e321688ff613e83cd40efe48') version('2.38.0', commit='82e65b92e6e227f1f99620362db8b03059e07e98') version('2.36.0', commit='841c7ed') version('2.34.0', commit='f9819c7') @@ -26,6 +26,6 @@ class RDss(RPackage): depends_on('r@3.3:', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) - depends_on('r-biocparallel', when='@2.36.0:', type=('build', 'run')) + depends_on('r-biocparallel', type=('build', 'run'), when='@2.36.0:') depends_on('r-bsseq', type=('build', 'run')) - depends_on('r-delayedarray', when='@2.36.0:', type=('build', 'run')) + depends_on('r-delayedarray', type=('build', 'run'), when='@2.36.0:') diff --git a/var/spack/repos/builtin/packages/r-dt/package.py b/var/spack/repos/builtin/packages/r-dt/package.py index dedf58897231da..f0e0e0d9d54985 100644 --- a/var/spack/repos/builtin/packages/r-dt/package.py +++ b/var/spack/repos/builtin/packages/r-dt/package.py @@ -7,14 +7,13 @@ class RDt(RPackage): - """A Wrapper of the JavaScript Library 'DataTables' + """A Wrapper of the JavaScript Library 'DataTables'. Data objects in R can be rendered as HTML tables using the JavaScript library 'DataTables' (typically via R Markdown or Shiny). The 'DataTables' library has been included in this R package. The package name 'DT' is an abbreviation of 'DataTables'.""" - homepage = "https://rstudio.github.io/DT" cran = "DT" version('0.20', sha256='c66d7f49ec101fdbb91c6d26c06fb1373f9ebdefe29fe99f2ae1a641220aba9f') @@ -30,8 +29,8 @@ 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-jsonlite@0.9.16:', when='@0.8:', type=('build', 'run')) + 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')) - depends_on('r-jquerylib', when='@0.19:', type=('build', 'run')) - depends_on('r-promises', when='@0.5:', type=('build', 'run')) + depends_on('r-jquerylib', type=('build', 'run'), when='@0.19:') + depends_on('r-promises', type=('build', 'run'), when='@0.5:') diff --git a/var/spack/repos/builtin/packages/r-dtplyr/package.py b/var/spack/repos/builtin/packages/r-dtplyr/package.py index d6334e0f00b68f..73190bacc97311 100644 --- a/var/spack/repos/builtin/packages/r-dtplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dtplyr/package.py @@ -9,18 +9,20 @@ class RDtplyr(RPackage): """Data Table Back-End for 'dplyr'. - Provides a data.table backend for 'dplyr'. The goal of 'dtplyr' is to - allow you to write 'dplyr' code that is automatically translated to the + Provides a data.table backend for 'dplyr'. The goal of 'dtplyr' is to allow + you to write 'dplyr' code that is automatically translated to the equivalent, but usually much faster, data.table code.""" - homepage = "https://github.com/tidyverse/dtplyr" - cran = "dtplyr" + cran = "dtplyr" + version('1.2.1', sha256='2640e9cde4eaa06f02cff29e3f2b99fdd08488df07ea2e6629b2ed6a8285d0f3') + version('1.2.0', sha256='a6dedfb6dd80dfc1d29d005ab634c060b7bfda8cb49835ece84d3b7d12077414') version('1.1.0', sha256='99681b7285d7d5086e5595ca6bbeebf7f4e2ee358a32b694cd9d35916cdfc732') depends_on('r@3.3:', type=('build', 'run')) depends_on('r-crayon', type=('build', 'run')) depends_on('r-data-table@1.12.4:', type=('build', 'run')) + depends_on('r-data-table@1.13.0:', type=('build', 'run'), when='@1.2.0:') depends_on('r-dplyr@1.0.3:', type=('build', 'run')) depends_on('r-ellipsis', type=('build', 'run')) depends_on('r-glue', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-dtw/package.py b/var/spack/repos/builtin/packages/r-dtw/package.py index 44debf31bfb9e0..289406741c02e4 100644 --- a/var/spack/repos/builtin/packages/r-dtw/package.py +++ b/var/spack/repos/builtin/packages/r-dtw/package.py @@ -7,7 +7,7 @@ class RDtw(RPackage): - """Dynamic Time Warping Algorithms + """Dynamic Time Warping Algorithms. A comprehensive implementation of dynamic time warping (DTW) algorithms in R. DTW computes the optimal (least cumulative distance) alignment between @@ -17,9 +17,7 @@ class RDtw(RPackage): Provides cumulative distances, alignments, specialized plot styles, etc., as described in Giorgino (2009) .""" - homepage = "https://cloud.r-project.org/package=dtw" - url = "https://cloud.r-project.org/src/contrib/dtw_1.18-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dtw" + cran = "dtw" version('1.22-3', sha256='df7cf9adf613422ddb22a160597eb5f5475ab6c67c0d790092edb7f72ba98f00') version('1.20-1', sha256='43ca1a47a7c81a2b5d5054da1be8b8af79a85d6f9ce7b4512e9ed91f790f60f0') diff --git a/var/spack/repos/builtin/packages/r-dygraphs/package.py b/var/spack/repos/builtin/packages/r-dygraphs/package.py index f8b90d7b6e0545..c1354060a608ca 100644 --- a/var/spack/repos/builtin/packages/r-dygraphs/package.py +++ b/var/spack/repos/builtin/packages/r-dygraphs/package.py @@ -7,15 +7,15 @@ class RDygraphs(RPackage): - """An R interface to the 'dygraphs' JavaScript charting library (a copy of + """Interface to 'Dygraphs' Interactive Time Series Charting Library. + + An R interface to the 'dygraphs' JavaScript charting library (a copy of which is included in the package). Provides rich facilities for charting time-series data in R, including highly configurable series- and axis-display and interactive features like zoom/pan and series/point highlighting.""" - homepage = "https://cloud.r-project.org/package=dygraphs" - url = "https://cloud.r-project.org/src/contrib/dygraphs_0.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dygraphs" + cran = "dygraphs" version('1.1.1.6', sha256='c3d331f30012e721a048e04639f60ea738cd7e54e4f930ac9849b95f0f005208') version('1.1.1.5', sha256='274035988fdd6833121fd5831692355d383acc828d540788dbcecaf88eb2d72d') @@ -26,4 +26,4 @@ class RDygraphs(RPackage): depends_on('r-htmlwidgets@0.6:', type=('build', 'run')) depends_on('r-zoo@1.7-10:', type=('build', 'run')) depends_on('r-xts@0.9-7:', type=('build', 'run')) - depends_on('r-htmltools@0.3.5:', when='@1.1.1.0:', type=('build', 'run')) + depends_on('r-htmltools@0.3.5:', type=('build', 'run'), when='@1.1.1.0:') diff --git a/var/spack/repos/builtin/packages/r-dynamictreecut/package.py b/var/spack/repos/builtin/packages/r-dynamictreecut/package.py index c2fd4bcd620454..8e9af85a2ede4a 100644 --- a/var/spack/repos/builtin/packages/r-dynamictreecut/package.py +++ b/var/spack/repos/builtin/packages/r-dynamictreecut/package.py @@ -7,12 +7,12 @@ class RDynamictreecut(RPackage): - """dynamicTreeCut: Methods for Detection of Clusters in Hierarchical - Clustering Dendrograms""" + """Methods for Detection of Clusters in Hierarchical Clustering Dendrograms - homepage = "https://cloud.r-project.org/package=dynamicTreeCut" - url = "https://cloud.r-project.org/src/contrib/dynamicTreeCut_1.63-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/dynamicTreeCut/" + Contains methods for detection of clusters in hierarchical clustering + dendrograms.""" + + cran = "dynamicTreeCut" version('1.63-1', sha256='831307f64eddd68dcf01bbe2963be99e5cde65a636a13ce9de229777285e4db9') diff --git a/var/spack/repos/builtin/packages/r-e1071/package.py b/var/spack/repos/builtin/packages/r-e1071/package.py index 74668bb96749a8..f215e14d4ac7d0 100644 --- a/var/spack/repos/builtin/packages/r-e1071/package.py +++ b/var/spack/repos/builtin/packages/r-e1071/package.py @@ -8,19 +8,19 @@ class RE1071(RPackage): """Misc Functions of the Department of Statistics, Probability Theory Group - (Formerly: E1071), TU Wien + (Formerly: E1071), TU Wien. Functions for latent class analysis, short time Fourier transform, fuzzy clustering, support vector machines, shortest path computation, bagged - clustering, naive Bayes classifier, ...""" + clustering, naive Bayes classifier, generalized k-nearest neighbour ...""" - homepage = "https://cloud.r-project.org/package=e1071" - url = "https://cloud.r-project.org/src/contrib/e1071_1.6-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/e1071" + cran = "e1071" + version('1.7-9', sha256='9bf9a15e7ce0b9b1a57ce3048d29cbea7f2a5bb2e91271b1b6aaafe07c852226') version('1.7-4', sha256='e6ab871b06f500dc65f8f781cc7253f43179698784c06dab040b4aa6592f2309') version('1.7-2', sha256='721c299ce83047312acfa3e0c4b3d4c223d84a4c53400c73465cca2c92913752') version('1.7-1', sha256='5c5f04a51c1cd2c7dbdf69987adef9bc07116804c63992cd36d804a1daf89dfe') version('1.6-7', sha256='7048fbc0ac17d7e3420fe68081d0e0a2176b1154ee3191d53558ea9724c7c980') depends_on('r-class', type=('build', 'run')) + depends_on('r-proxy', type=('build', 'run'), when='@1.7-9:') diff --git a/var/spack/repos/builtin/packages/r-earth/package.py b/var/spack/repos/builtin/packages/r-earth/package.py index e0f396ce6441df..33f4f6ad06e1eb 100644 --- a/var/spack/repos/builtin/packages/r-earth/package.py +++ b/var/spack/repos/builtin/packages/r-earth/package.py @@ -13,15 +13,14 @@ class REarth(RPackage): "Fast MARS" and "Multivariate Adaptive Regression Splines" .""" - homepage = "http://www.milbo.users.sonic.net/earth" - url = "https://cloud.r-project.org/src/contrib/earth_5.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/earth" + cran = "earth" + version('5.3.1', sha256='0bbe06ba974ceb8ec5de1d59cb53f9487d1828d7130fe2503c48b6cb449c4b03') version('5.3.0', sha256='05ace806271a74b3ddf8718a93237fe2a8550a8659ebd87f8079c0bda5e02437') version('5.1.2', sha256='326f98e8c29365ca3cd5584cf2bd6529358f5ef81664cbd494162f92b6c3488d') depends_on('r@3.4.0:', type=('build', 'run')) 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:', when='@5.3.0', 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')) diff --git a/var/spack/repos/builtin/packages/r-ecp/package.py b/var/spack/repos/builtin/packages/r-ecp/package.py index 33ccc4d5155d68..55b7a72bc0efa6 100644 --- a/var/spack/repos/builtin/packages/r-ecp/package.py +++ b/var/spack/repos/builtin/packages/r-ecp/package.py @@ -7,7 +7,7 @@ class REcp(RPackage): - """Non-Parametric Multiple Change-Point Analysis of MultivariateData + """Non-Parametric Multiple Change-Point Analysis of MultivariateData. Implements various procedures for finding multiple change-points from Matteson D. et al (2013) , Zhang W. et al @@ -17,9 +17,7 @@ class REcp(RPackage): Hierarchical and exact search methods are included. All methods return the set of estimated change-points as well as other summary information.""" - homepage = "https://cloud.r-project.org/package=ecp" - url = "https://cloud.r-project.org/src/contrib/ecp_3.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ecp" + cran = "ecp" version('3.1.3', sha256='a80ab10bafe30cc96287b9220e44c4b4eda40f5dd0546e4d2a2e1baab514c058') version('3.1.1', sha256='d2ab194e22e6ab0168222fbccfcf2e25c6cd51a73edc959086b0c6e0a7410268') diff --git a/var/spack/repos/builtin/packages/r-edger/package.py b/var/spack/repos/builtin/packages/r-edger/package.py index 34334a832cb4a0..63506ad9e01b19 100644 --- a/var/spack/repos/builtin/packages/r-edger/package.py +++ b/var/spack/repos/builtin/packages/r-edger/package.py @@ -7,7 +7,7 @@ class REdger(RPackage): - """Empirical Analysis of Digital Gene Expression Data in R + """Empirical Analysis of Digital Gene Expression Data in R. Differential expression analysis of RNA-seq expression profiles with biological replication. Implements a range of statistical methodology @@ -17,9 +17,9 @@ class REdger(RPackage): of other types of genomic data that produce counts, including ChIP-seq, Bisulfite-seq, SAGE and CAGE.""" - homepage = "https://bioconductor.org/packages/edgeR" - git = "https://git.bioconductor.org/packages/edgeR.git" + bioc = "edgeR" + version('3.36.0', commit='c7db03addfc42138a1901834409c02da9d873026') version('3.32.1', commit='b881d801d60e5b38413d27f149384c218621c55a') version('3.26.8', commit='836809e043535f2264e5db8b5c0eabcffe85613f') version('3.24.3', commit='d1260a2aeba67b9ab7a9b8b197b746814ad0716d') @@ -28,9 +28,9 @@ class REdger(RPackage): version('3.18.1', commit='101106f3fdd9e2c45d4a670c88f64c12e97a0495') depends_on('r@2.15.0:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@3.26.8:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@3.26.8:') depends_on('r-limma', type=('build', 'run')) - depends_on('r-limma@3.34.5:', when='@3.20.9:', type=('build', 'run')) - depends_on('r-limma@3.41.5:', when='@3.32.1:', type=('build', 'run')) + depends_on('r-limma@3.34.5:', type=('build', 'run'), when='@3.20.9:') + depends_on('r-limma@3.41.5:', type=('build', 'run'), when='@3.32.1:') depends_on('r-locfit', type=('build', 'run')) - depends_on('r-rcpp', when='@3.20.9:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run'), when='@3.20.9:') diff --git a/var/spack/repos/builtin/packages/r-effects/package.py b/var/spack/repos/builtin/packages/r-effects/package.py index 7922aeb56e0cc6..5a4e709f939573 100644 --- a/var/spack/repos/builtin/packages/r-effects/package.py +++ b/var/spack/repos/builtin/packages/r-effects/package.py @@ -7,13 +7,14 @@ class REffects(RPackage): - """Effect Displays for Linear, Generalized Linear, and Other Models + """Effect Displays for Linear, Generalized Linear, and Other Models. Graphical and tabular effect displays, e.g., of interactions, for various statistical models with linear predictors.""" - cran = "effects" + cran = "effects" + version('4.2-1', sha256='5397254214d55eb0e0441786f9329f9e3e3ef864366c0a93f0adb941da147640') version('4.2-0', sha256='6833dfbc65f3f33191a24e9b0d2aa0c964caeebb6c4fd2036ad94ed2723a7a46') depends_on('r@3.5.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-elemstatlearn/package.py b/var/spack/repos/builtin/packages/r-elemstatlearn/package.py index e478559413f5e6..b540b01f0d3994 100644 --- a/var/spack/repos/builtin/packages/r-elemstatlearn/package.py +++ b/var/spack/repos/builtin/packages/r-elemstatlearn/package.py @@ -7,13 +7,11 @@ class RElemstatlearn(RPackage): - """ElemStatLearn: Data Sets, Functions and Examples from the Book: "The - Elements of Statistical Learning, Data Mining, Inference, and Prediction" by - Trevor Hastie, Robert Tibshirani and Jerome Friedman""" + """Data Sets, Functions and Examples from the Book: "The Elements of + Statistical Learning, Data Mining, Inference, and Prediction" by Trevor + Hastie, Robert Tibshirani and Jerome Friedman""" - homepage = "https://cloud.r-project.org/package=ElemStatLearn" - url = "https://cloud.r-project.org/src/contrib/Archive/ElemStatLearn/ElemStatLearn_2015.6.26.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ElemStatLearn" + cran = "ElemStatLearn" version('2015.6.26.2', sha256='a0f94a72f6188a0a5c855e3362b6b849bf7fd14efc2d824a8d2581f8bb1bd7fa') diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py index dc586dec316f51..1330270ffbd88d 100644 --- a/var/spack/repos/builtin/packages/r-ellipse/package.py +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -7,7 +7,7 @@ class REllipse(RPackage): - """Functions for Drawing Ellipses and Ellipse-Like Confidence Regions + """Functions for Drawing Ellipses and Ellipse-Like Confidence Regions. Contains various routines for drawing ellipses and ellipse-like confidence regions, implementing the plots described in Murdoch and Chow (1996), A @@ -16,9 +16,7 @@ class REllipse(RPackage): described in Bates and Watts (1988), Nonlinear Regression Analysis and its Applications.""" - homepage = "https://cloud.r-project.org/package=ellipse" - url = "https://cloud.r-project.org/src/contrib/ellipse_0.3-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ellipse" + cran = "ellipse" version('0.4.2', sha256='1719ce9a00b9ac4d56dbf961803085b892d3359726fda3567bb989ddfed9a5f2') version('0.4.1', sha256='1a9a9c52195b26c2b4d51ad159ab98aff7aa8ca25fdc6b2198818d1a0adb023d') diff --git a/var/spack/repos/builtin/packages/r-ellipsis/package.py b/var/spack/repos/builtin/packages/r-ellipsis/package.py index 0f110c4f640362..d2d72d427b85b6 100644 --- a/var/spack/repos/builtin/packages/r-ellipsis/package.py +++ b/var/spack/repos/builtin/packages/r-ellipsis/package.py @@ -14,7 +14,6 @@ class REllipsis(RPackage): The ellipsis package provides a collection of functions to catch problems and alert the user.""" - homepage = "https://github.com/r-lib/ellipsis" cran = "ellipsis" version('0.3.2', sha256='a90266e5eb59c7f419774d5c6d6bd5e09701a26c9218c5933c9bce6765aa1558') @@ -23,5 +22,5 @@ class REllipsis(RPackage): version('0.2.0.1', sha256='0e6528c5e8016c3617cc1cfcdb5a4bfeb073e0bd5ea76b43e56b0c3208a0a943') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@0.3:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@0.3:') depends_on('r-rlang@0.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-emmeans/package.py b/var/spack/repos/builtin/packages/r-emmeans/package.py index 9629865b90965d..579eca19c44cda 100644 --- a/var/spack/repos/builtin/packages/r-emmeans/package.py +++ b/var/spack/repos/builtin/packages/r-emmeans/package.py @@ -7,20 +7,19 @@ class REmmeans(RPackage): - """Estimated Marginal Means, aka Least-Squares Means + """Estimated Marginal Means, aka Least-Squares Means. - Obtain estimated marginal means (EMMs) for many linear, generalized - linear, and mixed models. Compute contrasts or linear functions of EMMs, - trends, and comparisons of slopes. Plots and other displays. - Least-squares means are discussed, and the term "estimated marginal means" - is suggested, in Searle, Speed, and Milliken (1980) Population marginal - means in the linear model: An alternative to least squares means, The - American Statistician 34(4), 216-221 . - """ + Obtain estimated marginal means (EMMs) for many linear, generalized linear, + and mixed models. Compute contrasts or linear functions of EMMs, trends, + and comparisons of slopes. Plots and other displays. Least-squares means + are discussed, and the term "estimated marginal means" is suggested, in + Searle, Speed, and Milliken (1980) Population marginal means in the linear + model: An alternative to least squares means, The American Statistician + 34(4), 216-221 .""" - homepage = "https://github.com/rvlenth/emmeans" - cran = "emmeans" + cran = "emmeans" + version('1.7.2', sha256='d3e51c2a4b6c74dd9840efebe241a53072172f269f4324421f28f68db71721bc') version('1.7.1-1', sha256='6b01eaad1ea0f96245db8563cc77929a3c3b96cd61c24ce1d452308d6e0250de') version('1.7.0', sha256='d4b654896197dfda8354b33257380a66ee06117d6177b1ed7f1e42176525e9c5') version('1.6.0', sha256='201bb7b008dde94231ed60bcc6a32749442faaab4baeea99ad28b97c951b3c1e') @@ -31,4 +30,4 @@ class REmmeans(RPackage): depends_on('r-mvtnorm', type=('build', 'run')) depends_on('r-xtable@1.8-2:', type=('build', 'run')) - depends_on('r-plyr', when='@:1.6', type=('build', 'run')) + depends_on('r-plyr', type=('build', 'run'), when='@:1.6') diff --git a/var/spack/repos/builtin/packages/r-emmli/package.py b/var/spack/repos/builtin/packages/r-emmli/package.py index 44edab9cb18103..50c983c5fe4b3d 100644 --- a/var/spack/repos/builtin/packages/r-emmli/package.py +++ b/var/spack/repos/builtin/packages/r-emmli/package.py @@ -7,12 +7,12 @@ class REmmli(RPackage): - """Fit models of modularity to morphological landmarks. Perform model selection - on results. Fit models with a single within-module correlation or with - separate within-module correlations fitted to each module.""" + """A Maximum Likelihood Approach to the Analysis of Modularity. - homepage = "https://cloud.r-project.org/package=EMMLi" - url = "https://cloud.r-project.org/src/contrib/EMMLi_0.0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/EMMLi" + Fit models of modularity to morphological landmarks. Perform model + selection on results. Fit models with a single within-module correlation or + with separate within-module correlations fitted to each module.""" + + cran = "EMMLi" version('0.0.3', sha256='57c04953200d2253bc90b0035dc590179d1b959768bfa7fdac92b6bcbf9f66ac') diff --git a/var/spack/repos/builtin/packages/r-energy/package.py b/var/spack/repos/builtin/packages/r-energy/package.py index abee56dbbdec70..9147f72d2095c5 100644 --- a/var/spack/repos/builtin/packages/r-energy/package.py +++ b/var/spack/repos/builtin/packages/r-energy/package.py @@ -7,7 +7,7 @@ class REnergy(RPackage): - """Statistics: Multivariate Inference via the Energy of Data + """E-Statistics: Multivariate Inference via the Energy of Data. E-statistics (energy) tests and statistics for multivariate and univariate inference, including distance correlation, one-sample, two-sample, and @@ -19,10 +19,10 @@ class REnergy(RPackage): for non-parametric analysis of structured data, and other energy statistics/methods are implemented.""" - homepage = "https://cloud.r-project.org/package=energy" - url = "https://cloud.r-project.org/src/contrib/energy_1.7-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/energy" + cran = "energy" + version('1.7-9', sha256='68d0e0ed99f5a8a03858603ed36010a2f67b87a947dbcc65a9da2e08a2d3bad9') + version('1.7-8', sha256='de08e8de037bb30068bbf0c1880b153a586d342304681f4ba103ab808c7f4789') version('1.7-7', sha256='67b88fb33ee6e7bec2e4fe356a4efd36f70c3cf9b0ebe2f6d9da9ec96de9968f') version('1.7-6', sha256='900edbb28e1f1bccd78580828470628cf75eb6333b63e1a58e4da7fc5c5fa89a') version('1.7-5', sha256='24c2cf080939f8f56cd9cda06d2dfc30d0389cd3ec7250af4f9a09a4c06b6996') @@ -30,3 +30,4 @@ class REnergy(RPackage): depends_on('r@2.10:', type=('build', 'run')) depends_on('r-rcpp@0.12.6:', type=('build', 'run')) depends_on('r-boot', type=('build', 'run')) + depends_on('r-gsl', type=('build', 'run'), when='@1.7-8:') diff --git a/var/spack/repos/builtin/packages/r-enrichplot/package.py b/var/spack/repos/builtin/packages/r-enrichplot/package.py index 767e8b6f8a5c43..bee8538666f1d0 100644 --- a/var/spack/repos/builtin/packages/r-enrichplot/package.py +++ b/var/spack/repos/builtin/packages/r-enrichplot/package.py @@ -7,40 +7,46 @@ class REnrichplot(RPackage): - """Visualization of Functional Enrichment Result + """Visualization of Functional Enrichment Result. The 'enrichplot' package implements several visualization methods for interpreting functional enrichment results obtained from ORA or GSEA analysis. All the visualization methods are developed based on 'ggplot2' graphics.""" - homepage = "https://bioconductor.org/packages/enrichplot" - git = "https://git.bioconductor.org/packages/enrichplot.git" + bioc = "enrichplot" + version('1.14.1', commit='ccf3a6d9b7cd9cffd8de6d6263efdffe59d2ec36') version('1.10.2', commit='77ee04f60a07cc31151f8f47f8ee64f3a43c9760') version('1.4.0', commit='6ffe5d9c5dbe5cbea29f2e0941595475bbbcea0e') version('1.2.0', commit='2eeaafb571d35a106eba8ae7df014f3201066e8b') version('1.0.2', commit='ba7726fa0d4b581b7514dcbb04889cdbdd75ff29') depends_on('r@3.4.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.10.2:', type=('build', 'run')) - depends_on('r-cowplot', type=('build', 'run')) - depends_on('r-dose', type=('build', 'run')) - depends_on('r-dose@3.5.1:', when='@:1.4.0', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.10.2:') + depends_on('r-aplot', type=('build', 'run'), when='@1.14.1:') + depends_on('r-dose@3.5.1:', type=('build', 'run')) + depends_on('r-dose@3.13.1:', type=('build', 'run'), when='@1.8.1:') + depends_on('r-dose@3.16.0:', type=('build', 'run'), when='@1.12.3:') depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-ggraph', type=('build', 'run')) depends_on('r-igraph', type=('build', 'run')) - depends_on('r-plyr', when='@1.10.2:', type=('build', 'run')) - depends_on('r-purrr', when='@1.2.0:', type=('build', 'run')) - depends_on('r-rcolorbrewer', when='@1.2.0:', type=('build', 'run')) + depends_on('r-plyr', type=('build', 'run'), when='@1.10.2:') + depends_on('r-purrr', type=('build', 'run'), when='@1.2.0:') + depends_on('r-rcolorbrewer', type=('build', 'run'), when='@1.2.0:') depends_on('r-reshape2', type=('build', 'run')) - depends_on('r-scatterpie', when='@1.10.2:', type=('build', 'run')) - depends_on('r-shadowtext', when='@1.10.2:', type=('build', 'run')) + depends_on('r-scatterpie', type=('build', 'run'), when='@1.10.2:') + depends_on('r-shadowtext', type=('build', 'run'), when='@1.10.2:') depends_on('r-gosemsim', type=('build', 'run')) - depends_on('r-magrittr', when='@1.10.2:', type=('build', 'run')) - depends_on('r-ggridges', when='@:1.4.0', type=('build', 'run')) - depends_on('r-upsetr', when='@:1.4.0', type=('build', 'run')) - depends_on('r-annotationdbi', when='@:1.4.0', type=('build', 'run')) - depends_on('r-europepmc', when='@1.2.0:1.4.0', type=('build', 'run')) - depends_on('r-ggplotify', when='@1.2.0:1.4.0', type=('build', 'run')) - depends_on('r-gridextra', when='@1.2.0:1.4.0', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run'), when='@1.10.2:') + depends_on('r-ggtree', type=('build', 'run'), when='@1.14.1:') + depends_on('r-yulab-utils@0.0.4:', type=('build', 'run'), when='@1.14.1:') + + depends_on('r-ggridges', type=('build', 'run'), when='@:1.4.0') + depends_on('r-upsetr', type=('build', 'run'), when='@:1.4.0') + depends_on('r-annotationdbi', type=('build', 'run'), when='@:1.4.0') + depends_on('r-europepmc', type=('build', 'run'), when='@1.2.0:1.4.0') + depends_on('r-ggplotify', type=('build', 'run'), when='@1.2.0:1.4.0') + depends_on('r-gridextra', type=('build', 'run'), when='@1.2.0:1.4.0') + + depends_on('r-cowplot', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ensembldb/package.py b/var/spack/repos/builtin/packages/r-ensembldb/package.py index e6e9228f313313..22605bb67d87f7 100644 --- a/var/spack/repos/builtin/packages/r-ensembldb/package.py +++ b/var/spack/repos/builtin/packages/r-ensembldb/package.py @@ -7,7 +7,7 @@ class REnsembldb(RPackage): - """Utilities to create and use Ensembl-based annotation databases + """Utilities to create and use Ensembl-based annotation databases. The package provides functions to create and use transcript centric annotation databases/packages. The annotation for the databases are @@ -22,9 +22,9 @@ class REnsembldb(RPackage): encoding transcripts. Finally, ensembldb provides functions to map between genomic, transcript and protein coordinates.""" - homepage = "https://bioconductor.org/packages/ensembldb" - git = "https://git.bioconductor.org/packages/ensembldb.git" + bioc = "ensembldb" + version('2.18.3', commit='e2fcfc0c7700110df070a171d2d542b37ec098f3') version('2.14.0', commit='c7150519ed4ef38e5eac1043209863dbc7be43a1') version('2.8.1', commit='a4d8d89c143dca86b364d59dff8e46cc81c41ac0') version('2.6.8', commit='c2c4f41b4ecc81d5328ce1d380065dfcb5e0c54c') @@ -34,12 +34,12 @@ class REnsembldb(RPackage): depends_on('r-biocgenerics@0.15.10:', type=('build', 'run')) depends_on('r-genomicranges@1.23.21:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.18:', when='@2.4.1:', type=('build', 'run')) + depends_on('r-genomicranges@1.31.18:', type=('build', 'run'), when='@2.4.1:') depends_on('r-genomicfeatures@1.23.18:', type=('build', 'run')) - depends_on('r-genomicfeatures@1.29.10:', when='@2.2.2:', type=('build', 'run')) + depends_on('r-genomicfeatures@1.29.10:', type=('build', 'run'), when='@2.2.2:') depends_on('r-annotationfilter@0.99.7:', type=('build', 'run')) - depends_on('r-annotationfilter@1.1.9:', when='@2.2.2:', type=('build', 'run')) - depends_on('r-annotationfilter@1.5.2:', when='@2.6.8:', type=('build', 'run')) + depends_on('r-annotationfilter@1.1.9:', type=('build', 'run'), when='@2.2.2:') + depends_on('r-annotationfilter@1.5.2:', type=('build', 'run'), when='@2.6.8:') depends_on('r-rsqlite@1.1:', type=('build', 'run')) depends_on('r-dbi', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) @@ -47,13 +47,14 @@ class REnsembldb(RPackage): depends_on('r-annotationdbi@1.31.19:', type=('build', 'run')) depends_on('r-rtracklayer', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) - depends_on('r-s4vectors@0.23.10:', when='@2.14.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.23.10:', type=('build', 'run'), when='@2.14.0:') depends_on('r-rsamtools', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) - depends_on('r-iranges@2.11.16:', when='@2.2.2:', type=('build', 'run')) - depends_on('r-iranges@2.13.24:', when='@2.4.1:', type=('build', 'run')) + depends_on('r-iranges@2.11.16:', type=('build', 'run'), when='@2.2.2:') + depends_on('r-iranges@2.13.24:', type=('build', 'run'), when='@2.4.1:') depends_on('r-protgenerics', type=('build', 'run')) depends_on('r-biostrings', type=('build', 'run')) - depends_on('r-biostrings@2.47.9:', when='@2.4.1:', type=('build', 'run')) + depends_on('r-biostrings@2.47.9:', type=('build', 'run'), when='@2.4.1:') depends_on('r-curl', type=('build', 'run')) - depends_on('r-annotationhub', when='@2.0.4:2.2.2', type=('build', 'run')) + + depends_on('r-annotationhub', type=('build', 'run'), when='@2.0.4:2.2.2') diff --git a/var/spack/repos/builtin/packages/r-envstats/package.py b/var/spack/repos/builtin/packages/r-envstats/package.py index 06ae529b7b6619..3ed79ae90482b1 100644 --- a/var/spack/repos/builtin/packages/r-envstats/package.py +++ b/var/spack/repos/builtin/packages/r-envstats/package.py @@ -7,7 +7,7 @@ class REnvstats(RPackage): - """Package for Environmental Statistics, Including US EPA Guidance + """Package for Environmental Statistics, Including US EPA Guidance. Graphical and statistical analyses of environmental data, with focus on analyzing chemical concentrations and physical parameters, usually in the @@ -21,10 +21,9 @@ class REnvstats(RPackage): Springer, ISBN 978-1-4614-8455-4, ).""" - homepage = "https://cloud.r-project.org/package=EnvStats" - url = "https://cloud.r-project.org/src/contrib/EnvStats_2.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/EnvStats" + cran = "EnvStats" + version('2.5.0', sha256='4f77aa66c9dbbe411370a6dd5b9e514823d5506bbcdad9dc09a9e4268d65a7f7') version('2.4.0', sha256='49459e76412037b3d8021bd83ee93d140bc3e715a2a2282a347ef60061900514') version('2.3.1', sha256='d753d42b42ff28c1cd25c63916fb2aa9e325941672fb16f7dfd97e218416cf2a') version('2.3.0', sha256='51b7c982b4ffc6506579ec6933c817b780b8dade9f5e7754122e4132cb677a75') diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py index 719bf5381bd1f3..ca1fcdb275df0d 100644 --- a/var/spack/repos/builtin/packages/r-ergm/package.py +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -7,35 +7,52 @@ class RErgm(RPackage): - """Fit, Simulate and Diagnose Exponential-Family Models for Networks + """Fit, Simulate and Diagnose Exponential-Family Models for Networks. An integrated set of tools to analyze and simulate networks based on - exponential-family random graph models (ERGM). "ergm" is a part of the - "statnet" suite of packages for network analysis.""" + exponential-family random graph models (ERGMs). 'ergm' is a part of the + Statnet suite of packages for network analysis. See Hunter, Handcock, + Butts, Goodreau, and Morris (2008) and + Krivitsky, Hunter, Morris, and Klumb (2021) .""" - homepage = "https://statnet.org" - url = "https://cloud.r-project.org/src/contrib/ergm_3.7.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ergm" + cran = "ergm" + version('4.1.2', sha256='1abc6ef53376a4132530c376ce477ae7a2590e95fe8feb011c0da9cfb4d49ba0') version('3.11.0', sha256='4e5506b44badc2343be3657acbf2bca51b47d7c187ff499d5a5e70a9811fe9f2') version('3.10.4', sha256='885f0b1a23c5a2c1947962350cfab66683dfdfd1db173c115e90396d00831f22') version('3.10.1', sha256='a2ac249ff07ba55b3359242f20389a892543b4fff5956d74143d2d41fa6d4beb') version('3.7.1', sha256='91dd011953b93ecb2b84bb3ababe7bddae25d9d86e69337156effd1da84b54c3') + depends_on('r@3.5:', type=('build', 'run'), when='@4.1.2:') depends_on('r-network@1.15:', type=('build', 'run')) + depends_on('r-network@1.17:', type=('build', 'run'), when='@4.1.2:') depends_on('r-robustbase@0.93-5:', type=('build', 'run')) + depends_on('r-robustbase@0.93-7:', type=('build', 'run'), when='@4.1.2:') depends_on('r-coda@0.19-2:', type=('build', 'run')) + depends_on('r-coda@0.19-4:', type=('build', 'run'), when='@4.1.2:') 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-lpsolve@5.6.13:', type=('build', 'run')) + 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:') depends_on('r-statnet-common@4.3.0:', type=('build', 'run')) - depends_on('r-statnet-common@4.4.0:', when='@3.11.0:', type=('build', 'run')) - depends_on('r-rle', when='@3.11.0:', type=('build', 'run')) - depends_on('r-purrr@0.3.2:', when='@3.10.0:', type=('build', 'run')) - depends_on('r-rlang@0.3.4:', when='@3.10.0:', type=('build', 'run')) - depends_on('r-tibble@2.1.1:', when='@3.10.0:', type=('build', 'run')) - depends_on('r-dplyr@0.8.0.1:', when='@3.10.0:3.10.4', type=('build', 'run')) + depends_on('r-statnet-common@4.4.0:', type=('build', 'run'), when='@3.11.0:') + depends_on('r-statnet-common@4.5.0:', type=('build', 'run'), when='@4.1.2:') + 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:') + depends_on('r-purrr@0.3.4:', type=('build', 'run'), when='@4.1.2:') + depends_on('r-rlang@0.3.4:', type=('build', 'run'), when='@3.10.0:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@4.1.2:') + depends_on('r-memoise@2.0.0:', type=('build', 'run'), when='@4.1.2:') + depends_on('r-tibble@2.1.1:', type=('build', 'run'), when='@3.10.0:') + depends_on('r-tibble@3.1.0:', type=('build', 'run'), when='@4.1.2:') + + depends_on('r-dplyr@0.8.0.1:', type=('build', 'run'), when='@3.10.0:3.10.4') + depends_on('r-lpsolve@5.6.13:', type=('build', 'run'), when='@:3.11.0') + # The CRAN page list OpenMPI as a dependency but this is not a dependency # for using the package. If one wishes to use MPI, simply load an MPI # package, along with r-dosnow and r-rmpi when using r-ergm, and set the diff --git a/var/spack/repos/builtin/packages/r-estimability/package.py b/var/spack/repos/builtin/packages/r-estimability/package.py index 02af356d6ea52b..197c30a3de3bed 100644 --- a/var/spack/repos/builtin/packages/r-estimability/package.py +++ b/var/spack/repos/builtin/packages/r-estimability/package.py @@ -7,16 +7,14 @@ class REstimability(RPackage): - """Tools for Assessing Estimability of Linear Predictions + """Tools for Assessing Estimability of Linear Predictions. - Provides tools for determining estimability of linear functions - of regression coefficients, and 'epredict' methods that handle - non-estimable cases correctly. Estimability theory is discussed in - many linear-models textbooks including Chapter 3 of Monahan, JF (2008), - "A Primer on Linear Models", Chapman and Hall (ISBN 978-1-4200-6201-4). - """ + Provides tools for determining estimability of linear functions of + regression coefficients, and 'epredict' methods that handle non-estimable + cases correctly. Estimability theory is discussed in many linear-models + textbooks including Chapter 3 of Monahan, JF (2008), "A Primer on Linear + Models", Chapman and Hall (ISBN 978-1-4200-6201-4).""" - homepage = "https://github.com/rvlenth/estimability" cran = "estimability" version('1.3', sha256='a33179c5fbd6a1a623d90cb6f1743148f92c09429fac466867f3ea70946a2e32') diff --git a/var/spack/repos/builtin/packages/r-europepmc/package.py b/var/spack/repos/builtin/packages/r-europepmc/package.py index 946ea1d6a27974..1df85568bed5c2 100644 --- a/var/spack/repos/builtin/packages/r-europepmc/package.py +++ b/var/spack/repos/builtin/packages/r-europepmc/package.py @@ -7,7 +7,7 @@ class REuropepmc(RPackage): - """R Interface to the Europe PubMed Central RESTful Web Service + """R Interface to the Europe PubMed Central RESTful Web Service. An R Client for the Europe PubMed Central RESTful Web Service (see for more information). It gives @@ -21,10 +21,9 @@ class REuropepmc(RPackage): registration or API key is required. See the vignettes for usage examples.""" - homepage = "https://github.com/ropensci/europepmc/" - url = "https://cloud.r-project.org/src/contrib/europepmc_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/europepmc" + cran = "europepmc" + version('0.4.1', sha256='c1ba91a2a99432cabe18e86fea33ac9d20dbb3ac0b58f430d464b4d8ecba4a9a') version('0.4', sha256='d55f62963d0ee84830654bbc78f4ad8285e376b04be137cbeaf8ad2a98b7969c') version('0.3', sha256='5044a253d223e2bb8502063cd03c0fe4db856467e497d650da7ccd8f75d0f8d9') @@ -37,6 +36,6 @@ class REuropepmc(RPackage): depends_on('r-urltools', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) depends_on('r-xml2', type=('build', 'run')) - depends_on('r-tibble', when='@0.4:', type=('build', 'run')) - depends_on('r-tidyr', when='@0.4:', type=('build', 'run')) - depends_on('r-rlang', when='@0.4:', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run'), when='@0.4:') + depends_on('r-tidyr', type=('build', 'run'), when='@0.4:') + depends_on('r-rlang', type=('build', 'run'), when='@0.4:') diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index d84217a558382c..46a3a022298055 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -7,12 +7,12 @@ class REvaluate(RPackage): - """Parsing and evaluation tools that make it easy to recreate the command + """Parsing and Evaluation Tools that Provide More Details than the Default. + + Parsing and evaluation tools that make it easy to recreate the command line behaviour of R.""" - homepage = "https://cloud.r-project.org/package=evaluate" - url = "https://cloud.r-project.org/src/contrib/evaluate_0.10.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/evaluate" + cran = "evaluate" version('0.14', sha256='a8c88bdbe4e60046d95ddf7e181ee15a6f41cdf92127c9678f6f3d328a3c5e28') version('0.10.1', sha256='c9a763895d3f460dbf87c43a6469e4b41a251a74477df8c5d7e7d2b66cdd1b1c') @@ -20,4 +20,5 @@ class REvaluate(RPackage): version('0.9', sha256='e8118c9d6ec479c0e712913848404431b6b6c0282f3c131acaf9a677ab5fc6ae') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r-stringr@0.6.2:', when='@:0.11', type=('build', 'run')) + + 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 45f74212e9d784..ff0f241efbc7c2 100644 --- a/var/spack/repos/builtin/packages/r-evd/package.py +++ b/var/spack/repos/builtin/packages/r-evd/package.py @@ -7,10 +7,14 @@ class REvd(RPackage): - """evd: Functions for Extreme Value Distributions""" + """Functions for Extreme Value Distributions. - homepage = "https://cloud.r-project.org/package=evd" - url = "https://cloud.r-project.org/src/contrib/evd_2.3-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/evd" + Extends simulation, distribution, quantile and density functions to + univariate and multivariate parametric extreme value distributions, and + provides fitting functions which calculate maximum likelihood estimates for + univariate and bivariate maxima models, and for univariate and bivariate + threshold models.""" + + cran = "evd" 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 675143110b25e3..425c6dc6669a06 100644 --- a/var/spack/repos/builtin/packages/r-exactextractr/package.py +++ b/var/spack/repos/builtin/packages/r-exactextractr/package.py @@ -7,15 +7,14 @@ class RExactextractr(RPackage): - """Fast Extraction from Raster Datasets using Polygons + """Fast Extraction from Raster Datasets using Polygons. Provides a replacement for the 'extract' function from the 'raster' package that is suitable for extracting raster values using 'sf' polygons.""" - homepage = "https://cloud.r-project.org/package=exactextractr" - url = "https://cloud.r-project.org/src/contrib/exactextractr_0.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/exactextractr" + cran = "exactextractr" + version('0.7.2', sha256='2eb2b5eb2156cca875e7004b80687589217abd6fce5ebb7d8acb7fa71f6e6958') version('0.5.1', sha256='47ddfb4b9e42e86957e03b1c745d657978d7c4bed12ed3aa053e1bc89f20616d') version('0.3.0', sha256='c7fb38b38b9dc8b3ca5b8f1f84f4ba3256efd331f2b4636b496d42689ffc3fb0') version('0.2.1', sha256='d0b998c77c3fd9265a600a0e08e9bf32a2490a06c19df0d0c0dea4b5c9ab5773') @@ -24,4 +23,5 @@ class RExactextractr(RPackage): depends_on('r-rcpp@0.12.12:', type=('build', 'run')) depends_on('r-raster', type=('build', 'run')) depends_on('r-sf', type=('build', 'run')) - depends_on('geos@3.5.0:', type=('build', 'run', 'link')) + depends_on('r-sf@0.9.0:', type=('build', 'run'), when='@0.7.2:') + depends_on('geos@3.5.0:') diff --git a/var/spack/repos/builtin/packages/r-exomecopy/package.py b/var/spack/repos/builtin/packages/r-exomecopy/package.py index 151ac64b675129..9d2d5a74bf4a48 100644 --- a/var/spack/repos/builtin/packages/r-exomecopy/package.py +++ b/var/spack/repos/builtin/packages/r-exomecopy/package.py @@ -7,7 +7,7 @@ class RExomecopy(RPackage): - """Copy number variant detection from exome sequencing read depth + """Copy number variant detection from exome sequencing read depth. Detection of copy number variants (CNV) from exome sequencing samples, including unpaired samples. The package implements a hidden Markov model @@ -15,9 +15,9 @@ class RExomecopy(RPackage): GC-content, to simultaneously normalize and segment the samples into regions of constant copy count.""" - homepage = "https://www.bioconductor.org/packages/release/bioc/html/exomeCopy.html" - git = "https://git.bioconductor.org/packages/exomeCopy" + bioc = "exomeCopy" + version('1.40.0', commit='ebde39be67baace2c326359421fd17f4a02fd4fe') version('1.36.0', commit='cbe3134acbbc9b7d5426ae2f142dc64cadb3fc26') version('1.32.0', commit='c9a884427d91b6d62ddc16a939bd808e389d3ea6') diff --git a/var/spack/repos/builtin/packages/r-exomedepth/package.py b/var/spack/repos/builtin/packages/r-exomedepth/package.py index ad924cff54acdf..a9064f2716af4e 100644 --- a/var/spack/repos/builtin/packages/r-exomedepth/package.py +++ b/var/spack/repos/builtin/packages/r-exomedepth/package.py @@ -7,13 +7,13 @@ class RExomedepth(RPackage): - """Calls copy number variants (CNVs) from targeted sequence data, typically + """Calls Copy Number Variants from Targeted Sequence Data. + + Calls copy number variants (CNVs) from targeted sequence data, typically exome sequencing experiments designed to identify the genetic basis of Mendelian disorders.""" - homepage = "https://cloud.r-project.org/package=ExomeDepth" - url = "https://cloud.r-project.org/src/contrib/ExomeDepth_1.1.15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ExomeDepth" + cran = "ExomeDepth" version('1.1.15', sha256='112bcb536f5766d9d0b55e064feedd6727ccab14cb1edfdba1f0d7b890e55ad2') diff --git a/var/spack/repos/builtin/packages/r-experimenthub/package.py b/var/spack/repos/builtin/packages/r-experimenthub/package.py index 4e7b6da0b4d33f..a63002b2056ce2 100644 --- a/var/spack/repos/builtin/packages/r-experimenthub/package.py +++ b/var/spack/repos/builtin/packages/r-experimenthub/package.py @@ -7,7 +7,7 @@ class RExperimenthub(RPackage): - """Client to access ExperimentHub resources: + """Client to access ExperimentHub resources. This package provides a client for the Bioconductor ExperimentHub web resource. ExperimentHub provides a central location where curated data from @@ -16,8 +16,9 @@ class RExperimenthub(RPackage): creates and manages a local cache of files retrieved enabling quick and reproducible access.""" - bioc = "ExperimentHub" + bioc = "ExperimentHub" + version('2.2.1', commit='4e10686fa72baefef5d2990f41a7c44c527a7a7d') version('1.16.1', commit='61d51b7ca968d6cc1befe299e0784d9a19ca51f6') depends_on('r-biocgenerics@0.15.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-expint/package.py b/var/spack/repos/builtin/packages/r-expint/package.py index e2def43b9cde5b..7bbd6fc96667ba 100644 --- a/var/spack/repos/builtin/packages/r-expint/package.py +++ b/var/spack/repos/builtin/packages/r-expint/package.py @@ -8,7 +8,7 @@ class RExpint(RPackage): - """Exponential Integral and Incomplete Gamma Function + """Exponential Integral and Incomplete Gamma Function. The exponential integrals E_1(x), E_2(x), E_n(x) and Ei(x), and the incomplete gamma function G(a, x) defined for negative values of its first @@ -18,9 +18,7 @@ class RExpint(RPackage): routines derived from the GNU Scientific Library .""" - homepage = "https://cloud.r-project.org/package=expint" - url = "https://cloud.r-project.org/src/contrib/expint_0.1-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/expint" + cran = "expint" version('0.1-6', sha256='c7d13a8e299a91e94622047fe22b0006137e7bf82e34d10871b631fa58115145') version('0.1-5', sha256='b03d60938cd6cf615aa3a02b1bf73436785eca89eaff56059ee0807b8244718a') diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py index 2c89b7f4b9f70a..082f4b28e86e39 100644 --- a/var/spack/repos/builtin/packages/r-expm/package.py +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -7,14 +7,12 @@ class RExpm(RPackage): - """Matrix Exponential, Log, 'etc' + """Matrix Exponential, Log, 'etc'. Computation of the matrix exponential, logarithm, sqrt, and related quantities.""" - homepage = "https://r-forge.r-project.org/projects/expm" - url = "https://cloud.r-project.org/src/contrib/expm_0.999-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/expm" + cran = "expm" version('0.999-6', sha256='2c79912fd2e03fcf89c29f09555880934402fcb2359af8b4579d79b4f955addc') version('0.999-4', sha256='58d06427a08c9442462b00a5531e2575800be13ed450c5a1546261251e536096') diff --git a/var/spack/repos/builtin/packages/r-factoextra/package.py b/var/spack/repos/builtin/packages/r-factoextra/package.py index 80a364efc930fb..73225eb8a1bdde 100644 --- a/var/spack/repos/builtin/packages/r-factoextra/package.py +++ b/var/spack/repos/builtin/packages/r-factoextra/package.py @@ -7,7 +7,7 @@ class RFactoextra(RPackage): - """Extract and Visualize the Results of Multivariate Data Analyses + """Extract and Visualize the Results of Multivariate Data Analyses. Provides some easy-to-use functions to extract and visualize the output of multivariate data analyses, including 'PCA' (Principal Component Analysis), @@ -18,9 +18,7 @@ class RFactoextra(RPackage): analysis steps and provides 'ggplot2' - based elegant data visualization.""" - homepage = "http://www.sthda.com/english/rpkgs/factoextra" - url = "https://cloud.r-project.org/src/contrib/factoextra_1.0.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/factoextra" + cran = "factoextra" version('1.0.7', sha256='624ff01c74933352aca55966f8a052b1ccc878f52c2c307e47f88e0665db94aa') version('1.0.5', sha256='8177a3f5107883ae248b2cd0afa388a1794741f5155a9455b3883788cf44d5d0') diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py index 7008c833fab449..3a86f101eea337 100644 --- a/var/spack/repos/builtin/packages/r-factominer/package.py +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -7,7 +7,7 @@ class RFactominer(RPackage): - """Multivariate Exploratory Data Analysis and Data Mining + """Multivariate Exploratory Data Analysis and Data Mining. Exploratory data analysis methods to summarize, visualize and describe datasets. The main principal component methods are available, those with @@ -18,9 +18,7 @@ class RFactominer(RPackage): groups, etc. and hierarchical cluster analysis. F. Husson, S. Le and J. Pages (2017).""" - homepage = "http://factominer.free.fr" - url = "https://cloud.r-project.org/src/contrib/FactoMineR_1.35.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/FactoMineR" + cran = "FactoMineR" version('2.4', sha256='b9e3adce9a66b4daccc85fa67cb0769d6be230beeb126921b386ccde5db2e851') version('1.42', sha256='4cd9efb3681767c3bd48ddc3504ebead1493fcbbc0a9f759a00955b16c3481fa') @@ -32,15 +30,15 @@ class RFactominer(RPackage): version('1.35', sha256='afe176fe561d1d16c5965ecb2b80ec90a56d0fbcd75c43ec8025a401a5b715a9') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@2.4:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.4:') depends_on('r-car', type=('build', 'run')) depends_on('r-cluster', type=('build', 'run')) - depends_on('r-dt', when='@2.4:', type=('build', 'run')) + depends_on('r-dt', type=('build', 'run'), when='@2.4:') depends_on('r-ellipse', type=('build', 'run')) depends_on('r-flashclust', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-leaps', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) depends_on('r-scatterplot3d', type=('build', 'run')) - depends_on('r-ggplot2', when='@2.4:', type=('build', 'run')) - depends_on('r-ggrepel', when='@2.4:', type=('build', 'run')) + depends_on('r-ggplot2', type=('build', 'run'), when='@2.4:') + depends_on('r-ggrepel', type=('build', 'run'), when='@2.4:') diff --git a/var/spack/repos/builtin/packages/r-fansi/package.py b/var/spack/repos/builtin/packages/r-fansi/package.py index 65a8f8dbe9117c..c92497a07f409e 100644 --- a/var/spack/repos/builtin/packages/r-fansi/package.py +++ b/var/spack/repos/builtin/packages/r-fansi/package.py @@ -7,12 +7,14 @@ class RFansi(RPackage): - """Counterparts to R string manipulation functions that account - for the effects of ANSI text formatting control sequences.""" + """ANSI Control Sequence Aware String Functions. + + Counterparts to R string manipulation functions that account for the + effects of ANSI text formatting control sequences.""" - homepage = "https://cloud.r-project.org/package=fansi" cran = "fansi" + version('1.0.2', sha256='d1e2cf2e10613abe19071e3dab7c564ebcf85ad13cbee25fa1999267af01b557') version('0.5.0', sha256='9d1bf8c316969c163abd3dd41cc1425b2671df9471fe806bf8783794a19ca54f') version('0.4.1', sha256='3c69eec803a3827e5227f9cf084976eeb738b22c7eb7665bb5faa251bce41e09') version('0.4.0', sha256='e104e9d01c7ff8a847f6b332ef544c0ef912859f9c6a514fe2e6f3b34fcfc209') diff --git a/var/spack/repos/builtin/packages/r-farver/package.py b/var/spack/repos/builtin/packages/r-farver/package.py index f14837bddb7a2b..9ed8a3e02d45a5 100644 --- a/var/spack/repos/builtin/packages/r-farver/package.py +++ b/var/spack/repos/builtin/packages/r-farver/package.py @@ -7,7 +7,7 @@ class RFarver(RPackage): - """High Performance Colour Space Manipulation + """High Performance Colour Space Manipulation. The encoding of colour can be handled in many different ways, using different colour spaces. As different colour spaces have different uses, @@ -17,7 +17,6 @@ class RFarver(RPackage): speed improvements over the 'convertColor' function in the 'grDevices' package.""" - homepage = "https://github.com/thomasp85/farver" cran = "farver" version('2.1.0', sha256='e5c8630607049f682fb3002b99ca4f5e7c6b94f8b2a4342df594e7853b77cef4') diff --git a/var/spack/repos/builtin/packages/r-fastcluster/package.py b/var/spack/repos/builtin/packages/r-fastcluster/package.py index 9ca71b9f827a83..40384bf80ad543 100644 --- a/var/spack/repos/builtin/packages/r-fastcluster/package.py +++ b/var/spack/repos/builtin/packages/r-fastcluster/package.py @@ -7,21 +7,22 @@ class RFastcluster(RPackage): - """This is a two-in-one package which provides interfaces to both R - and 'Python'. It implements fast hierarchical, agglomerative - clustering routines. Part of the functionality is designed as drop-in - replacement for existing routines: linkage() in the 'SciPy' package - 'scipy.cluster.hierarchy', hclust() in R's 'stats' package, and the - 'flashClust' package. It provides the same functionality with the - benefit of a much faster implementation. Moreover, there are - memory-saving routines for clustering of vector data, which go beyond - what the existing packages provide. For information on how to install - the 'Python' files, see the file INSTALL in the source distribution.""" + """Fast Hierarchical Clustering Routines for R and 'Python'. - homepage = "http://danifold.net/fastcluster.html" - url = "https://cloud.r-project.org/src/contrib/fastcluster_1.1.25.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fastcluster/" + This is a two-in-one package which provides interfaces to both R and + 'Python'. It implements fast hierarchical, agglomerative clustering + routines. Part of the functionality is designed as drop-in replacement for + existing routines: linkage() in the 'SciPy' package + 'scipy.cluster.hierarchy', hclust() in R's 'stats' package, and the + 'flashClust' package. It provides the same functionality with the benefit + of a much faster implementation. Moreover, there are memory-saving routines + for clustering of vector data, which go beyond what the existing packages + provide. For information on how to install the 'Python' files, see the file + INSTALL in the source distribution.""" + cran = "fastcluster" + + version('1.2.3', sha256='1f229129e1cddc78c7bb5ecc90c4d28ed810ee68cf210004c7cdfa12cfaf2a01') version('1.1.25', sha256='f3661def975802f3dd3cec5b2a1379f3707eacff945cf448e33aec0da1ed4205') depends_on('r@3.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-fastdigest/package.py b/var/spack/repos/builtin/packages/r-fastdigest/package.py index 0fce5610be6482..1b2610f9491231 100644 --- a/var/spack/repos/builtin/packages/r-fastdigest/package.py +++ b/var/spack/repos/builtin/packages/r-fastdigest/package.py @@ -7,19 +7,17 @@ class RFastdigest(RPackage): - """Fast, Low Memory-Footprint Digests of R Objects + """Fast, Low Memory-Footprint Digests of R Objects. Provides an R interface to Bob Jenkin's streaming, non-cryptographic 'SpookyHash' hash algorithm for use in digest-based comparisons of R objects. 'fastdigest' plugs directly into R's internal serialization machinery, allowing digests of all R objects the serialize() function - supports, including reference-style objects via custom hooks. Speed is - high and scales linearly by object size; - memory usage is constant and negligible.""" + supports, including reference-style objects via custom hooks. Speed is high + and scales linearly by object size; memory usage is constant and + negligible.""" - homepage = "https://cloud.r-project.org/web/packages/fastdigest/index.html" - url = "https://cloud.r-project.org/src/contrib/fastdigest_0.6-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fastdigest" + cran = "fastdigest" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-fastica/package.py b/var/spack/repos/builtin/packages/r-fastica/package.py index edeec802ff27c6..c4ac788a255cce 100644 --- a/var/spack/repos/builtin/packages/r-fastica/package.py +++ b/var/spack/repos/builtin/packages/r-fastica/package.py @@ -7,13 +7,15 @@ class RFastica(RPackage): - """FastICA Algorithms to Perform ICA and Projection Pursuit: + """FastICA Algorithms to Perform ICA and Projection Pursuit. Implementation of FastICA algorithm to perform Independent Component Analysis (ICA) and Projection Pursuit.""" - cran = "fastICA" + cran = "fastICA" + version('1.2-3', sha256='e9ef82644cb64bb49ae3b7b6e0885f4fb2dc08ae030f8c76fe8dd8507b658950') version('1.2-2', sha256='32223593374102bf54c8fdca7b57231e4f4d0dd0be02d9f3500ad41b1996f1fe') depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.2-3:') diff --git a/var/spack/repos/builtin/packages/r-fastmap/package.py b/var/spack/repos/builtin/packages/r-fastmap/package.py index 97499d53ae64f6..4a68e9d0a4374a 100644 --- a/var/spack/repos/builtin/packages/r-fastmap/package.py +++ b/var/spack/repos/builtin/packages/r-fastmap/package.py @@ -7,7 +7,7 @@ class RFastmap(RPackage): - """Fast Implementation of a Key-Value Store + """Fast Implementation of a Key-Value Store. Fast implementation of a key-value store. Environments are commonly used as key-value stores, but every time a new key is used, it is added to R's @@ -16,9 +16,7 @@ class RFastmap(RPackage): this memory leak issue by implementing the map using data structures in C++.""" - homepage = "https://r-lib.github.io/fastmap/" - url = "https://cloud.r-project.org/src/contrib/fastmap_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fastmap" + cran = "fastmap" 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 f2611383e73804..ae2e4cefdf388a 100644 --- a/var/spack/repos/builtin/packages/r-fastmatch/package.py +++ b/var/spack/repos/builtin/packages/r-fastmatch/package.py @@ -7,13 +7,16 @@ class RFastmatch(RPackage): - """Package providing a fast match() replacement for cases that require - repeated look-ups. It is slightly faster that R's built-in match() - function on first match against a table, but extremely fast on any - subsequent lookup as it keeps the hash table in memory.""" + """Fast 'match()' Function. - homepage = "https://www.rforge.net/fastmatch" - url = "https://cloud.r-project.org/src/contrib/fastmatch_1.1-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fastmatch" + Package providing a fast match() replacement for cases that require + repeated look-ups. It is slightly faster that R's built-in match() function + on first match against a table, but extremely fast on any subsequent lookup + as it keeps the hash table in memory.""" + cran = "fastmatch" + + version('1.1-3', sha256='1defa0b08bc3f48e4c3e4ba8df4f1b9e8299932fd8c747c67d32de44f90b9861') version('1.1-0', sha256='20b51aa4838dbe829e11e951444a9c77257dcaf85130807508f6d7e76797007d') + + depends_on('r@2.3.0:', type=('build', 'run'), when='@1.1-3:') diff --git a/var/spack/repos/builtin/packages/r-fastmatrix/package.py b/var/spack/repos/builtin/packages/r-fastmatrix/package.py index 720fb900e281fe..8cbc2401df22ca 100644 --- a/var/spack/repos/builtin/packages/r-fastmatrix/package.py +++ b/var/spack/repos/builtin/packages/r-fastmatrix/package.py @@ -7,15 +7,28 @@ class RFastmatrix(RPackage): - """Fast Computation of some Matrices Useful in Statistics + """Fast Computation of some Matrices Useful in Statistics. Small set of functions to fast computation of some matrices and operations - useful in statistics.""" + useful in statistics and econometrics. Currently, there are functions for + efficient computation of duplication, commutation and symmetrizer matrices + with minimal storage requirements. Some commonly used matrix decompositions + (LU and LDL), basic matrix operations (for instance, Hadamard, Kronecker + products and the Sherman-Morrison formula) and iterative solvers for linear + systems are also available. In addition, the package includes a number of + common statistical procedures such as the sweep operator, weighted mean and + covariance matrix using an online algorithm, linear regression (using + Cholesky, QR, SVD, sweep operator and conjugate gradients methods), ridge + regression (with optimal selection of the ridge parameter considering the + GCV procedure), functions to compute the multivariate skewness, kurtosis, + Mahalanobis distance (checking the positive defineteness) and the + Wilson-Hilferty transformation of chi squared variables. Furthermore, the + package provides interfaces to C code callable by another C code from other + R packages.""" - homepage = "https://faosorios.github.io/fastmatrix/" - url = "https://cloud.r-project.org/src/contrib/fastmatrix_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fastmatrix" + cran = "fastmatrix" + version('0.3-8196', sha256='72fae07c627b995a091ccc3e14b2b2167474e3b1f14d723e87252538cf978fb6') version('0.3', sha256='d92e789454a129db5f6f5b23e0d2245f3d55ff34b167427af265b9a6331e7c21') depends_on('r@3.5.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-fda/package.py b/var/spack/repos/builtin/packages/r-fda/package.py index d8147e99615ce0..6b22e264b08269 100644 --- a/var/spack/repos/builtin/packages/r-fda/package.py +++ b/var/spack/repos/builtin/packages/r-fda/package.py @@ -5,7 +5,9 @@ class RFda(RPackage): - """These functions were developed to support functional data + """Functional Data Analysis. + + These functions were developed to support functional data analysis as described in Ramsay, J. O. and Silverman, B. W. (2005) Functional Data Analysis. New York: Springer and in Ramsay, J. O., Hooker, Giles, and Graves, Spencer (2009). """ diff --git a/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py b/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py index a27e47205a0ca4..a312f23c0713c0 100644 --- a/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py +++ b/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg18/package.py @@ -7,13 +7,13 @@ class RFdbInfiniummethylationHg18(RPackage): - """Annotation package for Illumina Infinium DNA methylation probes + """Annotation package for Illumina Infinium DNA methylation probes. Compiled HumanMethylation27 and HumanMethylation450 annotations""" # This is a bioconductor package but there is no available git repository - homepage = "https://bioconductor.org/packages/release/data/annotation/html/FDb.InfiniumMethylation.hg18.html" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/FDb.InfiniumMethylation.hg18_2.2.0.tar.gz" + bioc = "FDb.InfiniumMethylation.hg18" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/FDb.InfiniumMethylation.hg18_2.2.0.tar.gz" version('2.2.0', sha256='4a9028ac03c11fffbab731ea750bc7f9b0884fc43c6a8dac6eb2c644e4c79f6f') diff --git a/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg19/package.py b/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg19/package.py index cf999ca1042265..07d91ead8f3219 100644 --- a/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg19/package.py +++ b/var/spack/repos/builtin/packages/r-fdb-infiniummethylation-hg19/package.py @@ -7,13 +7,13 @@ class RFdbInfiniummethylationHg19(RPackage): - """Annotation package for Illumina Infinium DNA methylation probes + """Annotation package for Illumina Infinium DNA methylation probes. Compiled HumanMethylation27 and HumanMethylation450 annotations.""" # No available git repository - homepage = "https://bioconductor.org/packages/release/data/annotation/html/FDb.InfiniumMethylation.hg19.html" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/FDb.InfiniumMethylation.hg19_2.2.0.tar.gz" + bioc = "FDb.InfiniumMethylation.hg19" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/FDb.InfiniumMethylation.hg19_2.2.0.tar.gz" version('2.2.0', sha256='605aa3643588a2f40a942fa760b92662060a0dfedb26b4e4cd6f1a78b703093f') diff --git a/var/spack/repos/builtin/packages/r-ff/package.py b/var/spack/repos/builtin/packages/r-ff/package.py index f01c1cd83ffde7..51e012e40aac37 100644 --- a/var/spack/repos/builtin/packages/r-ff/package.py +++ b/var/spack/repos/builtin/packages/r-ff/package.py @@ -7,7 +7,8 @@ class RFf(RPackage): - """Memory-Efficient Storage of Large Data on Disk and Fast Access Functions + """Memory-Efficient Storage of Large Data on Disk and Fast Access + Functions. The ff package provides data structures that are stored on disk but behave (almost) as if they were in RAM by transparently mapping only a section @@ -29,8 +30,8 @@ class RFf(RPackage): have well-defined hybrid copying semantics, which gives rise to certain performance improvements through virtualization. ff objects can be stored and reopened across R sessions. ff files can be shared by multiple ff R - objects (using different data en/de-coding schemes) in the same process - or from multiple R processes to exploit parallelism. A wide choice of + objects (using different data en/de-coding schemes) in the same process or + from multiple R processes to exploit parallelism. A wide choice of finalizer options allows to work with 'permanent' files as well as creating/removing 'temporary' ff files completely transparent to the user. On certain OS/Filesystem combinations, creating the ff files works without @@ -51,16 +52,15 @@ class RFf(RPackage): datasets and quickly modify selection criteria. Further high-performance enhancements can be made available upon request.x """ - homepage = "https://ff.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/ff_2.2-13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ff" + cran = "ff" + version('4.0.5', sha256='9aba9e271144ec224063ddba0d791e2fcdb9c912d48fdc49e204fce628355037') version('4.0.4', sha256='22ecf1811263f27c9fd9f7e13e77f97dcbc0b8ae6f59b76dbaed77569c13d2e5') version('2.2-14', sha256='1c6307847275b1b8ad9e2ffdce3f4df3c9d955dc2e8a45e3fd7bfd2b0926e2f0') version('2.2-13', sha256='8bfb08afe0651ef3c23aaad49208146d5f929af5af12a25262fe7743fa346ddb') depends_on('r@2.10.1:', type=('build', 'run')) depends_on('r-bit@1.1-13:', type=('build', 'run')) - depends_on('r-bit@4.0.0:', when='@4.0.4:', type=('build', 'run')) + depends_on('r-bit@4.0.0:', type=('build', 'run'), when='@4.0.4:') patch('utk_platform_macros.hpp.patch', when='target=aarch64:') diff --git a/var/spack/repos/builtin/packages/r-fftwtools/package.py b/var/spack/repos/builtin/packages/r-fftwtools/package.py index 7d61f5d1eb35e1..a5595e07f8e9ff 100644 --- a/var/spack/repos/builtin/packages/r-fftwtools/package.py +++ b/var/spack/repos/builtin/packages/r-fftwtools/package.py @@ -8,7 +8,7 @@ class RFftwtools(RPackage): """Wrapper for 'FFTW3' Includes: One-Dimensional Univariate, - One-Dimensional Multivariate, and Two-Dimensional Transform + One-Dimensional Multivariate, and Two-Dimensional Transform. Provides a wrapper for several 'FFTW' functions. This package provides access to the two-dimensional 'FFT', the multivariate 'FFT', and the @@ -18,12 +18,12 @@ class RFftwtools(RPackage): functions have a parameter that allows them to not return the redundant complex conjugate when the input is real data.""" - homepage = "https://github.com/krahim/fftwtools" - url = "https://cloud.r-project.org/src/contrib/fftwtools_0.9-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fftwtools" + cran = "fftwtools" + version('0.9-11', sha256='f1f0c9a9086c7b2f72c5fb0334717cc917213a004eaef8448eab4940c9852c7f') version('0.9-9', sha256='a9273b7e495d228d740ab4525467e4bbefe8614bd2d97e7234017f1305f51441') version('0.9-8', sha256='4641c8cd70938c2a8bde0b6da6cf7f83e96175ef52f1ca42ec3920a1dabf1bdb') depends_on('r@2.15.2:', type=('build', 'run')) + depends_on('r@3.0:', type=('build', 'run'), when='@0.9-11:') depends_on('fftw@3.1.2:') diff --git a/var/spack/repos/builtin/packages/r-fgsea/package.py b/var/spack/repos/builtin/packages/r-fgsea/package.py index af1538cfb36aba..9722ed89ce740a 100644 --- a/var/spack/repos/builtin/packages/r-fgsea/package.py +++ b/var/spack/repos/builtin/packages/r-fgsea/package.py @@ -7,16 +7,16 @@ class RFgsea(RPackage): - """Fast Gene Set Enrichment Analysis + """Fast Gene Set Enrichment Analysis. The package implements an algorithm for fast gene set enrichment analysis. Using the fast algorithm allows to make more permutations and get more fine grained p-values, which allows to use accurate stantard approaches to multiple hypothesis correction.""" - homepage = "https://bioconductor.org/packages/fgsea" - git = "https://git.bioconductor.org/packages/fgsea.git" + bioc = "fgsea" + version('1.20.0', commit='b704f81687dc16afdaafc6d30108c62a067856b2') version('1.16.0', commit='9d9df596c7e160afa18e067b7637cfc465494318') version('1.10.1', commit='fb06a6ebfb4a195e77e37226d100a2148b90c5f3') version('1.8.0', commit='bb2898aca9fb23e90770671a83fe23f79bb1841b') @@ -31,5 +31,5 @@ class RFgsea(RPackage): depends_on('r-ggplot2@2.2.0:', type=('build', 'run')) depends_on('r-gridextra', type=('build', 'run')) depends_on('r-fastmatch', type=('build', 'run')) - depends_on('r-matrix', when='@1.6.0:', type=('build', 'run')) - depends_on('r-bh', when='@1.10.1:', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run'), when='@1.6.0:') + depends_on('r-bh', type=('build', 'run'), when='@1.10.1:') diff --git a/var/spack/repos/builtin/packages/r-fields/package.py b/var/spack/repos/builtin/packages/r-fields/package.py index 08251a9120c092..bbb38ed7937039 100644 --- a/var/spack/repos/builtin/packages/r-fields/package.py +++ b/var/spack/repos/builtin/packages/r-fields/package.py @@ -7,7 +7,7 @@ class RFields(RPackage): - """Tools for Spatial Data + """Tools for Spatial Data. For curve, surface and function fitting with an emphasis; on splines, spatial data, geostatistics, and spatial statistics. The major methods; @@ -34,13 +34,13 @@ class RFields(RPackage): URL; for a vignette on using this package and some background on spatial statistics.""" - homepage = "https://github.com/NCAR/Fields" - url = "https://cloud.r-project.org/src/contrib/fields_9.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fields" + cran = "fields" + version('13.3', sha256='c652838b1ae7eb368831522824bfbc1d1db7b9d1db5e9bb52b194098549944c3') version('11.6', sha256='8600d1d992c40668cc2ab01b3c17d0e1bd44a001ec7ba9f468bc0e9ef87c59db') version('9.9', sha256='262f03c630773b580c7162ab2a031c894ca489fd83989fd8a2f67573306e78e1') depends_on('r@3.0:', type=('build', 'run')) depends_on('r-spam', type=('build', 'run')) + depends_on('r-viridis', type=('build', 'run'), when='@13.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 49342eaa812576..b9ec258173283f 100644 --- a/var/spack/repos/builtin/packages/r-filehash/package.py +++ b/var/spack/repos/builtin/packages/r-filehash/package.py @@ -7,7 +7,9 @@ class RFilehash(RPackage): - """Implements a simple key-value style database where character string keys + """Simple Key-Value Database. + + Implements a simple key-value style database where character string keys are associated with data values that are stored on the disk. A simple interface is provided for inserting, retrieving, and deleting data from the database. Utilities are provided that allow 'filehash' databases to be @@ -17,9 +19,7 @@ class RFilehash(RPackage): are currently available and new formats can easily be incorporated by third parties for use in the 'filehash' framework.""" - homepage = "https://cloud.r-project.org/package=filehash" - url = "https://cloud.r-project.org/src/contrib/filehash_2.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/filehash" + cran = "filehash" version('2.4-2', sha256='b6d056f75d45e315943a4618f5f62802612cd8931ba3f9f474b595140a3cfb93') version('2.4-1', sha256='d0e087d338d89372c251c18fc93b53fb24b1750ea154833216ff16aff3b1eaf4') diff --git a/var/spack/repos/builtin/packages/r-filelock/package.py b/var/spack/repos/builtin/packages/r-filelock/package.py new file mode 100644 index 00000000000000..552a3fd6546e13 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-filelock/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RFilelock(RPackage): + """Portable File Locking. + + Place an exclusive or shared lock on a file. It uses 'LockFile' on Windows + and 'fcntl' locks on Unix-like systems.""" + + cran = "filelock" + + 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')) diff --git a/var/spack/repos/builtin/packages/r-findpython/package.py b/var/spack/repos/builtin/packages/r-findpython/package.py index ca1d51a327947d..516cc65f1b7031 100644 --- a/var/spack/repos/builtin/packages/r-findpython/package.py +++ b/var/spack/repos/builtin/packages/r-findpython/package.py @@ -9,10 +9,9 @@ class RFindpython(RPackage): """Package designed to find an acceptable python binary.""" - homepage = "https://github.com/trevorld/findpython" - url = "https://cloud.r-project.org/src/contrib/findpython_1.0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/findpython" + cran = "findpython" + version('1.0.7', sha256='59f904b9c2ec84b589380de59d13afbf14d1ec3b670e3a07e820298aaf04c149') version('1.0.5', sha256='3e9a21988cb78833769b02680d128a0cc01bcb41aa9c9725ab1742f349759145') version('1.0.4', sha256='a58fb46d53d3bdea1e00b2f4f9bdb5e98be9329ea9d8e2fe150d91462e6bccfd') version('1.0.3', sha256='5486535ae2f0a123b630d8eabf93a61b730765f55dfcc8ef4f6e56e7c49408f8') diff --git a/var/spack/repos/builtin/packages/r-fit-models/package.py b/var/spack/repos/builtin/packages/r-fit-models/package.py index 52dd6a557d3d16..85933ca59b5216 100644 --- a/var/spack/repos/builtin/packages/r-fit-models/package.py +++ b/var/spack/repos/builtin/packages/r-fit-models/package.py @@ -7,7 +7,7 @@ class RFitModels(RPackage): - """Compare Fitted Models + """Compare Fitted Models. The fit.models function and its associated methods (coefficients, print, summary, plot, etc.) were originally provided in the robust package to @@ -19,9 +19,7 @@ class RFitModels(RPackage): methods (e.g., classical, robust, Bayesian, regularized, etc.) more generally.""" - homepage = "https://cloud.r-project.org/package=fit.models" - url = "https://cloud.r-project.org/src/contrib/fit.models_0.5-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fit.models" + cran = "fit.models" version('0.64', sha256='f70806bfa85a05337fa5a665264d640e307584714a07a329fbe96c86b0e864da') version('0.5-14', sha256='93b9d119e97b36c648a19c891fc5e69f5306eb5b9bac16bf377555057afd4b6e') diff --git a/var/spack/repos/builtin/packages/r-fitdistrplus/package.py b/var/spack/repos/builtin/packages/r-fitdistrplus/package.py index 2e2393e1df6dba..5d21466bb40641 100644 --- a/var/spack/repos/builtin/packages/r-fitdistrplus/package.py +++ b/var/spack/repos/builtin/packages/r-fitdistrplus/package.py @@ -7,7 +7,8 @@ class RFitdistrplus(RPackage): - """Help to Fit of a Parametric Distribution to Non-Censored or Censored Data + """Help to Fit of a Parametric Distribution to Non-Censored or Censored + Data. Extends the fitdistr() function (of the MASS package) with several functions to help the fit of a parametric distribution to non-censored or @@ -19,14 +20,15 @@ class RFitdistrplus(RPackage): versions of MLE, MME and QME are available. See e.g. Casella & Berger (2002). Statistical inference. Pacific Grove.""" - homepage = "https://lbbe.univ-lyon1.fr/fitdistrplus.html" - url = "https://cloud.r-project.org/src/contrib/fitdistrplus_1.0-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fitdistrplus" + cran = "fitdistrplus" + version('1.1-6', sha256='17c2990041a3bb7479f3c3a6d13d96c989db8eaddab17eff7e1fbe172a5b96be') version('1.1-3', sha256='776d5456e14398e44b78b3d7db526559bb7a3537e546a29c88aa192141c756de') version('1.0-14', sha256='85082590f62aa08d99048ea3414c5cc1e5b780d97b3779d2397c6cb435470083') depends_on('r@3.2.0:', type=('build', 'run')) + 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-npsurv', when='@:1.0-14', type=('build', 'run')) + + depends_on('r-npsurv', type=('build', 'run'), when='@:1.0-14') diff --git a/var/spack/repos/builtin/packages/r-flashclust/package.py b/var/spack/repos/builtin/packages/r-flashclust/package.py index dc956a56fcfd1d..ceb4be76637b75 100644 --- a/var/spack/repos/builtin/packages/r-flashclust/package.py +++ b/var/spack/repos/builtin/packages/r-flashclust/package.py @@ -7,11 +7,9 @@ class RFlashclust(RPackage): - """flashClust: Implementation of optimal hierarchical clustering""" + """Implementation of optimal hierarchical clustering.""" - homepage = "https://cloud.r-project.org/package=flashClust" - url = "https://cloud.r-project.org/src/contrib/flashClust_1.01-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/flashClust" + cran = "flashClust" version('1.01-2', sha256='48a7849bb86530465ff3fbfac1c273f0df4b846e67d5eee87187d250c8bf9450') diff --git a/var/spack/repos/builtin/packages/r-flexclust/package.py b/var/spack/repos/builtin/packages/r-flexclust/package.py index 508f11d4987b96..04d86bc30665c6 100644 --- a/var/spack/repos/builtin/packages/r-flexclust/package.py +++ b/var/spack/repos/builtin/packages/r-flexclust/package.py @@ -7,7 +7,9 @@ class RFlexclust(RPackage): - """The main function kcca implements a general framework for k-centroids + """Flexible Cluster Algorithms. + + The main function kcca implements a general framework for k-centroids cluster analysis supporting arbitrary distance measures and centroid computation. Further cluster methods include hard competitive learning, neural gas, and QT clustering. There are numerous visualization methods for @@ -15,9 +17,7 @@ class RFlexclust(RPackage): centroids, ...), and bootstrap methods for the analysis of cluster stability.""" - homepage = "https://cloud.r-project.org/package=flexclust" - url = "https://cloud.r-project.org/src/contrib/flexclust_1.3-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/flexclust" + cran = "flexclust" version('1.4-0', sha256='82fe445075a795c724644864c7ee803c5dd332a89ea9e6ccf7cd1ae2d1ecfc74') version('1.3-5', sha256='dbf49969c93a7b314d9dc3299a0764ed9a804ba7dcbdc08a1235f244f4b85059') diff --git a/var/spack/repos/builtin/packages/r-flexmix/package.py b/var/spack/repos/builtin/packages/r-flexmix/package.py index 8bd7952261f9d6..3aebc2812b0c55 100644 --- a/var/spack/repos/builtin/packages/r-flexmix/package.py +++ b/var/spack/repos/builtin/packages/r-flexmix/package.py @@ -7,7 +7,7 @@ class RFlexmix(RPackage): - """Flexible Mixture Modeling + """Flexible Mixture Modeling. A general framework for finite mixtures of regression models using the EM algorithm is implemented. The E-step and all data handling are provided, @@ -15,9 +15,7 @@ class RFlexmix(RPackage): Existing drivers implement mixtures of standard linear models, generalized linear models and model-based clustering.""" - homepage = "https://cloud.r-project.org/package=flexmix" - url = "https://cloud.r-project.org/src/contrib/flexmix_2.3-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/flexmix" + cran = "flexmix" version('2.3-17', sha256='36019b7833032409ac61720dd625fa5a581a1d8bcba9045b04979c90907b5649') version('2.3-15', sha256='ba444c0bfe33ab87d440ab590c06b03605710acd75811c1622253171bb123f43') diff --git a/var/spack/repos/builtin/packages/r-fnn/package.py b/var/spack/repos/builtin/packages/r-fnn/package.py index ae18d71adeec4b..f54d5f881b94e1 100644 --- a/var/spack/repos/builtin/packages/r-fnn/package.py +++ b/var/spack/repos/builtin/packages/r-fnn/package.py @@ -7,13 +7,13 @@ class RFnn(RPackage): - """Cover-tree and kd-tree fast k-nearest neighbor search algorithms and + """Fast Nearest Neighbor Search Algorithms and Applications. + + Cover-tree and kd-tree fast k-nearest neighbor search algorithms and related applications including KNN classification, regression and information measures are implemented.""" - homepage = "https://cloud.r-project.org/package=FNN" - url = "https://cloud.r-project.org/src/contrib/FNN_1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/FNN" + cran = "FNN" version('1.1.3', sha256='de763a25c9cfbd19d144586b9ed158135ec49cf7b812938954be54eb2dc59432') version('1.1.2.2', sha256='b51a60fbbeff58c48cc90c2023c48972d5082d68efd02284c17ccd9820986326') diff --git a/var/spack/repos/builtin/packages/r-fontawesome/package.py b/var/spack/repos/builtin/packages/r-fontawesome/package.py new file mode 100644 index 00000000000000..0e3672d4297bc4 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-fontawesome/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2022 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 import * + + +class RFontawesome(RPackage): + """Easily Work with 'Font Awesome' Icons. + + Easily and flexibly insert 'Font Awesome' icons into 'R Markdown' documents + and 'Shiny' apps. These icons can be inserted into HTML content through + inline 'SVG' tags or 'i' tags. There is also a utility function for + exporting 'Font Awesome' icons as 'PNG' images for those situations where + raster graphics are needed.""" + + cran = "fontawesome" + + version('0.2.2', sha256='572db64d1b3c9be301935e0ca7baec69f3a6e0aa802e23f1f224b3724259df64') + + depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r-rlang@0.4.10:', type=('build', 'run')) + depends_on('r-htmltools@0.5.1.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-forcats/package.py b/var/spack/repos/builtin/packages/r-forcats/package.py index 686eb8acfdebe8..2aa1cbd379afa3 100644 --- a/var/spack/repos/builtin/packages/r-forcats/package.py +++ b/var/spack/repos/builtin/packages/r-forcats/package.py @@ -7,14 +7,13 @@ class RForcats(RPackage): - """Tools for Working with Categorical Variables (Factors) + """Tools for Working with Categorical Variables (Factors). Helpers for reordering factor levels (including moving specified levels to front, ordering by first appearance, reversing, and randomly shuffling), and tools for modifying factor levels (including collapsing rare levels into other, 'anonymising', and manually 'recoding').""" - homepage = "https://forcats.tidyverse.org/" cran = "forcats" version('0.5.1', sha256='c4fb96e874e2bedaa8a1aa32ea22abdee7906d93b5c5c7b42c0894c0c5b6a289') @@ -24,8 +23,8 @@ class RForcats(RPackage): version('0.2.0', sha256='b5bce370422d4c0ec9509249ae645373949bfbe9217cdf50dce2bfbdad9f7cd7') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@0.5.0:', type=('build', 'run')) - depends_on('r-ellipsis', when='@0.4.0:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@0.5.0:') + depends_on('r-ellipsis', type=('build', 'run'), when='@0.4.0:') depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-rlang', when='@0.4.0:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@0.4.0:') depends_on('r-tibble', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-foreach/package.py b/var/spack/repos/builtin/packages/r-foreach/package.py index d0f62d0f6a4225..e26cb925b535b2 100644 --- a/var/spack/repos/builtin/packages/r-foreach/package.py +++ b/var/spack/repos/builtin/packages/r-foreach/package.py @@ -7,20 +7,19 @@ class RForeach(RPackage): - """Provides Foreach Looping Construct + """Provides Foreach Looping Construct. - Support for the foreach looping construct. Foreach is an idiom that - allows for iterating over elements in a collection, without the use of an - explicit loop counter. This package in particular is intended to be used - for its return value, rather than for its side effects. In that sense, it - is similar to the standard lapply function, but doesn't require the - evaluation of a function. Using foreach without side effects also - facilitates executing the loop in parallel.""" + Support for the foreach looping construct. Foreach is an idiom that allows + for iterating over elements in a collection, without the use of an explicit + loop counter. This package in particular is intended to be used for its + return value, rather than for its side effects. In that sense, it is + similar to the standard lapply function, but doesn't require the evaluation + of a function. Using foreach without side effects also facilitates + executing the loop in parallel.""" - homepage = "https://cloud.r-project.org/package=foreach" - url = "https://cloud.r-project.org/src/contrib/foreach_1.4.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/foreach" + cran = "foreach" + version('1.5.2', sha256='56338d8753f9f68f262cf532fd8a6d0fe25a71a2ff0107f3ce378feb926bafe4') version('1.5.1', sha256='fb5ad69e295618c52b2ac7dff84a0771462870a97345374d43b3de2dc31a68e1') version('1.4.7', sha256='95632c0b1182fc01490718d82fa3b2bce864f2a011ae53282431c7c2a3f5f160') version('1.4.3', sha256='1ef03f770f726a62e3753f2402eb26b226245958fa99d570d003fc9e47d35881') diff --git a/var/spack/repos/builtin/packages/r-forecast/package.py b/var/spack/repos/builtin/packages/r-forecast/package.py index d4094183435272..77fdd9cc8d68ac 100644 --- a/var/spack/repos/builtin/packages/r-forecast/package.py +++ b/var/spack/repos/builtin/packages/r-forecast/package.py @@ -7,16 +7,16 @@ class RForecast(RPackage): - """Forecasting Functions for Time Series and Linear Models + """Forecasting Functions for Time Series and Linear Models. - Methods and tools for displaying and analysing univariate time - series forecasts including exponential smoothing via state space - models and automatic ARIMA modelling.""" + Methods and tools for displaying and analysing univariate time series + forecasts including exponential smoothing via state space models and + automatic ARIMA modelling.""" - homepage = "https://cloud.r-project.org/package=forecast" - url = "https://cloud.r-project.org/src/contrib/forecast_8.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/forecast" + cran = "forecast" + version('8.16', sha256='9f01eb895a883a7e1e23725b167b46edc1b0b152fd4120278aaa5f7b2621767f') + version('8.15', sha256='c73aabed083095b457ed875c240716686fbd41d1cbafa116b7b890a54b919174') version('8.13', sha256='490e3a2beb71c238dd26e7afa0b33394b9906dd0dc54712d4808894d5aa1386f') version('8.8', sha256='d077074d77d3ea00e9215c828b3689a8c841a16af1e6859bb2dfdede081c2c1d') version('8.6', sha256='4279e4f700e26310bae39419ab4a9b5918a850148667a5e577a4807d53eb4d02') @@ -32,6 +32,6 @@ class RForecast(RPackage): depends_on('r-rcpp@0.11.0:', type=('build', 'run')) depends_on('r-timedate', type=('build', 'run')) depends_on('r-tseries', type=('build', 'run')) - depends_on('r-urca', when='@8.6:', type=('build', 'run')) + depends_on('r-urca', type=('build', 'run'), when='@8.6:') 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 d5c04e355cb767..49bc58802a910f 100644 --- a/var/spack/repos/builtin/packages/r-foreign/package.py +++ b/var/spack/repos/builtin/packages/r-foreign/package.py @@ -14,14 +14,13 @@ class RForeign(RPackage): 'S', 'SAS', 'SPSS', 'Stata', 'Systat', 'Weka', and for reading and writing some 'dBase' files.""" - homepage = "https://cloud.r-project.org/package=foreign" - url = "https://cloud.r-project.org/src/contrib/foreign_0.8-66.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/foreign" + cran = "foreign" + version('0.8-82', sha256='f8ed0684d59bec7f3a39cde1aa5ec7b3e6e36aaecacb28120c9c54f7b13f80fb') version('0.8-81', sha256='1ae8f9f18f2a037697fa1a9060417ff255c71764f0145080b2bd23ba8262992c') version('0.8-72', sha256='439c17c9cd387e180b1bb640efff3ed1696b1016d0f7b3b3b884e89884488c88') version('0.8-70.2', sha256='ae82fad68159860b8ca75b49538406ef3d2522818e649d7ccc209c18085ef179') version('0.8-66', sha256='d7401e5fcab9ce6e697d3520dbb8475e229c30341c0004c4fa489c82aa4447a4') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@0.8-81:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@0.8-81:') diff --git a/var/spack/repos/builtin/packages/r-formatr/package.py b/var/spack/repos/builtin/packages/r-formatr/package.py index 9489d7288eac38..c503293619421f 100644 --- a/var/spack/repos/builtin/packages/r-formatr/package.py +++ b/var/spack/repos/builtin/packages/r-formatr/package.py @@ -8,19 +8,21 @@ class RFormatr(RPackage): - """Provides a function tidy_source() to format R source code. Spaces and + """Format R Code Automatically. + + Provides a function tidy_source() to format R source code. Spaces and indent will be added to the code automatically, and comments will be preserved under certain conditions, so that R code will be more human-readable and tidy. There is also a Shiny app as a user interface in this package.""" - homepage = "https://cloud.r-project.org/package=formatR" - url = "https://cloud.r-project.org/src/contrib/formatR_1.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/formatR" + cran = "formatR" + version('1.11', sha256='bd81662d09cf363652761e63ba5969c71be4dd5ae6fc9098f440d6729254a30c') version('1.7', sha256='a366621b3ff5f8e86a499b6f87858ad47eefdace138341b1377ecc307a5e5ddb') version('1.6', sha256='f5c98f0c3506ca51599671a2cdbc17738d0f326e8e3bb18b7a38e9f172122229') version('1.5', sha256='874c197ae3720ec11b44984a055655b99a698e1912104eb9034c11fdf6104da7') version('1.4', sha256='6ec47a7b1f18efb5fd7559b81427363b66415d81cded9d5e7e2907e900b67ebb') depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r@3.2.3:', type=('build', 'run'), when='@1.11:') diff --git a/var/spack/repos/builtin/packages/r-formula/package.py b/var/spack/repos/builtin/packages/r-formula/package.py index 0bc92df4ce4a14..413cd6138025ab 100644 --- a/var/spack/repos/builtin/packages/r-formula/package.py +++ b/var/spack/repos/builtin/packages/r-formula/package.py @@ -8,15 +8,13 @@ class RFormula(RPackage): - """Extended Model Formulas + """Extended Model Formulas. Infrastructure for extended formulas with multiple parts on the right-hand side and/or multiple responses on the left-hand side (see ).""" - homepage = "https://cloud.r-project.org/package=Formula" - url = "https://cloud.r-project.org/src/contrib/Formula_1.2-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Formula" + cran = "Formula" version('1.2-4', sha256='cb70e373b5ed2fc8450937fb3321d37dfd22dcc6f07cb872a419d51205125caf') version('1.2-3', sha256='1411349b20bd09611a9fd0ee6d15f780c758ad2b0e490e908facb49433823872') diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py index a052275b82eb35..d5d626c31b5f92 100644 --- a/var/spack/repos/builtin/packages/r-fpc/package.py +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -7,7 +7,7 @@ class RFpc(RPackage): - """Flexible Procedures for Clustering + """Flexible Procedures for Clustering. Various methods for clustering and cluster validation. Fixed point clustering. Linear regression clustering. Clustering by merging Gaussian @@ -26,9 +26,7 @@ class RFpc(RPackage): Modality diagnosis for Gaussian mixtures. For an overview see package?fpc.""" - homepage = "https://www.homepages.ucl.ac.uk/~ucakche" - url = "https://cloud.r-project.org/src/contrib/fpc_2.1-10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fpc" + cran = "fpc" version('2.2-9', sha256='29b0006e96c8645645d215d3378551bd6525aaf45abde2d9f12933cf6e75fa38') version('2.2-3', sha256='8100a74e6ff96b1cd65fd22494f2d200e54ea5ea533cfca321fa494914bdc3b7') @@ -45,5 +43,6 @@ class RFpc(RPackage): depends_on('r-diptest', type=('build', 'run')) depends_on('r-robustbase', type=('build', 'run')) depends_on('r-kernlab', type=('build', 'run')) - depends_on('r-trimcluster', when='@:2.1-10', type=('build', 'run')) - depends_on('r-mvtnorm', when='@:2.2-2', type=('build', 'run')) + + depends_on('r-trimcluster', type=('build', 'run'), when='@:2.1-10') + depends_on('r-mvtnorm', type=('build', 'run'), when='@:2.2-2') diff --git a/var/spack/repos/builtin/packages/r-fpcompare/package.py b/var/spack/repos/builtin/packages/r-fpcompare/package.py index d8e5b2cdd667a0..c1fe27160e50ff 100644 --- a/var/spack/repos/builtin/packages/r-fpcompare/package.py +++ b/var/spack/repos/builtin/packages/r-fpcompare/package.py @@ -7,20 +7,18 @@ class RFpcompare(RPackage): - """Reliable Comparison of Floating Point Numbers + """Reliable Comparison of Floating Point Numbers. Comparisons of floating point numbers are problematic due to errors - associated with the binary representation of decimal numbers. Despite - being aware of these problems, people still use numerical methods - that fail to account for these and other rounding errors (this pitfall - is the first to be highlighted in Circle 1 of Burns (2012) 'The R - Inferno' ). This - package provides new relational operators useful for performing - floating point number comparisons with a set tolerance.""" - - homepage = "https://github.com/PredictiveEcology/fpCompare" - url = "https://cloud.r-project.org/src/contrib/fpCompare_0.2.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fpCompare" + associated with the binary representation of decimal numbers. Despite being + aware of these problems, people still use numerical methods that fail to + account for these and other rounding errors (this pitfall is the first to + be highlighted in Circle 1 of Burns (2012) 'The R Inferno' + ). This package + provides new relational operators useful for performing floating point + number comparisons with a set tolerance.""" + + cran = "fpCompare" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-fracdiff/package.py b/var/spack/repos/builtin/packages/r-fracdiff/package.py index 25ee5759fc8c44..b87bad62556d52 100644 --- a/var/spack/repos/builtin/packages/r-fracdiff/package.py +++ b/var/spack/repos/builtin/packages/r-fracdiff/package.py @@ -7,16 +7,14 @@ class RFracdiff(RPackage): - """Fractionally Differenced ARIMA aka ARFIMA(P,d,q) Models + """Fractionally Differenced ARIMA aka ARFIMA(P,d,q) Models. Maximum likelihood estimation of the parameters of a fractionally differenced ARIMA(p,d,q) model (Haslett and Raftery, Appl.Statistics, 1989); including inference and basic methods. Some alternative algorithms to estimate "H".""" - homepage = "https://cloud.r-project.org/package=fracdiff" - url = "https://cloud.r-project.org/src/contrib/fracdiff_1.4-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fracdiff" + cran = "fracdiff" 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 8ae9563ba97d30..1d90807c3ce4e8 100644 --- a/var/spack/repos/builtin/packages/r-fs/package.py +++ b/var/spack/repos/builtin/packages/r-fs/package.py @@ -7,18 +7,18 @@ class RFs(RPackage): - """Cross-Platform File System Operations Based on 'libuv' + """Cross-Platform File System Operations Based on 'libuv'. - A cross-platform interface to file system operations, built on top of - the 'libuv' C library.""" + A cross-platform interface to file system operations, built on top of the + 'libuv' C library.""" - homepage = "https://ggplot2.tidyverse.org/" - url = "https://cloud.r-project.org/src/contrib/fs_1.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/fs" + cran = "fs" + version('1.5.2', sha256='35cad1781d6d17c1feb56adc4607079c6844b63794d0ce1e74bb18dbc11e1987') version('1.5.0', sha256='36df1653571de3c628a4f769c4627f6ac53d0f9e4106d9d476afb22ae9603897') version('1.3.1', sha256='d6934dca8f835d8173e3fb9fd4d5e2740c8c04348dd2bcc57df1b711facb46bc') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r-rcpp', when='@:1.3.1', type=('build', 'run')) 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-futile-logger/package.py b/var/spack/repos/builtin/packages/r-futile-logger/package.py index e1a06817b63e8b..ff9f032de1ca49 100644 --- a/var/spack/repos/builtin/packages/r-futile-logger/package.py +++ b/var/spack/repos/builtin/packages/r-futile-logger/package.py @@ -7,13 +7,13 @@ class RFutileLogger(RPackage): - """Provides a simple yet powerful logging utility. Based loosely on log4j, - futile.logger takes advantage of R idioms to make logging a convenient - and easy to use replacement for cat and print statements.""" + """A Logging Utility for R. - homepage = "https://cloud.r-project.org/package=futile.logger" - url = "https://cloud.r-project.org/src/contrib/futile.logger_1.4.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/futile.logger" + Provides a simple yet powerful logging utility. Based loosely on log4j, + futile.logger takes advantage of R idioms to make logging a convenient and + easy to use replacement for cat and print statements.""" + + cran = "futile.logger" version('1.4.3', sha256='5e8b32d65f77a86d17d90fd8690fc085aa0612df8018e4d6d6c1a60fa65776e4') diff --git a/var/spack/repos/builtin/packages/r-futile-options/package.py b/var/spack/repos/builtin/packages/r-futile-options/package.py index 7c5c2c188c6d2a..4ee3ad15976c95 100644 --- a/var/spack/repos/builtin/packages/r-futile-options/package.py +++ b/var/spack/repos/builtin/packages/r-futile-options/package.py @@ -7,11 +7,11 @@ class RFutileOptions(RPackage): - """A scoped options management framework""" + """Futile Options Management. - homepage = "https://cloud.r-project.org/package=futile.options" - url = "https://cloud.r-project.org/src/contrib/futile.options_1.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/futile.options" + A scoped options management framework.""" + + cran = "futile.options" version('1.0.1', sha256='7a9cc974e09598077b242a1069f7fbf4fa7f85ffe25067f6c4c32314ef532570') version('1.0.0', sha256='ee84ece359397fbb63f145d11af678f5c8618570971e78cc64ac60dc0d14e8c2') 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 6db2f3dca0e6a1..4ffc0d3c567bec 100644 --- a/var/spack/repos/builtin/packages/r-future-apply/package.py +++ b/var/spack/repos/builtin/packages/r-future-apply/package.py @@ -7,7 +7,7 @@ class RFutureApply(RPackage): - """Apply Function to Elements in Parallel using Futures + """Apply Function to Elements in Parallel using Futures. Implementations of apply(), by(), eapply(), lapply(), Map(), mapply(), replicate(), sapply(), tapply(), and vapply() that can be resolved using @@ -17,15 +17,16 @@ class RFutureApply(RPackage): with the additional feature of being able to be processed via the future framework.""" - homepage = "https://github.com/HenrikBengtsson/future.apply" - url = "https://cloud.r-project.org/src/contrib/future.apply_1.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/future.apply" + cran = "future.apply" + version('1.8.1', sha256='0d5bc3cb0289665bb27ae4ccad51fcc5ebf6dca46872b0a4e57790b9dc0aa6c7') version('1.7.0', sha256='2ffa6adb55f239918ce9679b7eac8dcc4bf2e6bed35c9cbedf4bf90d906345db') version('1.3.0', sha256='6374eca49bb81e05c013509c8e324cf9c5d023f9f8217b29ce7b7e12025ca371') depends_on('r@3.2.0:', type=('build', 'run')) depends_on('r-future@1.13.0:', type=('build', 'run')) - depends_on('r-future@1.17.0:', when='@1.7.0:', type=('build', 'run')) + depends_on('r-future@1.17.0:', type=('build', 'run'), when='@1.7.0:') + depends_on('r-future@1.21.0:', type=('build', 'run'), when='@1.8.1:') depends_on('r-globals@0.12.4:', type=('build', 'run')) - depends_on('r-globals@0.12.5:', when='@1.7.0:', type=('build', 'run')) + depends_on('r-globals@0.12.5:', type=('build', 'run'), when='@1.7.0:') + depends_on('r-globals@0.14.0:', type=('build', 'run'), when='@1.8.1:') diff --git a/var/spack/repos/builtin/packages/r-future/package.py b/var/spack/repos/builtin/packages/r-future/package.py index aa1f03aaa14ae3..ad5d3d86fd701c 100644 --- a/var/spack/repos/builtin/packages/r-future/package.py +++ b/var/spack/repos/builtin/packages/r-future/package.py @@ -7,12 +7,12 @@ class RFuture(RPackage): - """Unified Parallel and Distributed Processing in R for Everyone + """Unified Parallel and Distributed Processing in R for Everyone. - The purpose of this package is to provide a lightweight and unified - Future API for sequential and parallel processing of R expression via - futures. The simplest way to evaluate an expression in parallel is to use - 'x %<-% { expression }' with 'plan(multiprocess)'. This package implements + The purpose of this package is to provide a lightweight and unified Future + API for sequential and parallel processing of R expression via futures. The + simplest way to evaluate an expression in parallel is to use 'x %<-% { + expression }' with 'plan(multiprocess)'. This package implements sequential, multicore, multisession, and cluster futures. With these, R expressions can be evaluated on the local machine, in parallel a set of local machines, or distributed on a mix of local and remote machines. @@ -24,18 +24,20 @@ class RFuture(RPackage): automatically identified and exported as needed, making it straightforward to tweak existing code to make use of futures.""" - homepage = "https://github.com/HenrikBengtsson/future" cran = "future" + version('1.24.0', sha256='7b8b212ba0e9d6303bfc15c512e6cf9b5db3a7aa0b2462d2e15cdd84dd09b276') + version('1.23.0', sha256='d869c80e837c0937a414b8050deff081aefeac586b796f3d634d64f0f4fdb8f8') version('1.22.1', sha256='87b24a85caf08e1d809eab28f9258444105cd7788eee2e3e2f21727ba3bbedcd') version('1.21.0', sha256='909e6602068eba543a6d2e464b911123cc29efdb600a7000eff0e5624ff0d12d') version('1.14.0', sha256='0a535010d97a01b21aaf9d863603e44359335e273019c1e1980bbb5b2917dbcb') depends_on('r-digest', type=('build', 'run')) depends_on('r-globals@0.12.4:', type=('build', 'run')) - depends_on('r-globals@0.13.1:', when='@1.21.0:', type=('build', 'run')) - depends_on('r-globals@0.14.0:', when='@1.22.0:', type=('build', 'run')) + depends_on('r-globals@0.13.1:', type=('build', 'run'), when='@1.21.0:') + depends_on('r-globals@0.14.0:', type=('build', 'run'), when='@1.22.0:') depends_on('r-listenv@0.7.0:', type=('build', 'run')) - depends_on('r-listenv@0.8.0:', when='@1.21.0:', type=('build', 'run')) - depends_on('r-parallelly@1.21.0:', when='@1.21.0:', type=('build', 'run')) - depends_on('r-parallelly@1.26.1:', when='@1.22.0:', type=('build', 'run')) + depends_on('r-listenv@0.8.0:', type=('build', 'run'), when='@1.21.0:') + depends_on('r-parallelly@1.21.0:', type=('build', 'run'), when='@1.21.0:') + depends_on('r-parallelly@1.26.1:', type=('build', 'run'), when='@1.22.0:') + depends_on('r-parallelly@1.30.0:', type=('build', 'run'), when='@1.24.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 287d43401009bb..7e97a464522aeb 100644 --- a/var/spack/repos/builtin/packages/r-gamlss-data/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss-data/package.py @@ -7,14 +7,18 @@ class RGamlssData(RPackage): - """gamlss.data: GAMLSS Data""" + """GAMLSS Data. - homepage = "https://cloud.r-project.org/package=gamlss.data" - url = "https://cloud.r-project.org/src/contrib/gamlss.data_5.1-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gamlss.data/" + Data used as examples in the current two books on Generalised Additive + Models for Location Scale and Shape introduced by Rigby and Stasinopoulos + (2005), .""" + cran = "gamlss.data" + + version('6.0-2', sha256='dbb3b6f855540928ccdbda497f8d552144895e34565799e8b595e704096db71e') version('5.1-4', sha256='0d3777d8c3cd76cef273aa6bde40a91688719be401195ed9bfd1e85bd7d5eeb5') version('5.1-3', sha256='4941180e7eebe97678ba02ca24c2a797bcb69d92cd34600215a94110e2a70470') version('5.1-0', sha256='0aad438ea1aa6395677e52cd2cb496f9f4c9ba2d39edc92c8cb42e7fc91fe6c1') depends_on('r@2.10:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@6.0-2:') 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 1c7e0633ca9a9c..0cb7a58c6f91f9 100644 --- a/var/spack/repos/builtin/packages/r-gamlss-dist/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss-dist/package.py @@ -7,8 +7,8 @@ class RGamlssDist(RPackage): - """dist: Distributions for Generalized Additive Models for Location Scale - and Shape + """Distributions for Generalized Additive Models for Location Scale and + Shape. A set of distributions which can be used for modelling the response variables in Generalized Additive Models for Location Scale and Shape, @@ -19,10 +19,9 @@ class RGamlssDist(RPackage): infinity or 0 to 1, by using a ''log'' or a ''logit' transformation respectively.""" - homepage = "https://cloud.r-project.org/package=gamlss.dist" - url = "https://cloud.r-project.org/src/contrib/gamlss.dist_5.1-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gamlss.dist/" + cran = "gamlss.dist" + version('6.0-1', sha256='b563b4de6bcedcfa4f8d29198a47004e38fd2de6e0509c788015d4e3feb18154') version('5.1-7', sha256='9871c38c893a8df7874c533351858dfe4e7587c71021dbbf88c0c76ff3c0ef5b') version('5.1-4', sha256='343c6ca0fd8a1c1dfdf9ffc65c95d4dae0c6c80b3e60fccba003e5171f3d287e') version('5.1-3', sha256='87fd643c82579519b67c66c1d87383fa1e203e8b09f607649ee7bce142bda404') diff --git a/var/spack/repos/builtin/packages/r-gamlss/package.py b/var/spack/repos/builtin/packages/r-gamlss/package.py index 1c02d995aa907b..c57b195ce4ba51 100644 --- a/var/spack/repos/builtin/packages/r-gamlss/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss/package.py @@ -7,7 +7,7 @@ class RGamlss(RPackage): - """Generalised Additive Models for Location Scale and Shape + """Generalised Additive Models for Location Scale and Shape. Functions for fitting the Generalized Additive Models for Location Scale and Shape introduced by Rigby and Stasinopoulos (2005), @@ -16,10 +16,9 @@ class RGamlss(RPackage): distribution of the response variable are modelled using explanatory variables.""" - homepage = "https://cloud.r-project.org/package=gamlss" - url = "https://cloud.r-project.org/src/contrib/gamlss_5.1-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gamlss/" + cran = "gamlss" + version('5.3-4', sha256='72707187471fd35c5379ae8c9b7b0ca87e302557f09cb3979d1cdb2e2500b01a') version('5.2-0', sha256='d3927547109064cbe7b0f955144f53204b5dc86c6b2dbc8f0551a74140ab02e1') version('5.1-4', sha256='e2fc36fe6ca3a69d69cdafd9533a4ff35090fdfb01df126f6a49156f4aa3376c') version('5.1-3', sha256='d37d121bc2acdbacc20cea04a1ed4489a575079e2a7b17b4a9823ee283857317') diff --git a/var/spack/repos/builtin/packages/r-gamm4/package.py b/var/spack/repos/builtin/packages/r-gamm4/package.py index b3d817b265c374..b8d76204f810ea 100644 --- a/var/spack/repos/builtin/packages/r-gamm4/package.py +++ b/var/spack/repos/builtin/packages/r-gamm4/package.py @@ -7,12 +7,12 @@ class RGamm4(RPackage): - """Generalized Additive Mixed Models using 'mgcv' and 'lme4': + """Generalized Additive Mixed Models using 'mgcv' and 'lme4'. Estimate generalized additive mixed models via a version of function gamm() from 'mgcv', using 'lme4' for estimation.""" - cran = "gamm4" + cran = "gamm4" version('0.2-6', sha256='57c5b66582b2adc32f6a3bb6a259f5b95198e283a96d966a6007e8e48b380c89') diff --git a/var/spack/repos/builtin/packages/r-gargle/package.py b/var/spack/repos/builtin/packages/r-gargle/package.py index d33095972f24c1..ac2afcc418f1ff 100644 --- a/var/spack/repos/builtin/packages/r-gargle/package.py +++ b/var/spack/repos/builtin/packages/r-gargle/package.py @@ -14,8 +14,7 @@ class RGargle(RPackage): classes for handling common credential types and for preparing, executing, and processing HTTP requests.""" - homepage = "https://github.com/r-lib/gargle" - cran = "gargle" + cran = "gargle" version('1.2.0', sha256='4d46ca2933f19429ca5a2cfe47b4130a75c7cd9931c7758ade55bac0c091d73b') diff --git a/var/spack/repos/builtin/packages/r-gbm/package.py b/var/spack/repos/builtin/packages/r-gbm/package.py index bc2904d858ee9f..516971bcc51c0a 100644 --- a/var/spack/repos/builtin/packages/r-gbm/package.py +++ b/var/spack/repos/builtin/packages/r-gbm/package.py @@ -7,19 +7,16 @@ class RGbm(RPackage): - """Generalized Boosted Regression Models + """Generalized Boosted Regression Models. - An implementation of extensions to Freund and Schapire's AdaBoost - algorithm and Friedman's gradient boosting machine. Includes regression - methods for least squares, absolute loss, t-distribution loss, quantile - regression, logistic, multinomial logistic, Poisson, Cox proportional - hazards partial likelihood, AdaBoost exponential loss, Huberized hinge - loss, and Learning to Rank measures (LambdaMart). Originally developed by - Greg Ridgeway.""" + An implementation of extensions to Freund and Schapire's AdaBoost algorithm + and Friedman's gradient boosting machine. Includes regression methods for + least squares, absolute loss, t-distribution loss, quantile regression, + logistic, multinomial logistic, Poisson, Cox proportional hazards partial + likelihood, AdaBoost exponential loss, Huberized hinge loss, and Learning + to Rank measures (LambdaMart). Originally developed by Greg Ridgeway.""" - homepage = "https://cloud.r-project.org/package=gbm" - url = "https://cloud.r-project.org/src/contrib/gbm_2.1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gbm" + cran = "gbm" version('2.1.8', sha256='7d5de3b980b8f23275e86ac9bed48a497c9aa53c58e407dfd676309f38272ec1') version('2.1.5', sha256='06fbde10639dfa886554379b40a7402d1f1236a9152eca517e97738895a4466f') @@ -28,4 +25,5 @@ class RGbm(RPackage): depends_on('r@2.9.0:', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-survival', type=('build', 'run')) - depends_on('r-gridextra', when='@2.1.5', type=('build', 'run')) + + depends_on('r-gridextra', type=('build', 'run'), when='@2.1.5') diff --git a/var/spack/repos/builtin/packages/r-gbrd/package.py b/var/spack/repos/builtin/packages/r-gbrd/package.py index 842095de9a8eb6..e2bd9a42c4239b 100644 --- a/var/spack/repos/builtin/packages/r-gbrd/package.py +++ b/var/spack/repos/builtin/packages/r-gbrd/package.py @@ -7,11 +7,11 @@ class RGbrd(RPackage): - """Provides utilities for processing Rd objects and files. Extract argument + """Utilities for processing Rd objects and files. + + Provides utilities for processing Rd objects and files. Extract argument descriptions and other parts of the help pages of functions.""" - homepage = "https://cloud.r-project.org/package=gbRd" - url = "https://cloud.r-project.org/src/contrib/gbRd_0.4-11.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gbRd" + cran = "gbRd" version('0.4-11', sha256='0251f6dd6ca987a74acc4765838b858f1edb08b71dbad9e563669b58783ea91b') diff --git a/var/spack/repos/builtin/packages/r-gcrma/package.py b/var/spack/repos/builtin/packages/r-gcrma/package.py index 81672f24f9f2b2..7540ffa53c99bb 100644 --- a/var/spack/repos/builtin/packages/r-gcrma/package.py +++ b/var/spack/repos/builtin/packages/r-gcrma/package.py @@ -7,13 +7,13 @@ class RGcrma(RPackage): - """Background Adjustment Using Sequence Information + """Background Adjustment Using Sequence Information. Background adjustment using sequence information.""" - homepage = "https://bioconductor.org/packages/gcrma" - git = "https://git.bioconductor.org/packages/gcrma.git" + bioc = "gcrma" + version('2.66.0', commit='ba134b392def89d36b5639a187e0c25a4353457b') version('2.62.0', commit='b91bdf5bf4e875defedb4d4e3e1e75867773287a') version('2.56.0', commit='1f37bbfb4d3ed542b1e90704ab0fa8914d5e0224') version('2.54.0', commit='9515fdbbc766a2a3b2ec61cf530c57bbded77ccc') @@ -27,5 +27,6 @@ class RGcrma(RPackage): depends_on('r-affyio@1.13.3:', type=('build', 'run')) depends_on('r-xvector', type=('build', 'run')) depends_on('r-biostrings@2.11.32:', type=('build', 'run')) - depends_on('r-biocmanager', when='@2.54.0:', type=('build', 'run')) - depends_on('r-biocinstaller', when='@:2.52.0', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@2.54.0:') + + depends_on('r-biocinstaller', type=('build', 'run'), when='@:2.52.0') diff --git a/var/spack/repos/builtin/packages/r-gdalutilities/package.py b/var/spack/repos/builtin/packages/r-gdalutilities/package.py new file mode 100644 index 00000000000000..154299fce153b5 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-gdalutilities/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2022 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 import * + + +class RGdalutilities(RPackage): + """Wrappers for 'GDAL' Utilities Executables. + + R's 'sf' package ships with self-contained 'GDAL' executables, including a + bare bones interface to several 'GDAL'-related utility programs + collectively known as the 'GDAL utilities'. For each of those utilities, + this package provides an R wrapper whose formal arguments closely mirror + those of the 'GDAL' command line interface. The utilities operate on data + stored in files and typically write their output to other files. Therefore, + to process data stored in any of R's more common spatial formats (i.e. + those supported by the 'sp', 'sf', and 'raster' packages), first write them + to disk, then process them with the package's wrapper functions before + reading the outputted results back into R. GDAL function arguments + introduced in GDAL version 3.2.1 or earlier are supported.""" + + cran = "gdalUtilities" + + version('1.2.0', sha256='ead446f7f77f952b72b9ed80c5e415cb9d8d30cfb2439c8d1a8156fa55e2b65b') + + depends_on('r-sf', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-gdalutils/package.py b/var/spack/repos/builtin/packages/r-gdalutils/package.py index 722700083cff5a..f6d30c4360781e 100644 --- a/var/spack/repos/builtin/packages/r-gdalutils/package.py +++ b/var/spack/repos/builtin/packages/r-gdalutils/package.py @@ -7,11 +7,10 @@ class RGdalutils(RPackage): - """Wrappers for the Geospatial Data Abstraction Library (GDAL) Utilities""" + """Wrappers for the Geospatial Data Abstraction Library (GDAL) + Utilities.""" - homepage = "https://cloud.r-project.org/package=gdalUtils" - url = "https://cloud.r-project.org/src/contrib/gdalUtils_2.0.1.14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gdalUtils" + cran = "gdalUtils" version('2.0.3.2', sha256='4c6faabee2db8a87b7ea0f8e67e9fce3c5db7f4be353d7d86ea559507cbb2a4f') version('2.0.1.14', sha256='890a502b2eb5f1b23655fab94caad5d32adca05b93f5db1d96d9dcde3f0e7737') diff --git a/var/spack/repos/builtin/packages/r-gdata/package.py b/var/spack/repos/builtin/packages/r-gdata/package.py index 945d3de9666d42..b336dbb3cf947e 100644 --- a/var/spack/repos/builtin/packages/r-gdata/package.py +++ b/var/spack/repos/builtin/packages/r-gdata/package.py @@ -7,27 +7,31 @@ class RGdata(RPackage): - """Various R programming tools for data manipulation, including: - medical - unit conversions ('ConvertMedUnits', 'MedUnits'), - combining objects - ('bindData', 'cbindX', 'combine', 'interleave'), - character vector - operations ('centerText', 'startsWith', 'trim'), - factor manipulation - ('levels', 'reorder.factor', 'mapLevels'), - obtaining information about R - objects ('object.size', 'elem', 'env', 'humanReadable', 'is.what', 'll', - 'keep', 'ls.funs', 'Args','nPairs', 'nobs'), - manipulating MS-Excel - formatted files ('read.xls', 'installXLSXsupport', 'sheetCount', - 'xlsFormats'), - generating fixed-width format files ('write.fwf'), - - extricating components of date & time objects ('getYear', 'getMonth', - 'getDay', 'getHour', 'getMin', 'getSec'), - operations on columns of data - frames ('matchcols', 'rename.vars'), - matrix operations ('unmatrix', - 'upperTriangle', 'lowerTriangle'), - operations on vectors ('case', - 'unknownToNA', 'duplicated2', 'trimSum'), - operations on data frames - ('frameApply', 'wideByFactor'), - value of last evaluated expression - ('ans'), and - wrapper for 'sample' that ensures consistent behavior for - both scalar and vector arguments ('resample').""" + """Various R Programming Tools for Data Manipulation. - homepage = "https://cloud.r-project.org/package=gdata" - url = "https://cloud.r-project.org/src/contrib/gdata_2.18.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gdata" + Various R programming tools for data manipulation, including: + [1] medical unit conversions ('ConvertMedUnits', 'MedUnits'), + [2] combining objects ('bindData', 'cbindX', 'combine', 'interleave'), + [3] character vector operations ('centerText', 'startsWith', 'trim'), + [4] factor manipulation ('levels', 'reorder.factor', 'mapLevels'), + [5] obtaining information about R objects ('object.size', 'elem', 'env', + 'humanReadable', 'is.what', 'll', 'keep', 'ls.funs', 'Args','nPairs', + 'nobs'), + [6] manipulating MS-Excel formatted files ('read.xls', + 'installXLSXsupport', 'sheetCount', 'xlsFormats'), + [7] generating fixed-width format files ('write.fwf'), + [8] extricating components of date & time objects ('getYear', 'getMonth', + 'getDay', 'getHour', 'getMin', 'getSec'), + [9] operations on columns of data frames ('matchcols', 'rename.vars'), + [10] matrix operations ('unmatrix', 'upperTriangle', 'lowerTriangle'), + [11] operations on vectors ('case', 'unknownToNA', 'duplicated2', + 'trimSum'), + [12] operations on data frames ('frameApply', 'wideByFactor'), + [13] value of last evaluated expression ('ans'), and + [14] wrapper for 'sample' that ensures consistent behavior for both scalar + and vector arguments ('resample').""" + + cran = "gdata" version('2.18.0', sha256='4b287f59f5bbf5fcbf18db16477852faac4a605b10c5284c46b93fa6e9918d7f') version('2.17.0', sha256='8097ec0e4868f6bf746f821cff7842f696e874bb3a84f1b2aa977ecd961c3e4e') diff --git a/var/spack/repos/builtin/packages/r-gdsfmt/package.py b/var/spack/repos/builtin/packages/r-gdsfmt/package.py index 38edbfae95027c..bc852366f49472 100644 --- a/var/spack/repos/builtin/packages/r-gdsfmt/package.py +++ b/var/spack/repos/builtin/packages/r-gdsfmt/package.py @@ -7,7 +7,7 @@ class RGdsfmt(RPackage): - """R Interface to CoreArray Genomic Data Structure (GDS) Files + """R Interface to CoreArray Genomic Data Structure (GDS) Files. This package provides a high-level R interface to CoreArray Genomic Data Structure (GDS) data files, which are portable across platforms with @@ -22,9 +22,9 @@ class RGdsfmt(RPackage): GDS file in parallel with multiple R processes supported by the package parallel.""" - homepage = "https://bioconductor.org/packages/gdsfmt" - git = "https://git.bioconductor.org/packages/gdsfmt.git" + bioc = "gdsfmt" + version('1.30.0', commit='d27dde6a70bb2295f5bbc8961152b45ccee7a652') version('1.26.1', commit='bd180b21b1ace120035f0da255cbf6f13088f069') version('1.20.0', commit='b1fbaba0a5ace3dc45daecc85168651cd85dce00') version('1.18.1', commit='b911b953e9db7988e93ec2010b0ab1e384d073c9') diff --git a/var/spack/repos/builtin/packages/r-geiger/package.py b/var/spack/repos/builtin/packages/r-geiger/package.py index 6ef9d5671800aa..4d1e5822b8d223 100644 --- a/var/spack/repos/builtin/packages/r-geiger/package.py +++ b/var/spack/repos/builtin/packages/r-geiger/package.py @@ -7,14 +7,12 @@ class RGeiger(RPackage): - """Analysis of Evolutionary Diversification + """Analysis of Evolutionary Diversification. Methods for fitting macroevolutionary models to phylogenetic trees Pennell (2014) .""" - homepage = "https://cloud.r-project.org/package=geiger" - url = "https://cloud.r-project.org/src/contrib/geiger_2.0.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/geiger" + cran = "geiger" version('2.0.7', sha256='d200736c4ad7ed4bc55a13e7d0126ddc7fed88e245cd5706d4692aaa437e9596') version('2.0.6.2', sha256='9153047b608d652821251206d1450bb3f517c8884379f498a695315574ae001d') @@ -32,4 +30,4 @@ class RGeiger(RPackage): depends_on('r-coda', type=('build', 'run')) depends_on('r-ncbit', type=('build', 'run')) depends_on('r-colorspace', type=('build', 'run')) - depends_on('r-phytools@0.7.31:', when='@2.0.7:', type=('build', 'run')) + depends_on('r-phytools@0.7.31:', type=('build', 'run'), when='@2.0.7:') diff --git a/var/spack/repos/builtin/packages/r-genefilter/package.py b/var/spack/repos/builtin/packages/r-genefilter/package.py index fb165fbc339edb..8b0a7b31753bc7 100644 --- a/var/spack/repos/builtin/packages/r-genefilter/package.py +++ b/var/spack/repos/builtin/packages/r-genefilter/package.py @@ -7,13 +7,13 @@ class RGenefilter(RPackage): - """genefilter: methods for filtering genes from high-throughput experiments + """Methods for filtering genes from high-throughput experiments. Some basic functions for filtering genes.""" - homepage = "https://bioconductor.org/packages/genefilter" - git = "https://git.bioconductor.org/packages/genefilter.git" + bioc = "genefilter" + version('1.76.0', commit='8d630fd25f0d2a4101e05e123c3959591203a7ea') version('1.72.1', commit='b01b00a766982ef7d80b90a252085c8c4f085e1b') version('1.72.0', commit='8cb0b2e73531a417d53e5625bcf436265cdbe101') version('1.66.0', commit='1c4c471ccca873bf92dcf0b50f611eaa64c4f0cf') @@ -22,9 +22,10 @@ class RGenefilter(RPackage): version('1.60.0', commit='c98f695253c330a9380b2b4ffa27f3b7d66773e4') version('1.58.1', commit='ace2556049677f60882adfe91f8cc96791556fc2') - depends_on('r-biocgenerics@0.31.2:', when='@1.68.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.31.2:', type=('build', 'run'), when='@1.68.0:') depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-annotate', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) depends_on('r-survival', type=('build', 'run')) - depends_on('r-s4vectors@0.9.42:', when='@:1.66.0', type=('build', 'run')) + + depends_on('r-s4vectors@0.9.42:', type=('build', 'run'), when='@:1.66.0') diff --git a/var/spack/repos/builtin/packages/r-genelendatabase/package.py b/var/spack/repos/builtin/packages/r-genelendatabase/package.py index 82df75212018cd..84402eeece18cf 100644 --- a/var/spack/repos/builtin/packages/r-genelendatabase/package.py +++ b/var/spack/repos/builtin/packages/r-genelendatabase/package.py @@ -7,14 +7,14 @@ class RGenelendatabase(RPackage): - """Lengths of mRNA transcripts for a number of genomes + """Lengths of mRNA transcripts for a number of genomes. Length of mRNA transcripts for a number of genomes and gene ID formats, largely based on UCSC table browser""" - homepage = "https://bioconductor.org/packages/geneLenDataBase" - git = "https://git.bioconductor.org/packages/geneLenDataBase.git" + bioc = "geneLenDataBase" + version('1.30.0', commit='b3cc755f1ffcbb2eacd9ea45e11f39f1639782b1') version('1.26.0', commit='2724715ae23a6647d1c0c6e934720aad9377d65e') version('1.20.0', commit='70a1abed00ee68f7bfa07c42c011f9edae9915e4') version('1.18.0', commit='77db87e5a4819bf94761fabef0d2ff741a1c5d07') diff --git a/var/spack/repos/builtin/packages/r-genemeta/package.py b/var/spack/repos/builtin/packages/r-genemeta/package.py index 97acead0f7a828..a0f8b4f9b86a60 100644 --- a/var/spack/repos/builtin/packages/r-genemeta/package.py +++ b/var/spack/repos/builtin/packages/r-genemeta/package.py @@ -7,14 +7,14 @@ class RGenemeta(RPackage): - """MetaAnalysis for High Throughput Experiments + """MetaAnalysis for High Throughput Experiments. A collection of meta-analysis tools for analysing high throughput experimental data""" - homepage = "https://bioconductor.org/packages/GeneMeta" - git = "https://git.bioconductor.org/packages/GeneMeta.git" + bioc = "GeneMeta" + version('1.66.0', commit='c16eb09492f08f6cc0f253fafa3fa5dce35dcdba') version('1.62.0', commit='eb4273ff5867e39592f50b97b454fa5e32b4a9bf') version('1.56.0', commit='cb2c9e353d34ea9f3db06cb236c7a89674f2682d') version('1.54.0', commit='932553cd8df82b7df804fccda9bfd4b0f36d79d7') diff --git a/var/spack/repos/builtin/packages/r-geneplotter/package.py b/var/spack/repos/builtin/packages/r-geneplotter/package.py index 7ce29e0de8d35e..34cbc6787478ea 100644 --- a/var/spack/repos/builtin/packages/r-geneplotter/package.py +++ b/var/spack/repos/builtin/packages/r-geneplotter/package.py @@ -7,13 +7,13 @@ class RGeneplotter(RPackage): - """Graphics related functions for Bioconductor + """Graphics related functions for Bioconductor. Functions for plotting genomic data.""" - homepage = "https://bioconductor.org/packages/geneplotter" - git = "https://git.bioconductor.org/packages/geneplotter.git" + bioc = "geneplotter" + version('1.72.0', commit='57a1d830ba7844fda5236af0153d5b5587634f96') version('1.68.0', commit='f1fea7e468fb24fdfa93ef4493600a4d8d183f69') version('1.62.0', commit='1fbaddde11014b453b131860409f89cd784e8e48') version('1.60.0', commit='6723a9fc0730e146187e79c2ddab6a68186dc5ad') diff --git a/var/spack/repos/builtin/packages/r-generics/package.py b/var/spack/repos/builtin/packages/r-generics/package.py index 3b1f8b1253ac76..2130bd8af0b7d1 100644 --- a/var/spack/repos/builtin/packages/r-generics/package.py +++ b/var/spack/repos/builtin/packages/r-generics/package.py @@ -7,12 +7,12 @@ class RGenerics(RPackage): - """Common S3 Generics not Provided by Base R Methods Related to Model Fitting + """Common S3 Generics not Provided by Base R Methods Related to Model + Fitting. - In order to reduce potential package dependencies and conflicts, - generics provides a number of commonly used S3 generics.""" + In order to reduce potential package dependencies and conflicts, generics + provides a number of commonly used S3 generics.""" - homepage = "https://github.com/r-lib/generics" cran = "generics" version('0.1.1', sha256='a2478ebf1a0faa8855a152f4e747ad969a800597434196ed1f71975a9eb11912') @@ -20,4 +20,4 @@ class RGenerics(RPackage): version('0.0.2', sha256='71b3d1b719ce89e71dd396ac8bc6aa5f1cd99bbbf03faff61dfbbee32fec6176') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@0.1.1:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@0.1.1:') diff --git a/var/spack/repos/builtin/packages/r-genetics/package.py b/var/spack/repos/builtin/packages/r-genetics/package.py index 3bce88dbf3f62a..9b91dd90f79273 100644 --- a/var/spack/repos/builtin/packages/r-genetics/package.py +++ b/var/spack/repos/builtin/packages/r-genetics/package.py @@ -7,12 +7,18 @@ class RGenetics(RPackage): - """genetics: Population Genetics""" + """Population Genetics. - homepage = "https://cloud.r-project.org/package=genetics" - url = "https://cloud.r-project.org/src/contrib/genetics_1.3.8.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/genetics" + Classes and methods for handling genetic data. Includes classes to + represent genotypes and haplotypes at single markers up to multiple markers + on multiple chromosomes. Function include allele frequencies, flagging + homo/heterozygotes, flagging carriers of certain alleles, estimating and + testing for Hardy-Weinberg disequilibrium, estimating and testing for + linkage disequilibrium, ...""" + cran = "genetics" + + version('1.3.8.1.3', sha256='fef2c95f6a57f32b3cf4acf003480439462bb28297c501c617de307bfeee9252') version('1.3.8.1.2', sha256='30cb67de2e901578fd802deb7fbfea6c93024c9fb6ea66cad88430a3a2a51eec') depends_on('r-combinat', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-genie3/package.py b/var/spack/repos/builtin/packages/r-genie3/package.py index 9c7ffa2bb3d9b3..86cb2613f51d4e 100644 --- a/var/spack/repos/builtin/packages/r-genie3/package.py +++ b/var/spack/repos/builtin/packages/r-genie3/package.py @@ -7,14 +7,14 @@ class RGenie3(RPackage): - """GEne Network Inference with Ensemble of trees + """GEne Network Inference with Ensemble of trees. This package implements the GENIE3 algorithm for inferring gene regulatory networks from expression data.""" - homepage = "https://bioconductor.org/packages/GENIE3" - git = "https://git.bioconductor.org/packages/GENIE3.git" + bioc = "GENIE3" + version('1.16.0', commit='5543b1b883d3a1c92e955de6668444278edc2bdf') version('1.12.0', commit='14289cee9bed113ab35ba03bcaac4a30e5784497') version('1.6.0', commit='d6a49182e098342afe77f01c322dfc7b72450502') version('1.4.3', commit='ae719c759f23f09d28fcf1acc45b860cd7761f08') @@ -22,3 +22,4 @@ class RGenie3(RPackage): version('1.0.0', commit='eb7c95ed12ea50d61e8fa20bc2b25ae9d74c302f') depends_on('r-reshape2', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run'), when='@1.16.0:') diff --git a/var/spack/repos/builtin/packages/r-genomeinfodb/package.py b/var/spack/repos/builtin/packages/r-genomeinfodb/package.py index e599b5386be194..99dc82df12ab45 100644 --- a/var/spack/repos/builtin/packages/r-genomeinfodb/package.py +++ b/var/spack/repos/builtin/packages/r-genomeinfodb/package.py @@ -8,16 +8,16 @@ class RGenomeinfodb(RPackage): """Utilities for manipulating chromosome names, including modifying them to - follow a particular naming style + follow a particular naming style. Contains data and functions that define and allow translation between different chromosome sequence naming conventions (e.g., "chr1" versus "1"), including a function that attempts to place sequence names in their natural, rather than lexicographic, order.""" - homepage = "https://bioconductor.org/packages/GenomeInfoDb" - git = "https://git.bioconductor.org/packages/GenomeInfoDb.git" + bioc = "GenomeInfoDb" + version('1.30.1', commit='bf8b385a2ffcecf9b41e581794056f267895863d') version('1.26.2', commit='96dd27a7e3ef476790b1475aab50dbbed7df67a2') version('1.20.0', commit='ea771e3b429ef17fb912fb37333556c6f77f2265') version('1.18.2', commit='557b75ea7734749a2650d30f5c5d52c57a6bcc6f') @@ -26,11 +26,13 @@ class RGenomeinfodb(RPackage): version('1.12.3', commit='2deef3f0571b7f622483257bc22d2509ab5a0369') depends_on('r@3.1:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.30.1:') depends_on('r-biocgenerics@0.13.8:', type=('build', 'run')) + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@1.30.1:') depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@1.16.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.25.12:', when='@1.26.2:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@1.16.0:') + depends_on('r-s4vectors@0.25.12:', type=('build', 'run'), when='@1.26.2:') depends_on('r-iranges@1.99.26:', type=('build', 'run')) - depends_on('r-iranges@2.13.12:', when='@1.16.0:', type=('build', 'run')) + depends_on('r-iranges@2.13.12:', type=('build', 'run'), when='@1.16.0:') depends_on('r-rcurl', type=('build', 'run')) depends_on('r-genomeinfodbdata', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py b/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py index bc301016f8c055..4c682a4a569dd5 100644 --- a/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py +++ b/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py @@ -10,8 +10,8 @@ class RGenomeinfodbdata(RPackage): """for mapping between NCBI taxonomy ID and species. Used by functions in the GenomeInfoDb package.""" - homepage = "https://bioconductor.org/packages/GenomeInfoDbData/" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/GenomeInfoDbData_0.99.0.tar.gz" + bioc = "GenomeInfoDbData" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/GenomeInfoDbData_0.99.0.tar.gz" version('1.2.7', url='https://bioconductor.org/packages/3.14/data/annotation/src/contrib/GenomeInfoDbData_1.2.7.tar.gz', diff --git a/var/spack/repos/builtin/packages/r-genomicalignments/package.py b/var/spack/repos/builtin/packages/r-genomicalignments/package.py index c42ba27e8576d2..a0afca41d7b3bc 100644 --- a/var/spack/repos/builtin/packages/r-genomicalignments/package.py +++ b/var/spack/repos/builtin/packages/r-genomicalignments/package.py @@ -7,16 +7,16 @@ class RGenomicalignments(RPackage): - """Representation and manipulation of short genomic alignments + """Representation and manipulation of short genomic alignments. Provides efficient containers for storing and manipulating short genomic alignments (typically obtained by aligning short reads to a reference genome). This includes read counting, computing the coverage, junction detection, and working with the nucleotide content of the alignments.""" - homepage = "https://bioconductor.org/packages/GenomicAlignments" - git = "https://git.bioconductor.org/packages/GenomicAlignments.git" + bioc = "GenomicAlignments" + version('1.30.0', commit='2d2c5fce3529c2962fdcefd736d8b7f7c0ec2d54') version('1.26.0', commit='6c74c74ee53efcd880171126366fee4bd72357bc') version('1.20.1', commit='9dce402071e4cd945de7ff82ea574c79993625fd') version('1.18.1', commit='8ac41e5981cf343076044f451a984afb651688ab') @@ -25,28 +25,30 @@ class RGenomicalignments(RPackage): version('1.12.2', commit='b5d6f19e4a89b6c1c3e9e58e5ea4eb13870874ef') depends_on('r@2.10:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.30.0:') depends_on('r-biocgenerics@0.15.3:', type=('build', 'run')) + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@1.30.0:') depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.28:', when='@1.16.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.19.11:', when='@1.18.1:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.28:', type=('build', 'run'), when='@1.16.0:') + depends_on('r-s4vectors@0.19.11:', type=('build', 'run'), when='@1.18.1:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@1.26.0:') depends_on('r-iranges@2.5.36:', type=('build', 'run')) - depends_on('r-iranges@2.11.16:', when='@1.14.2:', type=('build', 'run')) - depends_on('r-iranges@2.13.25:', when='@1.16.0:', type=('build', 'run')) - depends_on('r-iranges@2.15.12:', when='@1.18.1:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-iranges@2.11.16:', type=('build', 'run'), when='@1.14.2:') + depends_on('r-iranges@2.13.25:', type=('build', 'run'), when='@1.16.0:') + depends_on('r-iranges@2.15.12:', type=('build', 'run'), when='@1.18.1:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@1.26.0:') depends_on('r-genomeinfodb@1.11.5:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.13.1:', when='@1.14.2:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.13.1:', type=('build', 'run'), when='@1.14.2:') depends_on('r-genomicranges@1.27.19:', type=('build', 'run')) - depends_on('r-genomicranges@1.29.14:', when='@1.14.2:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.19:', when='@1.16.0:', type=('build', 'run')) - depends_on('r-genomicranges@1.33.4:', when='@1.18.1:', type=('build', 'run')) - depends_on('r-genomicranges@1.41.5:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.29.14:', type=('build', 'run'), when='@1.14.2:') + depends_on('r-genomicranges@1.31.19:', type=('build', 'run'), when='@1.16.0:') + depends_on('r-genomicranges@1.33.4:', type=('build', 'run'), when='@1.18.1:') + depends_on('r-genomicranges@1.41.5:', type=('build', 'run'), when='@1.26.0:') depends_on('r-summarizedexperiment@1.5.3:', type=('build', 'run')) - depends_on('r-summarizedexperiment@1.9.13:', when='@1.16.0:', type=('build', 'run')) + depends_on('r-summarizedexperiment@1.9.13:', type=('build', 'run'), when='@1.16.0:') depends_on('r-biostrings@2.37.1:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.16.0:', type=('build', 'run')) - depends_on('r-biostrings@2.55.7:', when='@1.26.0:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.16.0:') + depends_on('r-biostrings@2.55.7:', type=('build', 'run'), when='@1.26.0:') depends_on('r-rsamtools@1.21.4:', type=('build', 'run')) - depends_on('r-rsamtools@1.31.2:', when='@1.16.0:', type=('build', 'run')) + depends_on('r-rsamtools@1.31.2:', type=('build', 'run'), when='@1.16.0:') depends_on('r-biocparallel', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-genomicfeatures/package.py b/var/spack/repos/builtin/packages/r-genomicfeatures/package.py index cba53196e03e10..96e310a1a28499 100644 --- a/var/spack/repos/builtin/packages/r-genomicfeatures/package.py +++ b/var/spack/repos/builtin/packages/r-genomicfeatures/package.py @@ -7,7 +7,7 @@ class RGenomicfeatures(RPackage): - """Conveniently import and query gene models + """Conveniently import and query gene models. A set of tools and methods for making and manipulating transcript centric annotations. With these tools the user can easily download the @@ -18,9 +18,9 @@ class RGenomicfeatures(RPackage): exons, cds and genes. Flexible methods are provided for extracting the desired features in a convenient format.""" - homepage = "https://bioconductor.org/packages/GenomicFeatures" - git = "https://git.bioconductor.org/packages/GenomicFeatures.git" + bioc = "GenomicFeatures" + version('1.46.4', commit='d3ab6fd069624904ce7fcdf75dad884473f97975') version('1.42.1', commit='2e82891974138b0e976799d64a8938f0be61284d') version('1.36.4', commit='28082ec465c91ccaec6881ff348b380edac1b555') version('1.34.8', commit='c798b3bb111f4de30632303540074ec1875c1387') @@ -30,28 +30,31 @@ class RGenomicfeatures(RPackage): depends_on('r-biocgenerics@0.1.0:', type=('build', 'run')) depends_on('r-s4vectors@0.9.47:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.29:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.29:', type=('build', 'run'), when='@1.32.3:') depends_on('r-iranges@2.9.19:', type=('build', 'run')) - depends_on('r-iranges@2.11.16:', when='@1.30.3:', type=('build', 'run')) - depends_on('r-iranges@2.13.23:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-iranges@2.11.16:', type=('build', 'run'), when='@1.30.3:') + depends_on('r-iranges@2.13.23:', type=('build', 'run'), when='@1.32.3:') depends_on('r-genomeinfodb@1.11.4:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.13.1:', when='@1.30.3:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.15.4:', when='@1.32.3:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.25.7:', when='@1.42.1:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.13.1:', type=('build', 'run'), when='@1.30.3:') + depends_on('r-genomeinfodb@1.15.4:', type=('build', 'run'), when='@1.32.3:') + depends_on('r-genomeinfodb@1.25.7:', type=('build', 'run'), when='@1.42.1:') depends_on('r-genomicranges@1.27.6:', type=('build', 'run')) - depends_on('r-genomicranges@1.29.14:', when='@1.30.3:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.17:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-genomicranges@1.29.14:', type=('build', 'run'), when='@1.30.3:') + depends_on('r-genomicranges@1.31.17:', type=('build', 'run'), when='@1.32.3:') depends_on('r-annotationdbi@1.33.15:', type=('build', 'run')) - depends_on('r-annotationdbi@1.41.4:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-annotationdbi@1.41.4:', type=('build', 'run'), when='@1.32.3:') depends_on('r-dbi', type=('build', 'run')) depends_on('r-rsqlite@2.0:', type=('build', 'run')) depends_on('r-rcurl', type=('build', 'run')) depends_on('r-xvector', type=('build', 'run')) - depends_on('r-xvector@0.19.7:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-xvector@0.19.7:', type=('build', 'run'), when='@1.32.3:') depends_on('r-biostrings@2.23.3:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.32.3:') + depends_on('r-biocio', type=('build', 'run'), when='@1.46.4:') depends_on('r-rtracklayer@1.29.24:', type=('build', 'run')) - depends_on('r-rtracklayer@1.39.7:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-rtracklayer@1.39.7:', type=('build', 'run'), when='@1.32.3:') + depends_on('r-rtracklayer@1.51.5:', type=('build', 'run'), when='@1.46.4:') depends_on('r-biomart@2.17.1:', type=('build', 'run')) depends_on('r-biobase@2.15.1:', type=('build', 'run')) - depends_on('r-rmysql', when='@1.30.3', type=('build', 'run')) + + depends_on('r-rmysql', type=('build', 'run'), when='@1.30.3') diff --git a/var/spack/repos/builtin/packages/r-genomicranges/package.py b/var/spack/repos/builtin/packages/r-genomicranges/package.py index a05ef0301c7a42..1a8549fafe8f4c 100644 --- a/var/spack/repos/builtin/packages/r-genomicranges/package.py +++ b/var/spack/repos/builtin/packages/r-genomicranges/package.py @@ -7,7 +7,7 @@ class RGenomicranges(RPackage): - """Representation and manipulation of genomic intervals + """Representation and manipulation of genomic intervals. The ability to efficiently represent and manipulate genomic annotations and alignments is playing a central role when it comes to analyzing @@ -20,9 +20,9 @@ class RGenomicranges(RPackage): respectively. Both packages build on top of the GenomicRanges infrastructure.""" - homepage = "https://bioconductor.org/packages/GenomicRanges" - git = "https://git.bioconductor.org/packages/GenomicRanges.git" + bioc = "GenomicRanges" + version('1.46.1', commit='e422642f64815cdfee8fc340681ad87a7eafc3bb') version('1.42.0', commit='32baca734b599d60fa13bdbe31c5712e648f538d') version('1.36.1', commit='418e7e5647dd54d81b804455ddfcbc027fd0164a') version('1.34.0', commit='ebaad5ca61abb67c2c30c132e07531ba4257bccd') @@ -31,21 +31,23 @@ class RGenomicranges(RPackage): version('1.28.6', commit='197472d618f3ed04c795dc6ed435500c29619563') depends_on('r@2.10:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.46.1:') depends_on('r-biocgenerics@0.21.2:', type=('build', 'run')) - depends_on('r-biocgenerics@0.25.3:', when='@1.32.7:', type=('build', 'run')) + depends_on('r-biocgenerics@0.25.3:', type=('build', 'run'), when='@1.32.7:') + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@1.46.1:') depends_on('r-s4vectors@0.9.47:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.32:', when='@1.32.7:', type=('build', 'run')) - depends_on('r-s4vectors@0.19.11:', when='@1.34.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@1.42.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.32:', type=('build', 'run'), when='@1.32.7:') + depends_on('r-s4vectors@0.19.11:', type=('build', 'run'), when='@1.34.0:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@1.42.0:') depends_on('r-iranges@2.9.11:', type=('build', 'run')) - depends_on('r-iranges@2.11.16:', when='@1.30.3:', type=('build', 'run')) - depends_on('r-iranges@2.14.4:', when='@1.32.7:', type=('build', 'run')) - depends_on('r-iranges@2.15.12:', when='@1.34.0:', type=('build', 'run')) - depends_on('r-iranges@2.17.1:', when='@1.36.1:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@1.42.0:', type=('build', 'run')) + depends_on('r-iranges@2.11.16:', type=('build', 'run'), when='@1.30.3:') + depends_on('r-iranges@2.14.4:', type=('build', 'run'), when='@1.32.7:') + depends_on('r-iranges@2.15.12:', type=('build', 'run'), when='@1.34.0:') + depends_on('r-iranges@2.17.1:', type=('build', 'run'), when='@1.36.1:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@1.42.0:') depends_on('r-genomeinfodb@1.11.5:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.13.1:', when='@1.30.3:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.15.2:', when='@1.32.7:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.13.1:', type=('build', 'run'), when='@1.30.3:') + depends_on('r-genomeinfodb@1.15.2:', type=('build', 'run'), when='@1.32.7:') depends_on('r-xvector', type=('build', 'run')) - depends_on('r-xvector@0.19.8:', when='@1.32.7:', type=('build', 'run')) - depends_on('r-xvector@0.29.2:', when='@1.42.0:', type=('build', 'run')) + depends_on('r-xvector@0.19.8:', type=('build', 'run'), when='@1.32.7:') + depends_on('r-xvector@0.29.2:', type=('build', 'run'), when='@1.42.0:') diff --git a/var/spack/repos/builtin/packages/r-gensa/package.py b/var/spack/repos/builtin/packages/r-gensa/package.py index 537202bf488f39..ab768cb4896818 100644 --- a/var/spack/repos/builtin/packages/r-gensa/package.py +++ b/var/spack/repos/builtin/packages/r-gensa/package.py @@ -7,14 +7,12 @@ class RGensa(RPackage): - """GenSA: Generalized Simulated Annealing + """Generalized Simulated Annealing. - Performs search for global minimum of a very complex non-linear - objective function with a very large number of optima.""" + Performs search for global minimum of a very complex non-linear objective + function with a very large number of optima.""" - homepage = "https://cloud.r-project.org/package=GenSA" - url = "https://cloud.r-project.org/src/contrib/GenSA_1.1.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GenSA/" + cran = "GenSA" version('1.1.7', sha256='9d99d3d0a4b7770c3c3a6de44206811272d78ab94481713a8c369f7d6ae7b80f') diff --git a/var/spack/repos/builtin/packages/r-geojsonsf/package.py b/var/spack/repos/builtin/packages/r-geojsonsf/package.py new file mode 100644 index 00000000000000..5b56a4697a4d41 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-geojsonsf/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class RGeojsonsf(RPackage): + """GeoJSON to Simple Feature Converter. + + Converts Between GeoJSON and simple feature objects.""" + + cran = "geojsonsf" + + version('2.0.1', sha256='42df40433bfbece5a39cd97b5bd4690b4424855241fcc3e7322ee68a3988bfbf') + + depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-geometries', type=('build', 'run')) + depends_on('r-jsonify@1.1.1:', type=('build', 'run')) + depends_on('r-rapidjsonr@1.2.0:', type=('build', 'run')) + depends_on('r-sfheaders@0.2.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-geometries/package.py b/var/spack/repos/builtin/packages/r-geometries/package.py new file mode 100644 index 00000000000000..cbb4c2a31e86bd --- /dev/null +++ b/var/spack/repos/builtin/packages/r-geometries/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RGeometries(RPackage): + """Convert Between R Objects and Geometric Structures. + + Geometry shapes in 'R' are typically represented by matrices (points, + lines), with more complex shapes being lists of matrices (polygons). + 'Geometries' will convert various 'R' objects into these shapes. Conversion + functions are available at both the 'R' level, and through 'Rcpp'.""" + + cran = "geometries" + + version('0.2.0', sha256='8cf5094f3c2458fef5d755799c766afd27c66cd1c292574a6ab532d608360314') + + depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-geomorph/package.py b/var/spack/repos/builtin/packages/r-geomorph/package.py index 6023f80a9733b9..b2ef1d385d7641 100644 --- a/var/spack/repos/builtin/packages/r-geomorph/package.py +++ b/var/spack/repos/builtin/packages/r-geomorph/package.py @@ -7,17 +7,16 @@ class RGeomorph(RPackage): - """Geometric Morphometric Analyses of 2D/3D Landmark Data + """Geometric Morphometric Analyses of 2D/3D Landmark Data. Read, manipulate, and digitize landmark data, generate shape variables via Procrustes analysis for points, curves and surfaces, perform shape analyses, and provide graphical depictions of shapes and patterns of shape variation.""" - homepage = "https://cloud.r-project.org/package=geomorph" - url = "https://cloud.r-project.org/src/contrib/geomorph_3.0.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/geomorph" + cran = "geomorph" + version('4.0.1', sha256='9d54fba96dd8b8f2dcc8d0e4c427f6232bed1934da41f25084c16ec0b2c71117') version('3.3.2', sha256='5f1d17cb98c54e40c4bbc650f7ccb5cb26e8d63934f810644facc69e91c1b7b7') version('3.1.2', sha256='29cf1c484f756cb44808cfdbc20137a6fbc4bd0c5c6f98c6c3f397c5aebda8f1') version('3.1.1', sha256='8eb222011433100860b308beef6f02ade7c421785f575ab4461ee25e38dfa1bd') @@ -26,10 +25,13 @@ 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:', when='@3.3.2:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.3.2:') 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-rgl', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run'), when='@:3.1.1,4.0.1:') depends_on('r-jpeg', type=('build', 'run')) depends_on('r-ape', type=('build', 'run')) - depends_on('r-geiger', when='@:3.1.1', type=('build', 'run')) - depends_on('r-matrix', when='@:3.1.1', type=('build', 'run')) + depends_on('r-ggplot2', type=('build', 'run'), when='@4.0.1:') + + depends_on('r-geiger', type=('build', 'run'), when='@:3.1.1') diff --git a/var/spack/repos/builtin/packages/r-geonames/package.py b/var/spack/repos/builtin/packages/r-geonames/package.py index a339c9124643cc..3d122c640de9be 100644 --- a/var/spack/repos/builtin/packages/r-geonames/package.py +++ b/var/spack/repos/builtin/packages/r-geonames/package.py @@ -7,11 +7,14 @@ class RGeonames(RPackage): - """geonames: Interface to the "Geonames" Spatial Query Web Service""" + """Interface to the "Geonames" Spatial Query Web Service. - homepage = "https://cloud.r-project.org/package=geonames" - url = "https://cloud.r-project.org/src/contrib/geonames_0.999.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/geonames" + The web service at provides a number of spatial + data queries, including administrative area hierarchies, city locations and + some country postal code queries. A (free) username is required and rate + limits exist.""" + + cran = "geonames" version('0.999', sha256='1dd7bbd82d9425d14eb36f8e5bf431feaccfe3b0c4e70bf38f44f13dfc59e17b') diff --git a/var/spack/repos/builtin/packages/r-geoquery/package.py b/var/spack/repos/builtin/packages/r-geoquery/package.py index 78d4b6287096b7..efbde50ef90907 100644 --- a/var/spack/repos/builtin/packages/r-geoquery/package.py +++ b/var/spack/repos/builtin/packages/r-geoquery/package.py @@ -7,16 +7,16 @@ class RGeoquery(RPackage): - """Get data from NCBI Gene Expression Omnibus (GEO) + """Get data from NCBI Gene Expression Omnibus (GEO). The NCBI Gene Expression Omnibus (GEO) is a public repository of microarray data. Given the rich and varied nature of this resource, it is only natural to want to apply BioConductor tools to these data. GEOquery is the bridge between GEO and BioConductor.""" - homepage = "https://bioconductor.org/packages/GEOquery" - git = "https://git.bioconductor.org/packages/GEOquery.git" + bioc = "GEOquery" + version('2.62.2', commit='1966c108fe8a58ac39ef53c3c452fd160efa526e') version('2.58.0', commit='6332ca3791ddcfb233b9ad75b5904b3d60f49b93') version('2.52.0', commit='3059331eb82ad4947c2d1bef86ff9526e70af643') version('2.50.5', commit='135c17f8fe535acda14f95a37d1be1ff2bd80f97') @@ -26,12 +26,15 @@ class RGeoquery(RPackage): depends_on('r-biobase', type=('build', 'run')) depends_on('r-httr', type=('build', 'run')) - depends_on('r-readr', when='@2.46.15:', type=('build', 'run')) - depends_on('r-readr@1.3.1:', when='@2.50.5:', type=('build', 'run')) - depends_on('r-xml2', when='@2.46.15:', type=('build', 'run')) - depends_on('r-dplyr', when='@2.46.15:', type=('build', 'run')) - depends_on('r-tidyr', when='@2.46.15:', type=('build', 'run')) - depends_on('r-magrittr', when='@2.46.15:', type=('build', 'run')) - depends_on('r-limma', when='@2.46.15:', type=('build', 'run')) - depends_on('r-xml', when='@2.42.0', type=('build', 'run')) - depends_on('r-rcurl', when='@2.42.0', type=('build', 'run')) + depends_on('r-readr', type=('build', 'run'), when='@2.46.15:') + depends_on('r-readr@1.3.1:', type=('build', 'run'), when='@2.50.5:') + depends_on('r-xml2', type=('build', 'run'), when='@2.46.15:') + depends_on('r-dplyr', type=('build', 'run'), when='@2.46.15:') + depends_on('r-data-table', type=('build', 'run'), when='@2.62.2:') + depends_on('r-tidyr', type=('build', 'run'), when='@2.46.15:') + depends_on('r-magrittr', type=('build', 'run'), when='@2.46.15:') + depends_on('r-r-utils', type=('build', 'run'), when='@2.62.2:') + depends_on('r-limma', type=('build', 'run'), when='@2.46.15:') + + depends_on('r-xml', type=('build', 'run'), when='@2.42.0') + depends_on('r-rcurl', type=('build', 'run'), when='@2.42.0') diff --git a/var/spack/repos/builtin/packages/r-geor/package.py b/var/spack/repos/builtin/packages/r-geor/package.py index 63e519505fe92d..57a7d1f44aeade 100644 --- a/var/spack/repos/builtin/packages/r-geor/package.py +++ b/var/spack/repos/builtin/packages/r-geor/package.py @@ -7,15 +7,13 @@ class RGeor(RPackage): - """Analysis of Geostatistical Data + """Analysis of Geostatistical Data. Geostatistical analysis including variogram-based, likelihood-based and Bayesian methods. Software companion for Diggle and Ribeiro (2007) .""" - homepage = "https://cloud.r-project.org/package=geoR" - url = "https://cloud.r-project.org/src/contrib/geoR_1.7-5.2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/geoR" + cran = "geoR" version('1.8-1', sha256='990647804590b925a50f72897b24bbabd331cebef0be1696a60528b2f79d6fd3') version('1.7-5.2.1', sha256='3895e49c005a5745738d190ccaad43bb0aa49c74465d4d0b4dd88c5850ed63b9') diff --git a/var/spack/repos/builtin/packages/r-geosphere/package.py b/var/spack/repos/builtin/packages/r-geosphere/package.py index c10bfa1114f9fc..4f4382dd291886 100644 --- a/var/spack/repos/builtin/packages/r-geosphere/package.py +++ b/var/spack/repos/builtin/packages/r-geosphere/package.py @@ -7,14 +7,15 @@ class RGeosphere(RPackage): - """Spherical trigonometry for geographic applications. That is, compute + """Spherical Trigonometry. + + Spherical trigonometry for geographic applications. That is, compute distances and related measures for angular (longitude/latitude) locations.""" - homepage = "https://cloud.r-project.org/package=geosphere" - url = "https://cloud.r-project.org/src/contrib/geosphere_1.5-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/geosphere" + cran = "geosphere" + version('1.5-14', sha256='f2c3a4ae1c87c86c123d48f134721c809fb33675cb5cd0959080049eabdbe42d') version('1.5-10', sha256='56cd4f787101e2e18f19ddb83794154b58697e63cad81168f0936f60ab7eb497') version('1.5-7', sha256='9d9b555e2d59a5ae174ae654652121f169fbc3e9cf66c2491bfbe0684b6dd8a0') version('1.5-5', sha256='8b6fe012744fc45b88e0ef6f20e60e103ef013e761e99dcff3f9dceeedbdce6d') diff --git a/var/spack/repos/builtin/packages/r-gert/package.py b/var/spack/repos/builtin/packages/r-gert/package.py index 34e919a6a72f6b..13fe1318641437 100644 --- a/var/spack/repos/builtin/packages/r-gert/package.py +++ b/var/spack/repos/builtin/packages/r-gert/package.py @@ -7,25 +7,23 @@ class RGert(RPackage): - """Simple Git Client for R + """Simple Git Client for R. - Simple git client for R based on 'libgit2' with support for SSH and HTTPS + Simple git client for R based on 'libgit2' with support for SSH and HTTPS remotes. All functions in 'gert' use basic R data types (such as vectors and data-frames) for their arguments and return values. User credentials are shared with command line 'git' through the git-credential store and ssh - keys stored on disk or ssh-agent. On Linux, a somewhat recent version of - 'libgit2' is required; we provide a 'PPA' for older Ubuntu 'LTS' - versions.""" + keys stored on disk or ssh-agent.""" - homepage = "https://docs.ropensci.org/gert/" - url = "https://cloud.r-project.org/src/contrib/gert_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gert" + cran = "gert" + version('1.5.0', sha256='9fc330893b0cb43360905fd204e674813e1906449a95dc4037fe8802bd74a2ae') version('1.0.2', sha256='36687ab98291d50a35752fcb2e734a926a6b845345c18d36e3f48823f68304d3') depends_on('r-askpass', type=('build', 'run')) depends_on('r-credentials@1.2.1:', type=('build', 'run')) depends_on('r-openssl@1.4.1:', type=('build', 'run')) depends_on('r-rstudioapi@0.11:', type=('build', 'run')) + depends_on('r-sys', type=('build', 'run'), when='@1.5.0:') depends_on('r-zip@2.1.0:', type=('build', 'run')) depends_on('libgit2@0.26:') diff --git a/var/spack/repos/builtin/packages/r-getopt/package.py b/var/spack/repos/builtin/packages/r-getopt/package.py index 179b7464df6c0e..8d178c7a7b613f 100644 --- a/var/spack/repos/builtin/packages/r-getopt/package.py +++ b/var/spack/repos/builtin/packages/r-getopt/package.py @@ -7,15 +7,15 @@ class RGetopt(RPackage): - """Package designed to be used with Rscript to write "#!" shebang scripts - that accept short and long flags/options. Many users will prefer using - instead the packages optparse or argparse which add extra features like - automatically generated help option and usage, support for default - values, positional argument support, etc.""" + """C-Like 'getopt' Behavior. - homepage = "https://github.com/trevorld/getopt" - url = "https://cloud.r-project.org/src/contrib/getopt_1.20.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/getopt" + Package designed to be used with Rscript to write "#!" shebang scripts that + accept short and long flags/options. Many users will prefer using instead + the packages optparse or argparse which add extra features like + automatically generated help option and usage, support for default values, + positional argument support, etc.""" + + cran = "getopt" version('1.20.3', sha256='531f5fdfdcd6b96a73df2b39928418de342160ac1b0043861e9ea844f9fbf57f') version('1.20.2', sha256='3d6c12d32d6cd4b2909be626e570e158b3ed960e4739510e3a251e7f172de38e') diff --git a/var/spack/repos/builtin/packages/r-getoptlong/package.py b/var/spack/repos/builtin/packages/r-getoptlong/package.py index 7136c158f06725..4d9d3f83107066 100644 --- a/var/spack/repos/builtin/packages/r-getoptlong/package.py +++ b/var/spack/repos/builtin/packages/r-getoptlong/package.py @@ -7,25 +7,23 @@ class RGetoptlong(RPackage): - """Parsing Command-Line Arguments and Simple Variable Interpolation + """Parsing Command-Line Arguments and Simple Variable Interpolation. This is yet another command-line argument parser which wraps the powerful Perl module Getopt::Long and with some adaptation for easier use in R. It also provides a simple way for variable interpolation in R.""" - homepage = "https://cloud.r-project.org/package=GetoptLong" - url = "https://cloud.r-project.org/src/contrib/GetoptLong_0.1.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GetoptLong" + cran = "GetoptLong" version('1.0.5', sha256='8c237986ed3dfb72d956ad865ef7768644eebf144675ad66140acfd1aca9d701') version('0.1.7', sha256='b9a98881db407eae9b711c4fa9170168fd5f3be1f8485cd8f28d0a60ace083ba') version('0.1.6', sha256='f526f006e3ed8507f1f236430ac9e97341c1ee9c207fbb68f936dd4d377b28b5') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.3.0:', when='@1.0.5:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@1.0.5:') depends_on('r-rjson', type=('build', 'run')) depends_on('r-globaloptions@0.1.0:', type=('build', 'run')) - depends_on('r-crayon', when='@1.0.5:', type=('build', 'run')) + depends_on('r-crayon', type=('build', 'run'), when='@1.0.5:') # The CRAN site lists SystemRequirments as: Perl, Getopt::Long. The # Getop::Long package will be installed with Perl so just depend on perl. diff --git a/var/spack/repos/builtin/packages/r-ggally/package.py b/var/spack/repos/builtin/packages/r-ggally/package.py index 8f1b575120f3f9..c16b38b3f67136 100644 --- a/var/spack/repos/builtin/packages/r-ggally/package.py +++ b/var/spack/repos/builtin/packages/r-ggally/package.py @@ -7,7 +7,7 @@ class RGgally(RPackage): - """Extension to 'ggplot2' + """Extension to 'ggplot2'. The R package 'ggplot2' is a plotting system based on the grammar of graphics. 'GGally' extends 'ggplot2' by adding several functions to reduce @@ -16,26 +16,26 @@ class RGgally(RPackage): plot matrix, a parallel coordinates plot, a survival plot, and several functions to plot networks.""" - homepage = "https://cloud.r-project.org/package=GGally" - url = "https://cloud.r-project.org/src/contrib/GGally_1.3.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GGally" + cran = "GGally" + version('2.1.2', sha256='30352f36bf061bc98bdd5fa373ea0f23d007040bd908c7c018c8e627e0fb28e5') version('2.1.0', sha256='7ffb86b8a4e79543cf7e6bb1e3684d738ecd8e0ba89e8ef38991898b18dd6c53') version('1.4.0', sha256='9a47cdf004c41f5e4024327b94227707f4dad3a0ac5556d8f1fba9bf0a6355fe') version('1.3.2', sha256='f4143f45254fed794be991180aeffe459f6756bfa08acad963707d8e843cfd0a') depends_on('r@3.1:', type=('build', 'run')) depends_on('r-ggplot2@2.2.0:', type=('build', 'run')) - depends_on('r-ggplot2@3.3.0:', when='@2.1.0:', type=('build', 'run')) - depends_on('r-dplyr@1.0.0:', when='@2.1.0:', type=('build', 'run')) - depends_on('r-forcats', when='@2.1.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-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-gtable@0.2.0:', type=('build', 'run')) - depends_on('r-lifecycle', when='@2.1.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', when='@1.4.0:', type=('build', 'run')) - depends_on('r-scales@1.1.0:', when='@2.1.0:', type=('build', 'run')) - depends_on('r-tidyr', when='@2.1.0:', 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('openssl', when='@1.4.0:') diff --git a/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py b/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py index 956e921b33eb61..ffb21ca52fbe79 100644 --- a/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py +++ b/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py @@ -7,11 +7,13 @@ class RGgbeeswarm(RPackage): - """ggbeeswarm: Categorical Scatter (Violin Point) Plots""" + """Categorical Scatter (Violin Point) Plots. - homepage = "https://github.com/eclarke/ggbeeswarm" - url = "https://cloud.r-project.org/src/contrib/ggbeeswarm_0.6.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggbeeswarm" + Provides two methods of plotting categorical scatter plots such that the + arrangement of points within a category reflects the density of data at + that region, and avoids over-plotting.""" + + cran = "ggbeeswarm" version('0.6.0', sha256='bbac8552f67ff1945180fbcda83f7f1c47908f27ba4e84921a39c45d6e123333') diff --git a/var/spack/repos/builtin/packages/r-ggbio/package.py b/var/spack/repos/builtin/packages/r-ggbio/package.py index 6c0d43b6dd88ad..67d6f04a1b03c9 100644 --- a/var/spack/repos/builtin/packages/r-ggbio/package.py +++ b/var/spack/repos/builtin/packages/r-ggbio/package.py @@ -7,7 +7,7 @@ class RGgbio(RPackage): - """Visualization tools for genomic data + """Visualization tools for genomic data. The ggbio package extends and specializes the grammar of graphics for biological data. The graphics are designed to answer common scientific @@ -19,9 +19,9 @@ class RGgbio(RPackage): fragment length, edge-linked interval to data view, mismatch pileup, and several splicing summaries.""" - homepage = "https://bioconductor.org/packages/ggbio" - git = "https://git.bioconductor.org/packages/ggbio.git" + bioc = "ggbio" + version('1.42.0', commit='3540047ef018957d59fba8af7d3c58e4659f8e26') version('1.38.0', commit='c39c51993f419cfc2f094e664477f25f5212a242') version('1.32.0', commit='04bd12fbe0b1c5c6b721a5f927e1352765f9bf88') version('1.30.0', commit='8b05258b089b06a743352e92058edda06c24cfb7') @@ -37,15 +37,15 @@ class RGgbio(RPackage): depends_on('r-gtable', type=('build', 'run')) depends_on('r-hmisc', type=('build', 'run')) depends_on('r-biovizbase@1.23.3:', type=('build', 'run')) - depends_on('r-biovizbase@1.28.2:', when='@1.28.5:', type=('build', 'run')) - depends_on('r-biovizbase@1.29.2:', when='@1.30.0:', type=('build', 'run')) + depends_on('r-biovizbase@1.28.2:', type=('build', 'run'), when='@1.28.5:') + depends_on('r-biovizbase@1.29.2:', type=('build', 'run'), when='@1.30.0:') depends_on('r-biobase', type=('build', 'run')) depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) - depends_on('r-iranges@2.11.16:', when='@1.26.1:', type=('build', 'run')) + depends_on('r-iranges@2.11.16:', type=('build', 'run'), when='@1.26.1:') depends_on('r-genomeinfodb@1.1.3:', type=('build', 'run')) depends_on('r-genomicranges@1.21.10:', type=('build', 'run')) - depends_on('r-genomicranges@1.29.14:', when='@1.26.1:', type=('build', 'run')) + depends_on('r-genomicranges@1.29.14:', type=('build', 'run'), when='@1.26.1:') depends_on('r-summarizedexperiment', type=('build', 'run')) depends_on('r-biostrings', type=('build', 'run')) depends_on('r-rsamtools@1.17.28:', type=('build', 'run')) @@ -54,10 +54,10 @@ class RGgbio(RPackage): depends_on('r-variantannotation@1.11.4:', type=('build', 'run')) depends_on('r-rtracklayer@1.25.16:', type=('build', 'run')) depends_on('r-genomicfeatures@1.17.13:', type=('build', 'run')) - depends_on('r-genomicfeatures@1.29.11:', when='@1.26.1:', type=('build', 'run')) + depends_on('r-genomicfeatures@1.29.11:', type=('build', 'run'), when='@1.26.1:') depends_on('r-organismdbi', type=('build', 'run')) depends_on('r-ggally', type=('build', 'run')) depends_on('r-ensembldb@1.99.13:', type=('build', 'run')) depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-annotationfilter', type=('build', 'run')) - depends_on('r-rlang', when='@1.28.5:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@1.28.5:') diff --git a/var/spack/repos/builtin/packages/r-ggdendro/package.py b/var/spack/repos/builtin/packages/r-ggdendro/package.py index cc497d8ab573fa..4a665b4eac13c4 100644 --- a/var/spack/repos/builtin/packages/r-ggdendro/package.py +++ b/var/spack/repos/builtin/packages/r-ggdendro/package.py @@ -7,20 +7,17 @@ class RGgdendro(RPackage): - """Create Dendrograms and Tree Diagrams Using 'ggplot2' + """Create Dendrograms and Tree Diagrams Using 'ggplot2'. - This is a set of tools for dendrograms and tree plots using - 'ggplot2'. The 'ggplot2' philosophy is to clearly separate data - from the presentation. Unfortunately the plot method for - dendrograms plots directly to a plot device without exposing - the data. The 'ggdendro' package resolves this by making - available functions that extract the dendrogram plot data. - The package provides implementations for tree, rpart, as well - as diana and agnes cluster diagrams.""" + This is a set of tools for dendrograms and tree plots using 'ggplot2'. The + 'ggplot2' philosophy is to clearly separate data from the presentation. + Unfortunately the plot method for dendrograms plots directly to a plot + device without exposing the data. The 'ggdendro' package resolves this by + making available functions that extract the dendrogram plot data. The + package provides implementations for tree, rpart, as well as diana and + agnes cluster diagrams.""" - homepage = "https://cloud.r-project.org/package=ggdendro" - url = "https://cloud.r-project.org/src/contrib/ggdendro_0.1-20.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggdendro" + cran = "ggdendro" version('0.1.22', sha256='f0a65f3498c1abc3076df0fb56364b63bdf5d212d8931f85bcc6997510916b6a') version('0.1-20', sha256='125cae904fa5d426cccaf32ebe9c6297e9ef0c6fd3f19f61513834d03a0cf8ff') diff --git a/var/spack/repos/builtin/packages/r-ggforce/package.py b/var/spack/repos/builtin/packages/r-ggforce/package.py index eff0f07fc6266e..76c0cc2adc45ec 100644 --- a/var/spack/repos/builtin/packages/r-ggforce/package.py +++ b/var/spack/repos/builtin/packages/r-ggforce/package.py @@ -7,7 +7,7 @@ class RGgforce(RPackage): - """Accelerating 'ggplot2' + """Accelerating 'ggplot2'. The aim of 'ggplot2' is to aid in visual data investigations. This focus has led to a lack of facilities for composing specialised plots. 'ggforce' @@ -15,10 +15,9 @@ class RGgforce(RPackage): All additional functionality is aimed to come through the official extension system so using 'ggforce' should be a stable experience.""" - homepage = "https://ggforce.data-imaginist.com" - url = "https://cloud.r-project.org/src/contrib/ggforce_0.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggforce" + cran = "ggforce" + version('0.3.3', sha256='2a283bb409da6b96929863a926b153bcc59b2c6f00551805db1d1d43e5929f2f') version('0.3.2', sha256='4cce8acb60ce06af44c1c76bbacd7de129eed9b51ed6a85e03a9bf55b0eff4d2') version('0.3.1', sha256='a05271da9b226c12ae5fe6bc6eddb9ad7bfe19e1737e2bfcd6d7a89631332211') diff --git a/var/spack/repos/builtin/packages/r-ggfun/package.py b/var/spack/repos/builtin/packages/r-ggfun/package.py new file mode 100644 index 00000000000000..fc002e7ec39d3f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggfun/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RGgfun(RPackage): + """Miscellaneous Functions for 'ggplot2'. + + Useful functions to edit 'ggplot' object (e.g., setting fonts for theme and + layers, adding rounded rectangle as background for each of the legends).""" + + cran = "ggfun" + + version('0.0.5', sha256='b1e340a8932d2cffbbbf6070ce96c9356599e9955a2b6534fcb17e599c575783') + version('0.0.4', sha256='5926365f9a90baf47320baf48c40f515ef570f9c767484adea5f04219964d21e') + + depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ggjoy/package.py b/var/spack/repos/builtin/packages/r-ggjoy/package.py index d400e27a0d9a52..766ba7f5847053 100644 --- a/var/spack/repos/builtin/packages/r-ggjoy/package.py +++ b/var/spack/repos/builtin/packages/r-ggjoy/package.py @@ -7,12 +7,12 @@ class RGgjoy(RPackage): - """Joyplots provide a convenient way of visualizing changes in distributions - over time or space.""" + """Joyplots in 'ggplot2'. - homepage = "https://cloud.r-project.org/package=ggjoy" - url = "https://cloud.r-project.org/src/contrib/ggjoy_0.4.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggjoy" + Joyplots provide a convenient way of visualizing changes in + distributions over time or space.""" + + cran = "ggjoy" version('0.4.1', sha256='d2f778bc40203d7fbb7c81b40beed8614c36ea10448e911663cc6109aa685504') version('0.4.0', sha256='cb9ef790921ffcd3cfb6a55b409d17ccae9e8f5fdd2a28e55ea2ccfa8efd44e8') diff --git a/var/spack/repos/builtin/packages/r-ggmap/package.py b/var/spack/repos/builtin/packages/r-ggmap/package.py index aab968955b3f9a..24a41a45b4114b 100644 --- a/var/spack/repos/builtin/packages/r-ggmap/package.py +++ b/var/spack/repos/builtin/packages/r-ggmap/package.py @@ -7,14 +7,14 @@ class RGgmap(RPackage): - """A collection of functions to visualize spatial data and models on top of + """Spatial Visualization with ggplot2. + + A collection of functions to visualize spatial data and models on top of static maps from various online sources (e.g Google Maps and Stamen Maps). It includes tools common to those tasks, including functions for geolocation and routing.""" - homepage = "https://github.com/dkahle/ggmap" - url = "https://cloud.r-project.org/src/contrib/ggmap_2.6.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggmap" + cran = "ggmap" version('3.0.0', sha256='96c24ffdc0710d0633ac4721d599d2c06f43a29c59d1e85c94ff0af30dfdb58d') version('2.6.2', sha256='4e9cf53ab108fc70805d971dadb69b26fe67ea289c23c38adf6e30b198379d90') @@ -22,23 +22,24 @@ 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-proto', when='@:2.6.2', 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-reshape2', when='@:2.6.2', type=('build', 'run')) depends_on('r-rjson', type=('build', 'run')) - depends_on('r-mapproj', when='@:2.6.2', type=('build', 'run')) depends_on('r-jpeg', type=('build', 'run')) - depends_on('r-geosphere', when='@:2.6.2', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) depends_on('r-scales', type=('build', 'run')) - depends_on('r-dplyr', when='@3.0.0:', type=('build', 'run')) - depends_on('r-bitops', when='@3.0.0:', type=('build', 'run')) - depends_on('r-glue', when='@3.0.0:', type=('build', 'run')) - depends_on('r-httr', when='@3.0.0:', type=('build', 'run')) - depends_on('r-stringr', when='@3.0.0:', type=('build', 'run')) - depends_on('r-purrr', when='@3.0.0:', type=('build', 'run')) - depends_on('r-magrittr', when='@3.0.0:', type=('build', 'run')) - depends_on('r-tibble', when='@3.0.0:', type=('build', 'run')) - depends_on('r-tidyr', when='@3.0.0:', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run'), when='@3.0.0:') + depends_on('r-bitops', type=('build', 'run'), when='@3.0.0:') + depends_on('r-glue', type=('build', 'run'), when='@3.0.0:') + depends_on('r-httr', type=('build', 'run'), when='@3.0.0:') + depends_on('r-stringr', type=('build', 'run'), when='@3.0.0:') + depends_on('r-purrr', type=('build', 'run'), when='@3.0.0:') + depends_on('r-magrittr', type=('build', 'run'), when='@3.0.0:') + depends_on('r-tibble', type=('build', 'run'), when='@3.0.0:') + depends_on('r-tidyr', type=('build', 'run'), when='@3.0.0:') + + 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') + depends_on('r-geosphere', type=('build', 'run'), when='@:2.6.2') diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index b2da724ed23c50..69d917ce94108f 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -7,14 +7,13 @@ class RGgplot2(RPackage): - """Create Elegant Data Visualisations Using the Grammar of Graphics + """Create Elegant Data Visualisations Using the Grammar of Graphics. A system for 'declaratively' creating graphics, based on "The Grammar of Graphics". You provide the data, tell 'ggplot2' how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details.""" - homepage = "https://ggplot2.tidyverse.org/" cran = "ggplot2" version('3.3.5', sha256='b075294faf3af31b18e415f260c62d6000b218770e430484fe38819bdc3224ea') @@ -24,21 +23,22 @@ class RGgplot2(RPackage): version('2.2.1', sha256='5fbc89fec3160ad14ba90bd545b151c7a2e7baad021c0ab4b950ecd6043a8314') version('2.1.0', sha256='f2c323ae855d6c089e3a52138aa7bc25b9fe1429b8df9eae89d28ce3c0dd3969') - depends_on('r@3.1:', when='@:3.1.1', type=('build', 'run')) - depends_on('r@3.2:', when='@3.2.0:', type=('build', 'run')) - depends_on('r@3.3:', when='@3.3.4:', type=('build', 'run')) + 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-digest', type=('build', 'run')) - depends_on('r-glue', when='@3.3.3:', type=('build', 'run')) + 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', when='@3.3.3:', type=('build', 'run')) + depends_on('r-isoband', type=('build', 'run'), when='@3.3.3:') depends_on('r-mass', type=('build', 'run')) - depends_on('r-mgcv', when='@3.2.0:', type=('build', 'run')) - depends_on('r-rlang@0.3.0:', when='@3.0.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.10:', when='@3.3.4:', 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:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@3.3.4:') depends_on('r-scales@0.5.0:', type=('build', 'run')) depends_on('r-tibble', type=('build', 'run')) - depends_on('r-withr@2.0.0:', when='@3.0.0:', type=('build', 'run')) - depends_on('r-plyr@1.7.1:', when='@:3.1.1', type=('build', 'run')) - depends_on('r-reshape2', when='@:3.2.0', type=('build', 'run')) - depends_on('r-lazyeval', when='@:3.2.0', type=('build', 'run')) - depends_on('r-viridislite', when='@3.0.0:3.2.0', type=('build', 'run')) + depends_on('r-withr@2.0.0:', type=('build', 'run'), when='@3.0.0:') + + depends_on('r-plyr@1.7.1:', type=('build', 'run'), when='@:3.1.1') + depends_on('r-reshape2', type=('build', 'run'), when='@:3.2.0') + depends_on('r-lazyeval', type=('build', 'run'), when='@:3.2.0') + depends_on('r-viridislite', type=('build', 'run'), when='@3.0.0:3.2.0') diff --git a/var/spack/repos/builtin/packages/r-ggplotify/package.py b/var/spack/repos/builtin/packages/r-ggplotify/package.py index efc4b9bb6fe303..612588f42005df 100644 --- a/var/spack/repos/builtin/packages/r-ggplotify/package.py +++ b/var/spack/repos/builtin/packages/r-ggplotify/package.py @@ -7,7 +7,7 @@ class RGgplotify(RPackage): - """Convert Plot to 'grob' or 'ggplot' Object + """Convert Plot to 'grob' or 'ggplot' Object. Convert plot function call (using expression or formula) to 'grob' or 'ggplot' object that compatible to the 'grid' and 'ggplot2' ecosystem. With @@ -15,14 +15,15 @@ class RGgplotify(RPackage): by 'base' graphics, 'ComplexHeatmap', 'eulerr', 'grid', 'lattice', 'magick', 'pheatmap', 'vcd' etc. by converting them to 'ggplot' objects.""" - homepage = "https://github.com/GuangchuangYu/ggplotify" - url = "https://cloud.r-project.org/src/contrib/ggplotify_0.0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggplotify" + cran = "ggplotify" + version('0.1.0', sha256='178f73d6d3dc391c3efb1a62c95fe38587044f9e3288dffb915d3687941bb38a') version('0.0.5', sha256='035ea6a70023c4819c8a486d0fd94c2765aa4d6df318747e104eeb9829b9d65d') version('0.0.3', sha256='7e7953a2933aa7127a0bac54375e3e0219a0744cfc3249c3d7b76065f7a51892') depends_on('r@3.4.0:', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-gridgraphics', type=('build', 'run')) - depends_on('r-rvcheck', type=('build', 'run')) + depends_on('r-yulab-utils', type=('build', 'run'), when='@0.1.0:') + + depends_on('r-rvcheck', type=('build', 'run'), when='@:0.0.5') diff --git a/var/spack/repos/builtin/packages/r-ggpubr/package.py b/var/spack/repos/builtin/packages/r-ggpubr/package.py index 5503ca26b5dec9..e725f3e584b942 100644 --- a/var/spack/repos/builtin/packages/r-ggpubr/package.py +++ b/var/spack/repos/builtin/packages/r-ggpubr/package.py @@ -7,7 +7,7 @@ class RGgpubr(RPackage): - """'ggplot2' Based Publication Ready Plots + """'ggplot2' Based Publication Ready Plots. The 'ggplot2' package is excellent and flexible for elegant data visualization in R. However the default generated plots requires some @@ -17,9 +17,7 @@ class RGgpubr(RPackage): provides some easy-to-use functions for creating and customizing 'ggplot2'- based publication ready plots.""" - homepage = "http://www.sthda.com/english/rpkgs/ggpubr" - url = "https://cloud.r-project.org/src/contrib/ggpubr_0.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggpubr" + cran = "ggpubr" version('0.4.0', sha256='abb21ec0b1ae3fa1c58eedca2d59b9b009621b30e3660f1247b3880c5fa50675') version('0.2.2', sha256='1c93dc6d1f08680dd00a10b6842445700d1fccb11f18599fbdf51e70c6b6b364') @@ -31,17 +29,17 @@ class RGgpubr(RPackage): depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-ggrepel', type=('build', 'run')) depends_on('r-ggsci', type=('build', 'run')) - depends_on('r-tidyr', when='@0.2:', type=('build', 'run')) - depends_on('r-plyr', when='@:0.1.2', type=('build', 'run')) - depends_on('r-purrr', when='@0.2:', type=('build', 'run')) - depends_on('r-dplyr@0.7.1:', when='@0.2:', type=('build', 'run')) - depends_on('r-cowplot', when='@0.2:', type=('build', 'run')) - depends_on('r-ggsignif', when='@0.2:', type=('build', 'run')) - depends_on('r-scales', when='@0.2:', type=('build', 'run')) - depends_on('r-gridextra', when='@0.2:', type=('build', 'run')) - depends_on('r-glue', when='@0.2:', type=('build', 'run')) - depends_on('r-polynom', when='@0.2:', type=('build', 'run')) - depends_on('r-rlang', when='@0.2.2:', type=('build', 'run')) - depends_on('r-rstatix@0.6.0:', when='@0.4.0:', type=('build', 'run')) - depends_on('r-tibble', when='@0.4.0:', type=('build', 'run')) + depends_on('r-tidyr', type=('build', 'run'), when='@0.2:') + depends_on('r-plyr', type=('build', 'run'), when='@:0.1.2') + depends_on('r-purrr', type=('build', 'run'), when='@0.2:') + depends_on('r-dplyr@0.7.1:', type=('build', 'run'), when='@0.2:') + depends_on('r-cowplot', type=('build', 'run'), when='@0.2:') + depends_on('r-ggsignif', type=('build', 'run'), when='@0.2:') + depends_on('r-scales', type=('build', 'run'), when='@0.2:') + depends_on('r-gridextra', type=('build', 'run'), when='@0.2:') + depends_on('r-glue', type=('build', 'run'), when='@0.2:') + depends_on('r-polynom', type=('build', 'run'), when='@0.2:') + depends_on('r-rlang', type=('build', 'run'), when='@0.2.2:') + depends_on('r-rstatix@0.6.0:', type=('build', 'run'), when='@0.4.0:') + depends_on('r-tibble', type=('build', 'run'), when='@0.4.0:') depends_on('r-magrittr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ggraph/package.py b/var/spack/repos/builtin/packages/r-ggraph/package.py index 80f1dc74df262e..04c1287360327b 100644 --- a/var/spack/repos/builtin/packages/r-ggraph/package.py +++ b/var/spack/repos/builtin/packages/r-ggraph/package.py @@ -7,7 +7,7 @@ class RGgraph(RPackage): - """An Implementation of Grammar of Graphics for Graphs and Networks + """An Implementation of Grammar of Graphics for Graphs and Networks. The grammar of graphics as implemented in ggplot2 is a poor fit for graph and network visualizations due to its reliance on tabular data input. @@ -15,10 +15,9 @@ class RGgraph(RPackage): and provides the same flexible approach to building up plots layer by layer.""" - homepage = "https://github.com/thomasp85/ggraph" - url = "https://cloud.r-project.org/src/contrib/ggraph_2.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggraph" + cran = "ggraph" + version('2.0.5', sha256='e36ad49dba92ee8652e18b1fb197be0ceb9f0a2f8faee2194453a62578449654') version('2.0.4', sha256='9c6092d9a98b7b116f9c765ba44de7a34ceff2f584e776ef7a2082ad1d717dc8') version('2.0.0', sha256='4307efe85bfc6a0496797f6b86d6b174ba196538c51b1a6b6af55de0d4e04762') @@ -37,4 +36,4 @@ class RGgraph(RPackage): 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-withr', when='@2.0.4:', type=('build', 'run')) + depends_on('r-withr', type=('build', 'run'), when='@2.0.4:') diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py index 1138daca42d54f..37d19528761a77 100644 --- a/var/spack/repos/builtin/packages/r-ggrepel/package.py +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -7,16 +7,15 @@ class RGgrepel(RPackage): - """Repulsive Text and Label Geoms for 'ggplot2' + """Repulsive Text and Label Geoms for 'ggplot2'. Provides text and label geoms for 'ggplot2' that help to avoid overlapping text labels. Labels repel away from each other and away from the data points.""" - homepage = "https://github.com/slowkow/ggrepel" - url = "https://cloud.r-project.org/src/contrib/ggrepel_0.6.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggrepel" + cran = "ggrepel" + version('0.9.1', sha256='29fb916d4799ba6503a5dd019717ffdf154d2aaae9ff1736f03e2be24af6bdfc') version('0.9.0', sha256='4f7ca3da7dc08902487c961c539ef43516263c30abcc4ce303ff3c5580f42fda') version('0.8.1', sha256='d5d03a77ab6d8c831934bc46e840cc4e3df487272ab591fa72767ad42bcb7283') version('0.8.0', sha256='6386606e716d326354a29fcb6cd09f9b3d3b5e7c5ba0d5f7ff35416b1a4177d4') @@ -25,6 +24,6 @@ class RGgrepel(RPackage): depends_on('r@3.0.0:', type=('build', 'run')) depends_on('r-ggplot2@2.2.0:', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) - depends_on('r-rlang@0.3.0:', when='@0.9.0:', type=('build', 'run')) + depends_on('r-rlang@0.3.0:', type=('build', 'run'), when='@0.9.0:') depends_on('r-scales@0.3.0:', type=('build', 'run')) - depends_on('r-scales@0.5.0:', when='@0.9.0:', type=('build', 'run')) + depends_on('r-scales@0.5.0:', type=('build', 'run'), when='@0.9.0:') diff --git a/var/spack/repos/builtin/packages/r-ggridges/package.py b/var/spack/repos/builtin/packages/r-ggridges/package.py index 16e182e55c9b98..09f90c428b255e 100644 --- a/var/spack/repos/builtin/packages/r-ggridges/package.py +++ b/var/spack/repos/builtin/packages/r-ggridges/package.py @@ -7,15 +7,13 @@ class RGgridges(RPackage): - """Ridgeline Plots in 'ggplot2' + """Ridgeline Plots in 'ggplot2'. Ridgeline plots provide a convenient way of visualizing changes in distributions over time or space. This package enables the creation of such plots in 'ggplot2'.""" - homepage = "https://cloud.r-project.org/package=ggridges" - url = "https://cloud.r-project.org/src/contrib/ggridges_0.4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggridges" + cran = "ggridges" version('0.5.3', sha256='f5eafab17f2d4a8a2a83821ad3e96ae7c26b62bbce9de414484c657383c7b42e') version('0.5.1', sha256='01f87cdcdf2052ed9c078d9352465cdeda920a41e2ca55bc154c1574fc651c36') @@ -25,7 +23,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:', when='@0.5.3:', type=('build', 'run')) + depends_on('r-ggplot2@3.0.0:', type=('build', 'run'), when='@0.5.3:') depends_on('r-plyr@1.8.0:', type=('build', 'run')) depends_on('r-scales@0.4.1:', type=('build', 'run')) - depends_on('r-withr@2.1.1:', when='@0.5.0:', 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 24e1ffaec13944..31c0f00763f78d 100644 --- a/var/spack/repos/builtin/packages/r-ggsci/package.py +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -7,12 +7,13 @@ class RGgsci(RPackage): - """ggsci: Scientific Journal and Sci-Fi Themed Color Palettes for - 'ggplot2'""" + """Scientific Journal and Sci-Fi Themed Color Palettes for 'ggplot2'. - homepage = "https://github.com/road2stat/ggsci" - url = "https://cloud.r-project.org/src/contrib/ggsci_2.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggsci" + collection of 'ggplot2' color palettes inspired by plots in scientific + journals, data visualization libraries, science fiction movies, and TV + shows.""" + + cran = "ggsci" version('2.9', sha256='4af14e6f3657134c115d5ac5e65a2ed74596f9a8437c03255447cd959fe9e33c') version('2.8', sha256='b4ce7adce7ef23edf777866086f98e29b2b45b58fed085bbd1ffe6ab52d74ae8') diff --git a/var/spack/repos/builtin/packages/r-ggsignif/package.py b/var/spack/repos/builtin/packages/r-ggsignif/package.py index 030b8a3e84b3d2..9f31938551ab77 100644 --- a/var/spack/repos/builtin/packages/r-ggsignif/package.py +++ b/var/spack/repos/builtin/packages/r-ggsignif/package.py @@ -7,18 +7,20 @@ class RGgsignif(RPackage): - """Enrich your 'ggplots' with group-wise comparisons. This package provides - an easy way to indicate if two groups are significantly different. Commonly + """Significance Brackets for 'ggplot2'. + + Enrich your 'ggplots' with group-wise comparisons. This package provides an + easy way to indicate if two groups are significantly different. Commonly this is shown by a bracket on top connecting the groups of interest which itself is annotated with the level of significance (NS, *, **, ***). The package provides a single layer (geom_signif()) that takes the groups for comparison and the test (t.test(), wilcox.text() etc.) as arguments and adds the annotation to the plot.""" - homepage = "https://github.com/const-ae/ggsignif" - url = "https://cloud.r-project.org/src/contrib/ggsignif_0.6.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggsignif" + cran = "ggsignif" + version('0.6.3', sha256='ca8545b25590e531512a90a18449a2cbab945f7434a1d60188c41f7d1839a7a9') version('0.6.0', sha256='6fe13efda31386483e64d466ba2f5a53a2a235ae04f5c17bba3ccc63d283499e') depends_on('r-ggplot2@2.0.0:', type=('build', 'run')) + depends_on('r-ggplot2@3.3.5:', type=('build', 'run'), when='@0.6.3:') diff --git a/var/spack/repos/builtin/packages/r-ggthemes/package.py b/var/spack/repos/builtin/packages/r-ggthemes/package.py index 3768592fff33ea..2e6b9b712b3ed9 100644 --- a/var/spack/repos/builtin/packages/r-ggthemes/package.py +++ b/var/spack/repos/builtin/packages/r-ggthemes/package.py @@ -7,18 +7,15 @@ class RGgthemes(RPackage): - """ggthemes: Extra Themes, Scales and Geoms for - 'ggplot2' + """Extra Themes, Scales and Geoms for 'ggplot2'. - Some extra themes, geoms, and scales for 'ggplot2'. Provides 'ggplot2' themes - and scales that replicate the look of plots by Edward Tufte, Stephen Few, - 'Fivethirtyeight', 'The Economist', 'Stata', 'Excel', and 'The Wall Street - Journal', among others. Provides 'geoms' for Tufte's box plot and range - frame.""" + Some extra themes, geoms, and scales for 'ggplot2'. Provides 'ggplot2' + themes and scales that replicate the look of plots by Edward Tufte, Stephen + Few, 'Fivethirtyeight', 'The Economist', 'Stata', 'Excel', and 'The Wall + Street Journal', among others. Provides 'geoms' for Tufte's box plot and + range frame.""" - homepage = "https://jrnold.github.io/ggthemes/" - url = "https://cloud.r-project.org/src/contrib/ggthemes_4.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggthemes" + cran = "ggthemes" version('4.2.4', sha256='7b35168cf5b68f6f52dd533a1b345ec87e09d1a85ca68e8dc5377cdf95718567') version('4.2.0', sha256='5bb3fe94819fe2cce7865f07a6e6ea5c59d3996f78d1c0836ad406f69efb3367') diff --git a/var/spack/repos/builtin/packages/r-ggtree/package.py b/var/spack/repos/builtin/packages/r-ggtree/package.py new file mode 100644 index 00000000000000..b3836e724fbdbd --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggtree/package.py @@ -0,0 +1,34 @@ +# Copyright 2013-2022 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 import * + + +class RGgtree(RPackage): + """an R package for visualization of tree and annotation data. + + 'ggtree' extends the 'ggplot2' plotting system which implemented the + grammar of graphics. 'ggtree' is designed for visualization and annotation + of phylogenetic trees and other tree-like structures with their annotation + data.""" + + bioc = "ggtree" + + version('3.2.1', commit='d3747e636fe1a6a9e09b56a3a3899208ebd05547') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-ape', type=('build', 'run')) + depends_on('r-aplot@0.0.4:', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run')) + depends_on('r-ggplot2@3.0.0:', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run')) + depends_on('r-purrr', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run')) + depends_on('r-ggfun', type=('build', 'run')) + depends_on('r-yulab-utils', type=('build', 'run')) + depends_on('r-tidyr', type=('build', 'run')) + depends_on('r-tidytree@0.2.6:', type=('build', 'run')) + depends_on('r-treeio@1.8.0:', type=('build', 'run')) + depends_on('r-scales', 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 581588f569d809..d5afc7de501637 100644 --- a/var/spack/repos/builtin/packages/r-ggvis/package.py +++ b/var/spack/repos/builtin/packages/r-ggvis/package.py @@ -7,15 +7,13 @@ class RGgvis(RPackage): - """Interactive Grammar of Graphics + """Interactive Grammar of Graphics. An implementation of an interactive grammar of graphics, taking the best parts of 'ggplot2', combining them with the reactive framework from 'shiny' and web graphics from 'vega'.""" - homepage = "https://ggvis.rstudio.com/" - url = "https://cloud.r-project.org/src/contrib/ggvis_0.4.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ggvis" + cran = "ggvis" version('0.4.7', sha256='9e6b067e11d497c796d42156570e2481afb554c5db265f42afbb74d2ae0865e3') version('0.4.4', sha256='1332ea122b768688c8a407a483be80febc4576de0ec8929077738421b27cafaf') @@ -28,7 +26,8 @@ class RGgvis(RPackage): depends_on('r-shiny@0.11.1:', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-dplyr@0.4.0:', type=('build', 'run')) - depends_on('r-dplyr@0.5.0:', when='@0.4.7:', type=('build', 'run')) - depends_on('r-rlang', when='@0.4.7:', type=('build', 'run')) + depends_on('r-dplyr@0.5.0:', type=('build', 'run'), when='@0.4.7:') + depends_on('r-rlang', type=('build', 'run'), when='@0.4.7:') depends_on('r-htmltools@0.2.4:', type=('build', 'run')) - depends_on('r-lazyeval', when='@:0.4.4', type=('build', 'run')) + + depends_on('r-lazyeval', type=('build', 'run'), when='@:0.4.4') diff --git a/var/spack/repos/builtin/packages/r-gh/package.py b/var/spack/repos/builtin/packages/r-gh/package.py index 75332aa2e2662f..9064fca9d4024e 100644 --- a/var/spack/repos/builtin/packages/r-gh/package.py +++ b/var/spack/repos/builtin/packages/r-gh/package.py @@ -7,22 +7,21 @@ class RGh(RPackage): - """'GitHub' 'API' + """'GitHub' 'API'. Minimal client to access the 'GitHub' 'API'.""" - homepage = "https://github.com/r-lib/gh#readme" - url = "https://cloud.r-project.org/src/contrib/gh_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gh" + cran = "gh" + version('1.3.0', sha256='a44039054e8ca56496f2d9c7a10cdadf4a7383bc91086e768ba7e7f1fbcaed1c') version('1.2.0', sha256='2988440ed2ba4b241c8ffbafbfdad29493574980a9aeba210521dadda91f7eff') version('1.1.0', sha256='de9faf383c3fe5e87a75391d82cf71b1331b3c80cd00c4203146a303825d89ad') version('1.0.1', sha256='f3c02b16637ae390c3599265852d94b3de3ef585818b260d00e7812595b391d2') - depends_on('r-cli', when='@1.1.0:', type=('build', 'run')) - depends_on('r-cli@2.0.1:', when='@1.2.0:', type=('build', 'run')) - depends_on('r-gitcreds', when='@1.2.0:', type=('build', 'run')) + 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-gitcreds', type=('build', 'run'), when='@1.2.0:') depends_on('r-httr', type=('build', 'run')) - depends_on('r-httr@1.2:', when='@1.1.0:', type=('build', 'run')) + depends_on('r-httr@1.2:', type=('build', 'run'), when='@1.1.0:') depends_on('r-ini', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-gistr/package.py b/var/spack/repos/builtin/packages/r-gistr/package.py index 444dfc95d63bde..e159d596b0ea42 100644 --- a/var/spack/repos/builtin/packages/r-gistr/package.py +++ b/var/spack/repos/builtin/packages/r-gistr/package.py @@ -8,7 +8,7 @@ class RGistr(RPackage): - """Work with 'GitHub' 'Gists' + """Work with 'GitHub' 'Gists'. Work with 'GitHub' 'gists' from 'R' (e.g., , @@ -21,9 +21,7 @@ class RGistr(RPackage): when 'authenticated'. Some requests require authentication and some do not. 'Gists' website: .""" - homepage = "https://github.com/ropensci/gistr" - url = "https://cloud.r-project.org/src/contrib/gistr_0.3.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gistr" + cran = "gistr" version('0.9.0', sha256='170ae025151ee688e7d31b9e49112086a8ddf4fef10155e9ee289ad7f28c8929') version('0.4.2', sha256='43c00c7f565732125f45f6c067724771ba1b337d6dd3a6e301639fe16e11032e') @@ -32,7 +30,7 @@ class RGistr(RPackage): depends_on('r+X', type=('build', 'run')) depends_on('r-jsonlite@1.4:', type=('build', 'run')) - depends_on('r-crul', when='@0.9.0:', type=('build', 'run')) + depends_on('r-crul', type=('build', 'run'), when='@0.9.0:') depends_on('r-httr@1.2.0:', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-assertthat', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index cabbd743c52937..65f0bf38540f4a 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -7,16 +7,15 @@ class RGit2r(RPackage): - """Provides Access to Git Repositories + """Provides Access to Git Repositories. - Interface to the 'libgit2' library, which is a pure C implementation of - the 'Git' core methods. Provides access to 'Git' repositories to extract - data and running some basic 'Git' commands.""" + Interface to the 'libgit2' library, which is a pure C implementation of the + 'Git' core methods. Provides access to 'Git' repositories to extract data + and running some basic 'Git' commands.""" - homepage = "https://github.com/ropensci/git2r" - url = "https://cloud.r-project.org/src/contrib/git2r_0.18.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/git2r" + cran = "git2r" + version('0.29.0', sha256='f8f7a181dc0ac761f2a0c4099bfd744ded01c0e0832cab32dc5b4da32accd48e') version('0.28.0', sha256='ce6d148d21d2c87757e98ef4474b2d09faded9b9b866f046bd26d4ca925e55f2') version('0.27.1', sha256='099207f180aa45ddcc443cbb22487eafd14e1cd8e5979b3476214253fd773bc0') version('0.26.1', sha256='13d609286a0af4ef75ba76f2c2f856593603b8014e311b88896243a50b417435') @@ -25,6 +24,7 @@ class RGit2r(RPackage): version('0.15.0', sha256='682ab9e7f71b2ed13a9ef95840df3c6b429eeea070edeb4d21d725cf0b72ede6') depends_on('r@3.1:', type=('build', 'run')) + depends_on('libgit2') depends_on('zlib') depends_on('openssl') - depends_on('libgit2') + depends_on('libssh2') diff --git a/var/spack/repos/builtin/packages/r-gitcreds/package.py b/var/spack/repos/builtin/packages/r-gitcreds/package.py index 7339a06456c44b..dbb7c6de4eea14 100644 --- a/var/spack/repos/builtin/packages/r-gitcreds/package.py +++ b/var/spack/repos/builtin/packages/r-gitcreds/package.py @@ -7,16 +7,14 @@ class RGitcreds(RPackage): - """Query 'git' Credentials from 'R' + """Query 'git' Credentials from 'R'. Query, set, delete credentials from the 'git' credential store. Manage 'GitHub' tokens and other 'git' credentials. This package is to be used by other packages that need to authenticate to 'GitHub' and/or other 'git' repositories.""" - homepage = "https://github.com/r-lib/gitcreds" - url = "https://cloud.r-project.org/src/contrib/gitcreds_0.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gitcreds" + cran = "gitcreds" version('0.1.1', sha256='b14aaf4e910a9d2d6c65c93e645f0b0159c00898e669f917f83c03dfedb1dfea') diff --git a/var/spack/repos/builtin/packages/r-glimma/package.py b/var/spack/repos/builtin/packages/r-glimma/package.py index ca1adb43d21f02..ac5fa1b5e369be 100644 --- a/var/spack/repos/builtin/packages/r-glimma/package.py +++ b/var/spack/repos/builtin/packages/r-glimma/package.py @@ -7,7 +7,7 @@ class RGlimma(RPackage): - """Interactive HTML graphics + """Interactive HTML graphics. This package generates interactive visualisations for analysis of RNA- sequencing data using output from limma, edgeR or DESeq2 packages in an @@ -15,9 +15,9 @@ class RGlimma(RPackage): representations of analysis results in order to provide additional information.""" - homepage = "https://bioconductor.org/packages/Glimma" - git = "https://git.bioconductor.org/packages/Glimma.git" + bioc = "Glimma" + version('2.4.0', commit='caa270e44ec6994035d2e915c0f68a14ccbb58db') version('2.0.0', commit='40bebaa79e8c87c5686cff7285def4461c11bca9') version('1.12.0', commit='d02174239fe0b47983d6947ed42a1a53b24caecb') version('1.10.1', commit='ffc7abc36190396598fadec5e9c653441e47be72') @@ -26,14 +26,15 @@ class RGlimma(RPackage): version('1.4.0', commit='c613c5334ed7868f36d5716b97fdb6234fb291f8') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@1.6.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-htmlwidgets', when='@2.0.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@1.6.0:') + depends_on('r@4.0.0:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-htmlwidgets', type=('build', 'run'), when='@2.0.0:') depends_on('r-edger', type=('build', 'run')) - depends_on('r-deseq2', when='@2.0.0:', type=('build', 'run')) - depends_on('r-limma', when='@2.0.0:', type=('build', 'run')) - depends_on('r-summarizedexperiment', when='@2.0.0:', type=('build', 'run')) + depends_on('r-deseq2', type=('build', 'run'), when='@2.0.0:') + depends_on('r-limma', type=('build', 'run'), when='@2.0.0:') + depends_on('r-summarizedexperiment', type=('build', 'run'), when='@2.0.0:') depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) - depends_on('r-biobase', when='@1.4.0:1.6.0', type=('build', 'run')) - depends_on('r-scater', when='@1.4.0', type=('build', 'run')) + + depends_on('r-biobase', type=('build', 'run'), when='@1.4.0:1.6.0') + depends_on('r-scater', type=('build', 'run'), when='@1.4.0') diff --git a/var/spack/repos/builtin/packages/r-glmnet/package.py b/var/spack/repos/builtin/packages/r-glmnet/package.py index 5305ccf9738960..8a3e6fdc87470e 100644 --- a/var/spack/repos/builtin/packages/r-glmnet/package.py +++ b/var/spack/repos/builtin/packages/r-glmnet/package.py @@ -7,26 +7,27 @@ class RGlmnet(RPackage): - """Lasso and Elastic-Net Regularized Generalized Linear Models + """Lasso and Elastic-Net Regularized Generalized Linear Models. - Extremely efficient procedures for fitting the entire lasso or - elastic-net regularization path for linear regression, logistic and - multinomial regression models, Poisson regression and the Cox model. Two - recent additions are the multiple-response Gaussian, and the grouped - multinomial. The algorithm uses cyclical coordinate descent in a path-wise - fashion, as described in the paper linked to via the URL below.""" + Extremely efficient procedures for fitting the entire lasso or elastic-net + regularization path for linear regression, logistic and multinomial + regression models, Poisson regression and the Cox model. Two recent + additions are the multiple-response Gaussian, and the grouped multinomial. + The algorithm uses cyclical coordinate descent in a path-wise fashion, as + described in the paper linked to via the URL below.""" - homepage = "https://cloud.r-project.org/package=glmnet" - url = "https://cloud.r-project.org/src/contrib/glmnet_2.0-13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/glmnet" + cran = "glmnet" + version('4.1-3', sha256='64bc35aa40b6e580cfb8a21e649eb103e996e8747a10c476b8bb9545c846325a') version('4.1', sha256='8f0af50919f488789ecf261f6e0907f367d89fca812baa2f814054fb2d0e40cb') version('2.0-18', sha256='e8dce9d7b8105f9cc18ba981d420de64a53b09abee219660d3612915d554256b') version('2.0-13', sha256='f3288dcaddb2f7014d42b755bede6563f73c17bc87f8292c2ef7776cb9b9b8fd') version('2.0-5', sha256='2ca95352c8fbd93aa7800f3d972ee6c1a5fcfeabc6be8c10deee0cb457fd77b1') - depends_on('r@3.6.0:', when='@4.1:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@4.1:') depends_on('r-matrix@1.0-6:', type=('build', 'run')) depends_on('r-foreach', type=('build', 'run')) - depends_on('r-shape', when='@4.1:', type=('build', 'run')) - depends_on('r-survival', when='@4.1:', type=('build', 'run')) + depends_on('r-shape', type=('build', 'run'), when='@4.1:') + depends_on('r-survival', type=('build', 'run'), when='@4.1:') + depends_on('r-rcpp', type=('build', 'run'), when='@4.1-3:') + depends_on('r-rcppeigen', type=('build', 'run'), when='@4.1-3:') diff --git a/var/spack/repos/builtin/packages/r-globaloptions/package.py b/var/spack/repos/builtin/packages/r-globaloptions/package.py index cf53cab0cb0476..ddc3cc1852de09 100644 --- a/var/spack/repos/builtin/packages/r-globaloptions/package.py +++ b/var/spack/repos/builtin/packages/r-globaloptions/package.py @@ -7,18 +7,16 @@ class RGlobaloptions(RPackage): - """Generate Functions to Get or Set Global Options + """Generate Functions to Get or Set Global Options. It provides more controls on the option values such as validation and filtering on the values, making options invisible or private.""" - homepage = "https://cloud.r-project.org/package=GlobalOptions" - url = "https://cloud.r-project.org/src/contrib/GlobalOptions_0.0.12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GlobalOptions" + cran = "GlobalOptions" version('0.1.2', sha256='47890699668cfa9900a829c51f8a32e02a7a7764ad07cfac972aad66f839753e') version('0.1.0', sha256='567a0a51f6b7b14127302f00e6e4944befd4964c069f96a9e61256e8c3c79ef2') version('0.0.12', sha256='c09da3f9b1646d0f815056cdbeb5fff7dda29f7dd8742d245f5f6dc7066077a9') - depends_on('r@2.10:', when='@:0.0.12', type=('build', 'run')) - depends_on('r@3.3.0:', when='@0.0.13:', type=('build', 'run')) + depends_on('r@2.10:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.0.13:') diff --git a/var/spack/repos/builtin/packages/r-globals/package.py b/var/spack/repos/builtin/packages/r-globals/package.py index e01783ac25a731..8e16af438ab9d8 100644 --- a/var/spack/repos/builtin/packages/r-globals/package.py +++ b/var/spack/repos/builtin/packages/r-globals/package.py @@ -7,7 +7,7 @@ class RGlobals(RPackage): - """Identify Global Objects in R Expressions + """Identify Global Objects in R Expressions. Identifies global ("unknown" or "free") objects in R expressions by code inspection using various strategies, e.g. conservative or liberal. The @@ -15,9 +15,7 @@ class RGlobals(RPackage): global objects for the purpose of exporting them in distributed compute environments.""" - homepage = "https://github.com/HenrikBengtsson/globals" - url = "https://cloud.r-project.org/src/contrib/globals_0.12.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/globals" + cran = "globals" version('0.14.0', sha256='203dbccb829ca9cc6aedb6f5e79cb126ea31f8dd379dff9111ec66e3628c32f3') version('0.12.4', sha256='7985356ad75afa1f795f8267a20dee847020c0207252dc075c614cef55d8fe6b') diff --git a/var/spack/repos/builtin/packages/r-globaltest/package.py b/var/spack/repos/builtin/packages/r-globaltest/package.py index ff024d53d3206c..0288a9a226e510 100644 --- a/var/spack/repos/builtin/packages/r-globaltest/package.py +++ b/var/spack/repos/builtin/packages/r-globaltest/package.py @@ -8,7 +8,7 @@ class RGlobaltest(RPackage): """Testing Groups of Covariates/Features for Association with a Response - Variable, with Applications to Gene Set Testing: + Variable, with Applications to Gene Set Testing. The global test tests groups of covariates (or features) for association with a response variable. This package implements the test with diagnostic @@ -16,8 +16,9 @@ class RGlobaltest(RPackage): facilitate the use of this test for gene set testing of GO and KEGG terms.""" - bioc = "globaltest" + bioc = "globaltest" + version('5.48.0', commit='86c2c8f35734dcbc8c8ca791d8a190dc525beac9') version('5.44.0', commit='571933d5c779a241740be913ff49ecdd59bcbc45') depends_on('r-survival', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-glue/package.py b/var/spack/repos/builtin/packages/r-glue/package.py index 98d9bb06e6a224..4015badc7f0069 100644 --- a/var/spack/repos/builtin/packages/r-glue/package.py +++ b/var/spack/repos/builtin/packages/r-glue/package.py @@ -7,7 +7,7 @@ class RGlue(RPackage): - """Interpreted String Literals + """Interpreted String Literals. An implementation of interpreted string literals, inspired by Python's Literal String Interpolation @@ -15,10 +15,10 @@ class RGlue(RPackage): Triple-Quoted String Literals .""" - homepage = "https://github.com/tidyverse/glue" - url = "https://cloud.r-project.org/src/contrib/glue_1.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/glue" + cran = "glue" + version('1.6.1', sha256='318c2f9544f1204216009f512793c44d6bbe178ff2012f56fa5ffb5e1da978db') + version('1.6.0', sha256='77bef37ef2c47aad6188ea772880591c5763cce4b1c256e10e68e7c3ec6b4338') version('1.4.2', sha256='9f7354132a26e9a876428fa87629b9aaddcd558f9932328e6ac065b95b8ef7ad') version('1.4.1', sha256='f8b687d35cacb5ee7fcada6e9c26ea20c04d0bdc9d37e919a03abd1137513bc8') version('1.4.0', sha256='ea6c409f7141754baa090deba96cff270a11b185452cf9e6fb69cb148a9069c1') @@ -27,4 +27,5 @@ class RGlue(RPackage): version('1.2.0', sha256='19275b34ee6a1bcad05360b7eb996cebaa1402f189a5dfb084e695d423f2296e') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@1.4.2:', 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:') diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py index 8cd0c2ab53fb76..2b4dd4da56d2c1 100644 --- a/var/spack/repos/builtin/packages/r-gmodels/package.py +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -9,9 +9,7 @@ class RGmodels(RPackage): """Various R programming tools for model fitting.""" - homepage = "https://www.sf.net/projects/r-gregmisc" - url = "https://cloud.r-project.org/src/contrib/gmodels_2.16.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gmodels" + cran = "gmodels" 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 e7b401dcfc6395..3327d058672088 100644 --- a/var/spack/repos/builtin/packages/r-gmp/package.py +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -7,21 +7,20 @@ class RGmp(RPackage): - """Multiple Precision Arithmetic + """Multiple Precision Arithmetic. Multiple Precision Arithmetic (big integers and rationals, prime number tests, matrix computation), "arithmetic without limitations" using the C library GMP (GNU Multiple Precision Arithmetic).""" - homepage = "http://mulcyber.toulouse.inra.fr/projects/gmp" - url = "https://cloud.r-project.org/src/contrib/gmp_0.5-13.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gmp" + cran = "gmp" + version('0.6-2.1', sha256='c458026346c12093a22e627e2d5707a929fe95f4de3281894db4ab988d8747d6') version('0.6-2', sha256='6bfcb45b3f1e7da27d8773f911027355cab371d150c3dabf7dbaf8fba85b7f0e') version('0.5-13.5', sha256='f681ab2ff3d1e379ba8ac44a8abddd08d08170723e885abc0b469b6fa8fe5510') version('0.5-13.4', sha256='f05605b40fc39fc589e3a4d2f526a591a649faa45eef7f95c096e1bff8775196') version('0.5-13.1', sha256='2f805374a26742cd43f6b2054130d8670eda1940070aabb9971e9e48226d0976') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.6-2:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.6-2:') depends_on('gmp@4.2.3:') diff --git a/var/spack/repos/builtin/packages/r-go-db/package.py b/var/spack/repos/builtin/packages/r-go-db/package.py index cebbae210f14b1..27143c24330095 100644 --- a/var/spack/repos/builtin/packages/r-go-db/package.py +++ b/var/spack/repos/builtin/packages/r-go-db/package.py @@ -7,14 +7,17 @@ class RGoDb(RPackage): - """A set of annotation maps describing the entire Gene Ontology + """A set of annotation maps describing the entire Gene Ontology. A set of annotation maps describing the entire Gene Ontology assembled using data from GO.""" - homepage = "https://www.bioconductor.org/packages/GO.db/" - url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/GO.db_3.4.1.tar.gz" + bioc = "GO.db" + url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/GO.db_3.4.1.tar.gz" + version('3.14.0', + sha256='45d0a681a662667d45b2472d160b72f7058ad0a28dd0ca24742e11ddfd87d8e7', + url='https://bioconductor.org/packages/3.14/data/annotation/src/contrib/GO.db_3.14.0.tar.gz') version('3.12.1', sha256='e0316959d3d32096f9432c897413dff74fce53e15ead7917a7724467d971dab9', url='https://bioconductor.org/packages/3.12/data/annotation/src/contrib/GO.db_3.12.1.tar.gz') @@ -24,4 +27,5 @@ class RGoDb(RPackage): depends_on('r@2.7.0:', type=('build', 'run')) depends_on('r-annotationdbi@1.37.4:', type=('build', 'run')) - depends_on('r-annotationdbi@1.51.3:', when='@3.12.1:', type=('build', 'run')) + depends_on('r-annotationdbi@1.51.3:', type=('build', 'run'), when='@3.12.1:') + depends_on('r-annotationdbi@1.55.1:', type=('build', 'run'), when='@3.14.0:') diff --git a/var/spack/repos/builtin/packages/r-goftest/package.py b/var/spack/repos/builtin/packages/r-goftest/package.py index 4a5ee5270e4152..8fbd25d40298cc 100644 --- a/var/spack/repos/builtin/packages/r-goftest/package.py +++ b/var/spack/repos/builtin/packages/r-goftest/package.py @@ -7,14 +7,14 @@ class RGoftest(RPackage): - """Cramer-Von Mises and Anderson-Darling tests of goodness-of-fit for - continuous univariate distributions, using efficient algorithms. - """ + """Classical Goodness-of-Fit Tests for Univariate Distributions. - homepage = "https://cloud.r-project.org/package=goftest" - url = "https://cloud.r-project.org/src/contrib/goftest_1.2-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/goftest" + Cramer-Von Mises and Anderson-Darling tests of goodness-of-fit for + continuous univariate distributions, using efficient algorithms.""" + cran = "goftest" + + version('1.2-3', sha256='3a5f74b6ae7ece5b294781ae57782abe12375d61789c55ff5e92e4aacf347f19') version('1.2-2', sha256='e497992666b002b6c6bed73bf05047ad7aa69eb58898da0ad8f1f5b2219e7647') depends_on('r@3.3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-gofuncr/package.py b/var/spack/repos/builtin/packages/r-gofuncr/package.py index c5413ca1e6f347..77351853e7f74b 100644 --- a/var/spack/repos/builtin/packages/r-gofuncr/package.py +++ b/var/spack/repos/builtin/packages/r-gofuncr/package.py @@ -7,7 +7,7 @@ class RGofuncr(RPackage): - """Gene ontology enrichment using FUNC + """Gene ontology enrichment using FUNC. GOfuncR performs a gene ontology enrichment analysis based on the ontology enrichment software FUNC. GO-annotations are obtained from @@ -26,9 +26,9 @@ class RGofuncr(RPackage): genes into account. It is also possible to provide custom gene coordinates, annotations and ontologies.""" - homepage = "https://bioconductor.org/packages/GOfuncR" - git = "https://git.bioconductor.org/packages/GOfuncR.git" + bioc = "GOfuncR" + version('1.14.0', commit='b3d445acf95851241d1fdb673d108ee115bdc17b') version('1.10.0', commit='51b01a2b9afa03fde2e1628036096cbeafaa2ef4') version('1.4.0', commit='2f633dc28e3faeddc5346fcdcadf1c29e3fcf709') version('1.2.0', commit='140a3cea4fe34d32fef9be756f85e337ce3deded') @@ -41,5 +41,5 @@ class RGofuncr(RPackage): depends_on('r-mapplots@1.5:', type=('build', 'run')) depends_on('r-gtools@3.5.0:', type=('build', 'run')) depends_on('r-genomicranges@1.28.4:', type=('build', 'run')) - depends_on('r-iranges', when='@1.2.0:', type=('build', 'run')) + depends_on('r-iranges', type=('build', 'run'), when='@1.2.0:') depends_on('r-annotationdbi', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-googledrive/package.py b/var/spack/repos/builtin/packages/r-googledrive/package.py index a3b093f98f97e7..fae27c478a9b89 100644 --- a/var/spack/repos/builtin/packages/r-googledrive/package.py +++ b/var/spack/repos/builtin/packages/r-googledrive/package.py @@ -11,8 +11,7 @@ class RGoogledrive(RPackage): Manage Google Drive files from R.""" - homepage = "https://github.com/tidyverse/googledrive" - cran = "googledrive" + cran = "googledrive" version('2.0.0', sha256='605c469a6a086ef4b049909c2e20a35411c165ce7ce4f62d68fd39ffed8c5a26') diff --git a/var/spack/repos/builtin/packages/r-googlesheets4/package.py b/var/spack/repos/builtin/packages/r-googlesheets4/package.py index f8efe48d7d95cc..b845405acb7063 100644 --- a/var/spack/repos/builtin/packages/r-googlesheets4/package.py +++ b/var/spack/repos/builtin/packages/r-googlesheets4/package.py @@ -12,13 +12,12 @@ class RGooglesheets4(RPackage): Interact with Google Sheets through the Sheets API v4 . "API" is an acronym for "application programming interface"; the Sheets API allows users to - interact with Google Sheets programmatically, instead of via a web - browser. The "v4" refers to the fact that the Sheets API is currently at - version 4. This package can read and write both the metadata and the cell - data in a Sheet.""" + interact with Google Sheets programmatically, instead of via a web browser. + The "v4" refers to the fact that the Sheets API is currently at version 4. + This package can read and write both the metadata and the cell data in a + Sheet.""" - homepage = "https://github.com/tidyverse/googlesheets4" - cran = "googlesheets4" + cran = "googlesheets4" version('1.0.0', sha256='0a107d76aac99d6db48d97ce55810c1412b2197f457b8476f676169a36c7cc7a') diff --git a/var/spack/repos/builtin/packages/r-googlevis/package.py b/var/spack/repos/builtin/packages/r-googlevis/package.py index 4781a0ff153244..260e99de9a7b90 100644 --- a/var/spack/repos/builtin/packages/r-googlevis/package.py +++ b/var/spack/repos/builtin/packages/r-googlevis/package.py @@ -7,7 +7,7 @@ class RGooglevis(RPackage): - """R Interface to Google Charts + """R Interface to Google Charts. R interface to Google Charts API, allowing users to create interactive charts based on data frames. Charts are displayed locally via the R HTTP @@ -15,10 +15,9 @@ class RGooglevis(RPackage): for some charts a Flash player. The data remains local and is not uploaded to Google.""" - homepage = "https://github.com/mages/googleVis#googlevis" - url = "https://cloud.r-project.org/src/contrib/googleVis_0.6.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/googleVis" + cran = "googleVis" + version('0.6.11', sha256='f8c90b6c51da7bf184bff6762d98fc24faba1b634724ecdb987161ee10987b97') version('0.6.9', sha256='0739d0a3382a73a824b5ff9a6fe329198dd05c9da5855ac051ed022d7b41b7ea') version('0.6.4', sha256='7dcaf0e9d5e5598c17e8bd474141708de37eeb2578b09788431b9d871edb7eb8') version('0.6.3', sha256='17d104c5d4e6ab7b984df229cd51be19681e4726077afec7c61a33f6e4c0b6ef') diff --git a/var/spack/repos/builtin/packages/r-goplot/package.py b/var/spack/repos/builtin/packages/r-goplot/package.py index 7047b23f8d5126..b7c26a62fe4b2c 100644 --- a/var/spack/repos/builtin/packages/r-goplot/package.py +++ b/var/spack/repos/builtin/packages/r-goplot/package.py @@ -6,19 +6,19 @@ class RGoplot(RPackage): - """Implementation of multilayered visualizations for enhanced graphical - representation of functional analysis data. It combines and integrates - omics data derived from expression and functional annotation enrichment - analyses. Its plotting functions have been developed with an - hierarchical structure in mind: starting from a general overview to - identify the most enriched categories (modified bar plot, bubble plot) - to a more detailed one displaying different types of relevant - information for the molecules in a given set of categories - (circle plot, chord plot, cluster plot, Venn diagram, heatmap).""" + """Visualization of Functional Analysis Data. - homepage = "https://github.com/wencke/wencke.github.io/issues" - url = "https://cloud.r-project.org/src/contrib/GOplot_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GOplot" + Implementation of multilayered visualizations for enhanced graphical + representation of functional analysis data. It combines and integrates + omics data derived from expression and functional annotation enrichment + analyses. Its plotting functions have been developed with an hierarchical + structure in mind: starting from a general overview to identify the most + enriched categories (modified bar plot, bubble plot) to a more detailed one + displaying different types of relevant information for the molecules in a + given set of categories (circle plot, chord plot, cluster plot, Venn + diagram, heatmap).""" + + cran = "GOplot" version('1.0.2', sha256='3ddaa2b6d1297ad6daad30d18af708adf43d86e8804b1b92fa29dfbf26d80df9') diff --git a/var/spack/repos/builtin/packages/r-gosemsim/package.py b/var/spack/repos/builtin/packages/r-gosemsim/package.py index e2dcdd1b692362..66ea0ad631e7e2 100644 --- a/var/spack/repos/builtin/packages/r-gosemsim/package.py +++ b/var/spack/repos/builtin/packages/r-gosemsim/package.py @@ -7,7 +7,7 @@ class RGosemsim(RPackage): - """GO-terms Semantic Similarity Measures + """GO-terms Semantic Similarity Measures. The semantic comparisons of Gene Ontology (GO) annotations provide quantitative ways to compute similarities between genes and gene groups, @@ -17,9 +17,9 @@ class RGosemsim(RPackage): GOSemSim implemented five methods proposed by Resnik, Schlicker, Jiang, Lin and Wang respectively.""" - homepage = "https://bioconductor.org/packages/GOSemSim" - git = "https://git.bioconductor.org/packages/GOSemSim.git" + bioc = "GOSemSim" + version('2.20.0', commit='fa82442aaa4ad1a8dacc05ee2c54f5e5e770a794') version('2.16.1', commit='92f1d567f3584fe488f434abce87c2e1950081c0') version('2.10.0', commit='5db1ecbf2f8d870430d6e587609327d05ba3ad7b') version('2.8.0', commit='c8c985b2a814cc2365c7f05b2509205e1b6b7f58') @@ -28,8 +28,8 @@ class RGosemsim(RPackage): version('2.2.0', commit='247434790e6c8cf99e5643f569390362b8c87c52') depends_on('r@3.3.2:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@2.8.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@2.16.1:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@2.8.0:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.16.1:') depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-go-db', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-goseq/package.py b/var/spack/repos/builtin/packages/r-goseq/package.py index 359591879dcc2b..b34c5c38ccf7d3 100644 --- a/var/spack/repos/builtin/packages/r-goseq/package.py +++ b/var/spack/repos/builtin/packages/r-goseq/package.py @@ -7,14 +7,14 @@ class RGoseq(RPackage): - """Gene Ontology analyser for RNA-seq and other length biased data + """Gene Ontology analyser for RNA-seq and other length biased data. Detects Gene Ontology and/or other user defined categories which are over/under represented in RNA-seq data""" - homepage = "https://bioconductor.org/packages/goseq" - git = "https://git.bioconductor.org/packages/goseq.git" + bioc = "goseq" + version('1.46.0', commit='1fb5626cc80f595499af511a830322ed12bbe144') version('1.42.0', commit='8164b90e7505bbc1035105fdc15219c764ef8b8d') version('1.36.0', commit='26c9f7de18889afeee1b571ca1c4ab4d2877ab80') version('1.34.1', commit='bad217b42cc34423698fbcf701d4e3591aac4474') diff --git a/var/spack/repos/builtin/packages/r-gostats/package.py b/var/spack/repos/builtin/packages/r-gostats/package.py index d7e5b11634229c..e54f0669aa9c9e 100644 --- a/var/spack/repos/builtin/packages/r-gostats/package.py +++ b/var/spack/repos/builtin/packages/r-gostats/package.py @@ -7,15 +7,15 @@ class RGostats(RPackage): - """Tools for manipulating GO and microarrays + """Tools for manipulating GO and microarrays. A set of tools for interacting with GO and microarray data. A variety of basic manipulation tools for graphs, hypothesis testing and other simple calculations.""" - homepage = "https://bioconductor.org/packages/GOstats" - git = "https://git.bioconductor.org/packages/GOstats.git" + bioc = "GOstats" + version('2.60.0', commit='a20055cc1c04a91b0291a918dadd9ea912c187ce') version('2.56.0', commit='8f988c3b4b1ce7e05626aae8956004c7bbdd6f3a') version('2.50.0', commit='ee13f84341988d537a5485dcdcfb71f69e6e4930') version('2.48.0', commit='5db7020f4bab725cd729b32bd1d5e819b31f2485') @@ -27,12 +27,12 @@ class RGostats(RPackage): depends_on('r@2.10:', type=('build', 'run')) depends_on('r-biobase@1.15.29:', type=('build', 'run')) depends_on('r-category@2.3.26:', type=('build', 'run')) - depends_on('r-category@2.43.2:', when='@2.44.0:', type=('build', 'run')) - depends_on('r-graph@1.15.15:', when='@2.42.0', type=('build', 'run')) - depends_on('r-graph', when='@2.44.0:', type=('build', 'run')) + depends_on('r-category@2.43.2:', type=('build', 'run'), when='@2.44.0:') + depends_on('r-graph', type=('build', 'run'), when='@2.44.0:') + depends_on('r-graph@1.15.15:', type=('build', 'run'), when='@2.42.0') depends_on('r-annotationdbi@0.0.89:', type=('build', 'run')) depends_on('r-go-db@1.13.0:', type=('build', 'run')) depends_on('r-rbgl', type=('build', 'run')) depends_on('r-annotate@1.13.2:', type=('build', 'run')) depends_on('r-annotationforge', type=('build', 'run')) - depends_on('r-rgraphviz', when='@2.44.0:', type=('build', 'run')) + depends_on('r-rgraphviz', type=('build', 'run'), when='@2.44.0:') diff --git a/var/spack/repos/builtin/packages/r-gower/package.py b/var/spack/repos/builtin/packages/r-gower/package.py index f116208048ae17..a60ec14cda53df 100644 --- a/var/spack/repos/builtin/packages/r-gower/package.py +++ b/var/spack/repos/builtin/packages/r-gower/package.py @@ -7,15 +7,13 @@ class RGower(RPackage): - """Gower's Distance + """Gower's Distance. Compute Gower's distance (or similarity) coefficient between records. Compute the top-n matches between records. Core algorithms are executed in parallel on systems supporting OpenMP.""" - homepage = "https://github.com/markvanderloo/gower" - url = "https://cloud.r-project.org/src/contrib/gower_0.2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gower" + cran = "gower" version('0.2.2', sha256='3f022010199fafe34f6e7431730642a76893e6b4249b84e5a61012cb83483631') version('0.2.1', sha256='af3fbe91cf818c0841b2c0ec4ddf282c182a588031228c8d88f7291b2cdff100') diff --git a/var/spack/repos/builtin/packages/r-gparotation/package.py b/var/spack/repos/builtin/packages/r-gparotation/package.py index 69afb6331ef591..15796d11805be6 100644 --- a/var/spack/repos/builtin/packages/r-gparotation/package.py +++ b/var/spack/repos/builtin/packages/r-gparotation/package.py @@ -7,12 +7,12 @@ class RGparotation(RPackage): - """Gradient Projection Algorithm Rotation for Factor Analysis. See - ?GPArotation.Intro for more details.""" + """GPA Factor Rotation. - homepage = "https://cloud.r-project.org/package=GPArotation" - url = "https://cloud.r-project.org/src/contrib/GPArotation_2014.11-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GPArotation" + Gradient Projection Algorithm Rotation for Factor Analysis. See + GPArotation.Intro for more details.""" + + cran = "GPArotation" version('2014.11-1', sha256='351bc15fc8dc6c8ea5045fbba22180d1e68314fc34d267545687748e312e5096') diff --git a/var/spack/repos/builtin/packages/r-gplots/package.py b/var/spack/repos/builtin/packages/r-gplots/package.py index ab58b1c6a3899f..39f92d40ad186f 100644 --- a/var/spack/repos/builtin/packages/r-gplots/package.py +++ b/var/spack/repos/builtin/packages/r-gplots/package.py @@ -9,27 +9,30 @@ class RGplots(RPackage): - """Various R Programming Tools for Plotting Data - - Various R programming tools for plotting data, including: - calculating and - plotting locally smoothed summary function as ('bandplot', 'wapply'), - - enhanced versions of standard plots ('barplot2', 'boxplot2', 'heatmap.2', - 'smartlegend'), - manipulating colors ('col2hex', 'colorpanel', 'redgreen', - 'greenred', 'bluered', 'redblue', 'rich.colors'), - calculating and - plotting two-dimensional data summaries ('ci2d', 'hist2d'), - enhanced - regression diagnostic plots ('lmplot2', 'residplot'), - formula-enabled - interface to 'stats::lowess' function ('lowess'), - displaying textual data - in plots ('textplot', 'sinkplot'), - plotting a matrix where each cell - contains a dot whose size reflects the relative magnitude of the elements - ('balloonplot'), - plotting "Venn" diagrams ('venn'), - displaying - Open-Office style plots ('ooplot'), - plotting multiple data on same - region, with separate axes ('overplot'), - plotting means and confidence - intervals ('plotCI', 'plotmeans'), - spacing points in an x-y plot so they - don't overlap ('space').""" - - homepage = "https://cloud.r-project.org/package=gplots" - url = "https://cloud.r-project.org/src/contrib/gplots_3.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gplots" + """Various R Programming Tools for Plotting Data. + + Various R programming tools for plotting data, including: + [1] calculating and plotting locally smoothed summary function as + ('bandplot', 'wapply'), + [2] enhanced versions of standard plots ('barplot2', 'boxplot2', + 'heatmap.2', 'smartlegend'), + [3] manipulating colors ('col2hex', 'colorpanel', 'redgreen', 'greenred', + 'bluered', 'redblue', 'rich.colors'), + [4] calculating and plotting two-dimensional data summaries ('ci2d', + 'hist2d'), + [5] enhanced regression diagnostic plots ('lmplot2', 'residplot'), + [6] formula-enabled interface to 'stats::lowess' function ('lowess'), + [7] displaying textual data in plots ('textplot', 'sinkplot'), + [8] plotting a matrix where each cell contains a dot whose size reflects + the relative magnitude of the elements ('balloonplot'), + [9] plotting "Venn" diagrams ('venn'), + [10] displaying Open-Office style plots ('ooplot'), + [11] plotting multiple data on same region, with separate axes + ('overplot'), + [12] plotting means and confidence intervals ('plotCI', 'plotmeans'), + [13] spacing points in an x-y plot so they don't overlap ('space').""" + + cran = "gplots" version('3.1.1', sha256='f9ae19c2574b6d41adbeccaf7bc66cf56d7b2769004daba7e0038d5fbd821339') version('3.0.1.1', sha256='7db103f903a25d174cddcdfc7b946039b61e236c95084b90ad17f1a41da3770c') @@ -39,4 +42,5 @@ class RGplots(RPackage): depends_on('r-gtools', type=('build', 'run')) depends_on('r-catools', type=('build', 'run')) depends_on('r-kernsmooth', type=('build', 'run')) - depends_on('r-gdata', when='@:3.0.1.1', type=('build', 'run')) + + depends_on('r-gdata', type=('build', 'run'), when='@:3.0.1.1') diff --git a/var/spack/repos/builtin/packages/r-graph/package.py b/var/spack/repos/builtin/packages/r-graph/package.py index c93e163db27198..4a41f2793a4c18 100644 --- a/var/spack/repos/builtin/packages/r-graph/package.py +++ b/var/spack/repos/builtin/packages/r-graph/package.py @@ -7,13 +7,13 @@ class RGraph(RPackage): - """graph: A package to handle graph data structures + """A package to handle graph data structures. A package that implements some simple graph handling capabilities.""" - homepage = "https://bioconductor.org/packages/graph" - git = "https://git.bioconductor.org/packages/graph.git" + bioc = "graph" + version('1.72.0', commit='7afbd26ecd76e55e6bbd74915a561d7a9b15f907') version('1.68.0', commit='03ad9ed088095605e317510b8234501318994e94') version('1.62.0', commit='95223bd63ceb66cfe8d881f992a441de8b8c89a3') version('1.60.0', commit='e2aecb0a862f32091b16e0036f53367d3edf4c1d') diff --git a/var/spack/repos/builtin/packages/r-graphlayouts/package.py b/var/spack/repos/builtin/packages/r-graphlayouts/package.py index dd3f73e19c49f7..7761281f67bc79 100644 --- a/var/spack/repos/builtin/packages/r-graphlayouts/package.py +++ b/var/spack/repos/builtin/packages/r-graphlayouts/package.py @@ -15,10 +15,9 @@ class RGraphlayouts(RPackage): specific algorithms allow to emphasize hidden group structures in networks or focus on specific nodes.""" - homepage = "https://github.com/schochastics/graphlayouts" - url = "https://cloud.r-project.org/src/contrib/graphlayouts_0.5.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/graphlayouts" + cran = "graphlayouts" + version('0.8.0', sha256='d724266778e4d97ca7a762253c293ffa3d09e2627cb1c3c7a654c690819defd0') version('0.7.1', sha256='380f8ccb0b08735694e83f661fd56a0d592a78448ae91b89c290ba8582d66717') version('0.5.0', sha256='83f61ce07580c5a64c7044c12b20d98ccf138c7e78ff12855cdfc206e1fab10d') diff --git a/var/spack/repos/builtin/packages/r-grbase/package.py b/var/spack/repos/builtin/packages/r-grbase/package.py index 124ac6a6fbbe82..37819c2ddb144b 100644 --- a/var/spack/repos/builtin/packages/r-grbase/package.py +++ b/var/spack/repos/builtin/packages/r-grbase/package.py @@ -7,7 +7,7 @@ class RGrbase(RPackage): - """A Package for Graphical Modelling in R + """A Package for Graphical Modelling in R. The 'gRbase' package provides graphical modelling features used by e.g. the packages 'gRain', 'gRim' and 'gRc'. 'gRbase' implements graph algorithms @@ -24,18 +24,16 @@ class RGrbase(RPackage): and 'RBGL' are installed from 'bioconductor'; for installation instructions please refer to the web page given below.""" - homepage = "https://people.math.aau.dk/~sorenh/software/gR/" - url = "https://cloud.r-project.org/src/contrib/gRbase_1.8-3.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gRbase" + cran = "gRbase" version('1.8-6.7', sha256='aaafc7e1b521de60e1a57c0175ac64d4283850c3273bd14774cf24dabc743388') version('1.8-3.4', sha256='d35f94c2fb7cbd4ce3991570424dfe6723a849658da32e13df29f53b6ea2cc2c') depends_on('r+X', type=('build', 'run')) depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@1.8-6.7:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@1.8-6.7:') depends_on('r-graph', type=('build', 'run')) - depends_on('r-rgraphviz', when='@1.8-6.7:', type=('build', 'run')) + depends_on('r-rgraphviz', type=('build', 'run'), when='@1.8-6.7:') depends_on('r-rbgl', type=('build', 'run')) depends_on('r-igraph', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-gridbase/package.py b/var/spack/repos/builtin/packages/r-gridbase/package.py index 0955226afad19c..e0376616a06c41 100644 --- a/var/spack/repos/builtin/packages/r-gridbase/package.py +++ b/var/spack/repos/builtin/packages/r-gridbase/package.py @@ -9,9 +9,7 @@ class RGridbase(RPackage): """Integration of base and grid graphics.""" - homepage = "https://cloud.r-project.org/package=gridBase" - url = "https://cloud.r-project.org/src/contrib/gridBase_0.4-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gridBase" + cran = "gridBase" version('0.4-7', sha256='be8718d24cd10f6e323dce91b15fc40ed88bccaa26acf3192d5e38fe33e15f26') diff --git a/var/spack/repos/builtin/packages/r-gridextra/package.py b/var/spack/repos/builtin/packages/r-gridextra/package.py index 9d1f7ba36a5644..be385b749f1c26 100644 --- a/var/spack/repos/builtin/packages/r-gridextra/package.py +++ b/var/spack/repos/builtin/packages/r-gridextra/package.py @@ -7,12 +7,12 @@ class RGridextra(RPackage): - """Provides a number of user-level functions to work with "grid" graphics, + """Miscellaneous Functions for "Grid" Graphics. + + Provides a number of user-level functions to work with "grid" graphics, notably to arrange multiple grid-based plots on a page, and draw tables.""" - homepage = "https://cloud.r-project.org/package=gridExtra" - url = "https://cloud.r-project.org/src/contrib/gridExtra_2.2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gridExtras" + cran = "gridExtras" version('2.3', sha256='81b60ce6f237ec308555471ae0119158b115463df696d2eca9b177ded8988e3b') version('2.2.1', sha256='44fe455a5bcdf48a4ece7a542f83e7749cf251dc1df6ae7634470240398c6818') diff --git a/var/spack/repos/builtin/packages/r-gridgraphics/package.py b/var/spack/repos/builtin/packages/r-gridgraphics/package.py index b1c3a79fdcc901..031b56cb14f245 100644 --- a/var/spack/repos/builtin/packages/r-gridgraphics/package.py +++ b/var/spack/repos/builtin/packages/r-gridgraphics/package.py @@ -7,7 +7,7 @@ class RGridgraphics(RPackage): - """Redraw Base Graphics Using 'grid' Graphics + """Redraw Base Graphics Using 'grid' Graphics. Functions to convert a page of plots drawn with the 'graphics' package into identical output drawn with the 'grid' package. The result looks like the @@ -15,9 +15,7 @@ class RGridgraphics(RPackage): that can then be manipulated with 'grid' functions (e.g., edit grobs and revisit viewports).""" - homepage = "https://github.com/pmur002/gridgraphics" - url = "https://cloud.r-project.org/src/contrib/gridGraphics_0.4-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gridGraphics" + cran = "gridGraphics" version('0.5-1', sha256='29086e94e63891884c933b186b35511aac2a2f9c56967a72e4050e2980e7da8b') version('0.4-1', sha256='b770127b71664bbf67f8853a2666c071f2b9920743eddc9f3a58ecb948b923cf') diff --git a/var/spack/repos/builtin/packages/r-gsa/package.py b/var/spack/repos/builtin/packages/r-gsa/package.py index e90aa69b54af24..9fb4b2d227e27c 100644 --- a/var/spack/repos/builtin/packages/r-gsa/package.py +++ b/var/spack/repos/builtin/packages/r-gsa/package.py @@ -9,8 +9,6 @@ class RGsa(RPackage): """Gene Set Analysis.""" - homepage = "https://www-stat.stanford.edu/~tibs/GSA" - url = "https://cloud.r-project.org/src/contrib/GSA_1.03.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GSA" + cran = "GSA" version('1.03.1', sha256='e192d4383f53680dbd556223ea5f8cad6bae62a80a337ba5fd8d05a8aee6a917') diff --git a/var/spack/repos/builtin/packages/r-gsalib/package.py b/var/spack/repos/builtin/packages/r-gsalib/package.py index 2eeb99da30719a..c57d0767256cd2 100644 --- a/var/spack/repos/builtin/packages/r-gsalib/package.py +++ b/var/spack/repos/builtin/packages/r-gsalib/package.py @@ -7,12 +7,12 @@ class RGsalib(RPackage): - """This package contains utility functions used by the Genome Analysis + """Utility Functions For GATK. + + This package contains utility functions used by the Genome Analysis Toolkit (GATK) to load tables and plot data. The GATK is a toolkit for variant discovery in high-throughput sequencing data.""" - homepage = "https://cloud.r-project.org/package=gsalib" - url = "https://cloud.r-project.org/src/contrib/gsalib_2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gsalib" + cran = "gsalib" version('2.1', sha256='e1b23b986c18b89a94c58d9db45e552d1bce484300461803740dacdf7c937fcc') diff --git a/var/spack/repos/builtin/packages/r-gseabase/package.py b/var/spack/repos/builtin/packages/r-gseabase/package.py index ab25e569f476dc..829f317cb56b97 100644 --- a/var/spack/repos/builtin/packages/r-gseabase/package.py +++ b/var/spack/repos/builtin/packages/r-gseabase/package.py @@ -7,14 +7,14 @@ class RGseabase(RPackage): - """Gene set enrichment data structures and methods + """Gene set enrichment data structures and methods. This package provides classes and methods to support Gene Set Enrichment Analysis (GSEA).""" - homepage = "https://bioconductor.org/packages/GSEABase" - git = "https://git.bioconductor.org/packages/GSEABase.git" + bioc = "GSEABase" + version('1.56.0', commit='ee7c3ca4ad0f1f3e9b9162db1515413802860ecc') version('1.52.1', commit='257dfccbc5b507d82099fac6b06bb03825e995e8') version('1.46.0', commit='edce83a9256a0c03206c2bce7c90ada0d90f6622') version('1.44.0', commit='7042ff64a98b05b9572231ee1b4f3ae4fc9c768e') diff --git a/var/spack/repos/builtin/packages/r-gsl/package.py b/var/spack/repos/builtin/packages/r-gsl/package.py index 3a0f8b9a0c47d6..c09dcfc5407e84 100644 --- a/var/spack/repos/builtin/packages/r-gsl/package.py +++ b/var/spack/repos/builtin/packages/r-gsl/package.py @@ -7,15 +7,15 @@ class RGsl(RPackage): - """An R wrapper for some of the functionality of the Gnu Scientific + """Wrapper for the Gnu Scientific Library. + + An R wrapper for some of the functionality of the Gnu Scientific Library.""" - homepage = "https://github.com/RobinHankin/gsl.git" - url = "https://cloud.r-project.org/src/contrib/gsl_2.1-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gsl" + cran = "gsl" + version('2.1-7.1', sha256='ee98d1382d37ffa77538a90ccdbf44affbf1710a9e66b8ada73fa72e67921985') version('2.1-6', sha256='f5d463239693f146617018987687db31b163653708cbae0b730b9b7bed81995c') depends_on('r@3.1.0:', type=('build', 'run')) - depends_on('gsl@2.1:') diff --git a/var/spack/repos/builtin/packages/r-gsodr/package.py b/var/spack/repos/builtin/packages/r-gsodr/package.py index cca5a98a396b4a..bba48d68a03a4e 100644 --- a/var/spack/repos/builtin/packages/r-gsodr/package.py +++ b/var/spack/repos/builtin/packages/r-gsodr/package.py @@ -7,7 +7,7 @@ class RGsodr(RPackage): - """A Global Surface Summary of the Day (GSOD) Weather Data Client for R + """A Global Surface Summary of the Day (GSOD) Weather Data Client for R. Provides automated downloading, parsing, cleaning, unit conversion and formatting of Global Surface Summary of the Day ('GSOD') weather data from @@ -27,17 +27,18 @@ class RGsodr(RPackage): 'GSOD' 'readme.txt' file available from, .""" - homepage = "https://docs.ropensci.org/GSODR/" - url = "https://cloud.r-project.org/src/contrib/GSODR_2.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GSODR" + cran = "GSODR" + version('3.1.4', sha256='615ac4271b44a63064cb23632b887c60c86f4742957fc46f300423f8f75858c8') version('2.1.2', sha256='4fc1d084b6c21055d8cc17a6a6dc412261aa0d4ef4079bcd73b580a8c16bf74e') version('2.1.1', sha256='dba732e5bd1e367b9d710e6b8924f0c02fa4546202f049124dba02bc2e3329f5') depends_on('r@3.5.0:', type=('build', 'run')) depends_on('r-countrycode', type=('build', 'run')) depends_on('r-curl', type=('build', 'run')) - depends_on('r-data-table@1.11.6:', type=('build', 'run')) - depends_on('r-future-apply', 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-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 e28fbf17ae4527..f364b68e0fea97 100644 --- a/var/spack/repos/builtin/packages/r-gss/package.py +++ b/var/spack/repos/builtin/packages/r-gss/package.py @@ -7,18 +7,17 @@ class RGss(RPackage): - """General Smoothing Splines + """General Smoothing Splines. - A comprehensive package for structural multivariate function - estimation using smoothing splines.""" + A comprehensive package for structural multivariate function estimation + using smoothing splines.""" - homepage = "https://cloud.r-project.org/package=gss" - url = "https://cloud.r-project.org/src/contrib/gss_2.1-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gss" + cran = "gss" + version('2.2-3', sha256='24306401cf4e5869f8a690eca7e17c044ece83edd66969bd2daf5976272d244b') version('2.2-2', sha256='1da4da894378ee730cff9628e8b4d2a0d7dfa344b94e5bce6953e66723c21fe4') version('2.1-10', sha256='26c47ecae6a9b7854a1b531c09f869cf8b813462bd8093e3618e1091ace61ee2') version('2.1-7', sha256='0405bb5e4c4d60b466335e5da07be4f9570045a24aed09e7bc0640e1a00f3adb') depends_on('r@2.14.0:', type=('build', 'run')) - depends_on('r@3.0.0:', when='@2.2-2:', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run'), when='@2.2-2:') diff --git a/var/spack/repos/builtin/packages/r-gstat/package.py b/var/spack/repos/builtin/packages/r-gstat/package.py index 239df8e7e04c97..c0ae8081c16f96 100644 --- a/var/spack/repos/builtin/packages/r-gstat/package.py +++ b/var/spack/repos/builtin/packages/r-gstat/package.py @@ -8,17 +8,16 @@ class RGstat(RPackage): """Spatial and Spatio-Temporal Geostatistical Modelling, Predictionand - Simulation + Simulation. Variogram modelling; simple, ordinary and universal point or block (co)kriging; spatio-temporal kriging; sequential Gaussian or indicator (co)simulation; variogram and variogram map plotting utility functions; supports sf and stars.""" - homepage = "https://github.com/r-spatial/gstat/" - url = "https://cloud.r-project.org/src/contrib/gstat_2.0-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gstat" + cran = "gstat" + version('2.0-8', sha256='57cb9e8235a39379a96af0a5651c82e02fdd608375917939948c3dbf170668e8') version('2.0-6', sha256='6711e68aa2444cf2927879a03a976d8caeca5eac98d806b19a6a7178b90bfcab') version('2.0-3', sha256='20a93fe6bf89221a5888de273bddf9a98187806d507cd3cd6297c2b13e7acce1') diff --git a/var/spack/repos/builtin/packages/r-gsubfn/package.py b/var/spack/repos/builtin/packages/r-gsubfn/package.py index 6e72b0c933a3fe..2458ec9d92b8c8 100644 --- a/var/spack/repos/builtin/packages/r-gsubfn/package.py +++ b/var/spack/repos/builtin/packages/r-gsubfn/package.py @@ -7,23 +7,21 @@ class RGsubfn(RPackage): - """gsubfn is like gsub but can take a replacement function or - certain other objects instead of the replacement string. Matches - and back references are input to the replacement function and - replaced by the function output. gsubfn can be used to split - strings based on content rather than delimiters and for - quasi-perl-style string interpolation. The package also has - facilities for translating formulas to functions and allowing - such formulas in function calls instead of functions. This can - be used with R functions such as apply, sapply, lapply, optim, - integrate, xyplot, Filter and any other function that expects - another function as an input argument or functions like cat or - sql calls that may involve strings where substitution is - desirable.""" + """Utilities for Strings and Function Arguments. - homepage = "https://cloud.r-project.org/package=gsubfn" - url = "https://cloud.r-project.org/src/contrib/gsubfn_0.6-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gsubfn" + gsubfn is like gsub but can take a replacement function or certain other + objects instead of the replacement string. Matches and back references are + input to the replacement function and replaced by the function output. + gsubfn can be used to split strings based on content rather than delimiters + and for quasi-perl-style string interpolation. The package also has + facilities for translating formulas to functions and allowing such formulas + in function calls instead of functions. This can be used with R functions + such as apply, sapply, lapply, optim, integrate, xyplot, Filter and any + other function that expects another function as an input argument or + functions like cat or sql calls that may involve strings where substitution + is desirable.""" + + cran = "gsubfn" version('0.7', sha256='89351df9e65722d2862f26a0a3985666de3c86e8400808ced8a6eb6e165a4602') version('0.6-6', sha256='bbc5d29bb48e836407f81880aeb368544a54a5513dacb3411c9838180723dda4') diff --git a/var/spack/repos/builtin/packages/r-gtable/package.py b/var/spack/repos/builtin/packages/r-gtable/package.py index 16460d0bf7ebea..a16e506225022b 100644 --- a/var/spack/repos/builtin/packages/r-gtable/package.py +++ b/var/spack/repos/builtin/packages/r-gtable/package.py @@ -7,11 +7,15 @@ class RGtable(RPackage): - """Tools to make it easier to work with "tables" of 'grobs'.""" + """Arrange 'Grobs' in Tables. - homepage = "https://cloud.r-project.org/package=gtable" - url = "https://cloud.r-project.org/src/contrib/gtable_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gtable" + Tools to make it easier to work with "tables" of 'grobs'. The 'gtable' + package defines a 'gtable' grob class that specifies a grid along with a + list of grobs and their placement in the grid. Further the package makes it + easy to manipulate and combine 'gtable' objects so that complex + compositions can be build up sequentially.""" + + cran = "gtable" version('0.3.0', sha256='fd386cc4610b1cc7627dac34dba8367f7efe114b968503027fb2e1265c67d6d3') version('0.2.0', sha256='801e4869830ff3da1d38e41f5a2296a54fc10a7419c6ffb108582850c701e76f') diff --git a/var/spack/repos/builtin/packages/r-gtools/package.py b/var/spack/repos/builtin/packages/r-gtools/package.py index becedd276c65bf..50fb0b293628d6 100644 --- a/var/spack/repos/builtin/packages/r-gtools/package.py +++ b/var/spack/repos/builtin/packages/r-gtools/package.py @@ -7,7 +7,7 @@ class RGtools(RPackage): - """Various R Programming Tools + """Various R Programming Tools. Functions to assist in R programming. Including: @@ -41,10 +41,9 @@ class RGtools(RPackage): [18] convert characters to/from ASCII codes; """ - homepage = "https://cloud.r-project.org/package=gtools" - url = "https://cloud.r-project.org/src/contrib/gtools_3.5.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/gtools" + cran = "gtools" + version('3.9.2', sha256='03b1898bf581f6d12fa90e23ff700cfa7c834ac10c6654bdac42d7ec943fa953') version('3.8.2', sha256='503ba60a41f3c61b8129c25de62c74dab29761d2e661d4addd106e2e02f1dcde') version('3.8.1', sha256='051484459bd8ad1b03425b8843d24f6828fea18f7357cfa1c192198cc3f4ba38') version('3.5.0', sha256='86b6a51a92ddb3c78095e0c5dc20414c67f6e28f915bf0ee11406adad3e476f6') diff --git a/var/spack/repos/builtin/packages/r-gtrellis/package.py b/var/spack/repos/builtin/packages/r-gtrellis/package.py index 687dc18f94998c..b9c06d4b047cf4 100644 --- a/var/spack/repos/builtin/packages/r-gtrellis/package.py +++ b/var/spack/repos/builtin/packages/r-gtrellis/package.py @@ -7,7 +7,7 @@ class RGtrellis(RPackage): - """Genome Level Trellis Layout + """Genome Level Trellis Layout. Genome level Trellis graph visualizes genomic data conditioned by genomic categories (e.g. chromosomes). For each genomic category, @@ -16,9 +16,9 @@ class RGtrellis(RPackage): flexibility to arrange genomic categories and to add self-defined graphics in the plot.""" - homepage = "https://bioconductor.org/packages/gtrellis" - git = "https://git.bioconductor.org/packages/gtrellis.git" + bioc = "gtrellis" + version('1.26.0', commit='f2c3121b31ad1b422e2cf503435d0590e903ff3f') version('1.22.0', commit='c071c5631f3dedda212aed87d9c02954b5ed6611') version('1.16.1', commit='a9003ededc8f2a48c78d4545e2f214023c13a7da') version('1.14.0', commit='93935fb34211d12b250e22291712e18a31b0208d') @@ -30,5 +30,5 @@ class RGtrellis(RPackage): depends_on('r-iranges', type=('build', 'run')) depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-circlize@0.3.3:', type=('build', 'run')) - depends_on('r-circlize@0.4.8:', when='@1.16.1', type=('build', 'run')) + depends_on('r-circlize@0.4.8:', type=('build', 'run'), when='@1.16.1') depends_on('r-getoptlong', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-gviz/package.py b/var/spack/repos/builtin/packages/r-gviz/package.py index 515f0df108bc39..98d8c1e096c0c8 100644 --- a/var/spack/repos/builtin/packages/r-gviz/package.py +++ b/var/spack/repos/builtin/packages/r-gviz/package.py @@ -7,7 +7,7 @@ class RGviz(RPackage): - """Plotting data and annotation information along genomic coordinates + """Plotting data and annotation information along genomic coordinates. Genomic data analyses requires integrated visualization of known genomic information and new experimental data. Gviz uses the biomaRt and the @@ -16,9 +16,9 @@ class RGviz(RPackage): of the grid graphics package. This results in genomic information plotted together with your data.""" - homepage = "https://bioconductor.org/packages/Gviz" - git = "https://git.bioconductor.org/packages/Gviz.git" + bioc = "Gviz" + version('1.38.3', commit='c4b352a16455a5744533c511e59354977814cb9e') version('1.34.0', commit='445fadff2aedd8734580fa908aa47ff1216a8182') version('1.28.3', commit='20b9825af144cfc888629c34aa980b5bbd65bf86') version('1.26.5', commit='430310b9d2e098f9757a71d26a2f69871071f30c') @@ -27,7 +27,8 @@ class RGviz(RPackage): version('1.20.0', commit='299b8255e1b03932cebe287c3690d58c88f5ba5c') depends_on('r@2.10.0:', type=('build', 'run')) - depends_on('r@4.0:', when='@1.34.0:', type=('build', 'run')) + depends_on('r@4.0:', type=('build', 'run'), when='@1.34.0:') + depends_on('r@4.1:', type=('build', 'run'), when='@1.38.3:') depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) depends_on('r-iranges@1.99.18:', type=('build', 'run')) depends_on('r-genomicranges@1.17.20:', type=('build', 'run')) @@ -39,7 +40,7 @@ class RGviz(RPackage): depends_on('r-annotationdbi@1.27.5:', type=('build', 'run')) depends_on('r-biobase@2.15.3:', type=('build', 'run')) depends_on('r-genomicfeatures@1.17.22:', type=('build', 'run')) - depends_on('r-ensembldb@2.11.3:', when='@1.34.0:', type=('build', 'run')) + depends_on('r-ensembldb@2.11.3:', type=('build', 'run'), when='@1.34.0:') depends_on('r-bsgenome@1.33.1:', type=('build', 'run')) depends_on('r-biostrings@2.33.11:', type=('build', 'run')) depends_on('r-biovizbase@1.13.8:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-gwmodel/package.py b/var/spack/repos/builtin/packages/r-gwmodel/package.py index a62caf779964d6..73bca88d0dc8c9 100644 --- a/var/spack/repos/builtin/packages/r-gwmodel/package.py +++ b/var/spack/repos/builtin/packages/r-gwmodel/package.py @@ -7,7 +7,7 @@ class RGwmodel(RPackage): - """Geographically-Weighted Models + """Geographically-Weighted Models. Techniques from a particular branch of spatial statistics,termed geographically-weighted (GW) models. GW models suit situations when data @@ -22,10 +22,9 @@ class RGwmodel(RPackage): ; some of which are provided in basic and robust (outlier resistant) forms.""" - homepage = "http://gwr.nuim.ie/" - url = "https://cloud.r-project.org/src/contrib/GWmodel_2.0-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/GWmodel" + cran = "GWmodel" + version('2.2-8', sha256='5b1890dbf75502e89b651efd9158be77b3cfa764a5717f9889f438ed2b0a4da2') version('2.2-2', sha256='4e2b221b85fbc828ffc4f057c137ded849afcaac2a75c27d2d6d0a6db17f8a06') version('2.1-3', sha256='3e1a36fddf8e64f61d548067bb043216f8d12069d814a4cbf07a9cae0b310af6') version('2.1-1', sha256='91241b4e26d423a54c7c6784ef5159759058a5dafdff18a1ea8451faf979d1f3') @@ -35,11 +34,11 @@ class RGwmodel(RPackage): depends_on('r-maptools@0.5-2:', type=('build', 'run')) depends_on('r-robustbase', type=('build', 'run')) depends_on('r-sp', type=('build', 'run')) - depends_on('r-sp@1.4-0:', when='@2.2-2:', 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-spatialreg', type=('build', 'run')) depends_on('r-spacetime', type=('build', 'run')) depends_on('r-spdep', type=('build', 'run')) - depends_on('r-fnn', when='@2.1-1:', type=('build', 'run')) + depends_on('r-fnn', type=('build', 'run'), when='@2.1-1:') depends_on('r-rcpparmadillo', type=('build', 'run')) depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-hardhat/package.py b/var/spack/repos/builtin/packages/r-hardhat/package.py new file mode 100644 index 00000000000000..73e52e3742de63 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-hardhat/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2022 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 import * + + +class RHardhat(RPackage): + """Construct Modeling Packages. + + Building modeling packages is hard. A large amount of effort generally goes + into providing an implementation for a new method that is efficient, fast, + and correct, but often less emphasis is put on the user interface. A good + interface requires specialized knowledge about S3 methods and formulas, + which the average package developer might not have. The goal of 'hardhat' + is to reduce the burden around building new modeling packages by providing + functionality for preprocessing, predicting, and validating input.""" + + cran = "hardhat" + + version('0.2.0', sha256='9497ca0fe6206c54d1da79f248d44c5faffc7d375b630091ef45dfca46c29628') + + depends_on('r@2.10:', type=('build', 'run')) + depends_on('r-glue', type=('build', 'run')) + depends_on('r-rlang@0.4.2:', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run')) + depends_on('r-vctrs@0.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-haven/package.py b/var/spack/repos/builtin/packages/r-haven/package.py index 17a39cc1142dcb..81ced48957be6c 100644 --- a/var/spack/repos/builtin/packages/r-haven/package.py +++ b/var/spack/repos/builtin/packages/r-haven/package.py @@ -7,12 +7,11 @@ class RHaven(RPackage): - """Import and Export 'SPSS', 'Stata' and 'SAS' Files + """Import and Export 'SPSS', 'Stata' and 'SAS' Files. Import foreign statistical formats into R via the embedded 'ReadStat' C library, .""" - homepage = "https://haven.tidyverse.org/" cran = "haven" version('2.4.3', sha256='95b70f47e77792bed4312441787299d2e3e27d79a176f0638a37e5301b93295f') @@ -21,17 +20,17 @@ class RHaven(RPackage): version('2.1.0', sha256='c0a1cf1b039549fb3ad833f9644ed3f142790236ad755d2ee7bd3d8109e3ae74') version('1.1.0', sha256='089fb4d0955f320abc48d0a3031799f96f3a20b82492474743903fdf12001d19') - depends_on('r@3.1:', when='@:2.1.0', type=('build', 'run')) - depends_on('r@3.2:', when='@2.1.1:', type=('build', 'run')) + depends_on('r@3.1:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@2.1.1:') depends_on('r-forcats@0.2.0:', type=('build', 'run')) depends_on('r-hms', type=('build', 'run')) depends_on('r-readr@0.1.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.0:', when='@2.3.1:', type=('build', 'run')) + depends_on('r-rlang@0.4.0:', type=('build', 'run'), when='@2.3.1:') depends_on('r-tibble', type=('build', 'run')) - depends_on('r-tidyselect', when='@2.3.1:', type=('build', 'run')) - depends_on('r-vctrs@0.3.0:', when='@2.3.1:', type=('build', 'run')) - depends_on('r-cpp11', when='@2.4:', type=('build', 'run')) + depends_on('r-tidyselect', type=('build', 'run'), when='@2.3.1:') + depends_on('r-vctrs@0.3.0:', type=('build', 'run'), when='@2.3.1:') + depends_on('r-cpp11', type=('build', 'run'), when='@2.4:') depends_on('gmake', type='build') depends_on('zlib', when='@2.4:') - depends_on('r-rcpp@0.11.4:', when='@:2.3', type=('build', 'run')) + depends_on('r-rcpp@0.11.4:', type=('build', 'run'), when='@:2.3') diff --git a/var/spack/repos/builtin/packages/r-hdf5array/package.py b/var/spack/repos/builtin/packages/r-hdf5array/package.py index 4b39cc23cafc02..99837921f9c1c3 100644 --- a/var/spack/repos/builtin/packages/r-hdf5array/package.py +++ b/var/spack/repos/builtin/packages/r-hdf5array/package.py @@ -7,7 +7,7 @@ class RHdf5array(RPackage): - """HDF5 backend for DelayedArray objects + """HDF5 backend for DelayedArray objects. Implements the HDF5Array and TENxMatrix classes, 2 convenient and memory-efficient array-like containers for on-disk representation of @@ -18,9 +18,9 @@ class RHdf5array(RPackage): extensions, they support all operations supported by DelayedArray objects. These operations can be either delayed or block-processed.""" - homepage = "https://bioconductor.org/packages/HDF5Array" - git = "https://git.bioconductor.org/packages/HDF5Array.git" + bioc = "HDF5Array" + version('1.22.1', commit='b3f091fbc159609e8e0792d2bf9fbef52c6ceede') version('1.18.0', commit='d5bd55d170cb384fdebdf60751e1e28483782caa') version('1.12.3', commit='21c6077f3f789748a18f2e579110576c5522e975') version('1.10.1', commit='0b8ae1dfb56e4203dd8e14781850370df46a5e2c') @@ -30,21 +30,22 @@ class RHdf5array(RPackage): depends_on('r@3.4:', type=('build', 'run')) depends_on('r-delayedarray@0.2.4:', type=('build', 'run')) - depends_on('r-delayedarray@0.3.18:', when='@1.6.0:', type=('build', 'run')) - depends_on('r-delayedarray@0.5.32:', when='@1.8.1:', type=('build', 'run')) - depends_on('r-delayedarray@0.7.41:', when='@1.10.1:', type=('build', 'run')) - depends_on('r-delayedarray@0.9.3:', when='@1.12.3:', type=('build', 'run')) - depends_on('r-delayedarray@0.15.16:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-delayedarray@0.3.18:', type=('build', 'run'), when='@1.6.0:') + depends_on('r-delayedarray@0.5.32:', type=('build', 'run'), when='@1.8.1:') + depends_on('r-delayedarray@0.7.41:', type=('build', 'run'), when='@1.10.1:') + depends_on('r-delayedarray@0.9.3:', type=('build', 'run'), when='@1.12.3:') + depends_on('r-delayedarray@0.15.16:', type=('build', 'run'), when='@1.18.0:') depends_on('r-rhdf5', type=('build', 'run')) - depends_on('r-rhdf5@2.25.6:', when='@1.10.1:', type=('build', 'run')) - depends_on('r-rhdf5@2.31.6:', when='@1.18.0:', type=('build', 'run')) - depends_on('r-matrix', when='@1.18.0:', type=('build', 'run')) + depends_on('r-rhdf5@2.25.6:', type=('build', 'run'), when='@1.10.1:') + depends_on('r-rhdf5@2.31.6:', type=('build', 'run'), when='@1.18.0:') + depends_on('r-matrix', type=('build', 'run'), when='@1.18.0:') + depends_on('r-rhdf5filters', type=('build', 'run'), when='@1.22.1:') depends_on('r-biocgenerics', type=('build', 'run')) - depends_on('r-biocgenerics@0.25.1:', when='@1.8.1:', type=('build', 'run')) - depends_on('r-biocgenerics@0.31.5:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.25.1:', type=('build', 'run'), when='@1.8.1:') + depends_on('r-biocgenerics@0.31.5:', type=('build', 'run'), when='@1.18.0:') depends_on('r-s4vectors', type=('build', 'run')) - depends_on('r-s4vectors@0.21.6:', when='@1.12.3:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.13:', when='@1.18.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.21.6:', type=('build', 'run'), when='@1.12.3:') + depends_on('r-s4vectors@0.27.13:', type=('build', 'run'), when='@1.18.0:') depends_on('r-iranges', type=('build', 'run')) - depends_on('r-rhdf5lib', when='@1.12.3:', type=('build', 'run')) + depends_on('r-rhdf5lib', type=('build', 'run'), when='@1.12.3:') depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-hdf5r/package.py b/var/spack/repos/builtin/packages/r-hdf5r/package.py index 2e43abda392891..4c1b46287601bd 100644 --- a/var/spack/repos/builtin/packages/r-hdf5r/package.py +++ b/var/spack/repos/builtin/packages/r-hdf5r/package.py @@ -7,7 +7,7 @@ class RHdf5r(RPackage): - """Interface to the 'HDF5' Binary Data Format + """Interface to the 'HDF5' Binary Data Format. 'HDF5' is a data model, library and file format for storing and managing large amounts of data. This package provides a nearly feature complete, @@ -16,12 +16,9 @@ class RHdf5r(RPackage): classes. Additionally, functionality is added so that 'HDF5' objects behave very similar to their corresponding R counterparts.""" - homepage = "https://hhoeflin.github.io/hdf5r" - url = "https://cloud.r-project.org/src/contrib/hdf5r_1.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/hdf5r" + cran = "hdf5r" - version('1.3.5', - sha256='87b75173ab226a9fbaa5b28289349f3c56b638629560a172994b8f9323c1622f') + version('1.3.5', sha256='87b75173ab226a9fbaa5b28289349f3c56b638629560a172994b8f9323c1622f') version('1.3.3', sha256='a0f83cbf21563e81dbd1a1bd8379623ed0c9c4df4e094c75013abfd7a5271545') version('1.2.0', sha256='58813e334fd3f9040038345a7186e5cb02090898883ac192477a76a5b8b4fe81') diff --git a/var/spack/repos/builtin/packages/r-hdrcde/package.py b/var/spack/repos/builtin/packages/r-hdrcde/package.py index 7ec35b76a224b1..d59ba51b0e10f8 100644 --- a/var/spack/repos/builtin/packages/r-hdrcde/package.py +++ b/var/spack/repos/builtin/packages/r-hdrcde/package.py @@ -5,7 +5,9 @@ class RHdrcde(RPackage): - """Computation of highest density regions in one and two + """Highest Density Regions and Conditional Density Estimation. + + Computation of highest density regions in one and two dimensions, kernel estimation of univariate density functions conditional on one covariate,and multimodal regression.""" diff --git a/var/spack/repos/builtin/packages/r-here/package.py b/var/spack/repos/builtin/packages/r-here/package.py new file mode 100644 index 00000000000000..4b11f3e46e578d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-here/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RHere(RPackage): + """A Simpler Way to Find Your Files. + + Constructs paths to your project's files. Declare the relative path of a + file within your project with 'i_am()'. Use the 'here()' function as a + drop-in replacement for 'file.path()', it will always locate the files + relative to your project root.""" + + cran = "here" + + version('1.0.1', sha256='08ed908033420d3d665c87248b3a14d1b6e2b37844bf736be620578c20ca346b') + + depends_on('r-rprojroot@2.0.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-hexbin/package.py b/var/spack/repos/builtin/packages/r-hexbin/package.py index f5f83395221e24..b5460e8190601d 100644 --- a/var/spack/repos/builtin/packages/r-hexbin/package.py +++ b/var/spack/repos/builtin/packages/r-hexbin/package.py @@ -8,14 +8,12 @@ class RHexbin(RPackage): - """Hexagonal Binning Routines + """Hexagonal Binning Routines. - Binning and plotting functions for hexagonal bins. Now uses and relies - on grid graphics and formal (S4) classes and methods.""" + Binning and plotting functions for hexagonal bins. Now uses and relies on + grid graphics and formal (S4) classes and methods.""" - homepage = "https://github.com/edzer/hexbin" - url = "https://cloud.r-project.org/src/contrib/hexbin_1.27.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/hexbin" + cran = "hexbin" version('1.28.2', sha256='6241f8d3a6c6be2c1c693c3ddb99554bc103e3c6cf602d0c2787c0ce6fd1702d') version('1.27.3', sha256='7ea422a76542c2fc2840df601af1b7803aa96df4fee6d51dec456ac36940c191') diff --git a/var/spack/repos/builtin/packages/r-hh/package.py b/var/spack/repos/builtin/packages/r-hh/package.py index 8a6dc30a63deab..afd75fed91e919 100644 --- a/var/spack/repos/builtin/packages/r-hh/package.py +++ b/var/spack/repos/builtin/packages/r-hh/package.py @@ -9,25 +9,23 @@ class RHh(RPackage): """Statistical Analysis and Data Display: Heiberger and Holland. - Support software for Statistical Analysis and Data Display (Second - Edition, Springer, ISBN 978-1-4939-2121-8, 2015) and (First Edition, - Springer, ISBN 0-387-40270-5, 2004) by Richard M. Heiberger and Burt - Holland. This contemporary presentation of statistical methods features - extensive use of graphical displays for exploring data and for displaying - the analysis. The second edition includes redesigned graphics and - additional chapters. The authors emphasize how to construct and interpret - graphs, discuss principles of graphical design, and show how accompanying - traditional tabular results are used to confirm the visual impressions - derived directly from the graphs. Many of the graphical formats are novel - and appear here for the first time in print. All chapters have exercises. - All functions introduced in the book are in the package. R code for all - examples, both graphs and tables, in the book is included in the scripts - directory of the package.""" + Support software for Statistical Analysis and Data Display (Second Edition, + Springer, ISBN 978-1-4939-2121-8, 2015) and (First Edition, Springer, ISBN + 0-387-40270-5, 2004) by Richard M. Heiberger and Burt Holland. This + contemporary presentation of statistical methods features extensive use of + graphical displays for exploring data and for displaying the analysis. The + second edition includes redesigned graphics and additional chapters. The + authors emphasize how to construct and interpret graphs, discuss principles + of graphical design, and show how accompanying traditional tabular results + are used to confirm the visual impressions derived directly from the + graphs. Many of the graphical formats are novel and appear here for the + first time in print. All chapters have exercises. All functions introduced + in the book are in the package. R code for all examples, both graphs and + tables, in the book is included in the scripts directory of the package.""" - homepage = "https://cloud.r-project.org/package=HH" - url = "https://cloud.r-project.org/src/contrib/HH_3.1-40.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/HH" + cran = "HH" + version('3.1-47', sha256='50910ac7de49122df56c6e42413535601c74bbef9240ad8977e3267273d087c0') version('3.1-43', sha256='2ed35c8fc97092e9d2ce3439a2ec342d5d7bd93ad8f5266995cc80d88cd2235b') version('3.1-40', sha256='795924d900a98ae367e6697b2c951c3b4910a54931aebcad5024eda083d4a8a2') diff --git a/var/spack/repos/builtin/packages/r-highr/package.py b/var/spack/repos/builtin/packages/r-highr/package.py index 7ccb419214f3b1..29f86d32be1010 100644 --- a/var/spack/repos/builtin/packages/r-highr/package.py +++ b/var/spack/repos/builtin/packages/r-highr/package.py @@ -3,23 +3,23 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - from spack import * class RHighr(RPackage): - """Provides syntax highlighting for R source code. Currently it supports + """Syntax Highlighting for R Source Code. + + Provides syntax highlighting for R source code. Currently it supports LaTeX and HTML output. Source code of other languages is supported via Andre Simon's highlight package.""" - homepage = "https://github.com/yihui/highr" - cran = "highr" + cran = "highr" version('0.9', sha256='beff11390d936c90fdcc00e7ed0eb72220f3de403a51b56659e3d3e0b6d8ed4d') version('0.8', sha256='4bd01fba995f68c947a99bdf9aca15327a5320151e10bd0326fad50a6d8bc657') version('0.7', sha256='cabba5b6f2ea82024a49c5ced5f1aa476f864bc52bc129038e319e4e26b6f3b7') version('0.6', sha256='43e152b2dea596df6e14c44398c74fcd438ece15eaae5bdb84aef8d61b213b59') - depends_on('r@3.0.2:', when='@:0.7', type=('build', 'run')) - depends_on('r@3.2.3:', when='@0.8:', type=('build', 'run')) - depends_on('r-xfun@0.18:', when='@0.9:', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r@3.2.3:', type=('build', 'run'), when='@0.8:') + depends_on('r-xfun@0.18:', type=('build', 'run'), when='@0.9:') diff --git a/var/spack/repos/builtin/packages/r-hmisc/package.py b/var/spack/repos/builtin/packages/r-hmisc/package.py index f5255a87b89c71..f022ca8a1f7012 100644 --- a/var/spack/repos/builtin/packages/r-hmisc/package.py +++ b/var/spack/repos/builtin/packages/r-hmisc/package.py @@ -7,19 +7,17 @@ class RHmisc(RPackage): - """Harrell Miscellaneous + """Harrell Miscellaneous. - Contains many functions useful for data analysis, high-level - graphics, utility operations, functions for computing sample size - and power, importing and annotating datasets, imputing missing - values, advanced table making, variable clustering, character - string manipulation, conversion of R objects to LaTeX and html - code, and recoding variables.""" + Contains many functions useful for data analysis, high-level graphics, + utility operations, functions for computing sample size and power, + importing and annotating datasets, imputing missing values, advanced table + making, variable clustering, character string manipulation, conversion of R + objects to LaTeX and html code, and recoding variables.""" - homepage = "https://cran.r-project.org/web/packages/Hmisc/index.html" - url = "https://cloud.r-project.org/src/contrib/Hmisc_4.1-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Hmisc" + cran = "Hmisc" + version('4.6-0', sha256='2c1ce906b2333c6dc946dc7f10b74cfa552bce2b12dbebf295d143163562a1ad') version('4.4-2', sha256='490ac64dd8558868e7c6fdd9523af102e17ea536c450d62c48b04155279bfbc8') version('4.4-0', sha256='f16ecf4c5ee2202d51f426282a54f8000ffa8b9747c3e910205f34f878556ec7') version('4.2-0', sha256='9e9614673288dd00295f250fa0bf96fc9e9fed692c69bf97691081c1a01411d9') @@ -27,7 +25,7 @@ class RHmisc(RPackage): depends_on('r-lattice', type=('build', 'run')) depends_on('r-survival@2.40-1:', type=('build', 'run')) - depends_on('r-survival@3.1-6:', when='@4.4:', type=('build', 'run')) + depends_on('r-survival@3.1-6:', type=('build', 'run'), when='@4.4:') depends_on('r-formula', type=('build', 'run')) depends_on('r-ggplot2@2.2:', type=('build', 'run')) depends_on('r-latticeextra', type=('build', 'run')) @@ -42,4 +40,5 @@ class RHmisc(RPackage): depends_on('r-viridis', type=('build', 'run')) depends_on('r-htmltools', type=('build', 'run')) depends_on('r-base64enc', type=('build', 'run')) - depends_on('r-acepack', when='@:4.4-0', type=('build', 'run')) + + depends_on('r-acepack', type=('build', 'run'), when='@:4.4-0') diff --git a/var/spack/repos/builtin/packages/r-hms/package.py b/var/spack/repos/builtin/packages/r-hms/package.py index 7eade052b4487e..5940b3765a6448 100644 --- a/var/spack/repos/builtin/packages/r-hms/package.py +++ b/var/spack/repos/builtin/packages/r-hms/package.py @@ -7,12 +7,11 @@ class RHms(RPackage): - """Pretty Time of Day + """Pretty Time of Day. Implements an S3 class for storing and formatting time-of-day values, based on the 'difftime' class.""" - homepage = "https://cloud.r-project.org/package=hms" cran = "hms" version('1.1.1', sha256='6b5f30db1845c70d27b5de33f31caa487cdd0787cd80a4073375e5f482269062') @@ -20,11 +19,11 @@ class RHms(RPackage): version('0.5.0', sha256='a87872665c3bf3901f597d78c152e7805f7129e4dbe27397051de4cf1a76561b') version('0.3', sha256='9368259cbc1094ce0e4cf61544875ec30088ef690d6667e6b0b564218ab3ff88') - depends_on('r-ellipsis', when='@1.0.0:', type=('build', 'run')) - depends_on('r-ellipsis@0.3.2', when='@1.1:', type=('build', 'run')) - depends_on('r-lifecycle', when='@1.0.0:', type=('build', 'run')) - depends_on('r-pkgconfig', when='@0.5.0:', type=('build', 'run')) - depends_on('r-rlang', when='@0.5.0:', type=('build', 'run')) - depends_on('r-vctrs@0.2.0:', when='@0.5.0:', type=('build', 'run')) - depends_on('r-vctrs@0.2.1:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-vctrs@0.3.8:', when='@1.1:', type=('build', 'run')) + depends_on('r-ellipsis', type=('build', 'run'), when='@1.0.0:') + depends_on('r-ellipsis@0.3.2', type=('build', 'run'), when='@1.1:') + depends_on('r-lifecycle', type=('build', 'run'), when='@1.0.0:') + depends_on('r-pkgconfig', type=('build', 'run'), when='@0.5.0:') + depends_on('r-rlang', type=('build', 'run'), when='@0.5.0:') + depends_on('r-vctrs@0.2.0:', type=('build', 'run'), when='@0.5.0:') + depends_on('r-vctrs@0.2.1:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-vctrs@0.3.8:', type=('build', 'run'), when='@1.1:') diff --git a/var/spack/repos/builtin/packages/r-hoardr/package.py b/var/spack/repos/builtin/packages/r-hoardr/package.py index b5c426403704c3..a1d0dec1ed492f 100644 --- a/var/spack/repos/builtin/packages/r-hoardr/package.py +++ b/var/spack/repos/builtin/packages/r-hoardr/package.py @@ -7,11 +7,15 @@ class RHoardr(RPackage): - """hoardr: Manage Cached Files""" + """Manage Cached Files. - homepage = "https://cloud.r-project.org/package=hoardr" - url = "https://cloud.r-project.org/src/contrib/hoardr_0.5.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/hoardr/" + Suite of tools for managing cached files, targeting use in other R + packages. Uses 'rappdirs' for cross-platform paths. Provides utilities to + manage cache directories, including targeting files by path or by key; + cached directories can be compressed and uncompressed easily to save disk + space.""" + + cran = "hoardr" 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 9ee0cdccfb709d..97efa3f16f0c13 100644 --- a/var/spack/repos/builtin/packages/r-htmltable/package.py +++ b/var/spack/repos/builtin/packages/r-htmltable/package.py @@ -7,20 +7,18 @@ class RHtmltable(RPackage): - """Advanced Tables for Markdown/HTML + """Advanced Tables for Markdown/HTML. - Tables with state-of-the-art layout elements such as row - spanners, column spanners, table spanners, zebra striping, and - more. While allowing advanced layout, the underlying css-structure - is simple in order to maximize compatibility with word processors - such as 'MS Word' or 'LibreOffice'. The package also contains a - few text formatting functions that help outputting text - compatible with HTML/'LaTeX'.""" + Tables with state-of-the-art layout elements such as row spanners, column + spanners, table spanners, zebra striping, and more. While allowing advanced + layout, the underlying css-structure is simple in order to maximize + compatibility with word processors such as 'MS Word' or 'LibreOffice'. The + package also contains a few text formatting functions that help outputting + text compatible with HTML/'LaTeX'.""" - homepage = "https://cloud.r-project.org/package=htmlTable" - url = "https://cloud.r-project.org/src/contrib/htmlTable_1.11.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/htmlTable" + cran = "htmlTable" + version('2.4.0', sha256='4ca2b5616d77cfeee8ae5ca74307b86407d478b12d1ce17ba9c447e233b89a9d') version('2.1.0', sha256='4049339b317cbec1c8c7930e2e36cf0fc8b002516092dd270bb794d8db02f0bf') version('1.13.1', sha256='689f32b65da6a57ad500e8d9ef3309d346401dca277c6b264a46c8d7c75884d0') version('1.11.2', sha256='64a273b1cdf07a7c57b9031315ca665f95d78e70b4320d020f64a139278877d1') diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index 83d2ee087a5f2e..9de35fe41a17ce 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -7,12 +7,11 @@ class RHtmltools(RPackage): - """Tools for HTML + """Tools for HTML. Tools for HTML generation and output.""" - homepage = "https://github.com/rstudio/htmltools" - cran = "htmltools" + cran = "htmltools" version('0.5.2', sha256='7dc7d50436e5a82a5801f85bcd2f572a06a98b4027d71aa17b4854ec9b2767fb') version('0.5.1.1', sha256='f0bfe72ffe330f3d6c9ead5857f3a4aef80e002e32558074a3e643f2ab67a4ba') @@ -22,8 +21,9 @@ class RHtmltools(RPackage): depends_on('r@2.14.1:', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) - depends_on('r-base64enc', when='@0.5.1:', type=('build', 'run')) - depends_on('r-rlang@0.4.10:', when='@0.5.2:', type=('build', 'run')) - depends_on('r-rlang', when='@0.5.1:', type=('build', 'run')) - depends_on('r-fastmap@1.1.0:', when='@0.5.2:', type=('build', 'run')) - depends_on('r-rcpp', when=' @:0.3.6', 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-fastmap@1.1.0:', type=('build', 'run'), when='@0.5.2:') + + 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 186b951d0e637a..ac41281345fdf0 100644 --- a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py +++ b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py @@ -7,16 +7,15 @@ class RHtmlwidgets(RPackage): - """HTML Widgets for R + """HTML Widgets for R. A framework for creating HTML widgets that render in various contexts including the R console, 'R Markdown' documents, and 'Shiny' web applications.""" - homepage = "https://cloud.r-project.org/package=htmlwidgets" - url = "https://cloud.r-project.org/src/contrib/htmlwidgets_0.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/htmlwidgets" + cran = "htmlwidgets" + version('1.5.4', sha256='1a3fc60f40717de7f1716b754fd1c31a132e489a2560a278636ee78eba46ffc1') version('1.5.3', sha256='01a5833182cc224bd100be2815e57e67b524de9f2bb1542787b6e3d1303f0f29') version('1.3', sha256='f1e4ffabc29e6cfe857f627da095be3cfcbe0e1f02ae75e572f10b4a026c5a12') version('0.9', sha256='1154b541ccd868e41d3cf0d7f188f7275ec99f61fe2c7de21c8a05edb19b985e') diff --git a/var/spack/repos/builtin/packages/r-httpcode/package.py b/var/spack/repos/builtin/packages/r-httpcode/package.py index e77d4737a80206..7077b9d115d74e 100644 --- a/var/spack/repos/builtin/packages/r-httpcode/package.py +++ b/var/spack/repos/builtin/packages/r-httpcode/package.py @@ -7,15 +7,13 @@ class RHttpcode(RPackage): - """httpcode: 'HTTP' Status Code Helper + """'HTTP' Status Code Helper. Find and explain the meaning of 'HTTP' status codes. Functions included for searching for codes by full or partial number, by message, and get appropriate dog and cat images for many status codes.""" - homepage = "https://github.com/sckott/httpcode" - url = "https://cloud.r-project.org/src/contrib/httpcode_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/httpcode" + cran = "httpcode" version('0.3.0', sha256='593a030a4f94c3df8c15576837c17344701bac023ae108783d0f06c476062f76') version('0.2.0', sha256='fbc1853db742a2cc1df11285cf27ce2ea43bc0ba5f7d393ee96c7e0ee328681a') diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index bc3217a92d2de6..ee7fdf161851bd 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -7,7 +7,7 @@ class RHttpuv(RPackage): - """HTTP and WebSocket Server Library + """HTTP and WebSocket Server Library. Provides low-level socket and protocol support for handling HTTP and WebSocket requests directly from within R. It is primarily intended as a @@ -17,10 +17,9 @@ class RHttpuv(RPackage): by Joyent, Inc. (See LICENSE file for libuv and http-parser license information.)""" - homepage = "https://github.com/rstudio/httpuv" - url = "https://cloud.r-project.org/src/contrib/httpuv_1.3.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/httpuv" + cran = "httpuv" + version('1.6.5', sha256='f5f63629ca5e9d0e396a89982d95b5286726c0cb425166f35a3ad32a60a79156') version('1.5.5', sha256='0be6c98927c7859d4bbfbbec8822c9f5e95352077d87640a76bc2ade07c83117') version('1.5.1', sha256='b5bb6b3b2f1a6d792568a70f3f357d6b3a35a5e26dd0c668c61a31f2ae8f5710') version('1.3.5', sha256='4336b993afccca2a194aca577b1975b89a35ac863423b18a11cdbb3f8470e4e9') @@ -28,8 +27,11 @@ class RHttpuv(RPackage): depends_on('r@2.15.1:', type=('build', 'run')) depends_on('r-rcpp@0.11.0:', type=('build', 'run')) - depends_on('r-r6', when='@1.5.0:', type=('build', 'run')) - depends_on('r-promises', when='@1.5.0:', type=('build', 'run')) - depends_on('r-later@0.8.0:', when='@1.5.0:', type=('build', 'run')) - depends_on('r-bh', when='@1.5.5:', type=('build', 'run')) + depends_on('r-rcpp@1.0.7:', type=('build', 'run'), when='@1.6.5:') + depends_on('r-r6', type=('build', 'run'), when='@1.5.0:') + depends_on('r-promises', type=('build', 'run'), when='@1.5.0:') + depends_on('r-later@0.8.0:', type=('build', 'run'), when='@1.5.0:') depends_on('gmake', type='build') + depends_on('zip') + + depends_on('r-bh', type=('build', 'run'), when='@1.5.5') diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index e56ebcb104de12..0c92579ffeda16 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -7,15 +7,13 @@ class RHttr(RPackage): - """Tools for Working with URLs and HTTP + """Tools for Working with URLs and HTTP. - Useful tools for working with HTTP organised by HTTP verbs (GET(), - POST(), etc). Configuration functions make it easy to control additional - request components (authenticate(), add_headers() and so on).""" + Useful tools for working with HTTP organised by HTTP verbs (GET(), POST(), + etc). Configuration functions make it easy to control additional request + components (authenticate(), add_headers() and so on).""" - homepage = "https://github.com/hadley/httr" - url = "https://cloud.r-project.org/src/contrib/httr_1.2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/httr" + cran = "httr" version('1.4.2', sha256='462bed6ed0d92f811d5df4d294336025f1dbff357286999d9269bfd9c20b1ef9') version('1.4.1', sha256='675c7e07bbe82c48284ee1ab929bb14a6e653abae2860d854dc41a3c028de156') @@ -25,8 +23,8 @@ class RHttr(RPackage): version('1.1.0', sha256='d7c0cdc11b2ded3132544580f52ebe5dad2a426cde1a5029f2cc693b2f195823') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.1:', when='@1.4.0', type=('build', 'run')) - depends_on('r@3.2:', when='@1.4.1:', type=('build', 'run')) + depends_on('r@3.1:', type=('build', 'run'), when='@1.4.0:') + depends_on('r@3.2:', type=('build', 'run'), when='@1.4.1:') depends_on('r-curl@3.0.0:', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-mime', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-hwriter/package.py b/var/spack/repos/builtin/packages/r-hwriter/package.py index 674a2b54ee8ea4..1905015dffcb63 100644 --- a/var/spack/repos/builtin/packages/r-hwriter/package.py +++ b/var/spack/repos/builtin/packages/r-hwriter/package.py @@ -7,12 +7,12 @@ class RHwriter(RPackage): - """Easy-to-use and versatile functions to + """HTML Writer - Outputs R objects in HTML format. + + Easy-to-use and versatile functions to output R objects in HTML format.""" - homepage = "https://cloud.r-project.org/package=hwriter" - url = "https://cloud.r-project.org/src/contrib/hwriter_1.3.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/hwriter" + cran = "hwriter" version('1.3.2', sha256='6b3531d2e7a239be9d6e3a1aa3256b2745eb68aa0bdffd2076d36552d0d7322b') diff --git a/var/spack/repos/builtin/packages/r-hypergraph/package.py b/var/spack/repos/builtin/packages/r-hypergraph/package.py index 2c0a9c645bf2e4..f412aa949de1ca 100644 --- a/var/spack/repos/builtin/packages/r-hypergraph/package.py +++ b/var/spack/repos/builtin/packages/r-hypergraph/package.py @@ -7,14 +7,14 @@ class RHypergraph(RPackage): - """A package providing hypergraph data structures + """A package providing hypergraph data structures. A package that implements some simple capabilities for representing and manipulating hypergraphs.""" - homepage = "https://bioconductor.org/packages/hypergraph" - git = "https://git.bioconductor.org/packages/hypergraph.git" + bioc = "hypergraph" + version('1.66.0', commit='e9c47336df6409006622818f541f258103163a39') version('1.62.0', commit='a286bbb70289e9f3cdf41407d52e5976bd6ed11e') version('1.56.0', commit='f8b977fe068f15ecea49d30e77a871a35afcb97b') version('1.54.0', commit='cf134b9221e9b5f6329a6786a366f57426c49e7c') diff --git a/var/spack/repos/builtin/packages/r-ica/package.py b/var/spack/repos/builtin/packages/r-ica/package.py index 434b9173395715..d8194dc1e9eae4 100644 --- a/var/spack/repos/builtin/packages/r-ica/package.py +++ b/var/spack/repos/builtin/packages/r-ica/package.py @@ -7,13 +7,13 @@ class RIca(RPackage): - """Independent Component Analysis (ICA) using various algorithms: FastICA, + """Independent Component Analysis. + + Independent Component Analysis (ICA) using various algorithms: FastICA, Information-Maximization (Infomax), and Joint Approximate Diagonalization of Eigenmatrices (JADE).""" - homepage = "https://cloud.r-project.org/package=ica" - url = "https://cloud.r-project.org/src/contrib/ica_1.0-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ica" + cran = "ica" version('1.0-2', sha256='e721596fc6175d3270a60d5e0b5b98be103a8fd0dd93ef16680af21fe0b54179') version('1.0-1', sha256='98559a8bb12dd134a40ce8fd133803e2a38456b45d0e2a507d66022a8e2274ae') diff --git a/var/spack/repos/builtin/packages/r-ids/package.py b/var/spack/repos/builtin/packages/r-ids/package.py index c8b4bf9e1d2c22..2e6f6cd88ffdf0 100644 --- a/var/spack/repos/builtin/packages/r-ids/package.py +++ b/var/spack/repos/builtin/packages/r-ids/package.py @@ -11,8 +11,7 @@ class RIds(RPackage): Generate random or human readable and pronounceable identifiers.""" - homepage = "https://github.com/richfitz/ids" - cran = "ids" + cran = "ids" version('1.0.1', sha256='b6212a186063c23116c5cbd3cca65dbb8977dd737261e4526ebee8f64852cfe8') diff --git a/var/spack/repos/builtin/packages/r-igraph/package.py b/var/spack/repos/builtin/packages/r-igraph/package.py index 42c0a8dbb7f0a9..a74b7c06f30687 100644 --- a/var/spack/repos/builtin/packages/r-igraph/package.py +++ b/var/spack/repos/builtin/packages/r-igraph/package.py @@ -7,16 +7,15 @@ class RIgraph(RPackage): - """Network Analysis and Visualization + """Network Analysis and Visualization. - Routines for simple graphs and network analysis. It can handle large - graphs very well and provides functions for generating random and regular - graphs, graph visualization, centrality methods and much more.""" + Routines for simple graphs and network analysis. It can handle large graphs + very well and provides functions for generating random and regular graphs, + graph visualization, centrality methods and much more.""" - homepage = "https://igraph.org/" - url = "https://cloud.r-project.org/src/contrib/igraph_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/igraph" + cran = "igraph" + version('1.2.11', sha256='1c8b715eb61e6e7d9082858673929f8e84dc832c0a2a7aba7811511bbd2000de') version('1.2.6', sha256='640da72166fda84bea2c0e5eee374f1ed80cd9439c1171d056b1b1737ae6c76d') version('1.2.4.1', sha256='891acc763b5a4a4a245358a95dee69280f4013c342f14dd6a438e7bb2bf2e480') version('1.2.4', sha256='1048eb26ab6b592815bc269c1d91e974c86c9ab827ccb80ae0a40042019592cb') @@ -26,7 +25,9 @@ class RIgraph(RPackage): 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-irlba', when='@:1.1.9', type=('build', 'run')) depends_on('gmp') + depends_on('gmp@4.38:', when='@1.2.11:') depends_on('libxml2') depends_on('glpk', when='@1.2.0:') + + depends_on('r-irlba', type=('build', 'run'), when='@:1.1.9') diff --git a/var/spack/repos/builtin/packages/r-illumina450probevariants-db/package.py b/var/spack/repos/builtin/packages/r-illumina450probevariants-db/package.py index 0e024821f04f70..2d5c3f8a86b344 100644 --- a/var/spack/repos/builtin/packages/r-illumina450probevariants-db/package.py +++ b/var/spack/repos/builtin/packages/r-illumina450probevariants-db/package.py @@ -8,13 +8,14 @@ class RIllumina450probevariantsDb(RPackage): """Annotation Package combining variant data from 1000 Genomes Project for - Illumina HumanMethylation450 Bead Chip probes: + Illumina HumanMethylation450 Bead Chip probes. Includes details on variants for each probe on the 450k bead chip for each of the four populations (Asian, American, African and European).""" - bioc = "Illumina450ProbeVariants.db" + bioc = "Illumina450ProbeVariants.db" + version('1.30.0', commit='ba1296b4aafc287dea61f5f37c6c99fd553e52a2') version('1.26.0', commit='fffe6033cc8d87354078c14de1e29976eaedd611') depends_on('r@3.0.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kanno-ilmn12-hg19/package.py b/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kanno-ilmn12-hg19/package.py index d490a9d4c701b6..971bb47e7971e5 100644 --- a/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kanno-ilmn12-hg19/package.py +++ b/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kanno-ilmn12-hg19/package.py @@ -7,14 +7,14 @@ class RIlluminahumanmethylation450kannoIlmn12Hg19(RPackage): - """Annotation for Illumina's 450k methylation arrays + """Annotation for Illumina's 450k methylation arrays. Manifests and annotation for Illumina's 450k array data.""" # This package is available via bioconductor but there is no available git # repository. - homepage = "https://bioconductor.org/packages/release/data/annotation/html/IlluminaHumanMethylation450kanno.ilmn12.hg19.html" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylation450kanno.ilmn12.hg19_0.6.0.tar.gz" + bioc = "IlluminaHumanMethylation450kanno.ilmn12.hg19" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylation450kanno.ilmn12.hg19_0.6.0.tar.gz" version('0.6.0', sha256='249b8fd62add3c95b5047b597cff0868d26a98862a47cebd656edcd175a73b15') diff --git a/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kmanifest/package.py b/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kmanifest/package.py index 00e241aafebfd8..cc217f85d119d5 100644 --- a/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kmanifest/package.py +++ b/var/spack/repos/builtin/packages/r-illuminahumanmethylation450kmanifest/package.py @@ -7,10 +7,10 @@ class RIlluminahumanmethylation450kmanifest(RPackage): - """Annotation for Illumina's 450k methylation arrays""" + """Annotation for Illumina's 450k methylation arrays.""" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylation450kmanifest_0.4.0.tar.gz" - bioc = "IlluminaHumanMethylation450kmanifest" + bioc = "IlluminaHumanMethylation450kmanifest" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylation450kmanifest_0.4.0.tar.gz" version('0.4.0', sha256='41b2e54bac3feafc7646fe40bce3aa2b92c10871b0a13657c5736517792fa763') diff --git a/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicanno-ilm10b4-hg19/package.py b/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicanno-ilm10b4-hg19/package.py index eff3f09d041bb6..f2bc5755d44c21 100644 --- a/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicanno-ilm10b4-hg19/package.py +++ b/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicanno-ilm10b4-hg19/package.py @@ -7,10 +7,10 @@ class RIlluminahumanmethylationepicannoIlm10b4Hg19(RPackage): - """Annotation for Illumina's EPIC methylation arrays""" + """Annotation for Illumina's EPIC methylation arrays.""" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0.tar.gz" bioc = "IlluminaHumanMethylationEPICanno.ilm10b4.hg19" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0.tar.gz" version('0.6.0', sha256='2c8128126b63e7fa805a5f3b02449367dca9c3be3eb5f6300acc718826590719') diff --git a/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicmanifest/package.py b/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicmanifest/package.py index 12571f6744e2ad..8e40918a1ec4f3 100644 --- a/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicmanifest/package.py +++ b/var/spack/repos/builtin/packages/r-illuminahumanmethylationepicmanifest/package.py @@ -7,10 +7,10 @@ class RIlluminahumanmethylationepicmanifest(RPackage): - """Manifest for Illumina's EPIC methylation arrays""" + """Manifest for Illumina's EPIC methylation arrays.""" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylationEPICmanifest_0.3.0.tar.gz" - bioc = "IlluminaHumanMethylationEPICmanifest" + bioc = "IlluminaHumanMethylationEPICmanifest" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/IlluminaHumanMethylationEPICmanifest_0.3.0.tar.gz" version('0.3.0', sha256='e39a69d98486cec981e97c56f45bbe47d2ccb5bbb66a1b16fa0685575493902a') diff --git a/var/spack/repos/builtin/packages/r-illuminaio/package.py b/var/spack/repos/builtin/packages/r-illuminaio/package.py index 895c4a77ea983a..a654d24be7c340 100644 --- a/var/spack/repos/builtin/packages/r-illuminaio/package.py +++ b/var/spack/repos/builtin/packages/r-illuminaio/package.py @@ -7,13 +7,13 @@ class RIlluminaio(RPackage): - """Parsing Illumina Microarray Output Files + """Parsing Illumina Microarray Output Files. Tools for parsing Illumina's microarray output files, including IDAT.""" - homepage = "https://bioconductor.org/packages/illuminaio" - git = "https://git.bioconductor.org/packages/illuminaio.git" + bioc = "illuminaio" + version('0.36.0', commit='c5b6e9164b73c650c0a9f055f4fd0580ac64fae7') version('0.32.0', commit='e1322c781dd475a5e8ff6c0422bebb3deb47fa80') version('0.26.0', commit='40c2f94df2ea64d745d25aadd2bfb33ac3e02f81') version('0.24.0', commit='47953c77713c2da00a610f39308f86c5b44f6c59') diff --git a/var/spack/repos/builtin/packages/r-imager/package.py b/var/spack/repos/builtin/packages/r-imager/package.py index 8e500da06f555e..be813c0b15a238 100644 --- a/var/spack/repos/builtin/packages/r-imager/package.py +++ b/var/spack/repos/builtin/packages/r-imager/package.py @@ -7,7 +7,7 @@ class RImager(RPackage): - """Image Processing Library Based on 'CImg' + """Image Processing Library Based on 'CImg'. Fast image processing for images in up to 4 dimensions (two spatial dimensions, one time/depth dimension, one colour dimension). Provides most @@ -16,10 +16,9 @@ class RImager(RPackage): The package wraps 'CImg', , a simple, modern C++ library for image processing.""" - homepage = "https://dahtah.github.io/imager" - url = "https://cloud.r-project.org/src/contrib/imager_0.41.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/imager" + cran = "imager" + version('0.42.11', sha256='47f8b7ff8d05a5191e30ad1869f12a62bdbe3142b22b12a6032dec9b5f8532a8') version('0.42.10', sha256='01939eb03ad2e1369a4240a128c3b246a4c56f572f1ea4967f1acdc555adaeee') version('0.42.3', sha256='6fc308153df8251cef48f1e13978abd5d29ec85046fbe0b27c428801d05ebbf3') version('0.41.2', sha256='9be8bc8b3190d469fcb2883045a404d3b496a0380f887ee3caea11f0a07cd8a5') @@ -35,7 +34,8 @@ class RImager(RPackage): depends_on('r-purrr', type=('build', 'run')) depends_on('r-downloader', type=('build', 'run')) depends_on('r-igraph', type=('build', 'run')) - depends_on('r-cairo', when='@:0.41.2', type=('build', 'run')) - depends_on('r-plyr', when='@:0.41.2', type=('build', 'run')) depends_on('fftw') depends_on('libtiff') + + depends_on('r-cairo', type=('build', 'run'), when='@:0.41.2') + depends_on('r-plyr', type=('build', 'run'), when='@:0.41.2') diff --git a/var/spack/repos/builtin/packages/r-impute/package.py b/var/spack/repos/builtin/packages/r-impute/package.py index 62b8fac60c7c47..79f872f5a48b60 100644 --- a/var/spack/repos/builtin/packages/r-impute/package.py +++ b/var/spack/repos/builtin/packages/r-impute/package.py @@ -7,13 +7,13 @@ class RImpute(RPackage): - """impute: Imputation for microarray data + """impute: Imputation for microarray data. Imputation for microarray data (currently KNN only)""" - homepage = "https://bioconductor.org/packages/impute" - git = "https://git.bioconductor.org/packages/impute.git" + bioc = "impute" + version('1.68.0', commit='fa4e4d883e609633c49d865a44acd6a79954eaac') version('1.64.0', commit='31a5636f4dfbb1fd61386738786a0de048a620c2') version('1.58.0', commit='dc17173df08d965a0d0aac9fa4ad519bd99d127e') version('1.56.0', commit='6c037ed4dffabafceae684265f86f2a18751b559') diff --git a/var/spack/repos/builtin/packages/r-influencer/package.py b/var/spack/repos/builtin/packages/r-influencer/package.py index f3bd00b7e54797..18f38da1c65cb7 100644 --- a/var/spack/repos/builtin/packages/r-influencer/package.py +++ b/var/spack/repos/builtin/packages/r-influencer/package.py @@ -7,7 +7,9 @@ class RInfluencer(RPackage): - """Provides functionality to compute various node centrality measures on + """Software Tools to Quantify Structural Importance of Nodes in a Network. + + Provides functionality to compute various node centrality measures on networks. Included are functions to compute betweenness centrality (by utilizing Madduri and Bader's SNAP library), implementations of Burt's constraint and effective network size (ENS) metrics, Borgatti's algorithm @@ -16,10 +18,9 @@ class RInfluencer(RPackage): with OpenMP, which may run faster on systems which have OpenMP configured.""" - homepage = "https://github.com/rcc-uchicago/influenceR" - url = "https://cloud.r-project.org/src/contrib/influenceR_0.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/influenceR" + cran = "influenceR" + version('0.1.0.1', sha256='63c46f1175fced33fb1b78d4d56e37fbee09b408945b0106dac36e3344cd4766') version('0.1.0', sha256='4fc9324179bd8896875fc0e879a8a96b9ef2a6cf42a296c3b7b4d9098519e98a') depends_on('r@3.2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ini/package.py b/var/spack/repos/builtin/packages/r-ini/package.py index 16a62dace3ccff..731ad9f4fc4ad1 100644 --- a/var/spack/repos/builtin/packages/r-ini/package.py +++ b/var/spack/repos/builtin/packages/r-ini/package.py @@ -7,12 +7,12 @@ class RIni(RPackage): - """Parse simple '.ini' configuration files to an structured list. Users can + """Read and Write '.ini' Files. + + Parse simple '.ini' configuration files to an structured list. Users can manipulate this resulting list with lapply() functions. This same structured list can be used to write back to file after modifications.""" - homepage = "https://github.com/dvdscripter/ini" - url = "https://cloud.r-project.org/src/contrib/ini_0.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ini" + cran = "ini" version('0.3.1', sha256='7b191a54019c8c52d6c2211c14878c95564154ec4865f57007953742868cd813') diff --git a/var/spack/repos/builtin/packages/r-inline/package.py b/var/spack/repos/builtin/packages/r-inline/package.py index 312dbc9ff447bc..99bc0b002e4ac0 100644 --- a/var/spack/repos/builtin/packages/r-inline/package.py +++ b/var/spack/repos/builtin/packages/r-inline/package.py @@ -7,16 +7,14 @@ class RInline(RPackage): - """Functions to Inline C, C++, Fortran Function Calls from R + """Functions to Inline C, C++, Fortran Function Calls from R. - Functionality to dynamically define R functions and S4 methods with - inlined C, C++ or Fortran code supporting .C and .Call calling - conventions.""" + Functionality to dynamically define R functions and S4 methods with inlined + C, C++ or Fortran code supporting .C and .Call calling conventions.""" - homepage = "https://cloud.r-project.org/package=inline" - url = "https://cloud.r-project.org/src/contrib/inline_0.3.14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/inline" + cran = "inline" + version('0.3.19', sha256='0ee9309bb7dab0b97761ddd18381aa12bd7d54678ccd7bec00784e831f4c99d5') version('0.3.17', sha256='792857b2ebd408d6523424d2f6bb7297e241d4b28ab32372f6a9240c8cd554f3') version('0.3.15', sha256='ff043fe13c1991a3b285bed256ff4a9c0ba10bee764225a34b285875b7d69c68') version('0.3.14', sha256='fd34d6bf965148d26d983a022a0ff7bc1a5831f6ca066deee3f6139894dfc931') diff --git a/var/spack/repos/builtin/packages/r-insight/package.py b/var/spack/repos/builtin/packages/r-insight/package.py index 248f6647525998..069bab9ad6620c 100644 --- a/var/spack/repos/builtin/packages/r-insight/package.py +++ b/var/spack/repos/builtin/packages/r-insight/package.py @@ -7,7 +7,7 @@ class RInsight(RPackage): - """Easy Access to Model Information for Various Model Objects + """Easy Access to Model Information for Various Model Objects. A tool to provide an easy, intuitive and consistent access to information contained in various R models, like model formulas, model terms, @@ -19,9 +19,10 @@ class RInsight(RPackage): objects, where otherwise functions to access these information are missing.""" - homepage = "https://easystats.github.io/insight/" - cran = "insight" + cran = "insight" + version('0.16.0', sha256='7944d7a386c99ea06d9d9e2b5f4aeb98fded7ec90b1cb908d03e278480be9e3d') + version('0.15.0', sha256='d6a148c3e1cfcb3829e2f8950bcbf98f500ee88bebd7e2482f9b085542e93fee') version('0.14.1', sha256='0e7761997a46ee33039cdeff1779dbc210de3644e4444c6e893e4ef2f12cc129') depends_on('r@3.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-interactivedisplaybase/package.py b/var/spack/repos/builtin/packages/r-interactivedisplaybase/package.py index 8471b9ce48690c..503947b1ccccc8 100644 --- a/var/spack/repos/builtin/packages/r-interactivedisplaybase/package.py +++ b/var/spack/repos/builtin/packages/r-interactivedisplaybase/package.py @@ -8,15 +8,15 @@ class RInteractivedisplaybase(RPackage): """Base package for enabling powerful shiny web displays of Bioconductor - objects + objects. The interactiveDisplayBase package contains the the basic methods needed to generate interactive Shiny based display methods for Bioconductor objects.""" - homepage = "https://bioconductor.org/packages/interactiveDisplayBase" - git = "https://git.bioconductor.org/packages/interactiveDisplayBase.git" + bioc = "interactiveDisplayBase" + version('1.32.0', commit='0f88b2ac3689d51abb6ac0045b3207ca77963a5a') version('1.28.0', commit='a74c02c971c4f9c7086e14abd23f1a4190da4599') version('1.22.0', commit='4ce3cde1dabc01375c153ad614d77a5e28b96916') version('1.20.0', commit='f40912c8af7afbaaf68c003a6e148d81cbe84df6') @@ -27,4 +27,4 @@ class RInteractivedisplaybase(RPackage): depends_on('r@2.10:', type=('build', 'run')) depends_on('r-biocgenerics', type=('build', 'run')) depends_on('r-shiny', type=('build', 'run')) - depends_on('r-dt', when='@1.28.0:', type=('build', 'run')) + depends_on('r-dt', type=('build', 'run'), when='@1.28.0:') diff --git a/var/spack/repos/builtin/packages/r-intervals/package.py b/var/spack/repos/builtin/packages/r-intervals/package.py index 72e6295a213865..9d8f317b016c40 100644 --- a/var/spack/repos/builtin/packages/r-intervals/package.py +++ b/var/spack/repos/builtin/packages/r-intervals/package.py @@ -7,13 +7,9 @@ class RIntervals(RPackage): - """Tools for Working with Points and Intervals + """Tools for working with and comparing sets of points and intervals.""" - Tools for working with and comparing sets of points and intervals.""" - - homepage = "https://github.com/edzer/intervals" - url = "https://cloud.r-project.org/src/contrib/intervals_0.15.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/intervals" + cran = "intervals" version('0.15.2', sha256='0bd23b0ce817ddd851238233d8a5420bf3a6d29e75fd361418cbc50118777c57') version('0.15.1', sha256='9a8b3854300f2055e1492c71932cc808b02feac8c4d3dbf6cba1c7dbd09f4ae4') diff --git a/var/spack/repos/builtin/packages/r-inum/package.py b/var/spack/repos/builtin/packages/r-inum/package.py index b8289551eadfd2..1196779b4a1ed6 100644 --- a/var/spack/repos/builtin/packages/r-inum/package.py +++ b/var/spack/repos/builtin/packages/r-inum/package.py @@ -7,13 +7,14 @@ class RInum(RPackage): - """Enum-type representation of vectors and representation of intervals, + """Interval and Enum-Type Representation of Vectors. + + Enum-type representation of vectors and representation of intervals, including a method of coercing variables in data frames.""" - homepage = "https://cloud.r-project.org/package=inum" - url = "https://cloud.r-project.org/src/contrib/inum_1.0-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/inum" + cran = "inum" + version('1.0-4', sha256='5febef69c43a4b95b376c1418550a949d988a5f26b1383ca01c9728a94fc13ce') version('1.0-1', sha256='3c2f94c13c03607e05817e4859595592068b55e810fed94e29bc181ad248a099') depends_on('r@3.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py index 0a6c41ff64868f..7a58fb8a0d86de 100644 --- a/var/spack/repos/builtin/packages/r-ipred/package.py +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -7,14 +7,15 @@ class RIpred(RPackage): - """Improved predictive models by indirect classification and bagging for - classification, regression and survival problems as well as resampling + """Improved Predictors. + + Improved predictive models by indirect classification and bagging for + classification, regression and survival problems as well as resampling based estimators of prediction error.""" - homepage = "https://cloud.r-project.org/package=ipred" - url = "https://cloud.r-project.org/src/contrib/ipred_0.9-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ipred" + cran = "ipred" + version('0.9-12', sha256='d6e1535704d39415a799d7643141ffa4f6f55597f03e763f4ccd5d8106005843') version('0.9-9', sha256='0da87a70730d5a60b97e46b2421088765e7d6a7cc2695757eba0f9d31d86416f') version('0.9-8', sha256='9c1d11c3cb0d72be7870e70a216e589e403bbfee38c796fe75cd0611d878ac07') version('0.9-5', sha256='3a466417808e17c4c6cd0f2b577407355d9da79a341558b42a8b76e24b6f6ba4') diff --git a/var/spack/repos/builtin/packages/r-iranges/package.py b/var/spack/repos/builtin/packages/r-iranges/package.py index 3230f6d159d24f..7648efc3a43b79 100644 --- a/var/spack/repos/builtin/packages/r-iranges/package.py +++ b/var/spack/repos/builtin/packages/r-iranges/package.py @@ -7,7 +7,7 @@ class RIranges(RPackage): - """Foundation of integer range manipulation in Bioconductor + """Foundation of integer range manipulation in Bioconductor. Provides efficient low-level and highly reusable S4 classes for storing, manipulating and aggregating over annotated ranges of integers. @@ -16,9 +16,9 @@ class RIranges(RPackage): list-like classes for storing, transforming and aggregating large grouped data, i.e., collections of atomic vectors and DataFrames.""" - homepage = "https://bioconductor.org/packages/IRanges" - git = "https://git.bioconductor.org/packages/IRanges.git" + bioc = "IRanges" + version('2.28.0', commit='d85ee908a379e12d1e32599e999c71ab37c25e57') version('2.24.1', commit='6c61fddf4c5830f69a0f7f108888c67cd0a12b19') version('2.22.2', commit='8c5e991') version('2.18.3', commit='c98a7ba074e72f2e5ec98252dffe9d3392711972') @@ -28,15 +28,17 @@ class RIranges(RPackage): version('2.10.5', commit='b00d1d5025e3c480d17c13100f0da5a0132b1614') depends_on('r@3.1.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@2.24.1:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@2.24.1:') depends_on('r-biocgenerics@0.21.1:', type=('build', 'run')) - depends_on('r-biocgenerics@0.23.3:', when='@2.12.0:', type=('build', 'run')) - depends_on('r-biocgenerics@0.25.3:', when='@2.14.12:', type=('build', 'run')) - depends_on('r-biocgenerics@0.36.0:', when='@2.24.1:', type=('build', 'run')) + depends_on('r-biocgenerics@0.23.3:', type=('build', 'run'), when='@2.12.0:') + depends_on('r-biocgenerics@0.25.3:', type=('build', 'run'), when='@2.14.12:') + depends_on('r-biocgenerics@0.36.0:', type=('build', 'run'), when='@2.24.1:') + depends_on('r-biocgenerics@0.39.2:', type=('build', 'run'), when='@2.28.0:') depends_on('r-s4vectors@0.13.17:', type=('build', 'run')) - depends_on('r-s4vectors@0.15.5:', when='@2.12.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.18.2:', when='@2.14.12:', type=('build', 'run')) - depends_on('r-s4vectors@0.19.11:', when='@2.16.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.21.9:', when='@2.18.3:', type=('build', 'run')) - depends_on('r-s4vectors@0.25.14:', when='@2.22.2:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@2.24.1:', type=('build', 'run')) + depends_on('r-s4vectors@0.15.5:', type=('build', 'run'), when='@2.12.0:') + depends_on('r-s4vectors@0.18.2:', type=('build', 'run'), when='@2.14.12:') + depends_on('r-s4vectors@0.19.11:', type=('build', 'run'), when='@2.16.0:') + depends_on('r-s4vectors@0.21.9:', type=('build', 'run'), when='@2.18.3:') + depends_on('r-s4vectors@0.25.14:', type=('build', 'run'), when='@2.22.2:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@2.24.1:') + depends_on('r-s4vectors@0.29.19:', type=('build', 'run'), when='@2.28.0:') diff --git a/var/spack/repos/builtin/packages/r-irdisplay/package.py b/var/spack/repos/builtin/packages/r-irdisplay/package.py index e15bde6cc7ceed..b9b72af97b5b01 100644 --- a/var/spack/repos/builtin/packages/r-irdisplay/package.py +++ b/var/spack/repos/builtin/packages/r-irdisplay/package.py @@ -8,14 +8,15 @@ class RIrdisplay(RPackage): - """An interface to the rich display capabilities of Jupyter front-ends - (e.g. 'Jupyter Notebook') Designed to be used from a running IRkernel - session""" + """'Jupyter' Display Machinery. - homepage = "https://irkernel.github.io" - url = "https://cloud.r-project.org/src/contrib/IRdisplay_0.4.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/IRdisplay" + An interface to the rich display capabilities of 'Jupyter' front-ends (e.g. + 'Jupyter Notebook') . Designed to be used from a + running 'IRkernel' session .""" + cran = "IRdisplay" + + version('1.1', sha256='83eb030ff91f546cb647899f8aa3f5dc9fe163a89a981696447ea49cc98e8d2b') version('0.7.0', sha256='91eac9acdb92ed0fdc58e5da284aa4bb957ada5eef504fd89bec136747999089') version('0.4.4', sha256='e83a0bc52800618bf9a3ac5ef3d432512e00f392b7216fd515fca319377584a6') diff --git a/var/spack/repos/builtin/packages/r-irkernel/package.py b/var/spack/repos/builtin/packages/r-irkernel/package.py index f61e687a7e6be6..32d80184af17a8 100644 --- a/var/spack/repos/builtin/packages/r-irkernel/package.py +++ b/var/spack/repos/builtin/packages/r-irkernel/package.py @@ -8,19 +8,31 @@ class RIrkernel(RPackage): - """R kernel for Jupyter""" + """Native R Kernel for the 'Jupyter Notebook'. - homepage = "https://irkernel.github.io/" - git = "https://github.com/IRkernel/IRkernel.git" + The R kernel for the 'Jupyter' environment executes R code which the + front-end ('Jupyter Notebook' or other front-ends) submits to the kernel + via the network.""" - version('1.2', commit='d7f868127b876fd490aeff2a75b4254a2898f96c') - version('0.7', commit='9cdd284e03eb42d03fab18544b81f486852d5fe0') + cran = "IRkernel" - depends_on('r-repr', type=('build', 'run')) - depends_on('r-irdisplay', type=('build', 'run')) - depends_on('r-evaluate', type=('build', 'run')) + version('1.3', sha256='5a7fcbfd978dfb3cca6702a68a21c147551995fc400084ae8382ffcbbdae1903') + version('1.2', sha256='5fb4dbdb741d05043120a8be0eb73f054b607d9854f314bd79cfec08d219ff91') + version('0.7', + git="https://github.com/IRkernel/IRkernel.git", + commit='9cdd284e03eb42d03fab18544b81f486852d5fe0', + deprecated=True) + + depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r-repr@0.4.99:', type=('build', 'run')) + depends_on('r-evaluate@0.10:', type=('build', 'run')) + depends_on('r-irdisplay@0.3.0.9999:', type=('build', 'run')) + depends_on('r-pbdzmq@0.2-1:', type=('build', 'run')) depends_on('r-crayon', type=('build', 'run')) - depends_on('r-pbdzmq', type=('build', 'run')) - depends_on('r-devtools', type=('build', 'run')) + depends_on('r-jsonlite@0.9.6:', type=('build', 'run')) depends_on('r-uuid', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) + depends_on('py-jupyter', type='run') + + depends_on('r-evaluate@0.5.4:', type=('build', 'run'), when='@0.7') + depends_on('r-devtools', type=('build', 'run'), when='@0.7') diff --git a/var/spack/repos/builtin/packages/r-irlba/package.py b/var/spack/repos/builtin/packages/r-irlba/package.py index 6a036bd1ac5314..d1116f9dec66e9 100644 --- a/var/spack/repos/builtin/packages/r-irlba/package.py +++ b/var/spack/repos/builtin/packages/r-irlba/package.py @@ -7,17 +7,20 @@ class RIrlba(RPackage): - """Fast and memory efficient methods for truncated singular and eigenvalue - decompositions and principal component analysis of large sparse or dense + """Fast Truncated Singular Value Decomposition and Principal Components + Analysis for Large Dense and Sparse Matrices. + + Fast and memory efficient methods for truncated singular value + decomposition and principal components analysis of large sparse and dense matrices.""" - homepage = "https://cloud.r-project.org/package=irlba" - url = "https://cloud.r-project.org/src/contrib/irlba_2.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/irlba" + cran = "irlba" + version('2.3.5', sha256='26fc8c0d36460e422ab77f43a597b8ec292eacd452628c54d34b8bf7d5269bb9') version('2.3.3', sha256='6ee233697bcd579813bd0af5e1f4e6dd1eea971e8919c748408130d970fef5c0') version('2.3.2', sha256='3fdf2d8fefa6ab14cd0992740de7958f9f501c71aca93229f5eb03c54558fc38') version('2.1.2', sha256='5183e8dd7943df11c0f44460566adf06c03d5320f142699298f516d423b06ce1') version('2.0.0', sha256='15f8d6c1107d6bb872411efd61e6077d9d7ac826f4da2d378999889a7b1ebabe') + depends_on('r@3.6.2:', type=('build', 'run'), when='@2.3.5:') depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-isdparser/package.py b/var/spack/repos/builtin/packages/r-isdparser/package.py index 99a635b8f406f9..35a607634381d0 100644 --- a/var/spack/repos/builtin/packages/r-isdparser/package.py +++ b/var/spack/repos/builtin/packages/r-isdparser/package.py @@ -7,7 +7,7 @@ class RIsdparser(RPackage): - """Parse 'NOAA' Integrated Surface Data Files + """Parse 'NOAA' Integrated Surface Data Files. Tools for parsing 'NOAA' Integrated Surface Data ('ISD') files, described at . Data includes for example, wind speed @@ -17,13 +17,11 @@ class RIsdparser(RPackage): length ASCII character strings, with most fields optional. Included are tools for parsing entire files, or individual lines of data.""" - homepage = "https://github.com/ropensci/isdparser" - url = "https://cloud.r-project.org/src/contrib/isdparser_0.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/isdparser" + cran = "isdparser" version('0.4.0', sha256='6f609e8f5ae4ce2e7904401f289d60d219b8f3a2bec9f661d10afa18ab73b317') version('0.3.0', sha256='6c9e1d7f3661802838010d659d7c77b964423dcc9a6623402df1fe3be627b7b9') depends_on('r-tibble@1.2:', type=('build', 'run')) depends_on('r-data-table@1.10.0:', type=('build', 'run')) - depends_on('r-lubridate', when='@0.4.0:', type=('build', 'run')) + depends_on('r-lubridate', type=('build', 'run'), when='@0.4.0:') diff --git a/var/spack/repos/builtin/packages/r-islr/package.py b/var/spack/repos/builtin/packages/r-islr/package.py index ed08352d9d7a11..61da4752d7037c 100644 --- a/var/spack/repos/builtin/packages/r-islr/package.py +++ b/var/spack/repos/builtin/packages/r-islr/package.py @@ -7,16 +7,15 @@ class RIslr(RPackage): - """ISLR: Data for an Introduction to Statistical Learning with Applications - in R + """Data for an Introduction to Statistical Learning with Applications in R. We provide the collection of data-sets used in the book 'An Introduction to Statistical Learning with Applications in R'.""" - homepage = "https://cloud.r-project.org/package=ISLR" - url = "https://cloud.r-project.org/src/contrib/ISLR_1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ISLR" + cran = "ISLR" + version('1.4', sha256='7151c636808198ee759cbcf22f82a7aa76580fb8d11e4cd67f69f85401c820c3') version('1.2', sha256='b00f7a06d2fb646917e629cc2dbdab71c7de3eb17a8a4d06849901a299f1caad') depends_on('r@2.10:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.4:') diff --git a/var/spack/repos/builtin/packages/r-iso/package.py b/var/spack/repos/builtin/packages/r-iso/package.py index 912af482644e55..d83523812f1c88 100644 --- a/var/spack/repos/builtin/packages/r-iso/package.py +++ b/var/spack/repos/builtin/packages/r-iso/package.py @@ -7,14 +7,12 @@ class RIso(RPackage): - """Functions to Perform Isotonic Regression + """Functions to Perform Isotonic Regression. - Linear order and unimodal order (univariate) isotonic regression; - bivariate isotonic regression with linear order on both variables.""" + Linear order and unimodal order (univariate) isotonic regression; bivariate + isotonic regression with linear order on both variables.""" - homepage = "https://cloud.r-project.org/package=Iso" - url = "https://cloud.r-project.org/src/contrib/Iso_0.0-17.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Iso" + cran = "Iso" version('0.0-18.1', sha256='2fa5f78a7603cbae94a5e38e791938596a053d48c609a7c120a19cbb7d93c66f') version('0.0-18', sha256='2d7e8c4452653364ee086d95cea620c50378e30acfcff129b7261e1756a99504') diff --git a/var/spack/repos/builtin/packages/r-isoband/package.py b/var/spack/repos/builtin/packages/r-isoband/package.py index c28c0c9a94a145..3632a3a23058aa 100644 --- a/var/spack/repos/builtin/packages/r-isoband/package.py +++ b/var/spack/repos/builtin/packages/r-isoband/package.py @@ -7,16 +7,15 @@ class RIsoband(RPackage): - """Generate Isolines and Isobands from Regularly Spaced Elevation Grids + """Generate Isolines and Isobands from Regularly Spaced Elevation Grids. A fast C++ implementation to generate contour lines (isolines) and contour polygons (isobands) from regularly spaced grids containing elevation data.""" - homepage = "https://github.com/wilkelab/isoband" - url = "https://cloud.r-project.org/src/contrib/isoband_0.2.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/isoband" + cran = "isoband" + version('0.2.5', sha256='46f53fa066f0966f02cb2bf050190c0d5e950dab2cdf565feb63fc092c886ba5') version('0.2.3', sha256='f9d3318fdf6d147dc2e2c7015ea7de42a55fa33d6232b952f982df96066b7ffe') depends_on('r-testthat', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-isva/package.py b/var/spack/repos/builtin/packages/r-isva/package.py index c3f4573bf74a3d..f51408ac16a0d6 100644 --- a/var/spack/repos/builtin/packages/r-isva/package.py +++ b/var/spack/repos/builtin/packages/r-isva/package.py @@ -7,13 +7,13 @@ class RIsva(RPackage): - """Independent Surrogate Variable Analysis: + """Independent Surrogate Variable Analysis. Independent Surrogate Variable Analysis is an algorithm for feature selection in the presence of potential confounding factors (see Teschendorff AE et al 2011, ).""" - cran = "isva" + cran = "isva" version('1.9', sha256='9fd016e0b34034d271d45f8a0d0db62780bf0187112e45f610aa9237014e1d17') diff --git a/var/spack/repos/builtin/packages/r-iterators/package.py b/var/spack/repos/builtin/packages/r-iterators/package.py index 3fe5dd40f943d6..b26e7624bed482 100644 --- a/var/spack/repos/builtin/packages/r-iterators/package.py +++ b/var/spack/repos/builtin/packages/r-iterators/package.py @@ -7,14 +7,12 @@ class RIterators(RPackage): - """Provides Iterator Construct + """Provides Iterator Construct. - Support for iterators, which allow a programmer to traverse through all - the elements of a vector, list, or other collection of data.""" + Support for iterators, which allow a programmer to traverse through all the + elements of a vector, list, or other collection of data.""" - homepage = "https://cloud.r-project.org/package=iterators" - url = "https://cloud.r-project.org/src/contrib/iterators_1.0.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/iterators" + cran = "iterators" version('1.0.13', sha256='778e30e4c292da9f94d62acc637cf55273dae258199d847e62658f44840f11a4') version('1.0.12', sha256='96bf31d60ebd23aefae105d9b7790715e63327eec0deb2ddfb3d543994ea9f4b') diff --git a/var/spack/repos/builtin/packages/r-jade/package.py b/var/spack/repos/builtin/packages/r-jade/package.py index a299cff12bd30e..c60b7797dd6322 100644 --- a/var/spack/repos/builtin/packages/r-jade/package.py +++ b/var/spack/repos/builtin/packages/r-jade/package.py @@ -8,7 +8,7 @@ class RJade(RPackage): """Blind Source Separation Methods Based on Joint Diagonalization and Some - BSS Performance Criteria: + BSS Performance Criteria. Cardoso's JADE algorithm as well as his functions for joint diagonalization are ported to R. Also several other blind source separation (BSS) methods, @@ -16,7 +16,7 @@ class RJade(RPackage): algorithms, are given. The package is described in Miettinen, Nordhausen and Taskinen (2017) .""" - cran = "JADE" + cran = "JADE" version('2.0-3', sha256='56d68a993fa16fc6dec758c843960eee840814c4ca2271e97681a9d2b9e242ba') diff --git a/var/spack/repos/builtin/packages/r-janitor/package.py b/var/spack/repos/builtin/packages/r-janitor/package.py index c3948f6417cbd3..27e75ad9033cb0 100644 --- a/var/spack/repos/builtin/packages/r-janitor/package.py +++ b/var/spack/repos/builtin/packages/r-janitor/package.py @@ -7,7 +7,7 @@ class RJanitor(RPackage): - """Simple Tools for Examining and Cleaning Dirty Data + """Simple Tools for Examining and Cleaning Dirty Data. The main janitor functions can: perfectly format data.frame column names; provide quick one- and two-variable tabulations (i.e., frequency tables and @@ -20,9 +20,7 @@ class RJanitor(RPackage): do everything covered here, but with janitor they can do it faster and save their thinking for the fun stuff.""" - homepage = "https://github.com/sfirke/janitor" - url = "https://cloud.r-project.org/src/contrib/janitor_0.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/janitor" + cran = "janitor" version('2.1.0', sha256='d60615940fbe174f67799c8abc797f27928eca4ac180418527c5897a4aaad826') version('1.2.0', sha256='5e15a2292c65c5ddd6160289dec2604b05a813651a2be0d7854ace4548a32b8c') @@ -31,14 +29,14 @@ class RJanitor(RPackage): depends_on('r@3.1.2:', type=('build', 'run')) depends_on('r-dplyr@0.7.0:', type=('build', 'run')) - depends_on('r-dplyr@1.0.0:', when='@2.1.0:', type=('build', 'run')) - depends_on('r-lifecycle', when='@2.1.0:', type=('build', 'run')) - depends_on('r-lubridate', when='@2.1.0:', type=('build', 'run')) + depends_on('r-dplyr@1.0.0:', type=('build', 'run'), when='@2.1.0:') + depends_on('r-lifecycle', type=('build', 'run'), when='@2.1.0:') + depends_on('r-lubridate', type=('build', 'run'), when='@2.1.0:') depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-purrr', when='@1.1.0:', type=('build', 'run')) - depends_on('r-rlang', when='@1.1.0:', type=('build', 'run')) - depends_on('r-stringi', when='@2.1.0:', type=('build', 'run')) - depends_on('r-stringr', when='@2.1.0:', type=('build', 'run')) - depends_on('r-snakecase@0.9.2:', when='@1.1.0:', type=('build', 'run')) - depends_on('r-tidyselect@1.0.0:', when='@2.1.0:', type=('build', 'run')) + depends_on('r-purrr', type=('build', 'run'), when='@1.1.0:') + depends_on('r-rlang', type=('build', 'run'), when='@1.1.0:') + depends_on('r-stringi', type=('build', 'run'), when='@2.1.0:') + depends_on('r-stringr', type=('build', 'run'), when='@2.1.0:') + depends_on('r-snakecase@0.9.2:', type=('build', 'run'), when='@1.1.0:') + depends_on('r-tidyselect@1.0.0:', type=('build', 'run'), when='@2.1.0:') depends_on('r-tidyr@0.7.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-jaspar2018/package.py b/var/spack/repos/builtin/packages/r-jaspar2018/package.py index 3b7a35a62686f9..91051bef81b853 100644 --- a/var/spack/repos/builtin/packages/r-jaspar2018/package.py +++ b/var/spack/repos/builtin/packages/r-jaspar2018/package.py @@ -12,8 +12,7 @@ class RJaspar2018(RPackage): Data package for JASPAR 2018. To search this databases, please use the package TFBSTools (>= 1.15.6).""" - homepage = "https://bioconductor.org/packages/JASPAR2018" - git = "https://git.bioconductor.org/packages/JASPAR2018.git" + bioc = "JASPAR2018" version('1.1.0', commit='cf8598d3c9054d85c43655cf82be17f74d800fa5') version('1.0.0', commit='4c84092b3737bb1c57ab56f4321f2f5e4b0efeaa') diff --git a/var/spack/repos/builtin/packages/r-jomo/package.py b/var/spack/repos/builtin/packages/r-jomo/package.py index 84d86ea5e459b8..ac1ddfe6c3eced 100644 --- a/var/spack/repos/builtin/packages/r-jomo/package.py +++ b/var/spack/repos/builtin/packages/r-jomo/package.py @@ -7,7 +7,7 @@ class RJomo(RPackage): - """Multilevel Joint Modelling Multiple Imputation + """Multilevel Joint Modelling Multiple Imputation. Similarly to Schafer's package 'pan', 'jomo' is a package for multilevel joint modelling multiple imputation (Carpenter and Kenward, 2013) @@ -16,9 +16,7 @@ class RJomo(RPackage): option to use cluster-specific covariance matrices and to impute compatibly with the substantive model.""" - homepage = "https://cloud.r-project.org/package=jomo" - url = "https://cloud.r-project.org/src/contrib/jomo_2.6-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/jomo" + cran = "jomo" version('2.7-2', sha256='3962d5cbecc60e72670329dbef0dd74303080f5ea2a79c91e27f75db99ba6ce9') version('2.6-9', sha256='b90f47071e62b8863b00b1ae710a56ae6efbfe2baeb9963f8a91a10d6183cc9b') @@ -27,5 +25,5 @@ class RJomo(RPackage): depends_on('r-lme4', type=('build', 'run')) depends_on('r-survival', type=('build', 'run')) - depends_on('r-mass', when='@2.6-7:', type=('build', 'run')) - depends_on('r-ordinal', when='@2.6-7:', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run'), when='@2.6-7:') + depends_on('r-ordinal', type=('build', 'run'), when='@2.6-7:') diff --git a/var/spack/repos/builtin/packages/r-jpeg/package.py b/var/spack/repos/builtin/packages/r-jpeg/package.py index 284fc4896dc1fb..16c1ba6463e66a 100644 --- a/var/spack/repos/builtin/packages/r-jpeg/package.py +++ b/var/spack/repos/builtin/packages/r-jpeg/package.py @@ -7,16 +7,15 @@ class RJpeg(RPackage): - """Read and write JPEG images + """Read and write JPEG images. This package provides an easy and simple way to read, write and display bitmap images stored in the JPEG format. It can read and write both files and in-memory raw vectors.""" - homepage = "https://www.rforge.net/jpeg/" - url = "https://cloud.r-project.org/src/contrib/jpeg_0.1-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/jpeg" + cran = "jpeg" + version('0.1-9', sha256='01a175442ec209b838a56a66a3908193aca6f040d537da7838d9368e46913072') version('0.1-8.1', sha256='1db0a4976fd9b2ae27a37d3e856cca35bc2909323c7a40724846a5d3c18915a9') version('0.1-8', sha256='d032befeb3a414cefdbf70ba29a6c01541c54387cc0a1a98a4022d86cbe60a16') diff --git a/var/spack/repos/builtin/packages/r-jquerylib/package.py b/var/spack/repos/builtin/packages/r-jquerylib/package.py index a05b31552719e3..69d14a2dad73de 100644 --- a/var/spack/repos/builtin/packages/r-jquerylib/package.py +++ b/var/spack/repos/builtin/packages/r-jquerylib/package.py @@ -7,7 +7,13 @@ class RJquerylib(RPackage): - """Obtain 'jQuery' as an HTML Dependency Object.""" + """Obtain 'jQuery' as an HTML Dependency Object. + + Obtain any major version of 'jQuery' () and use + it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', + and 'rmarkdown'). Most R users don't need to use this package directly, but + other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package + to avoid bundling redundant copies of 'jQuery'.""" cran = "jquerylib" diff --git a/var/spack/repos/builtin/packages/r-jsonify/package.py b/var/spack/repos/builtin/packages/r-jsonify/package.py new file mode 100644 index 00000000000000..721d7a1f01f2bb --- /dev/null +++ b/var/spack/repos/builtin/packages/r-jsonify/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class RJsonify(RPackage): + """Convert Between 'R' Objects and Javascript Object Notation + (JSON). + + Conversions between 'R' objects and Javascript Object Notation (JSON) using + the 'rapidjsonr' library + .""" + + cran = "jsonify" + + version('1.2.1', sha256='929191ab32e34af6a02ad991e29314cc78ea40763fcf232388ef2d132137fbce') + + depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r-rcpp@0.12.18:', type=('build', 'run')) + depends_on('r-rapidjsonr@1.2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-jsonlite/package.py b/var/spack/repos/builtin/packages/r-jsonlite/package.py index e37f7358e98d48..1f775bf3e5b0c3 100644 --- a/var/spack/repos/builtin/packages/r-jsonlite/package.py +++ b/var/spack/repos/builtin/packages/r-jsonlite/package.py @@ -7,7 +7,7 @@ class RJsonlite(RPackage): - """A Simple and Robust JSON Parser and Generator for R + """A Simple and Robust JSON Parser and Generator for R. A fast JSON parser and generator optimized for statistical data and the web. Started out as a fork of 'RJSONIO', but has been completely rewritten @@ -20,10 +20,10 @@ class RJsonlite(RPackage): package verify that all edge cases are encoded and decoded consistently for use with dynamic data in systems and applications.""" - homepage = "https://github.com/jeroenooms/jsonlite" - url = "https://cloud.r-project.org/src/contrib/jsonlite_1.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/jsonlite" + cran = "jsonlite" + version('1.8.0', sha256='7b1892efebcb4cf4628f716000accd4b43bbf82b3e6ba90b9529d4fa0e55cd4c') + version('1.7.3', sha256='720a0b5e36a5eb71677231442bba2267d077137cfa9e0700585acbee62eac558') version('1.7.2', sha256='06354b50435942f67ba264f79831e577809ef89e5f9a5a2201985396fe651fd2') version('1.6.1', sha256='74921dd249857a23afabc1ad1485a63a48828e57f240f0619deb04c60f883377') version('1.6', sha256='88c5b425229966b7409145a6cabc72db9ed04f8c37ee95901af0146bb285db53') diff --git a/var/spack/repos/builtin/packages/r-kegg-db/package.py b/var/spack/repos/builtin/packages/r-kegg-db/package.py index ab3eb2c2931f59..761d5fde9cee36 100644 --- a/var/spack/repos/builtin/packages/r-kegg-db/package.py +++ b/var/spack/repos/builtin/packages/r-kegg-db/package.py @@ -7,13 +7,13 @@ class RKeggDb(RPackage): - """A set of annotation maps for KEGG + """A set of annotation maps for KEGG. A set of annotation maps for KEGG assembled using data from KEGG.""" # NOTE: The KEGG.db package was removed in Bioconductor-3.13 - homepage = "https://www.bioconductor.org/packages/KEGG.db/" + bioc = "KEGG.db" url = "https://www.bioconductor.org/packages/release/data/annotation/src/contrib/KEGG.db_3.2.3.tar.gz" version('3.2.4', diff --git a/var/spack/repos/builtin/packages/r-kegggraph/package.py b/var/spack/repos/builtin/packages/r-kegggraph/package.py index b0eacb090db977..edb3f9dc639b45 100644 --- a/var/spack/repos/builtin/packages/r-kegggraph/package.py +++ b/var/spack/repos/builtin/packages/r-kegggraph/package.py @@ -7,7 +7,7 @@ class RKegggraph(RPackage): - """KEGGgraph: A graph approach to KEGG PATHWAY in R and Bioconductor + """KEGGgraph: A graph approach to KEGG PATHWAY in R and Bioconductor. KEGGGraph is an interface between KEGG pathway and graph object as well as a collection of tools to analyze, dissect and visualize these graphs. @@ -16,9 +16,9 @@ class RKegggraph(RPackage): functionalities including parsing, graph operation, visualization and etc.""" - homepage = "https://bioconductor.org/packages/KEGGgraph" - git = "https://git.bioconductor.org/packages/KEGGgraph.git" + bioc = "KEGGgraph" + version('1.54.0', commit='135ee3dad30ca208e21acd0a2d81120b74b64079') version('1.50.0', commit='3335e85cdba264c04e6e36378578cf6c83a30eb8') version('1.44.0', commit='2c24e8ec53fe34c72ea65f34e3c09905ab2e5c62') version('1.42.0', commit='7d907e22a3ad7b4829a7cbaba5a8f8dc8013a609') @@ -27,6 +27,8 @@ class RKegggraph(RPackage): version('1.38.1', commit='dd31665beb36d5aad8ed09ed56c603633b6b2292') depends_on('r@2.10.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.54.0:') depends_on('r-xml@2.3-0:', type=('build', 'run')) depends_on('r-graph', type=('build', 'run')) - depends_on('r-rcurl', when='@1.44.0:', type=('build', 'run')) + depends_on('r-rcurl', type=('build', 'run'), when='@1.44.0:') + depends_on('r-rgraphviz', type=('build', 'run'), when='@1.54.0:') diff --git a/var/spack/repos/builtin/packages/r-keggrest/package.py b/var/spack/repos/builtin/packages/r-keggrest/package.py index 45d581ef2d506c..dfe235b0abbd69 100644 --- a/var/spack/repos/builtin/packages/r-keggrest/package.py +++ b/var/spack/repos/builtin/packages/r-keggrest/package.py @@ -7,15 +7,15 @@ class RKeggrest(RPackage): - """Client-side REST access to KEGG + """Client-side REST access to KEGG. A package that provides a client interface to the KEGG REST server. Based on KEGGSOAP by J. Zhang, R. Gentleman, and Marc Carlson, and KEGG (python package) by Aurelien Mazurie.""" - homepage = "https://bioconductor.org/packages/KEGGREST" - git = "https://git.bioconductor.org/packages/KEGGREST.git" + bioc = "KEGGREST" + version('1.34.0', commit='2056750dc202fa04a34b84c6c712e884c7cad2bd') version('1.30.1', commit='fd9970ea9df117d625257b8c6351cf85098cfbc1') version('1.24.1', commit='bbc3ef476e02147aad8e1f33178136cc797c1b3f') version('1.22.0', commit='4374507376be811d29416d0cbbfd9115a50494d9') diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py index 774136ea8ca1a2..98939d645a5760 100644 --- a/var/spack/repos/builtin/packages/r-kernlab/package.py +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -7,16 +7,14 @@ class RKernlab(RPackage): - """Kernel-Based Machine Learning Lab + """Kernel-Based Machine Learning Lab. Kernel-based machine learning methods for classification, regression, clustering, novelty detection, quantile regression and dimensionality reduction. Among other methods 'kernlab' includes Support Vector Machines, Spectral Clustering, Kernel PCA, Gaussian Processes and a QP solver.""" - homepage = "https://cloud.r-project.org/package=kernlab" - url = "https://cloud.r-project.org/src/contrib/kernlab_0.9-25.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/kernlab" + cran = "kernlab" version('0.9-29', sha256='c3da693a0041dd34f869e7b63a8d8cf7d4bc588ac601bcdddcf7d44f68b3106f') version('0.9-27', sha256='f6add50ed4097f04d09411491625f8d46eafc4f003b1c1cff78a6fff8cc31dd4') diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py index adb03d78487e9e..c11382cbcd9b90 100644 --- a/var/spack/repos/builtin/packages/r-kernsmooth/package.py +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -7,15 +7,14 @@ class RKernsmooth(RPackage): - """Functions for kernel smoothing (and density estimation) + """Functions for Kernel Smoothing Supporting Wand & Jones (1995). Functions for kernel smoothing (and density estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995) "Kernel Smoothing".""" - homepage = "https://cloud.r-project.org/package=KernSmooth" - url = "https://cloud.r-project.org/src/contrib/KernSmooth_2.23-15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/KernSmooth" + cran = "KernSmooth" + 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-kknn/package.py b/var/spack/repos/builtin/packages/r-kknn/package.py index 2ab4ca2d5d2473..2e4535acf027dd 100644 --- a/var/spack/repos/builtin/packages/r-kknn/package.py +++ b/var/spack/repos/builtin/packages/r-kknn/package.py @@ -7,12 +7,12 @@ class RKknn(RPackage): - """Weighted k-Nearest Neighbors for Classification, Regression and + """Weighted k-Nearest Neighbors. + + Weighted k-Nearest Neighbors for Classification, Regression and Clustering.""" - homepage = "https://cloud.r-project.org/package=kknn" - url = "https://cloud.r-project.org/src/contrib/kknn_1.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/kknn" + cran = "kknn" version('1.3.1', sha256='22840e70ec2afa40371e274b583634c8f6d27149a87253ee411747d5db78f3db') diff --git a/var/spack/repos/builtin/packages/r-klar/package.py b/var/spack/repos/builtin/packages/r-klar/package.py index c3cd1c66dda326..93712468de6711 100644 --- a/var/spack/repos/builtin/packages/r-klar/package.py +++ b/var/spack/repos/builtin/packages/r-klar/package.py @@ -7,7 +7,9 @@ class RKlar(RPackage): - """Miscellaneous functions for classification and visualization, e.g. + """Classification and Visualization. + + Miscellaneous functions for classification and visualization, e.g. regularized discriminant analysis, sknn() kernel-density naive Bayes, an interface to 'svmlight' and stepclass() wrapper variable selection for supervised classification, partimat() visualization of classification rules @@ -16,9 +18,7 @@ class RKlar(RPackage): different variable clustering models and weight of evidence preprocessing.""" - homepage = "https://cloud.r-project.org/package=klaR" - url = "https://cloud.r-project.org/src/contrib/klaR_0.6-15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/klaR" + cran = "klaR" version('0.6-15', sha256='5bfe5bc643f8a64b222317732c26e9f93be297cdc318a869f15cc9ab0d9e0fae') diff --git a/var/spack/repos/builtin/packages/r-knitr/package.py b/var/spack/repos/builtin/packages/r-knitr/package.py index 3223ece22df74e..2785669885e291 100644 --- a/var/spack/repos/builtin/packages/r-knitr/package.py +++ b/var/spack/repos/builtin/packages/r-knitr/package.py @@ -8,14 +8,14 @@ class RKnitr(RPackage): - """A General-Purpose Package for Dynamic Report Generation in R + """A General-Purpose Package for Dynamic Report Generation in R. Provides a general-purpose tool for dynamic report generation in R using Literate Programming techniques.""" - homepage = "https://yihui.org/knitr/" - cran = "knitr" + cran = "knitr" + version('1.37', sha256='39cd2a4848baebbe7fa0c0ab8200179690fb5b9190f0c1688d987c38363ad763') version('1.33', sha256='2f83332b0a880de6eae522271bda7f862c97693fba45c23ab1f772028f6c0909') version('1.30', sha256='3aabb13566a234131ba18b78d690104f9468a982dc711f81344a985318c7c93e') version('1.28', sha256='05ee01da31d715bf24793efb3e4ef3bb3101ef1e1ab2d760c645fc5b9d40232a') @@ -24,18 +24,22 @@ class RKnitr(RPackage): version('1.17', sha256='9484a2b2c7b0c2aae24ab7f4eec6db48affbceb0e42bd3d69e34d953fe92f401') version('1.14', sha256='ba6d301482d020a911390d5eff181e1771f0e02ac3f3d9853a9724b1ec041aec') - depends_on('r@2.14.1:', when='@:1.9', type=('build', 'run')) - depends_on('r@3.0.2:', when='@1.10:1.14', type=('build', 'run')) - depends_on('r@3.1.0:', when='@1.15:1.22', type=('build', 'run')) - depends_on('r@3.2.3:', when='@1.23:', type=('build', 'run')) + depends_on('r@2.14.1:', type=('build', 'run'), when='@:1.9') + depends_on('r@3.0.2:', type=('build', 'run'), when='@1.10:1.14') + depends_on('r@3.1.0:', type=('build', 'run'), when='@1.15:1.22') + depends_on('r@3.2.3:', type=('build', 'run'), when='@1.23:') depends_on('r-evaluate@0.10:', type=('build', 'run')) depends_on('r-highr', type=('build', 'run')) - depends_on('r-markdown', type=('build', 'run')) depends_on('r-stringr@0.6:', type=('build', 'run')) depends_on('r-yaml@2.1.19:', type=('build', 'run')) - depends_on('r-xfun', when='@1.23:', type=('build', 'run')) - depends_on('r-xfun@0.15:', when='@1.30', type=('build', 'run')) - depends_on('r-xfun@0.19:', when='@1.31', type=('build', 'run')) - depends_on('r-xfun@0.21:', when='@1.32:', type=('build', 'run')) - depends_on('r-digest', when='@:1.17', type=('build', 'run')) - depends_on('r-formatr', when='@:1.14', 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') + depends_on('r-xfun@0.19:', type=('build', 'run'), when='@1.31') + depends_on('r-xfun@0.21:', type=('build', 'run'), when='@1.32:') + depends_on('r-xfun@0.27:', type=('build', 'run'), when='@1.37:') + depends_on('pandoc', type='build') + depends_on('py-rst2pdf', type=('build', 'run')) + + depends_on('r-digest', type=('build', 'run'), when='@:1.17') + depends_on('r-formatr', type=('build', 'run'), when='@:1.14') + depends_on('r-markdown', type=('build', 'run'), when='@:1.33') diff --git a/var/spack/repos/builtin/packages/r-kpmt/package.py b/var/spack/repos/builtin/packages/r-kpmt/package.py index 3acc0be6963175..6b0e6abcbc3a8e 100644 --- a/var/spack/repos/builtin/packages/r-kpmt/package.py +++ b/var/spack/repos/builtin/packages/r-kpmt/package.py @@ -7,11 +7,11 @@ class RKpmt(RPackage): - """Known Population Median Test: + """Known Population Median Test. Functions that implement the known population median test.""" - cran = "kpmt" + cran = "kpmt" version('0.1.0', sha256='6342ad02c93bfa7a764d028821bb6115bb8bc8c55b057a5860736cc0e034a295') diff --git a/var/spack/repos/builtin/packages/r-ks/package.py b/var/spack/repos/builtin/packages/r-ks/package.py index 67bbe603225111..5b4592aaabd746 100644 --- a/var/spack/repos/builtin/packages/r-ks/package.py +++ b/var/spack/repos/builtin/packages/r-ks/package.py @@ -7,17 +7,16 @@ class RKs(RPackage): - """Kernel Smoothing + """Kernel Smoothing. Kernel smoothers for univariate and multivariate data, including densities, density derivatives, cumulative distributions, clustering, classification, density ridges, significant modal regions, and two-sample hypothesis tests. Chacon & Duong (2018) .""" - homepage = "https://cloud.r-project.org/package=ks" - url = "https://cloud.r-project.org/src/contrib/ks_1.11.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ks" + cran = "ks" + version('1.13.3', sha256='defb80df665d987f1751899f7a9809cb5a770f3c74266d7fbc7b9493616dce73') version('1.11.7', sha256='6a6d9c2366e85a4c6af39b798f3798d20a42615ddfcebcedf6cf56087cdfd2b8') version('1.11.5', sha256='4f65565376391b8a6dcce76168ef628fd4859dba8496910cbdd54e4f88e8d51b') version('1.11.4', sha256='0beffaf8694819fba8c93af07a8782674a15fe00a04ad1d94d31238d0a41b134') @@ -32,3 +31,5 @@ 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:') diff --git a/var/spack/repos/builtin/packages/r-ksamples/package.py b/var/spack/repos/builtin/packages/r-ksamples/package.py new file mode 100644 index 00000000000000..a5b9f0bd0eb1ec --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ksamples/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2022 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 import * + + +class RKsamples(RPackage): + """K-Sample Rank Tests and their Combinations. + + Compares k samples using the Anderson-Darling test, Kruskal-Wallis type + tests with different rank score criteria, Steel's multiple comparison test, + and the Jonckheere-Terpstra (JT) test. It computes asymptotic, simulated or + (limited) exact P-values, all valid under randomization, with or without + ties, or conditionally under random sampling from populations, given the + observed tie pattern. Except for Steel's test and the JT test it also + combines these tests across several blocks of samples. Also analyzed are 2 + x t contingency tables and their blocked combinations using the + Kruskal-Wallis criterion. Steel's test is inverted to provide simultaneous + confidence bounds for shift parameters. A plotting function compares tail + probabilities obtained under asymptotic approximation with those obtained + via simulation or exact calculations.""" + + cran = "kSamples" + + 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 f8a98de25e91fe..54d46ead1a2514 100644 --- a/var/spack/repos/builtin/packages/r-labeling/package.py +++ b/var/spack/repos/builtin/packages/r-labeling/package.py @@ -7,13 +7,11 @@ class RLabeling(RPackage): - """Axis Labeling + """Axis Labeling. Provides a range of axis labeling algorithms.""" - homepage = "https://cloud.r-project.org/package=labeling" - url = "https://cloud.r-project.org/src/contrib/labeling_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/labeling" + cran = "labeling" 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 ef7184c3fd811c..477c10392fdf32 100644 --- a/var/spack/repos/builtin/packages/r-labelled/package.py +++ b/var/spack/repos/builtin/packages/r-labelled/package.py @@ -7,21 +7,27 @@ class RLabelled(RPackage): - """Work with labelled data imported from 'SPSS' or 'Stata' with 'haven' or + """Manipulating Labelled Data. + + Work with labelled data imported from 'SPSS' or 'Stata' with 'haven' or 'foreign'. This package provides useful functions to deal with "haven_labelled" and "haven_labelled_spss" classes introduced by 'haven' package.""" - homepage = "https://cloud.r-project.org/package=labelled" - url = "https://cloud.r-project.org/src/contrib/labelled_2.7.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/labelled" + cran = "labelled" + version('2.9.0', sha256='36ac0e169ee065a8bced9417efeb85d62e1504a590d4321667d8a6213285d639') version('2.7.0', sha256='b1b66b34d3ad682e492fc5bb6431780760576d29dbac40d87bef3c0960054bdb') + depends_on('r@3.0:', type=('build', 'run'), when='@2.9.0:') depends_on('r-haven@2.3.1:', type=('build', 'run')) + depends_on('r-haven@2.4.1:', type=('build', 'run'), when='@2.9.0:') depends_on('r-dplyr', type=('build', 'run')) + depends_on('r-dplyr@1.0.0:', type=('build', 'run'), when='@2.9.0:') depends_on('r-lifecycle', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) depends_on('r-vctrs', type=('build', 'run')) - depends_on('r-pillar', type=('build', 'run')) + depends_on('r-stringr', type=('build', 'run'), when='@2.9.0:') depends_on('r-tidyr', type=('build', 'run')) + + depends_on('r-pillar', type=('build', 'run'), when='@:2.7.0') diff --git a/var/spack/repos/builtin/packages/r-lambda-r/package.py b/var/spack/repos/builtin/packages/r-lambda-r/package.py index ee612ec42af879..a3285add114b7b 100644 --- a/var/spack/repos/builtin/packages/r-lambda-r/package.py +++ b/var/spack/repos/builtin/packages/r-lambda-r/package.py @@ -7,15 +7,13 @@ class RLambdaR(RPackage): - """Modeling Data with Functional Programming + """Modeling Data with Functional Programming. A language extension to efficiently write functional programs in R. Syntax extensions include multi-part function definitions, pattern matching, guard statements, built-in (optional) type safety.""" - homepage = "https://cloud.r-project.org/package=lambda.r" - url = "https://cloud.r-project.org/src/contrib/lambda.r_1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lambda.r" + cran = "lambda.r" version('1.2.4', sha256='d252fee39065326c6d9f45ad798076522cec05e73b8905c1b30f95a61f7801d6') version('1.2.3', sha256='0cd8e37ba1a0960888016a85d492da51a57df54bd65ff920b08c79a3bfbe8631') diff --git a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py index ead6a6adbb789a..45217fb7ef5a8c 100644 --- a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py +++ b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py @@ -7,16 +7,15 @@ class RLaplacesdemon(RPackage): - """Complete Environment for Bayesian Inference + """Complete Environment for Bayesian Inference. Provides a complete environment for Bayesian inference using a variety of different samplers (see ?LaplacesDemon for an overview). The README describes the history of the package development process.""" - homepage = "https://github.com/LaplacesDemonR/LaplacesDemon" - url = "https://cloud.r-project.org/src/contrib/LaplacesDemon_16.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/LaplacesDemon" + cran = "LaplacesDemon" + version('16.1.6', sha256='57b53882fd7a195b38bbdbbf0b17745405eb3159b1b42f7f11ce80c78ab94eb7') version('16.1.4', sha256='4152a1c3c652979e97870e5c50c45a243d0ad8d4ff968091160e3d66509f61db') version('16.1.1', sha256='779ed1dbfed523a15701b4d5d891d4f1f11ab27518826a8a7725807d4c42bd77') version('16.1.0', sha256='41d99261e8fc33c977b43ecf66ebed8ef1c84d9bd46b271609e9aadddc2ca8bb') diff --git a/var/spack/repos/builtin/packages/r-lars/package.py b/var/spack/repos/builtin/packages/r-lars/package.py index 847fe751044095..2aa08c13406c6c 100644 --- a/var/spack/repos/builtin/packages/r-lars/package.py +++ b/var/spack/repos/builtin/packages/r-lars/package.py @@ -7,12 +7,12 @@ class RLars(RPackage): - """Efficient procedures for fitting an entire lasso sequence with the cost + """Least Angle Regression, Lasso and Forward Stagewise. + + Efficient procedures for fitting an entire lasso sequence with the cost of a single least squares fit.""" - homepage = "https://cloud.r-project.org/package=lars" - url = "https://cloud.r-project.org/src/contrib/lars_1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lars" + cran = "lars" version('1.2', sha256='64745b568f20b2cfdae3dad02fba92ebf78ffee466a71aaaafd4f48c3921922e') version('1.1', sha256='a8e4a0efb9ca6760dec1cadf395d9a805508455a2c3ced18cc53d9b8fa70cdc0') diff --git a/var/spack/repos/builtin/packages/r-later/package.py b/var/spack/repos/builtin/packages/r-later/package.py index 50818dd743ce94..c3bf76bc115781 100644 --- a/var/spack/repos/builtin/packages/r-later/package.py +++ b/var/spack/repos/builtin/packages/r-later/package.py @@ -7,18 +7,18 @@ class RLater(RPackage): - """Utilities for Scheduling Functions to Execute Later with Event Loops + """Utilities for Scheduling Functions to Execute Later with Event Loops. - Executes arbitrary R or C functions some time after the current time, - after the R execution stack has emptied.""" + Executes arbitrary R or C functions some time after the current time, after + the R execution stack has emptied.""" - homepage = "https://github.com/r-lib/later" - url = "https://cloud.r-project.org/src/contrib/later_0.8.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/later" + cran = "later" + version('1.3.0', sha256='08f50882ca3cfd2bb68c83f1fcfbc8f696f5cfb5a42c1448c051540693789829') version('1.1.0.1', sha256='71baa7beae774a35a117e01d7b95698511c3cdc5eea36e29732ff1fe8f1436cd') version('0.8.0', sha256='6b2a28b43c619b2c7890840c62145cd3a34a7ed65b31207fdedde52efb00e521') depends_on('r-rcpp@0.12.9:', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) - depends_on('r-bh', type=('build', 'run')) + + depends_on('r-bh', type=('build', 'run'), when='@:1.1.0.1') diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index 48c226783da001..9958bc3979cebc 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -7,17 +7,16 @@ class RLattice(RPackage): - """Trellis Graphics for R + """Trellis Graphics for R. A powerful and elegant high-level data visualization system inspired by Trellis graphics, with an emphasis on multivariate data. Lattice is sufficient for typical graphics needs, and is also flexible enough to handle most nonstandard requirements. See ?Lattice for an introduction.""" - homepage = "https://lattice.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/lattice_0.20-35.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lattice" + cran = "lattice" + version('0.20-45', sha256='22388d92bdb7d3959da84d7308d9026dd8226ef07580783729e8ad2f7d7507ad') version('0.20-44', sha256='57b908e3c7ada08a38ad857ee44f44fdf9cfa59d5d9500bda2ccc9c7e96cdb9b') version('0.20-41', sha256='54ca557f0cb33df60eb10b883c2ed2847e061ddd57ed9b5dd7695149609d57b5') version('0.20-38', sha256='fdeb5e3e50dbbd9d3c5e2fa3eef865132b3eef30fbe53a10c24c7b7dfe5c0a2d') diff --git a/var/spack/repos/builtin/packages/r-latticeextra/package.py b/var/spack/repos/builtin/packages/r-latticeextra/package.py index 4128aada1cebbd..e2a50535a0592a 100644 --- a/var/spack/repos/builtin/packages/r-latticeextra/package.py +++ b/var/spack/repos/builtin/packages/r-latticeextra/package.py @@ -7,23 +7,20 @@ class RLatticeextra(RPackage): - """Extra Graphical Utilities Based on Lattice + """Extra Graphical Utilities Based on Lattice. - Building on the infrastructure provided by the lattice package, - this package provides several new high-level functions and methods, - as well as additional utilities such as panel and axis annotation - functions.""" + Building on the infrastructure provided by the lattice package, this + package provides several new high-level functions and methods, as well as + additional utilities such as panel and axis annotation functions.""" - homepage = "https://latticeextra.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/latticeExtra_0.6-28.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/latticeExtra" + cran = "latticeExtra" version('0.6-29', sha256='6cadc31d56f73d926e2e8d72e43ae17ac03607a4d1a374719999a4a231e3df11') version('0.6-28', sha256='780695323dfadac108fb27000011c734e2927b1e0f069f247d65d27994c67ec2') depends_on('r@2.10.0:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@0.6-29:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@0.6-29:') depends_on('r-lattice', type=('build', 'run')) - depends_on('r-png', when='@0.6-29:', type=('build', 'run')) - depends_on('r-jpeg', when='@0.6-29:', type=('build', 'run')) + depends_on('r-png', type=('build', 'run'), when='@0.6-29:') + depends_on('r-jpeg', type=('build', 'run'), when='@0.6-29:') depends_on('r-rcolorbrewer', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index 8aa4cce67317f4..43e499e381766f 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -7,7 +7,7 @@ class RLava(RPackage): - """Latent Variable Models + """Latent Variable Models. A general implementation of Structural Equation Models with latent variables (MLE, 2SLS, and composite likelihood estimators) with both @@ -19,16 +19,17 @@ class RLava(RPackage): general non-linear latent variable models, and estimation of influence functions for a broad range of statistical models.""" - homepage = "https://cloud.r-project.org/package=lava" - url = "https://cloud.r-project.org/src/contrib/lava_1.4.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lava" + cran = "lava" + version('1.6.10', sha256='7a88f8a885872e2abb3011c446e9e1c4884cd4dbe6ab4cfe9207538e5560232e') version('1.6.8.1', sha256='6d243fc86c67c78ff4763502d84ff2f0889c2e55d1a59afefb7a762887473ffa') version('1.6.6', sha256='7abc84dd99cce450a45ac4f232812cde3a322e432da3472f43b057fb5c59ca59') version('1.6.4', sha256='41c6eeb96eaef9e1bfb04b31f7203e250a5ea7e7860be4d95f7f96f2a8644718') version('1.4.7', sha256='d5cbd4835a94855478efb93051eece965db116ead203f4dd4e09d9a12d52f4bf') depends_on('r@3.0:', type=('build', 'run')) + 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')) depends_on('r-survival', type=('build', 'run')) - depends_on('r-squarem', when='@1.6.0:', type=('build', 'run')) + depends_on('r-squarem', type=('build', 'run'), when='@1.6.0:') diff --git a/var/spack/repos/builtin/packages/r-lavaan/package.py b/var/spack/repos/builtin/packages/r-lavaan/package.py index 44d8648a25c4ef..163a824dce5e15 100644 --- a/var/spack/repos/builtin/packages/r-lavaan/package.py +++ b/var/spack/repos/builtin/packages/r-lavaan/package.py @@ -7,14 +7,15 @@ class RLavaan(RPackage): - """Latent Variable Analysis: + """Latent Variable Analysis. Fit a variety of latent variable models, including confirmatory factor analysis, structural equation modeling and latent growth curve models.""" - homepage = "https://lavaan.ugent.be/" - cran = "lavaan" + cran = "lavaan" + version('0.6-10', sha256='4d6944eb6d5743e7a2a2c7b56aec5d5de78585a52789be235839fb9f5f468c37') + version('0.6-9', sha256='d404c4eb40686534f9c05f24f908cd954041f66d1072caea4a3adfa83a5f108a') version('0.6-8', sha256='40e204909100b7338619ae23cd87e0a4058e581c286da2327f36dbb3834b84a2') depends_on('r@3.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-lazyeval/package.py b/var/spack/repos/builtin/packages/r-lazyeval/package.py index 14790518e78ac5..ecb8f0fbafb9b8 100644 --- a/var/spack/repos/builtin/packages/r-lazyeval/package.py +++ b/var/spack/repos/builtin/packages/r-lazyeval/package.py @@ -7,13 +7,13 @@ class RLazyeval(RPackage): - """An alternative approach to non-standard evaluation using formulas. + """Lazy (Non-Standard) Evaluation. + + An alternative approach to non-standard evaluation using formulas. Provides a full implementation of LISP style 'quasiquotation', making it easier to generate code with other code.""" - homepage = "https://cloud.r-project.org/package=lazyeval" - url = "https://cloud.r-project.org/src/contrib/lazyeval_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lazyeval" + cran = "lazyeval" version('0.2.2', sha256='d6904112a21056222cfcd5eb8175a78aa063afe648a562d9c42c6b960a8820d4') version('0.2.1', sha256='83b3a43e94c40fe7977e43eb607be0a3cd64c02800eae4f2774e7866d1e93f61') diff --git a/var/spack/repos/builtin/packages/r-ldheatmap/package.py b/var/spack/repos/builtin/packages/r-ldheatmap/package.py index b7c0906dfe4518..b3010c6984c0e2 100644 --- a/var/spack/repos/builtin/packages/r-ldheatmap/package.py +++ b/var/spack/repos/builtin/packages/r-ldheatmap/package.py @@ -7,7 +7,7 @@ class RLdheatmap(RPackage): - """Graphical Display of Pairwise Linkage Disequilibria Between SNPs + """Graphical Display of Pairwise Linkage Disequilibria Between SNPs. Produces a graphical display, as a heat map, of measures of pairwise linkage disequilibria between single nucleotide polymorphisms (SNPs). Users @@ -18,15 +18,13 @@ class RLdheatmap(RPackage): 'GenomInfoDb' and 'IRanges' are all BioConductor packages .""" - homepage = "https://sfustatgen.github.io/LDheatmap/" - url = "https://cloud.r-project.org/src/contrib/LDheatmap_0.99-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/LDheatmap" + cran = "LDheatmap" version('1.0-4', sha256='07eb385f19e6a195e8e4d75be0b47c57744eabbf14045e527f0c27e1183ae5ca') version('0.99-7', sha256='aca54c839a424506d8be7153bf03b32026aeefe7ed38f534e8e19708e34212e4') depends_on('r@2.14.0:', type=('build', 'run')) - depends_on('r@4.0:', when='@1.0-4:', type=('build', 'run')) + depends_on('r@4.0:', type=('build', 'run'), when='@1.0-4:') depends_on('r-genetics', type=('build', 'run')) depends_on('r-snpstats', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-leafem/package.py b/var/spack/repos/builtin/packages/r-leafem/package.py index 94e251220582d4..83abd933af1130 100644 --- a/var/spack/repos/builtin/packages/r-leafem/package.py +++ b/var/spack/repos/builtin/packages/r-leafem/package.py @@ -7,7 +7,7 @@ class RLeafem(RPackage): - """'leaflet' Extensions for 'mapview' + """'leaflet' Extensions for 'mapview'. Provides extensions for packages 'leaflet' & 'mapdeck', many of which are used by package 'mapview'. Focus is on functionality readily available in @@ -16,13 +16,14 @@ class RLeafem(RPackage): pointer and zoom-to-layer buttons. Additionally, provides a feature type agnostic function to add points, lines, polygons to a map.""" - homepage = "https://github.com/r-spatial/leafem" - cran = "leafem" + cran = "leafem" + version('0.1.6', sha256='ca50e0a699f564449248511857a2df0d48cd07de3157e099478a19b533088156') version('0.1.3', sha256='6f123fc15efadb85d317c01003e3b7af5dc925cffe0bbe774b1b39b6bd67f304') depends_on('r@3.1.0:', type=('build', 'run')) depends_on('r-base64enc', type=('build', 'run')) + depends_on('r-geojsonsf', type=('build', 'run'), when='@0.1.6:') depends_on('r-htmltools@0.3:', type=('build', 'run')) depends_on('r-htmlwidgets', type=('build', 'run')) depends_on('r-leaflet@2.0.1:', type=('build', 'run')) 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 17ac2d6b14e848..dd2c61124bb914 100644 --- a/var/spack/repos/builtin/packages/r-leaflet-providers/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet-providers/package.py @@ -7,16 +7,14 @@ class RLeafletProviders(RPackage): - """Leaflet Providers + """Leaflet Providers. Contains third-party map tile provider information from 'Leaflet.js', , to be used with the 'leaflet' R package. Additionally, 'leaflet.providers' enables users to retrieve up-to-date provider information between package updates.""" - homepage = "https://github.com/rstudio/leaflet.providers" - url = "https://cloud.r-project.org/src/contrib/leaflet.providers_1.9.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/leaflet.providers" + cran = "leaflet.providers" version('1.9.0', sha256='9e8fc75c83313ab24663c2e718135459599549ed6e7396086cacb44e36cfd67b') diff --git a/var/spack/repos/builtin/packages/r-leaflet/package.py b/var/spack/repos/builtin/packages/r-leaflet/package.py index fbc8ad4ea4865c..da95da91c58388 100644 --- a/var/spack/repos/builtin/packages/r-leaflet/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet/package.py @@ -7,15 +7,13 @@ class RLeaflet(RPackage): - """Create Interactive Web Maps with the JavaScript 'Leaflet' Library + """Create Interactive Web Maps with the JavaScript 'Leaflet' Library. Create and customize interactive maps using the 'Leaflet' JavaScript library and the 'htmlwidgets' package. These maps can be used directly from the R console, from 'RStudio', in Shiny apps and R Markdown documents.""" - homepage = "https://rstudio.github.io/leaflet/" - url = "https://cloud.r-project.org/src/contrib/leaflet_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/leaflet" + cran = "leaflet" version('2.0.4.1', sha256='b0f038295f1de5d32d9ffa1d0dbc1562320190f2f1365f3a5e95863fff88901f') version('2.0.2', sha256='fa448d20940e01e953e0706fc5064b0fa347e69fa967792599eb03c52b2e3114') @@ -24,7 +22,7 @@ class RLeaflet(RPackage): depends_on('r@3.1.0:', type=('build', 'run')) depends_on('r-base64enc', type=('build', 'run')) - depends_on('r-crosstalk', when='@2.0.0:', type=('build', 'run')) + depends_on('r-crosstalk', type=('build', 'run'), when='@2.0.0:') depends_on('r-htmlwidgets', type=('build', 'run')) depends_on('r-htmltools', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) @@ -34,5 +32,5 @@ class RLeaflet(RPackage): depends_on('r-raster', type=('build', 'run')) depends_on('r-scales@1.0.0:', type=('build', 'run')) depends_on('r-sp', type=('build', 'run')) - depends_on('r-viridis@0.5.1:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-leaflet-providers@1.8.0:', when='@2.0.4.1:', 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:') diff --git a/var/spack/repos/builtin/packages/r-leafpop/package.py b/var/spack/repos/builtin/packages/r-leafpop/package.py index 26dadc98599f4f..912dc2c7447def 100644 --- a/var/spack/repos/builtin/packages/r-leafpop/package.py +++ b/var/spack/repos/builtin/packages/r-leafpop/package.py @@ -4,11 +4,12 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ---------------------------------------------------------------------------- + from spack import * class RLeafpop(RPackage): - """Include Tables, Images and Graphs in Leaflet Pop-Ups + """Include Tables, Images and Graphs in Leaflet Pop-Ups. Creates 'HTML' strings to embed tables, images or graphs in pop-ups of interactive maps created with packages like 'leaflet' or 'mapview'. Handles @@ -16,9 +17,9 @@ class RLeafpop(RPackage): created with 'lattice' or 'ggplot2' as well as interactive plots created with 'htmlwidgets'.""" - homepage = "https://github.com/r-spatial/leafpop" - cran = "leafpop" + cran = "leafpop" + version('0.1.0', sha256='6e546886e1db4ad93a038de6d1e8331c0d686e96a0d3f0694e7575471f7d9db1') version('0.0.6', sha256='3d9ca31d081ce8540a87790786840bde5f833543af608c53a26623c7874e722f') depends_on('r-base64enc', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py index 38f4d5c546803e..d3d89260de9a08 100644 --- a/var/spack/repos/builtin/packages/r-leaps/package.py +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -7,14 +7,11 @@ class RLeaps(RPackage): - """Regression Subset Selection + """Regression Subset Selection. - Regression subset selection, including exhaustive search. - """ + Regression subset selection, including exhaustive search.""" - homepage = "https://cloud.r-project.org/package=leaps" - url = "https://cloud.r-project.org/src/contrib/leaps_3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/leaps" + cran = "leaps" version('3.1', sha256='3d7c3a102ce68433ecf167ece96a7ebb4207729e4defd0ac8fc00e7003f5c3b6') version('3.0', sha256='55a879cdad5a4c9bc3b5697dd4d364b3a094a49d8facb6692f5ce6af82adf285') diff --git a/var/spack/repos/builtin/packages/r-learnbayes/package.py b/var/spack/repos/builtin/packages/r-learnbayes/package.py index 96da1d31987c1c..7481f3cf8d3e24 100644 --- a/var/spack/repos/builtin/packages/r-learnbayes/package.py +++ b/var/spack/repos/builtin/packages/r-learnbayes/package.py @@ -7,17 +7,17 @@ class RLearnbayes(RPackage): - """LearnBayes contains a collection of functions helpful in learning the + """Functions for Learning Bayesian Inference. + + LearnBayes contains a collection of functions helpful in learning the basic tenets of Bayesian statistical inference. It contains functions for summarizing basic one and two parameter posterior distributions and predictive distributions. It contains MCMC algorithms for summarizing - posterior distributions defined by the user. It also contains functions - for regression models, hierarchical models, Bayesian tests, and - illustrations of Gibbs sampling.""" + posterior distributions defined by the user. It also contains functions for + regression models, hierarchical models, Bayesian tests, and illustrations + of Gibbs sampling.""" - homepage = "https://cloud.r-project.org/package=LearnBayes" - url = "https://cloud.r-project.org/src/contrib/LearnBayes_2.15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/LearnBayes" + cran = "LearnBayes" version('2.15.1', sha256='9b110858456523ca0b2a63f22013c4e1fbda6674b9d84dc1f4de8bffc5260532') version('2.15', sha256='45c91114b4aaa0314feeb4311dbe78f5b75a3b76bb2d1ca0f8adb2e0f1cbe233') diff --git a/var/spack/repos/builtin/packages/r-leiden/package.py b/var/spack/repos/builtin/packages/r-leiden/package.py index 9a965ca42cc2cc..df4242ec648378 100644 --- a/var/spack/repos/builtin/packages/r-leiden/package.py +++ b/var/spack/repos/builtin/packages/r-leiden/package.py @@ -7,19 +7,17 @@ class RLeiden(RPackage): - """R Implementation of Leiden Clustering Algorithm + """R Implementation of Leiden Clustering Algorithm. Implements the 'Python leidenalg' module to be called in R. Enables clustering using the leiden algorithm for partition a graph into communities. See the 'Python' repository for more details: - Traag et al (2018) From Louvain - to Leiden: guaranteeing well-connected communities. - .""" + Traag et al (2018) From Louvain to + Leiden: guaranteeing well-connected communities. .""" - homepage = "https://github.com/TomKellyGenetics/leiden" - url = "https://cloud.r-project.org/src/contrib/leiden_0.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/leiden" + cran = "leiden" + version('0.3.9', sha256='81754276e026a9a8436476365bbadf0f15a403a525a349cb56418da5d8edea0d') version('0.3.6', sha256='a7096e38c4010b1f0baf6a7e1139362520b44c0e548b0b79584cb827172822cc') version('0.3.1', sha256='17fa1e49667fdd30ef5166506181c8514ae406f68f0878a026ee111bff11f8a5') diff --git a/var/spack/repos/builtin/packages/r-lfe/package.py b/var/spack/repos/builtin/packages/r-lfe/package.py index 864700532a1734..50c811b112a2fb 100644 --- a/var/spack/repos/builtin/packages/r-lfe/package.py +++ b/var/spack/repos/builtin/packages/r-lfe/package.py @@ -7,7 +7,7 @@ class RLfe(RPackage): - """Linear Group Fixed Effects + """Linear Group Fixed Effects. Transforms away factors with many levels prior to doing an OLS. Useful for estimating linear models with multiple group fixed effects, and for @@ -20,10 +20,9 @@ class RLfe(RPackage): improvements are to be expected, and the package is at risk of being removed from CRAN.""" - homepage = "https://cloud.r-project.org/package=lfe" - url = "https://cloud.r-project.org/src/contrib/lfe_2.8-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lfe" + cran = "lfe" + version('2.8-7.1', sha256='d6a1efd8c43f84fa291e4959938f16e85bf5feef113515aaca1fe90075a78c50') version('2.8-6', sha256='bf5fd362e9722e871a5236f30da562c489ae6506b667609b9465eefa8f101612') version('2.8-5', sha256='fd80c573d334594db933ff38f67bd4c9f899aaf648c3bd68f19477a0059723c2') version('2.8-4', sha256='ee5f6e312214aa73e285ae84a6bdf49ba10e830f1a68ffded2fea2e532f2cd6a') diff --git a/var/spack/repos/builtin/packages/r-lhs/package.py b/var/spack/repos/builtin/packages/r-lhs/package.py index 46c18c08dc49c9..ab36fc55d746fa 100644 --- a/var/spack/repos/builtin/packages/r-lhs/package.py +++ b/var/spack/repos/builtin/packages/r-lhs/package.py @@ -7,20 +7,19 @@ class RLhs(RPackage): - """Latin Hypercube Samples + """Latin Hypercube Samples. Provides a number of methods for creating and augmenting Latin Hypercube Samples.""" - homepage = "https://lhs.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/lhs_0.16.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lhs" + cran = "lhs" + version('1.1.3', sha256='e43b8d48db1cf26013697e2a798ed1d31d1ee1790f2ebfecb280176c0e0c06d1') version('1.1.1', sha256='903e9f2adde87f6f9ad41dd52ff83d28a645dba69934c7535142cb48f10090dc') version('1.0.1', sha256='a4d5ac0c6f585f2880364c867fa94e6554698beb65d3678ba5938dd84fc6ea53') version('1.0', sha256='38c53482b360bdea89ddcfadf6d45476c80b99aee8902f97c5e97975903e2745') version('0.16', sha256='9cd199c3b5b2be1736d585ef0fd39a00e31fc015a053333a7a319668d0809425') - depends_on('r@3.3.0:', when='@:0.16', type=('build', 'run')) - depends_on('r@3.4.0:', when='@1.0:', type=('build', 'run')) - depends_on('r-rcpp', when='@1.0:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@1.0:') + depends_on('r-rcpp', type=('build', 'run'), when='@1.0:') diff --git a/var/spack/repos/builtin/packages/r-libcoin/package.py b/var/spack/repos/builtin/packages/r-libcoin/package.py index ad504e17b5712e..5064ea0e5bd60c 100644 --- a/var/spack/repos/builtin/packages/r-libcoin/package.py +++ b/var/spack/repos/builtin/packages/r-libcoin/package.py @@ -7,18 +7,16 @@ class RLibcoin(RPackage): - """Linear Test Statistics for Permutation Inference + """Linear Test Statistics for Permutation Inference. - Basic infrastructure for linear test statistics and permutation - inference in the framework of Strasser and Weber (1999) - . This package must not be used by end-users. - CRAN package 'coin' implements all user interfaces and is ready to be used - by anyone.""" + Basic infrastructure for linear test statistics and permutation inference + in the framework of Strasser and Weber (1999) . + This package must not be used by end-users. CRAN package 'coin' implements + all user interfaces and is ready to be used by anyone.""" - homepage = "https://cloud.r-project.org/package=libcoin" - url = "https://cloud.r-project.org/src/contrib/libcoin_1.0-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/libcoin" + cran = "libcoin" + 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 bed431c3199c10..8c2b80404bf2c7 100644 --- a/var/spack/repos/builtin/packages/r-lifecycle/package.py +++ b/var/spack/repos/builtin/packages/r-lifecycle/package.py @@ -7,7 +7,7 @@ class RLifecycle(RPackage): - """Manage the Life Cycle of your Package Functions + """Manage the Life Cycle of your Package Functions. Manage the life cycle of your exported functions with shared conventions, documentation badges, and non-invasive deprecation warnings. The @@ -18,13 +18,12 @@ class RLifecycle(RPackage): deprecated functions are signalled with increasing levels of non-invasive verbosity.""" - homepage = "https://lifecycle.r-lib.org/" cran = "lifecycle" version('1.0.1', sha256='1da76e1c00f1be96ca34e122ae611259430bf99d6a1b999fdef70c00c30f7ba0') version('0.2.0', sha256='29746e8dee05d4e36f9c612e8c7a903a4f648a36b3b94c9776e518c38a412224') depends_on('r@3.2:', type=('build', 'run')) - depends_on('r@3.3:', when='@1:', type=('build', 'run')) + depends_on('r@3.3:', type=('build', 'run'), when='@1:') depends_on('r-glue', type=('build', 'run')) depends_on('r-rlang@0.4.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-limma/package.py b/var/spack/repos/builtin/packages/r-limma/package.py index 33332afd6d99a1..f850822f2d1fa4 100644 --- a/var/spack/repos/builtin/packages/r-limma/package.py +++ b/var/spack/repos/builtin/packages/r-limma/package.py @@ -7,14 +7,14 @@ class RLimma(RPackage): - """Linear Models for Microarray Data + """Linear Models for Microarray Data. Data analysis, linear models and differential expression for microarray data.""" - homepage = "https://bioconductor.org/packages/limma" - git = "https://git.bioconductor.org/packages/limma.git" + bioc = "limma" + version('3.50.0', commit='657b19bbc33c5c941af79aeb68967bf42ea40e23') version('3.46.0', commit='ff03542231827f39ebde6464cdbba0110e24364e') version('3.40.6', commit='3ae0767ecf7a764030e7b7d0b1d0f292c0b24055') version('3.38.3', commit='77b292eb150cdedaa1db704bcfb01f0bb29e9849') @@ -23,4 +23,4 @@ class RLimma(RPackage): version('3.32.10', commit='593edf28e21fe054d64137ae271b8a52ab05bc60') depends_on('r@2.3.0:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@3.40.6:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@3.40.6:') diff --git a/var/spack/repos/builtin/packages/r-limsolve/package.py b/var/spack/repos/builtin/packages/r-limsolve/package.py index 0ce631f290da0f..df1fa5c3cf1d2a 100644 --- a/var/spack/repos/builtin/packages/r-limsolve/package.py +++ b/var/spack/repos/builtin/packages/r-limsolve/package.py @@ -7,7 +7,7 @@ class RLimsolve(RPackage): - """Solving Linear Inverse Models + """Solving Linear Inverse Models. Functions that (1) find the minimum/maximum of a linear or quadratic function: min or max (f(x)), where f(x) = ||Ax-b||^2 or f(x) = sum(a_i*x_i) @@ -16,9 +16,7 @@ class RLimsolve(RPackage): Gx>=h, and if applicable Ax~=b, (3) solve a linear system Ax=B for the unknown x. It includes banded and tridiagonal linear systems.""" - homepage = "https://cloud.r-project.org/package=limSolve" - url = "https://cloud.r-project.org/src/contrib/limSolve_1.5.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/limSolve" + cran = "limSolve" version('1.5.6', sha256='b97ea9930383634c8112cdbc42f71c4e93fe0e7bfaa8f401921835cb44cb49a0') diff --git a/var/spack/repos/builtin/packages/r-listenv/package.py b/var/spack/repos/builtin/packages/r-listenv/package.py index 6479e980b2028c..3dc3f4e71aa2fb 100644 --- a/var/spack/repos/builtin/packages/r-listenv/package.py +++ b/var/spack/repos/builtin/packages/r-listenv/package.py @@ -7,15 +7,13 @@ class RListenv(RPackage): - """Environments Behaving (Almost) as Lists + """Environments Behaving (Almost) as Lists. List environments are environments that have list-like properties. For instance, the elements of a list environment are ordered and can be accessed and iterated over using index subsetting.""" - homepage = "https://github.com/HenrikBengtsson/listenv" - url = "https://cloud.r-project.org/src/contrib/listenv_0.7.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/listenv" + cran = "listenv" 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 0121997df3ba19..a8d1d9871a4cd2 100644 --- a/var/spack/repos/builtin/packages/r-lme4/package.py +++ b/var/spack/repos/builtin/packages/r-lme4/package.py @@ -7,14 +7,13 @@ class RLme4(RPackage): - """Linear Mixed-Effects Models using 'Eigen' and S4 + """Linear Mixed-Effects Models using 'Eigen' and S4. Fit linear and generalized linear mixed-effects models. The models and their components are represented using S4 classes and methods. The core computational algorithms are implemented using the 'Eigen' C++ library for numerical linear algebra and 'RcppEigen' "glue".""" - homepage = "https://github.com/lme4/lme4/" cran = "lme4" version('1.1-27.1', sha256='25fa873e39b8192e48c15eec93db8c8bf6f03baf3bd8d5ca9188482ce8442ec5') @@ -24,15 +23,15 @@ class RLme4(RPackage): version('1.1-20', sha256='44f45f5cd20ec6a50bf96a939b1db44b1a180dbc871a5e3042baf7a107016b2c') version('1.1-12', sha256='2976b567a4a2144814ff9db987b0aa55c16122c78ecb51b9e09b87fe66a1c048') - depends_on('r@3.0.2:', when='@:1.1-15', type=('build', 'run')) - depends_on('r@3.2.0:', when='@1.1-16:', type=('build', 'run')) + 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-matrix@1.2-1:', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) - depends_on('r-boot', when='@1.1-21:', type=('build', 'run')) + depends_on('r-boot', type=('build', 'run'), when='@1.1-21:') depends_on('r-nlme@3.1-123:', type=('build', 'run')) depends_on('r-minqa@1.1.15:', type=('build', 'run')) depends_on('r-nloptr@1.0.4:', type=('build', 'run')) - depends_on('r-statmod', when='@1.1-26', type=('build', 'run')) + depends_on('r-statmod', type=('build', 'run'), when='@1.1-26') depends_on('r-rcpp@0.10.5:', type=('build', 'run')) depends_on('r-rcppeigen', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-lmertest/package.py b/var/spack/repos/builtin/packages/r-lmertest/package.py index 94c5bb6f2c7d3e..fd5efb40d687e7 100644 --- a/var/spack/repos/builtin/packages/r-lmertest/package.py +++ b/var/spack/repos/builtin/packages/r-lmertest/package.py @@ -7,18 +7,16 @@ class RLmertest(RPackage): - """Tests in Linear Mixed Effects Models + """Tests in Linear Mixed Effects Models. Provides p-values in type I, II or III anova and summary tables for lmer model fits (cf. lme4) via Satterthwaite's degrees of freedom method. A Kenward-Roger method is also available via the pbkrtest package. Model selection methods include step, drop1 and anova-like tables for random effects (ranova). Methods for Least-Square means (LS-means) and tests of - linear contrasts of fixed effects are also available. - """ + linear contrasts of fixed effects are also available.""" - homepage = "https://github.com/runehaubo/lmerTestR" - cran = "lmerTest" + cran = "lmerTest" version('3.1-3', sha256='35aa75e9f5f2871398ff56a482b013e6828135ef04916ced7d1d7e35257ea8fd') diff --git a/var/spack/repos/builtin/packages/r-lmtest/package.py b/var/spack/repos/builtin/packages/r-lmtest/package.py index b9e94d5a568ee1..99fe7a449e7352 100644 --- a/var/spack/repos/builtin/packages/r-lmtest/package.py +++ b/var/spack/repos/builtin/packages/r-lmtest/package.py @@ -7,16 +7,15 @@ class RLmtest(RPackage): - """Testing Linear Regression Models + """Testing Linear Regression Models. - A collection of tests, data sets, and examples for diagnostic checking - in linear regression models. Furthermore, some generic tools for inference - in parametric models are provided.""" + A collection of tests, data sets, and examples for diagnostic checking in + linear regression models. Furthermore, some generic tools for inference in + parametric models are provided.""" - homepage = "https://cloud.r-project.org/package=lmtest" - url = "https://cloud.r-project.org/src/contrib/lmtest_0.9-34.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lmtest" + cran = "lmtest" + version('0.9-39', sha256='71f8d67cbe559b33fe02910a3e98cddc60c9dcc421c64f7878c647218f07d488') version('0.9-38', sha256='32a22cea45398ffc5732d9f5c0391431d0cdd3a9e29cc7b77bea32c1eb4a216b') version('0.9-37', sha256='ddc929f94bf055974832fa4a20fdd0c1eb3a84ee11f716c287936f2141d5ca0a') version('0.9-36', sha256='be9f168d6554e9cd2be0f9d8fc3244f055dce90d1fca00f05bcbd01daa4ed56b') diff --git a/var/spack/repos/builtin/packages/r-lobstr/package.py b/var/spack/repos/builtin/packages/r-lobstr/package.py index b6eff2e242ce83..9150c412dfc951 100644 --- a/var/spack/repos/builtin/packages/r-lobstr/package.py +++ b/var/spack/repos/builtin/packages/r-lobstr/package.py @@ -7,19 +7,21 @@ class RLobstr(RPackage): - """A set of tools for inspecting and understanding R data structures - inspired by str(). Includes ast() for visualizing abstract syntax trees, - ref() for showing shared references, cst() for showing call stack trees, - and obj_size() for computing object sizes.""" + """Visualize R Data Structures with Trees. - homepage = "https://lobstr.r-lib.org" - url = "https://cloud.r-project.org/src/contrib/lobstr_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lobstr" + A set of tools for inspecting and understanding R data structures inspired + by str(). Includes ast() for visualizing abstract syntax trees, ref() for + showing shared references, cst() for showing call stack trees, and + obj_size() for computing object sizes.""" - version('1.1.1', sha256='923a384d9239d44b63dfc57f5a0309a1e59b9698ef05183f598f6f4fffb1e0fd') - version('1.0.1', sha256='f94d0a207f1b44097907d761c45130be386e908aec4ac472bf2fec6d36c74a69') - version('1.0.0', sha256='b9d5dcda36a1c1bd208ddf814f9b5a9c2c8b07730647b98505be7e296b14c883') + cran = "lobstr" - depends_on('r-rlang@0.3.0:', type=('build', 'run')) - depends_on('r-rcpp', type=('build', 'run')) + version('1.1.1', sha256='b8c9ce00095bd4f304b4883ef71da24572022f0632a18c3e1ba317814e70716e') + version('1.0.1', sha256='25fb288f73dbaf680ebbf27a50da338868c55d788501118fd33748854c5104fb') + version('1.0.0', sha256='9d24de1519c51b3bac79066a1abf623b939e884ba5b3005110bb9c2016954b3d') + + depends_on('r@3.1:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@1.1.1:') depends_on('r-crayon', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-rlang@0.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-locfit/package.py b/var/spack/repos/builtin/packages/r-locfit/package.py index dc19620e8f5879..c351f464485b95 100644 --- a/var/spack/repos/builtin/packages/r-locfit/package.py +++ b/var/spack/repos/builtin/packages/r-locfit/package.py @@ -7,19 +7,16 @@ class RLocfit(RPackage): - """Local regression, likelihood and density estimation + """Local regression, likelihood and density estimation. Local regression, likelihood and density estimation methods as described in - the 1999 book by Loader. - """ + the 1999 book by Loader.""" - homepage = "https://cloud.r-project.org/package=locfit" - url = "https://cloud.r-project.org/src/contrib/locfit_1.5-9.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/locfit" + cran = "locfit" version('1.5-9.4', sha256='d9d3665c5f3d49f698fb4675daf40a0550601e86db3dc00f296413ceb1099ced') version('1.5-9.1', sha256='f524148fdb29aac3a178618f88718d3d4ac91283014091aa11a01f1c70cd4e51') depends_on('r@2.0.1:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.5-9.4:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.5-9.4:') depends_on('r-lattice', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-log4r/package.py b/var/spack/repos/builtin/packages/r-log4r/package.py index c165b8254b3ab5..cba4266c50511a 100644 --- a/var/spack/repos/builtin/packages/r-log4r/package.py +++ b/var/spack/repos/builtin/packages/r-log4r/package.py @@ -7,15 +7,14 @@ class RLog4r(RPackage): - """A Fast and Lightweight Logging System for R, Based on 'log4j' + """A Fast and Lightweight Logging System for R, Based on 'log4j'. - logr4 provides an object-oriented logging system that uses an - API roughly equivalent to log4j and its related variants.""" + logr4 provides an object-oriented logging system that uses an API roughly + equivalent to log4j and its related variants.""" - homepage = "https://cloud.r-project.org/package=log4r" - url = "https://cloud.r-project.org/src/contrib/log4r_0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/log4r" + cran = "log4r" + version('0.4.2', sha256='924a020565dcd05a2bc8283285fcae60f6b58b35e1be7c55acc0c703c7edfe34') version('0.3.2', sha256='14ba6b096283279f0accbde26a600771ab2df271db6c8eeb04d6f113107825a3') version('0.3.0', sha256='8e5d0221298410e48bee9d9a983a23e1834ce88592f9d931471bfdb05f37a691') version('0.2', sha256='321bee6babb92376b538624027a36e7d2a6c8edb360aa38ab0a6762dfea9081f') diff --git a/var/spack/repos/builtin/packages/r-loo/package.py b/var/spack/repos/builtin/packages/r-loo/package.py index 1b369445d0ff27..dca16abbd41c77 100644 --- a/var/spack/repos/builtin/packages/r-loo/package.py +++ b/var/spack/repos/builtin/packages/r-loo/package.py @@ -7,7 +7,7 @@ class RLoo(RPackage): - """Efficient Leave-One-Out Cross-Validation and WAIC for BayesianModels + """Efficient Leave-One-Out Cross-Validation and WAIC for BayesianModels. Efficient approximate leave-one-out cross-validation (LOO) for Bayesian models fit using Markov chain Monte Carlo, as described in Vehtari, @@ -20,9 +20,7 @@ class RLoo(RPackage): model weighting techniques to average Bayesian predictive distributions.""" - homepage = "https://mc-stan.org/loo" - url = "https://cloud.r-project.org/src/contrib/loo_2.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/loo" + cran = "loo" version('2.4.1', sha256='bc21fb6b4a93a7e95ee1be57e4e787d731895fb8b4743c26b30b43adee475b50') version('2.3.1', sha256='d98de21b71d9d9386131ae5ba4da051362c3ad39e0305af4f33d830f299ae08b') diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py index 8593fe9e85c1e6..cc422159b95dbf 100644 --- a/var/spack/repos/builtin/packages/r-lpsolve/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -7,7 +7,7 @@ class RLpsolve(RPackage): - """Interface to 'Lp_solve' v. 5.5 to Solve Linear/Integer Programs + """Interface to 'Lp_solve' v. 5.5 to Solve Linear/Integer Programs. Lp_solve is freely available (under LGPL 2) software for solving linear, integer and mixed integer programs. In this implementation we supply a @@ -15,9 +15,7 @@ class RLpsolve(RPackage): linear/integer problems, assignment problems, and transportation problems. This version calls lp_solve""" - homepage = "https://cloud.r-project.org/package=lpSolve" - url = "https://cloud.r-project.org/src/contrib/lpSolve_5.6.13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lpSolve" + cran = "lpSolve" version('5.6.15', sha256='4627be4178abad34fc85a7d264c2eb5e27506f007e46687b0b8a4f8fbdf4f3ba') version('5.6.13.2', sha256='75f0c0af5cbdc219ac29c792342ecd625903632ad86e581c408879958aa88539') diff --git a/var/spack/repos/builtin/packages/r-lpsolveapi/package.py b/var/spack/repos/builtin/packages/r-lpsolveapi/package.py new file mode 100644 index 00000000000000..a67d8f6a17bb63 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-lpsolveapi/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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 import * + + +class RLpsolveapi(RPackage): + """R Interface to 'lp_solve' Version 5.5.2.0. + + The lpSolveAPI package provides an R interface to 'lp_solve', a Mixed + Integer Linear Programming (MILP) solver with support for pure linear, + (mixed) integer/binary, semi-continuous and special ordered sets (SOS) + models.""" + + cran = "lpSolveAPI" + + version('5.5.2.0-17.7', sha256='9ebc8e45ad73eb51e0b25049598a5bc758370cf89508e2328cf4bd93d68d55bb') diff --git a/var/spack/repos/builtin/packages/r-lsei/package.py b/var/spack/repos/builtin/packages/r-lsei/package.py index 197f1324c7e456..37bc88bd5c0a5d 100644 --- a/var/spack/repos/builtin/packages/r-lsei/package.py +++ b/var/spack/repos/builtin/packages/r-lsei/package.py @@ -7,7 +7,8 @@ class RLsei(RPackage): - """Solving Least Squares or Quadratic Programming Problems under Equality/Inequality Constraints + """Solving Least Squares or Quadratic Programming Problems under + Equality/Inequality Constraints. It contains functions that solve least squares linear regression problems under linear equality/inequality constraints. Functions for solving @@ -16,9 +17,7 @@ class RLsei(RPackage): 'Fortran' program of Lawson and Hanson (1974, 1995), which is public domain and available at .""" - homepage = "https://cloud.r-project.org/package=lsei" - url = "https://cloud.r-project.org/src/contrib/lsei_1.2-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/lsei" + cran = "lsei" version('1.3-0', sha256='6289058f652989ca8a5ad6fa324ce1762cc9e36c42559c00929b70f762066ab6') version('1.2-0', sha256='4781ebd9ef93880260d5d5f23066580ac06061e95c1048fb25e4e838963380f6') diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index 84a46161829a5a..2357879892d227 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -7,7 +7,7 @@ class RLubridate(RPackage): - """Make Dealing with Dates a Little Easier + """Make Dealing with Dates a Little Easier. Functions to work with date-times and timespans: fast and user friendly parsing of date-time data, extraction and updating of components of a @@ -16,7 +16,6 @@ class RLubridate(RPackage): a consistent and memorable syntax that makes working with dates easy and fun.""" - homepage = "https://haven.tidyverse.org/" cran = "lubridate" version('1.8.0', sha256='87d66efdb1f3d680db381d7e40a202d35645865a0542e2f270ef008a19002ba5') @@ -27,9 +26,9 @@ class RLubridate(RPackage): version('1.5.6', sha256='9b1627ba3212e132ce2b9a29d7513e250cc682ab9b4069f6788a22e84bf8d2c4') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.2:', when='@1.7.9.2:', type=('build', 'run')) - depends_on('r-generics', when='@1.7.9.2:', type=('build', 'run')) - depends_on('r-cpp11@0.2.7:', when='@1.8:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@1.7.9.2:') + depends_on('r-generics', type=('build', 'run'), when='@1.7.9.2:') + depends_on('r-cpp11@0.2.7:', type=('build', 'run'), when='@1.8:') - depends_on('r-rcpp@0.12.13:', when='@:1.7', type=('build', 'run')) - depends_on('r-stringr', when='@:1.7.4', type=('build', 'run')) + depends_on('r-rcpp@0.12.13:', type=('build', 'run'), when='@:1.7') + depends_on('r-stringr', type=('build', 'run'), when='@:1.7.4') diff --git a/var/spack/repos/builtin/packages/r-lumi/package.py b/var/spack/repos/builtin/packages/r-lumi/package.py index c07669ca942fe4..5f8cc57d84efaf 100644 --- a/var/spack/repos/builtin/packages/r-lumi/package.py +++ b/var/spack/repos/builtin/packages/r-lumi/package.py @@ -8,7 +8,7 @@ class RLumi(RPackage): """BeadArray Specific Methods for Illumina Methylation and Expression - Microarrays + Microarrays. The lumi package provides an integrated solution for the Illumina microarray data analysis. It includes functions of Illumina BeadStudio @@ -17,9 +17,9 @@ class RLumi(RPackage): also includes the functions of processing Illumina methylation microarrays, especially Illumina Infinium methylation microarrays.""" - homepage = "https://bioconductor.org/packages/release/bioc/html/lumi.html" - git = "https://git.bioconductor.org/packages/lumi" + bioc = "lumi" + version('2.46.0', commit='a68932c17a61c99e58ebbd8008d078bec6adb4e7') version('2.42.0', commit='a643b3ba46fee951b8566ddd8216af7e6c92f6f6') version('2.38.0', commit='321d480d44ce9a0c02ce5af1bddc1f549abdea59') diff --git a/var/spack/repos/builtin/packages/r-lwgeom/package.py b/var/spack/repos/builtin/packages/r-lwgeom/package.py index 55de7c2051da48..efab98b8775663 100644 --- a/var/spack/repos/builtin/packages/r-lwgeom/package.py +++ b/var/spack/repos/builtin/packages/r-lwgeom/package.py @@ -7,15 +7,15 @@ class RLwgeom(RPackage): - """Bindings to Selected 'liblwgeom' Functions for Simple Features + """Bindings to Selected 'liblwgeom' Functions for Simple Features. Access to selected functions found in 'liblwgeom' , the light-weight geometry library used by 'PostGIS' .""" - homepage = "https://github.com/r-spatial/lwgeom/" - cran = "lwgeom" + cran = "lwgeom" + version('0.2-8', sha256='f48a92de222da0590b37a30d5cbf2364555044a842795f6b488afecc650b8b34') version('0.2-5', sha256='4a1d93f96c10c2aac173d8186cf7d7bef7febcb3cf066a7f45da32251496d02f') depends_on('r@3.3.0:', type=('build', 'run')) @@ -24,3 +24,4 @@ class RLwgeom(RPackage): depends_on('r-sf@0.9-3:', type=('build', 'run')) 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-magic/package.py b/var/spack/repos/builtin/packages/r-magic/package.py index 074035497d91a0..fe2c4a9f25bc37 100644 --- a/var/spack/repos/builtin/packages/r-magic/package.py +++ b/var/spack/repos/builtin/packages/r-magic/package.py @@ -7,14 +7,20 @@ class RMagic(RPackage): - """A collection of efficient, vectorized algorithms for the creation and + """Create and Investigate Magic Squares. + + A collection of efficient, vectorized algorithms for the creation and investigation of magic squares and hypercubes, including a variety of functions for the manipulation and analysis of arbitrarily dimensioned - arrays.""" + arrays. The package includes methods for creating normal magic squares of + any order greater than 2. The ultimate intention is for the package to be a + computerized embodiment all magic square knowledge, including direct + numerical verification of properties of magic squares (such as recent + results on the determinant of odd-ordered semimagic squares). Some + antimagic functionality is included. The package also serves as a rebuttal + to the often-heard comment "I thought R was just for statistics".""" - homepage = "https://cloud.r-project.org/package=magic" - url = "https://cloud.r-project.org/src/contrib/magic_1.5-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/magic" + cran = "magic" version('1.5-9', sha256='fa1d5ef2d39e880f262d31b77006a2a7e76ea38e306aae4356e682b90d6cd56a') version('1.5-8', sha256='7f8bc26e05003168e9d2dadf64eb9a34b51bc41beba482208874803dee7d6c20') diff --git a/var/spack/repos/builtin/packages/r-magick/package.py b/var/spack/repos/builtin/packages/r-magick/package.py index ec169756170eb9..075d771eb71980 100644 --- a/var/spack/repos/builtin/packages/r-magick/package.py +++ b/var/spack/repos/builtin/packages/r-magick/package.py @@ -7,7 +7,7 @@ class RMagick(RPackage): - """Advanced Graphics and Image-Processing in R + """Advanced Graphics and Image-Processing in R. Bindings to 'ImageMagick': the most comprehensive open-source image processing library available. Supports many common formats (png, jpeg, @@ -20,10 +20,9 @@ class RMagick(RPackage): device for creating in-memory graphics or drawing onto images using pixel coordinates.""" - homepage = "https://docs.ropensci.org/magick" - url = "https://cloud.r-project.org/src/contrib/magick_2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/magick" + cran = "magick" + version('2.7.3', sha256='83877b2e23ea43fbc1164de9c2422eafbe7858393ac384df5adf3a7eec122441') version('2.6.0', sha256='66585336e3ff18793ae9e2726af67a6672622f270468670ab5fe5e013bc48ecc') version('2.1', sha256='ef4fb8fc1c5a9cfcc36b22485a0e17d622f61e55803b1e7423fd15f0550de7df') diff --git a/var/spack/repos/builtin/packages/r-magrittr/package.py b/var/spack/repos/builtin/packages/r-magrittr/package.py index 548c9a6d694aff..399b2963bb49be 100644 --- a/var/spack/repos/builtin/packages/r-magrittr/package.py +++ b/var/spack/repos/builtin/packages/r-magrittr/package.py @@ -7,7 +7,7 @@ class RMagrittr(RPackage): - """A Forward-Pipe Operator for R + """A Forward-Pipe Operator for R. Provides a mechanism for chaining commands with a new forward-pipe operator, %>%. This operator will forward a value, or the result of an @@ -15,9 +15,8 @@ class RMagrittr(RPackage): support for the type of right-hand side expressions. For more information, see package vignette.""" - homepage = "https://cloud.r-project.org/package=magrittr" - url = "https://cloud.r-project.org/src/contrib/magrittr_1.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/magrittr" + cran = "magrittr" + version('2.0.2', sha256='7be6fd0d0da75b92d8bad0136076da96260ee84bf639ef632a24668acdc163a6') version('2.0.1', sha256='75c265d51cc2b34beb27040edb09823c7b954d3990a7a931e40690b75d4aad5f') version('1.5', sha256='05c45943ada9443134caa0ab24db4a962b629f00b755ccf039a2a2a7b2c92ae8') diff --git a/var/spack/repos/builtin/packages/r-makecdfenv/package.py b/var/spack/repos/builtin/packages/r-makecdfenv/package.py index 4a272e5de73ec8..4c316e6c3a437d 100644 --- a/var/spack/repos/builtin/packages/r-makecdfenv/package.py +++ b/var/spack/repos/builtin/packages/r-makecdfenv/package.py @@ -7,16 +7,16 @@ class RMakecdfenv(RPackage): - """CDF Environment Maker + """CDF Environment Maker. This package has two functions. One reads a Affymetrix chip description file (CDF) and creates a hash table environment containing the location/probe set membership mapping. The other creates a package that automatically loads that environment.""" - homepage = "https://bioconductor.org/packages/makecdfenv" - git = "https://git.bioconductor.org/packages/makecdfenv.git" + bioc = "makecdfenv" + version('1.70.0', commit='82ecd0fa8ac401e4ac8f1e9139556d2be4a3c4f3') version('1.66.0', commit='02aa975d543089f5495cb3b4e8edbcf0ff05148a') version('1.60.0', commit='900ece3ecd7a0ade9f8a0374e5a03def4e079cb3') version('1.58.0', commit='6f513e39c4920a6da10d22718fc3bf278fe5ffe2') diff --git a/var/spack/repos/builtin/packages/r-maldiquant/package.py b/var/spack/repos/builtin/packages/r-maldiquant/package.py index 8cceff4584cced..1bf2e9eaa78977 100644 --- a/var/spack/repos/builtin/packages/r-maldiquant/package.py +++ b/var/spack/repos/builtin/packages/r-maldiquant/package.py @@ -7,22 +7,23 @@ class RMaldiquant(RPackage): - """A complete analysis pipeline for matrix-assisted laser - desorption/ionization-time-of-flight (MALDI-TOF) and other - two-dimensional mass spectrometry data. In addition to commonly used - plotting and processing methods it includes distinctive features, - namely baseline subtraction methods such as morphological filters - (TopHat) or the statistics-sensitive non-linear iterative peak-clipping - algorithm (SNIP), peak alignment using warping functions, handling of - replicated measurements as well as allowing spectra with different - resolutions.""" + """Quantitative Analysis of Mass Spectrometry Data. - homepage = "https://cloud.r-project.org/package=MALDIquant" - url = "https://cloud.r-project.org/src/contrib/MALDIquant_1.16.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/MALDIquant" + A complete analysis pipeline for matrix-assisted laser + desorption/ionization-time-of-flight (MALDI-TOF) and other two-dimensional + mass spectrometry data. In addition to commonly used plotting and + processing methods it includes distinctive features, namely baseline + subtraction methods such as morphological filters (TopHat) or the + statistics-sensitive non-linear iterative peak-clipping algorithm (SNIP), + peak alignment using warping functions, handling of replicated measurements + as well as allowing spectra with different resolutions.""" + cran = "MALDIquant" + + version('1.21', sha256='0771f82034aa6a77af67f3572c900987b7e6b578d04d707c6e06689d021a2ff8') version('1.19.3', sha256='a730327c1f8d053d29e558636736b7b66d0671a009e0004720b869d2c76ff32c') version('1.19.2', sha256='8c6efc4ae4f1af4770b079db29743049f2fd597bcdefeaeb16f623be43ddeb87') version('1.16.4', sha256='9b910dbd5dd1a739a17a7ee3f83d7e1ebad2fee89fd01a5b274415d2b6d3b0de') depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.21:') diff --git a/var/spack/repos/builtin/packages/r-manipulatewidget/package.py b/var/spack/repos/builtin/packages/r-manipulatewidget/package.py index cbaed5d513d7a9..51d3e5ebcdd8b6 100644 --- a/var/spack/repos/builtin/packages/r-manipulatewidget/package.py +++ b/var/spack/repos/builtin/packages/r-manipulatewidget/package.py @@ -7,17 +7,16 @@ class RManipulatewidget(RPackage): - """Add Even More Interactivity to Interactive Charts + """Add Even More Interactivity to Interactive Charts. Like package 'manipulate' does for static graphics, this package helps to easily add controls like sliders, pickers, checkboxes, etc. that can be used to modify the input data or the parameters of an interactive chart created with package 'htmlwidgets'.""" - homepage = "https://github.com/rte-antares-rpackage/manipulateWidget" - url = "https://cloud.r-project.org/src/contrib/manipulateWidget_0.10.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/manipulateWidget/" + cran = "manipulateWidget" + version('0.11.1', sha256='5b73728d7d6dcc32f32d861375074cd65112c03a01e4ee4fa94e21b063fdefb6') version('0.10.1', sha256='9d621192121f6b516bc7f1a18305995bfb7838c6683ac701422afc03a50e27ee') version('0.10.0', sha256='3d61a3d0cedf5c8a850a3e62ed6af38c600dc3f25b44c4ff07a5093bf9ca4ffd') version('0.9.0', sha256='5bf4bdb702263b0e156f40f3354922a06db7db544e497addcd6c98d9860bf3a3') @@ -29,6 +28,7 @@ class RManipulatewidget(RPackage): version('0.4.0', sha256='65cc7d28c2b2efc81fda35da019ac6e6058580cf0fdf5e31458cc96386c0c599') depends_on('r+X', type=('build', 'run')) + depends_on('r@2.10:', type=('build', 'run')) depends_on('r-shiny@1.0.3:', type=('build', 'run')) depends_on('r-miniui', type=('build', 'run')) depends_on('r-htmltools', type=('build', 'run')) @@ -37,3 +37,4 @@ class RManipulatewidget(RPackage): depends_on('r-base64enc', type=('build', 'run')) depends_on('r-codetools', type=('build', 'run')) depends_on('r-webshot', type=('build', 'run')) + depends_on('r-shinyjs', type=('build', 'run'), when='@0.11.1:') diff --git a/var/spack/repos/builtin/packages/r-mapplots/package.py b/var/spack/repos/builtin/packages/r-mapplots/package.py index 94d0621f8f5f17..089713d0625e00 100644 --- a/var/spack/repos/builtin/packages/r-mapplots/package.py +++ b/var/spack/repos/builtin/packages/r-mapplots/package.py @@ -7,11 +7,14 @@ class RMapplots(RPackage): - """mapplots: Data Visualisation on Maps""" + """Data Visualisation on Maps. - homepage = "https://cloud.r-project.org/package=mapplots" - url = "https://cloud.r-project.org/src/contrib/mapplots_1.5.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mapplots" + Create simple maps; add sub-plots like pie plots to a map or any other + plot; format, plot and export gridded data. The package was developed for + displaying fisheries data but most functions can be used for more generic + data visualisation.""" + + cran = "mapplots" version('1.5.1', sha256='37e96d34f37922180e07bb63b4514e07d42eee5bbf0885b278286ee48cf142a3') diff --git a/var/spack/repos/builtin/packages/r-mapproj/package.py b/var/spack/repos/builtin/packages/r-mapproj/package.py index 2a1b5c79efee16..f7e0d06b6c8836 100644 --- a/var/spack/repos/builtin/packages/r-mapproj/package.py +++ b/var/spack/repos/builtin/packages/r-mapproj/package.py @@ -7,14 +7,13 @@ class RMapproj(RPackage): - """Map Projections + """Map Projections. Converts latitude/longitude into projected coordinates.""" - homepage = "https://cloud.r-project.org/package=mapproj" - url = "https://cloud.r-project.org/src/contrib/mapproj_1.2-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mapproj" + cran = "mapproj" + version('1.2.8', sha256='865f108f1ee54cda38571b86cd46063a903824d9b4eabfdf75218023d08a7781') version('1.2.7', sha256='f0081281b08bf3cc7052c4f1360d6d3c20d9063be57754448ad9b48ab0d34c5b') version('1.2.6', sha256='62a5aa97837ae95ef9f973d95fe45fe43dbbf482dfa922e9df60f3c510e7efe5') version('1.2-5', sha256='f3026a3a69a550c923b44c18b1ccc60d98e52670a438250d13f3c74cf2195f66') diff --git a/var/spack/repos/builtin/packages/r-maps/package.py b/var/spack/repos/builtin/packages/r-maps/package.py index b66b64be6041c0..94032ce49b5bb9 100644 --- a/var/spack/repos/builtin/packages/r-maps/package.py +++ b/var/spack/repos/builtin/packages/r-maps/package.py @@ -7,15 +7,17 @@ class RMaps(RPackage): - """Display of maps. Projection code and larger maps are in separate - packages ('mapproj' and 'mapdata').""" + """Draw Geographical Maps. - homepage = "https://cloud.r-project.org/package=maps" - url = "https://cloud.r-project.org/src/contrib/maps_3.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/maps" + Display of maps. Projection code and larger maps are in separate packages + ('mapproj' and 'mapdata').""" + cran = "maps" + + version('3.4.0', sha256='7918ccb2393ca19589d4c4e77d9ebe863dc6317ebfc1ff41869dbfaf439f5747') version('3.3.0', sha256='199afe19a4edcef966ae79ef802f5dcc15a022f9c357fcb8cae8925fe8bd2216') version('3.2.0', sha256='437abeb4fa4ad4a36af6165d319634b89bfc6bf2b1827ca86c478d56d670e714') version('3.1.1', sha256='972260e5ce9519ecc09b18e5d7a28e01bed313fadbccd7b06c571af349cb4d2a') depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.4.0:') diff --git a/var/spack/repos/builtin/packages/r-maptools/package.py b/var/spack/repos/builtin/packages/r-maptools/package.py index b533c546245def..89c67e6ad95432 100644 --- a/var/spack/repos/builtin/packages/r-maptools/package.py +++ b/var/spack/repos/builtin/packages/r-maptools/package.py @@ -7,7 +7,7 @@ class RMaptools(RPackage): - """Tools for Handling Spatial Objects + """Tools for Handling Spatial Objects. Set of tools for manipulating and reading geographic data, in particular ESRI shapefiles; C code used from shapelib. It includes binary access to @@ -15,10 +15,9 @@ class RMaptools(RPackage): exchanging spatial objects with packages such as PBSmapping, spatstat, maps, RArcInfo, Stata tmap, WinBUGS, Mondrian, and others.""" - homepage = "https://r-forge.r-project.org/projects/maptools/" - url = "https://cloud.r-project.org/src/contrib/maptools_0.8-39.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/maptools" + cran = "maptools" + version('1.1-2', sha256='3995c96e8472cd6717fe3cbd3506358ff460b6c2cf92dbe4b00f75f507514439') version('1.0-2', sha256='daac6da5817cf0cff17b9e7d4a7cdc7c329574249bd9b1bafdb6c9431e1fee49') version('0.9-5', sha256='5d9511f09fb49d57a51f28495b02239800596a4fcfad7b03ee1074d793657bdd') version('0.9-4', sha256='930875f598a516f0f9049fa2fae7391bc9bdf7e3e5db696059ab4ec2fc9ba39c') diff --git a/var/spack/repos/builtin/packages/r-mapview/package.py b/var/spack/repos/builtin/packages/r-mapview/package.py index de2735d30d90a1..12004101625a3e 100644 --- a/var/spack/repos/builtin/packages/r-mapview/package.py +++ b/var/spack/repos/builtin/packages/r-mapview/package.py @@ -7,16 +7,16 @@ class RMapview(RPackage): - """Interactive Viewing of Spatial Data in R + """Interactive Viewing of Spatial Data in R. Quickly and conveniently create interactive visualisations of spatial data with or without background maps. Attributes of displayed features are fully queryable via pop-up windows. Additional functionality includes methods to visualise true- and false-color raster images and bounding boxes.""" - homepage = "https://github.com/r-spatial/mapview" - cran = "mapview" + cran = "mapview" + version('2.10.0', sha256='b597902c654b9abf1163bb9d4f1044fef85d0a52c8dc6538ca46b0024f63baaa') version('2.9.0', sha256='170cb2b5e67cbeb177f87bd2eab1ecabc44a1042addbcd95a85b2ec4a00eb690') depends_on('r+X', type=('build', 'run')) @@ -32,6 +32,7 @@ class RMapview(RPackage): depends_on('r-raster', type=('build', 'run')) 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')) diff --git a/var/spack/repos/builtin/packages/r-markdown/package.py b/var/spack/repos/builtin/packages/r-markdown/package.py index 87d622d434c130..9a8611505f7b2b 100644 --- a/var/spack/repos/builtin/packages/r-markdown/package.py +++ b/var/spack/repos/builtin/packages/r-markdown/package.py @@ -7,15 +7,15 @@ class RMarkdown(RPackage): - """Provides R bindings to the 'Sundown' 'Markdown' rendering library + """Render Markdown with the C Library 'Sundown'. + + Provides R bindings to the 'Sundown' 'Markdown' rendering library (https://github.com/vmg/sundown). 'Markdown' is a plain-text formatting syntax that can be converted to 'XHTML' or other formats. See https://en.wikipedia.org/wiki/Markdown for more information about 'Markdown'.""" - homepage = "https://cloud.r-project.org/package=markdown" - url = "https://cloud.r-project.org/src/contrib/markdown_0.7.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/markdown" + cran = "markdown" version('1.1', sha256='8d8cd47472a37362e615dbb8865c3780d7b7db694d59050e19312f126e5efc1b') version('1.0', sha256='172d8072d1829644ee6cdf54282a55718e2cfe9c9915d3589ca5f9a016f8d9a6') @@ -25,4 +25,4 @@ class RMarkdown(RPackage): depends_on('r@2.11.1:', type=('build', 'run')) depends_on('r-mime@0.3:', type=('build', 'run')) - depends_on('r-xfun', when='@1.1:', type=('build', 'run')) + depends_on('r-xfun', type=('build', 'run'), when='@1.1:') diff --git a/var/spack/repos/builtin/packages/r-marray/package.py b/var/spack/repos/builtin/packages/r-marray/package.py index d654461fb9b54c..55095efa3a4c17 100644 --- a/var/spack/repos/builtin/packages/r-marray/package.py +++ b/var/spack/repos/builtin/packages/r-marray/package.py @@ -7,14 +7,14 @@ class RMarray(RPackage): - """Exploratory analysis for two-color spotted microarray data: + """Exploratory analysis for two-color spotted microarray data. Class definitions for two-color spotted microarray data. Fuctions for data input, diagnostic plots, normalization and quality checking.""" - homepage = "https://www.maths.usyd.edu.au/u/jeany/" - bioc = "marray" + bioc = "marray" + version('1.72.0', commit='da35e8b8d2c9ef17e779013a5d252f38a1c66633') version('1.68.0', commit='67b3080486abdba7dd19fccd7fb731b0e8b5b3f9') depends_on('r@2.10.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index c99e3c847a3585..caea2ea9b7e538 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -7,15 +7,14 @@ class RMass(RPackage): - """Support Functions and Datasets for Venables and Ripley's MASS + """Support Functions and Datasets for Venables and Ripley's MASS. Functions and datasets to support Venables and Ripley, "Modern Applied Statistics with S" (4th edition, 2002).""" - homepage = "https://cloud.r-project.org/package=MASS" - url = "https://cloud.r-project.org/src/contrib/MASS_7.3-47.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/MASS" + cran = "MASS" + version('7.3-55', sha256='65299cbc8f3fd5e09cb3535eabcb3faad2308e01d5ba9422145cc04d7d0c31a4') version('7.3-54', sha256='b800ccd5b5c2709b1559cf5eab126e4935c4f8826cf7891253432bb6a056e821') version('7.3-53', sha256='41824e70ada302a620226c0f17b1b2c880c6d1a3a100b53bd6df8e8c97e64b38') version('7.3-51.5', sha256='464c0615cef01820cde2bb8457e81575d6755ae9b3ac99f3bfaaac47d43d15cc') @@ -24,3 +23,4 @@ class RMass(RPackage): version('7.3-47', sha256='ed44cdabe84fff3553122267ade61d5cc68071c435f7645d36c8f2e4e9f9c6bf') depends_on('r@3.1.0:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@7.3-55:') diff --git a/var/spack/repos/builtin/packages/r-mathjaxr/package.py b/var/spack/repos/builtin/packages/r-mathjaxr/package.py index 85ff6c8691c872..4ca4c069ef8446 100644 --- a/var/spack/repos/builtin/packages/r-mathjaxr/package.py +++ b/var/spack/repos/builtin/packages/r-mathjaxr/package.py @@ -7,13 +7,12 @@ class RMathjaxr(RPackage): - """Using 'Mathjax' in Rd Files + """Using 'Mathjax' in Rd Files. Provides 'MathJax' and macros to enable its use within Rd files for rendering equations in the HTML help files.""" - homepage = "https://github.com/wviechtb/mathjaxr" - url = "https://cloud.r-project.org/src/contrib/mathjaxr_1.0-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mathjaxr" + cran = "mathjaxr" + version('1.4-0', sha256='ba57378236d593a39c5839054adc5473526de0c8f05b7eeb87c99438496ddc67') version('1.0-1', sha256='0d3d370c4d0c7c7c6d5541d4e0ae50170b4084ca8a66e8a43bd92c7d1c112148') diff --git a/var/spack/repos/builtin/packages/r-matlab/package.py b/var/spack/repos/builtin/packages/r-matlab/package.py index bc4573888b7036..f75482c96cac4d 100644 --- a/var/spack/repos/builtin/packages/r-matlab/package.py +++ b/var/spack/repos/builtin/packages/r-matlab/package.py @@ -7,11 +7,11 @@ class RMatlab(RPackage): - """Emulate MATLAB code using R""" + """MATLAB emulation package. - homepage = "https://cloud.r-project.org/package=matlab" - url = "https://cloud.r-project.org/src/contrib/matlab_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/matlab" + Emulate MATLAB code using R.""" + + cran = "matlab" version('1.0.2', sha256='a23dec736c51ae1864c1a53caac556a2f98e8020138a3b121badb0f5b7984154') diff --git a/var/spack/repos/builtin/packages/r-matr/package.py b/var/spack/repos/builtin/packages/r-matr/package.py index 51f339702d8575..6c11f8571d1d69 100644 --- a/var/spack/repos/builtin/packages/r-matr/package.py +++ b/var/spack/repos/builtin/packages/r-matr/package.py @@ -7,16 +7,16 @@ class RMatr(RPackage): - """Package matR (Metagenomics Analysis Tools for R) is an analysis - client for the MG-RAST metagenome annotation engine, part of the US - Department of Energy (DOE) Systems Biology Knowledge Base (KBase). - Customized analysis and visualization tools securely access remote - data and metadata within the popular open source R language and - environment for statistical computing.""" + """Metagenomics Analysis Tools. - homepage = "https://github.com/MG-RAST/matR" - url = "https://cloud.r-project.org/src/contrib/matR_0.9.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/matR" + Package matR (Metagenomics Analysis Tools for R) is an analysis client for + the MG-RAST metagenome annotation engine, part of the US Department of + Energy (DOE) Systems Biology Knowledge Base (KBase). Customized analysis + and visualization tools securely access remote data and metadata within the + popular open source R language and environment for statistical + computing.""" + + cran = "matR" version('0.9.1', sha256='554aeff37b27d0f17ddeb62b2e1004aa1f29190300e4946b1bec1d7c2bde82e3') version('0.9', sha256='5750e6a876cf85fe66038292adefbfcb18e2584fa2e841f39dbe67f3c51b3052') diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index e07dbd18969b0a..6a8d0d5e0923dd 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -7,16 +7,16 @@ class RMatrix(RPackage): - """Sparse and Dense Matrix Classes and Methods + """Sparse and Dense Matrix Classes and Methods. A rich hierarchy of matrix classes, including triangular, symmetric, and diagonal matrices, both dense and sparse and with pattern, logical and numeric entries. Numerous methods for and operations on these matrices, using 'LAPACK' and 'SuiteSparse' libraries.""" - homepage = "https://matrix.r-forge.r-project.org/" cran = "Matrix" + version('1.4-0', sha256='c2b463702e4051b621f5e2b091a33f883f1caa97703d65f7a52b78caf81206f6') version('1.3-4', sha256='ab42179d44545e99bbdf44bb6d04cab051dd2aba552b1f6edd51ed71b55f6c39') version('1.3-3', sha256='f77ec8de43ae7bfa19dfdc7e76bfefbb21b3223dbc174423fcde70b44cf36a3b') version('1.3-2', sha256='950ba5d91018e711fd2743b3486a50dc47ae9c271389fce587792f0a9aab9531') @@ -27,7 +27,7 @@ class RMatrix(RPackage): version('1.2-6', sha256='4b49b639b7bf612fa3d1c1b1c68125ec7859c8cdadae0c13f499f24099fd5f20') depends_on('r@3.0.1:', type=('build', 'run')) - depends_on('r@3.2.0:', when='@1.2.13:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@1.3-2:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.3-3:', type=('build', 'run')) + 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-lattice', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-matrixgenerics/package.py b/var/spack/repos/builtin/packages/r-matrixgenerics/package.py index 491049b2d9bd19..5d31908371c196 100644 --- a/var/spack/repos/builtin/packages/r-matrixgenerics/package.py +++ b/var/spack/repos/builtin/packages/r-matrixgenerics/package.py @@ -7,7 +7,8 @@ class RMatrixgenerics(RPackage): - """S4 Generic Summary Statistic Functions that Operate on Matrix-Like Objects + """S4 Generic Summary Statistic Functions that Operate on Matrix-Like + Objects. S4 generic functions modeled after the 'matrixStats' API for alternative matrix implementations. Packages with alternative matrix implementation can @@ -16,9 +17,10 @@ class RMatrixgenerics(RPackage): developers can import this package and handle a different matrix implementations without worrying about incompatibilities.""" - homepage = "https://bioconductor.org/packages/MatrixGenerics" - git = "https://git.bioconductor.org/packages/MatrixGenerics" + bioc = "MatrixGenerics" + version('1.6.0', commit='4588a60e5cc691424c17faa281bdd7d99d83ec34') version('1.2.1', commit='abcc9ca0504e0b915cd7933a3169a8e9e5bd2fe9') depends_on('r-matrixstats@0.57.1:', type=('build', 'run')) + depends_on('r-matrixstats@0.60.1:', type=('build', 'run'), when='@1.6.0:') diff --git a/var/spack/repos/builtin/packages/r-matrixmodels/package.py b/var/spack/repos/builtin/packages/r-matrixmodels/package.py index 6191dbc8c914fe..7a776f8a56ed1c 100644 --- a/var/spack/repos/builtin/packages/r-matrixmodels/package.py +++ b/var/spack/repos/builtin/packages/r-matrixmodels/package.py @@ -7,13 +7,14 @@ class RMatrixmodels(RPackage): - """Modelling with sparse and dense 'Matrix' matrices, using modular - prediction and response module classes.""" + """Modelling with Sparse and Dense Matrices. - homepage = "https://matrix.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/MatrixModels_0.4-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/MatrixModels" + Modelling with sparse and dense 'Matrix' matrices, using modular prediction + and response module classes.""" + cran = "MatrixModels" + + version('0.5-0', sha256='a87faf1a185219f79ea2307e6787d293e1d30bf3af9398e8cfe1e079978946ed') version('0.4-1', sha256='fe878e401e697992a480cd146421c3a10fa331f6b37a51bac83b5c1119dcce33') depends_on('r@3.0.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-matrixstats/package.py b/var/spack/repos/builtin/packages/r-matrixstats/package.py index c2692a2580052b..92e56e2e5eafba 100644 --- a/var/spack/repos/builtin/packages/r-matrixstats/package.py +++ b/var/spack/repos/builtin/packages/r-matrixstats/package.py @@ -7,7 +7,7 @@ class RMatrixstats(RPackage): - """Functions that Apply to Rows and Columns of Matrices (and to Vectors) + """Functions that Apply to Rows and Columns of Matrices (and to Vectors). High-performing functions operating on rows and columns of matrices, e.g. col / rowMedians(), col / rowRanks(), and col / rowSds(). Functions @@ -15,7 +15,6 @@ class RMatrixstats(RPackage): memory usage and processing time is minimized. There are also optimized vector-based methods, e.g. binMeans(), madDiff() and weightedMedian().""" - homepage = "https://cloud.r-project.org/package=matrixStats" cran = "matrixStats" 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 1af352da9af204..c3da03324b92ba 100644 --- a/var/spack/repos/builtin/packages/r-mclust/package.py +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -8,17 +8,16 @@ class RMclust(RPackage): """Gaussian Mixture Modelling for Model-Based Clustering, Classification, - and Density Estimation + and Density Estimation. Gaussian finite mixture models fitted via EM algorithm for model-based clustering, classification, and density estimation, including Bayesian regularization, dimension reduction for visualisation, and resampling-based inference.""" - homepage = "http://www.stat.washington.edu/mclust" - url = "https://cloud.r-project.org/src/contrib/mclust_5.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mclust" + cran = "mclust" + version('5.4.9', sha256='65f123c6af86cf5eb511c81ae0eafa60da7b2085bfea1a08bdc3116081da9568') version('5.4.7', sha256='45f5a666caee5bebd3160922b8655295a25e37f624741f6574365e4ac5a14c23') version('5.4.5', sha256='75f2963082669485953e4306ffa93db98335ee6afdc1318b95d605d56cb30a72') version('5.4.4', sha256='ccc31b0ad445e121a447b04988e73232a085c506fcc7ebdf11a3e0754aae3e0d') diff --git a/var/spack/repos/builtin/packages/r-mcmc/package.py b/var/spack/repos/builtin/packages/r-mcmc/package.py index 01ec20d0e27350..30068988cd7f2c 100644 --- a/var/spack/repos/builtin/packages/r-mcmc/package.py +++ b/var/spack/repos/builtin/packages/r-mcmc/package.py @@ -7,7 +7,7 @@ class RMcmc(RPackage): - """Markov Chain Monte Carlo: + """Markov Chain Monte Carlo. Simulates continuous distributions of random vectors using Markov chain Monte Carlo (MCMC). Users specify the distribution by an R function that @@ -17,8 +17,7 @@ class RMcmc(RPackage): , function morph.metrop), which achieves geometric ergodicity by change of variable.""" - homepage = "https://www.stat.umn.edu/geyer/mcmc/" - cran = "mcmc" + cran = "mcmc" version('0.9-7', sha256='b7c4d3d5f9364c67a4a3cd49296a61c315ad9bd49324a22deccbacb314aa8260') diff --git a/var/spack/repos/builtin/packages/r-mcmcglmm/package.py b/var/spack/repos/builtin/packages/r-mcmcglmm/package.py index 0d22fb30a6832f..960b2134071257 100644 --- a/var/spack/repos/builtin/packages/r-mcmcglmm/package.py +++ b/var/spack/repos/builtin/packages/r-mcmcglmm/package.py @@ -7,15 +7,16 @@ class RMcmcglmm(RPackage): - """MCMC Generalised Linear Mixed Models + """MCMC Generalised Linear Mixed Models. - Fits Multi-response Generalised Linear Mixed Models (and related models) - using Markov chain Monte Carlo techniques.""" + Fits Multivariate Generalised Linear Mixed Models (and related models) + using Markov chain Monte Carlo techniques (Hadfield 2010 J. Stat. + Soft.).""" - homepage = "https://cloud.r-project.org/package=MCMCglmm" - url = "https://cloud.r-project.org/src/contrib/MCMCglmm_2.25.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/MCMCglmm" + cran = "MCMCglmm" + version('2.33', sha256='b56d72e799f8ed5fa2a05ecc743e5b8051f9cc2de57ad3e6de2dcb1c1715d4fc') + version('2.32', sha256='a9156e1e0d0f912f2f239476dc8765dc61c480f903381be7ec5db05bd6d3f0b3') version('2.30', sha256='714250fe6ebdd1bd3dc284f7fcb92326de1273b0c34d31e71dc825312527e042') version('2.29', sha256='13ba7837ea2049e892c04e7ec5c83d5b599a7e4820b9d875f55ec40fc2cc67b4') version('2.28', sha256='7d92e6d35638e5e060a590b92c3b1bfc02a11386276a8ab99bceec5d797bfc2a') diff --git a/var/spack/repos/builtin/packages/r-mcmcpack/package.py b/var/spack/repos/builtin/packages/r-mcmcpack/package.py index 58cfa63fae2bf7..1442458553c4b7 100644 --- a/var/spack/repos/builtin/packages/r-mcmcpack/package.py +++ b/var/spack/repos/builtin/packages/r-mcmcpack/package.py @@ -7,7 +7,7 @@ class RMcmcpack(RPackage): - """Markov Chain Monte Carlo (MCMC) Package: + """Markov Chain Monte Carlo (MCMC) Package. Contains functions to perform Bayesian inference using posterior simulation for a number of statistical models. Most simulation is done in compiled C++ @@ -17,9 +17,9 @@ class RMcmcpack(RPackage): number generators for statistical distributions, a general purpose Metropolis sampling algorithm, and tools for visualization are provided.""" - homepage = "https://cran.r-project.org/package=MCMCpack" - cran = "MCMCpack" + cran = "MCMCpack" + version('1.6-0', sha256='b5b9493457d11d4dca12f7732bd1b3eb1443852977c8ee78393126f13deaf29b') version('1.5-0', sha256='795ffd3d62bf14d3ecb3f5307bd329cd75798cf4b270ff0e768bc71a35de0ace') depends_on('r@3.6:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mco/package.py b/var/spack/repos/builtin/packages/r-mco/package.py index c9d5757ad7826c..53282a5aa0beb4 100644 --- a/var/spack/repos/builtin/packages/r-mco/package.py +++ b/var/spack/repos/builtin/packages/r-mco/package.py @@ -7,15 +7,13 @@ class RMco(RPackage): - """Multiple Criteria Optimization Algorithms and Related Functions + """Multiple Criteria Optimization Algorithms and Related Functions. A collection of function to solve multiple criteria optimization problems using genetic algorithms (NSGA-II). Also included is a collection of test functions.""" - homepage = "https://github.com/cran/mco" - url = "https://cloud.r-project.org/src/contrib/mco_1.0-15.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mco" + cran = "mco" version('1.15.6', sha256='17ebe279cb9c89b7cd8054ac50d3b657d2b10dadbc584b88da7e79c3a9680582') version('1.0-15.1', sha256='3c13ebc8c1f1bfa18f3f95b3998c57fde5259876e92456b6c6d4c59bef07c193') diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py index f5929efa71c257..da4b38f635e1ed 100644 --- a/var/spack/repos/builtin/packages/r-mda/package.py +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -7,19 +7,17 @@ class RMda(RPackage): - """Mixture and Flexible Discriminant Analysis + """Mixture and Flexible Discriminant Analysis. Mixture and flexible discriminant analysis, multivariate adaptive regression splines (MARS), BRUTO.""" - homepage = "https://cloud.r-project.org/package=mda" - url = "https://cloud.r-project.org/src/contrib/mda_0.4-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mda" + cran = "mda" version('0.5-2', sha256='344f2053215ddf535d1554b4539e9b09067dac878887cc3eb995cef421fc00c3') version('0.4-10', sha256='7036bc622a8fea5b2de94fc19e6b64f5f0c27e5d743ae7646e116af08c9de6a5') version('0.4-9', sha256='b72456d2fa5b49895644489735d21cf4836d3d597f5e693e6103cce1887ffd85') depends_on('r@1.9.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.5-2:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.5-2:') depends_on('r-class', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-memoise/package.py b/var/spack/repos/builtin/packages/r-memoise/package.py index 08af0df1b71add..84ee838dced0d7 100644 --- a/var/spack/repos/builtin/packages/r-memoise/package.py +++ b/var/spack/repos/builtin/packages/r-memoise/package.py @@ -7,13 +7,18 @@ class RMemoise(RPackage): - """Cache the results of a function so that when you call it again with the + """'Memoisation' of Functions. + + Cache the results of a function so that when you call it again with the same arguments it returns the pre-computed value.""" - homepage = "https://github.com/hadley/memoise" - url = "https://cloud.r-project.org/src/contrib/memoise_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/memoise" + cran = "memoise" + + version('2.0.1', sha256='f85034ee98c8ca07fb3cd826142c1cd1e1e5747075a94c75a45783bbc4fe2deb') version('1.1.0', sha256='b276f9452a26aeb79e12dd7227fcc8712832781a42f92d70e86040da0573980c') version('1.0.0', sha256='fd1b6cf12929890db7819f74a44a1dbe3d6f25c8a608a956d827f8be2f6c026b') - depends_on('r-digest@0.6.3:', type=('build', 'run')) + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@2.0.1:') + depends_on('r-cachem', type=('build', 'run'), when='@2.0.1:') + + depends_on('r-digest@0.6.3:', type=('build', 'run'), when='@:1.1.0') diff --git a/var/spack/repos/builtin/packages/r-memuse/package.py b/var/spack/repos/builtin/packages/r-memuse/package.py index c7f3acc776675d..0d1bbdda8cb060 100644 --- a/var/spack/repos/builtin/packages/r-memuse/package.py +++ b/var/spack/repos/builtin/packages/r-memuse/package.py @@ -7,18 +7,18 @@ class RMemuse(RPackage): - """Memory Estimation Utilities + """Memory Estimation Utilities. - How much ram do you need to store a 100,000 by 100,000 matrix? How much - ram is your current R session using? How much ram do you even have? - Learn the scintillating answer to these and many more such questions - with the 'memuse' package.""" + How much ram do you need to store a 100,000 by 100,000 matrix? How much ram + is your current R session using? How much ram do you even have? Learn the + scintillating answer to these and many more such questions with the + 'memuse' package.""" - homepage = "https://github.com/shinra-dev/memuse" - cran = "memuse" + cran = "memuse" maintainers = ['dorton21'] + version('4.2-1', sha256='f5e9dbaad4efbbfe219a93f446e318a00cad5b294bfc60ca2146eca894b47cf3') version('4.1-0', sha256='58d6d1ca5d6bd481f4ed299eff6a9d5660eb0f8db1abe54c49e144093cba72ad') depends_on('r@3.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mergemaid/package.py b/var/spack/repos/builtin/packages/r-mergemaid/package.py index 51bba220f862f7..6c44fe19255dae 100644 --- a/var/spack/repos/builtin/packages/r-mergemaid/package.py +++ b/var/spack/repos/builtin/packages/r-mergemaid/package.py @@ -20,8 +20,7 @@ class RMergemaid(RPackage): from 'modelOutcome' to graphically display the results and cross- validate associations of gene expression data with survival.""" - homepage = "https://bioconductor.org/packages/MergeMaid" - git = "https://git.bioconductor.org/packages/MergeMaid.git" + bioc = "MergeMaid" version('2.56.0', commit='c510d1d85bb39476e8397b24c4bc127780a17686') version('2.54.0', commit='8e79bd2bd06b25138b3c5107681c89d714a3b194') diff --git a/var/spack/repos/builtin/packages/r-metap/package.py b/var/spack/repos/builtin/packages/r-metap/package.py index 33ccae1c0cd628..c7e1e68177a0cb 100644 --- a/var/spack/repos/builtin/packages/r-metap/package.py +++ b/var/spack/repos/builtin/packages/r-metap/package.py @@ -7,7 +7,7 @@ class RMetap(RPackage): - """Meta-Analysis of Significance Values + """Meta-Analysis of Significance Values. The canonical way to perform meta-analysis involves using effect sizes. When they are not available this package provides a number of methods for @@ -15,16 +15,16 @@ class RMetap(RPackage): Fisher, Lancaster, Stouffer, Tippett, and Wilkinson; a number of data-sets to replicate published results; and a routine for graphical display.""" - homepage = "http://www.dewey.myzen.co.uk/meta/meta.html" - url = "https://cloud.r-project.org/src/contrib/metap_1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/metap" + cran = "metap" + version('1.7', sha256='d9b511607d0e37de4428549061c5577a4e812b0f55bb7ed887d1b24711f58c42') version('1.4', sha256='5fac23d823d0ad4eebc3f97620364e25f7b41f8d0c3579f6c09ec059940b85a5') version('1.1', sha256='20120428672d39dc15829c7e66850fc4350a34df290d48cef0b1cc78d13f7b82') + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.7:') depends_on('r-lattice', type=('build', 'run')) depends_on('r-rdpack', type=('build', 'run')) - depends_on('r-rdpack@0.7:', when='@1.4:', type=('build', 'run')) - depends_on('r-tfisher', when='@1.4:', type=('build', 'run')) - depends_on('r-mutoss', when='@1.4:', type=('build', 'run')) - depends_on('r-mathjaxr@0.8-3:', when='@1.4:', type=('build', 'run')) + depends_on('r-rdpack@0.7:', type=('build', 'run'), when='@1.4:') + depends_on('r-tfisher', type=('build', 'run'), when='@1.4:') + depends_on('r-mutoss', type=('build', 'run'), when='@1.4:') + depends_on('r-mathjaxr@0.8-3:', type=('build', 'run'), when='@1.4:') diff --git a/var/spack/repos/builtin/packages/r-methylumi/package.py b/var/spack/repos/builtin/packages/r-methylumi/package.py index d247b0133645d2..c16967e00ef5af 100644 --- a/var/spack/repos/builtin/packages/r-methylumi/package.py +++ b/var/spack/repos/builtin/packages/r-methylumi/package.py @@ -7,7 +7,7 @@ class RMethylumi(RPackage): - """Handle Illumina methylation data + """Handle Illumina methylation data. This package provides classes for holding and manipulating Illumina methylation data. Based on eSet, it can contain MIAME information, sample @@ -18,9 +18,9 @@ class RMethylumi(RPackage): background correction, and quality control features for GoldenGate, Infinium, and Infinium HD arrays are also included.""" - homepage = "https://bioconductor.org/packages/release/bioc/html/methylumi.html" - git = "https://git.bioconductor.org/packages/methylumi" + bioc = "methylumi" + version('2.40.1', commit='211039225ca6fca9af75b8266f656161912ce10f') version('2.36.0', commit='5fb0b609f9c9181ac99f902745958774e5489606') version('2.32.0', commit='e2a29c1b214c0d43c7325d176f9ce41dcf8e2f9d') @@ -33,7 +33,7 @@ class RMethylumi(RPackage): depends_on('r-fdb-infiniummethylation-hg19@2.2.0:', type=('build', 'run')) depends_on('r-minfi', type=('build', 'run')) depends_on('r-biocgenerics', type=('build', 'run')) - depends_on('r-s4vectors', when='@2.36.0:', type=('build', 'run')) + depends_on('r-s4vectors', type=('build', 'run'), when='@2.36.0:') depends_on('r-iranges', type=('build', 'run')) depends_on('r-genomeinfodb', type=('build', 'run')) depends_on('r-genomicranges', type=('build', 'run')) @@ -43,3 +43,4 @@ class RMethylumi(RPackage): depends_on('r-genefilter', type=('build', 'run')) depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-illuminaio', type=('build', 'run')) + depends_on('r-genomicfeatures', type=('build', 'run'), when='@2.40.1:') diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index bddde369e26829..ddaf2cea00ac1f 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -7,7 +7,7 @@ class RMgcv(RPackage): - """Mixed GAM Computation Vehicle with Automatic Smoothness Estimation + """Mixed GAM Computation Vehicle with Automatic Smoothness Estimation. Generalized additive (mixed) models, some of their extensions and other generalized ridge regression with multiple smoothing parameter estimation @@ -17,7 +17,6 @@ class RMgcv(RPackage): Includes a gam() function, a wide variety of smoothers, 'JAGS' support and distributions beyond the exponential family.""" - homepage = "https://cloud.r-project.org/package=mgcv" cran = "mgcv" version('1.8-38', sha256='cd12ed5787d6fdcead34e782e48b62b3f9efd523616c906e2da77bd9c142ddbb') @@ -34,6 +33,6 @@ class RMgcv(RPackage): version('1.8-13', sha256='74bc819708ef59da94b777a446ef00d7f14b428eec843533e824017c29cc524b') depends_on('r@2.14.0:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@1.8.34:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@1.8.34:') depends_on('r-nlme@3.1-64:', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mgraster/package.py b/var/spack/repos/builtin/packages/r-mgraster/package.py index 3d5c3e26dce6b3..b5cbdeb516fb12 100644 --- a/var/spack/repos/builtin/packages/r-mgraster/package.py +++ b/var/spack/repos/builtin/packages/r-mgraster/package.py @@ -7,13 +7,13 @@ class RMgraster(RPackage): - """Convenience Functions for R Language Access to the v.1 API of the - MG-RAST Metagenome Annotation Server, part of the US Department of Energy - (DOE) Systems Biology Knowledge Base (KBase).""" + """API Client for the MG-RAST Server of the US DOE KBase. - homepage = "https://github.com/braithwaite/MGRASTer/" - url = "https://cloud.r-project.org/src/contrib/MGRASTer_0.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/MGRASTer" + Convenience Functions for R Language Access to the v.1 API of the MG-RAST + Metagenome Annotation Server, part of the US Department of Energy (DOE) + Systems Biology Knowledge Base (KBase).""" + + cran = "MGRASTer" version('0.9', sha256='f727b5270ed4bd6dcacaecb49e1ace7eb40827754be9801230db940c4012ae4a') diff --git a/var/spack/repos/builtin/packages/r-mice/package.py b/var/spack/repos/builtin/packages/r-mice/package.py index ac3f9c7b1e8559..2048b026826dae 100644 --- a/var/spack/repos/builtin/packages/r-mice/package.py +++ b/var/spack/repos/builtin/packages/r-mice/package.py @@ -7,7 +7,7 @@ class RMice(RPackage): - """Multivariate Imputation by Chained Equations + """Multivariate Imputation by Chained Equations. Multiple imputation using Fully Conditional Specification (FCS) implemented by the MICE algorithm as described in Van Buuren and Groothuis-Oudshoorn @@ -21,10 +21,9 @@ class RMice(RPackage): diagnostic plots are available to inspect the quality of the imputations.""" - homepage = "https://cloud.r-project.org/package=mice" - url = "https://cloud.r-project.org/src/contrib/mice_3.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mice" + cran = "mice" + version('3.14.0', sha256='f87bb73d8bfee36c6bf4f15779c59ff6b70c70ca25b1388b4ee236757276d605') version('3.12.0', sha256='575d9e650d5fc8cd66c0b5a2f1e659605052b26d61f772fff5eed81b414ef144') version('3.6.0', sha256='7bc72bdb631bc9f67d8f76ffb48a7bb275228d861075e20c24c09c736bebec5d') version('3.5.0', sha256='4fccecdf9e8d8f9f63558597bfbbf054a873b2d0b0820ceefa7b6911066b9e45') @@ -33,14 +32,16 @@ class RMice(RPackage): depends_on('r@2.10.0:', type=('build', 'run')) depends_on('r-broom', type=('build', 'run')) depends_on('r-dplyr', type=('build', 'run')) - depends_on('r-generics', when='@3.12.0:', type=('build', 'run')) + depends_on('r-generics', type=('build', 'run'), when='@3.12.0:') depends_on('r-lattice', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) - depends_on('r-tidyr', when='@3.12.0:', type=('build', 'run')) - depends_on('r-cpp11', when='@3.12.0:', type=('build', 'run')) - depends_on('r-mitml', when='@:3.6.0', type=('build', 'run')) - depends_on('r-nnet', when='@:3.6.0', type=('build', 'run')) - depends_on('r-rpart', when='@:3.6.0', type=('build', 'run')) - depends_on('r-survival', when='@:3.6.0', type=('build', 'run')) - depends_on('r-mass', when='@:3.6.0', type=('build', 'run')) + depends_on('r-tidyr', type=('build', 'run'), when='@3.12.0:') + depends_on('r-withr', type=('build', 'run'), when='@3.14.0:') + depends_on('r-cpp11', type=('build', 'run'), when='@3.12.0:') + + depends_on('r-mitml', type=('build', 'run'), when='@:3.6.0') + depends_on('r-nnet', type=('build', 'run'), when='@:3.6.0') + depends_on('r-rpart', type=('build', 'run'), when='@:3.6.0') + depends_on('r-survival', type=('build', 'run'), when='@:3.6.0') + depends_on('r-mass', type=('build', 'run'), when='@:3.6.0') diff --git a/var/spack/repos/builtin/packages/r-microbenchmark/package.py b/var/spack/repos/builtin/packages/r-microbenchmark/package.py index 4df039664f5181..f12720e077fa74 100644 --- a/var/spack/repos/builtin/packages/r-microbenchmark/package.py +++ b/var/spack/repos/builtin/packages/r-microbenchmark/package.py @@ -7,12 +7,12 @@ class RMicrobenchmark(RPackage): - """Accurate Timing Functions + """Accurate Timing Functions. Provides infrastructure to accurately measure and compare the execution time of R expressions.""" - homepage = "https://github.com/joshuaulrich/microbenchmark/" - cran = "microbenchmark" + cran = "microbenchmark" + version('1.4.9', sha256='443d2caf370ef33e4ac2773176ad9eb86f8790f43b430968ef9647699dbbffd2') version('1.4-7', sha256='268f13c6323dd28cc2dff7e991bb78b814a8873b4a73f4a3645f40423da984f6') diff --git a/var/spack/repos/builtin/packages/r-mime/package.py b/var/spack/repos/builtin/packages/r-mime/package.py index 84d428f7fd5fdd..cf470f38c8bcd6 100644 --- a/var/spack/repos/builtin/packages/r-mime/package.py +++ b/var/spack/repos/builtin/packages/r-mime/package.py @@ -7,14 +7,14 @@ class RMime(RPackage): - """Map Filenames to MIME Types + """Map Filenames to MIME Types. - Guesses the MIME type from a filename extension using the data derived - from /etc/mime.types in UNIX-type systems.""" + Guesses the MIME type from a filename extension using the data derived from + /etc/mime.types in UNIX-type systems.""" - homepage = "https://github.com/yihui/mime" - cran = "mime" + cran = "mime" + version('0.12', sha256='a9001051d6c1e556e881910b1816b42872a1ee41ab76d0040ce66a27135e3849') version('0.11', sha256='215427a49f0d0b0e3ab38d419c515a35d57e3bc32535805306275d8b33f8eec0') version('0.9', sha256='2ccf97d2940a09539dc051c7a9a1aee90ef04b34e9bc6c0b64b4435fb3c2fa80') version('0.7', sha256='11083ee44c92569aadbb9baf60a2e079ab7a721c849b74d102694975cc8d778b') diff --git a/var/spack/repos/builtin/packages/r-minfi/package.py b/var/spack/repos/builtin/packages/r-minfi/package.py index 5469cd268e368b..99ff0c72c03b1f 100644 --- a/var/spack/repos/builtin/packages/r-minfi/package.py +++ b/var/spack/repos/builtin/packages/r-minfi/package.py @@ -7,13 +7,13 @@ class RMinfi(RPackage): - """Analyze Illumina Infinium DNA methylation arrays + """Analyze Illumina Infinium DNA methylation arrays. Tools to analyze & visualize Illumina Infinium methylation arrays.""" - homepage = "https://bioconductor.org/packages/minfi" - git = "https://git.bioconductor.org/packages/minfi.git" + bioc = "minfi" + version('1.40.0', commit='17fa2b5d6cdbef6cbfb690242bd3f660731431f1') version('1.36.0', commit='94301da343226be7cd878c2a6c1bb529564785d6') version('1.30.0', commit='a4c28e9388fe3b35e7d21a9669e39250ed6dcbcd') version('1.28.4', commit='b5125b2f3e05d37d519eeb6fd44a60efdad388e7') @@ -38,9 +38,9 @@ class RMinfi(RPackage): depends_on('r-limma', type=('build', 'run')) depends_on('r-preprocesscore', type=('build', 'run')) depends_on('r-illuminaio', type=('build', 'run')) - depends_on('r-illuminaio@0.23.2:', when='@1.28.4:', type=('build', 'run')) - depends_on('r-delayedmatrixstats', when='@1.26.2:', type=('build', 'run')) - depends_on('r-delayedmatrixstats@1.3.4:', when='@1.28.4:', type=('build', 'run')) + depends_on('r-illuminaio@0.23.2:', type=('build', 'run'), when='@1.28.4:') + depends_on('r-delayedmatrixstats', type=('build', 'run'), when='@1.26.2:') + depends_on('r-delayedmatrixstats@1.3.4:', type=('build', 'run'), when='@1.28.4:') depends_on('r-mclust', type=('build', 'run')) depends_on('r-genefilter', type=('build', 'run')) depends_on('r-nlme', type=('build', 'run')) @@ -49,10 +49,11 @@ class RMinfi(RPackage): depends_on('r-quadprog', type=('build', 'run')) depends_on('r-data-table', type=('build', 'run')) depends_on('r-geoquery', type=('build', 'run')) - depends_on('r-delayedarray@0.5.23:', when='@1.26.2:', type=('build', 'run')) - depends_on('r-delayedarray@0.7.38:', when='@1.28.4:', type=('build', 'run')) - depends_on('r-delayedarray@0.9.8:', when='@1.30.0:', type=('build', 'run')) - depends_on('r-delayedarray@0.15.16:', when='@1.36.0:', type=('build', 'run')) - depends_on('r-hdf5array', when='@1.26.2:', type=('build', 'run')) - depends_on('r-biocparallel', when='@1.26.2:', type=('build', 'run')) - depends_on('r-matrixstats@0.50.0:', when='@:1.30.0', type=('build', 'run')) + depends_on('r-delayedarray@0.5.23:', type=('build', 'run'), when='@1.26.2:') + depends_on('r-delayedarray@0.7.38:', type=('build', 'run'), when='@1.28.4:') + depends_on('r-delayedarray@0.9.8:', type=('build', 'run'), when='@1.30.0:') + depends_on('r-delayedarray@0.15.16:', type=('build', 'run'), when='@1.36.0:') + depends_on('r-hdf5array', type=('build', 'run'), when='@1.26.2:') + depends_on('r-biocparallel', type=('build', 'run'), when='@1.26.2:') + + depends_on('r-matrixstats@0.50.0:', type=('build', 'run'), when='@:1.30.0') diff --git a/var/spack/repos/builtin/packages/r-miniui/package.py b/var/spack/repos/builtin/packages/r-miniui/package.py index fea206e0789f0d..65533851704660 100644 --- a/var/spack/repos/builtin/packages/r-miniui/package.py +++ b/var/spack/repos/builtin/packages/r-miniui/package.py @@ -7,12 +7,12 @@ class RMiniui(RPackage): - """Provides UI widget and layout functions for writing Shiny apps that - work well on small screens.""" + """Shiny UI Widgets for Small Screens. - homepage = "https://cloud.r-project.org/package=miniUI" - url = "https://cloud.r-project.org/src/contrib/miniUI_0.1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/miniUI/" + Provides UI widget and layout functions for writing Shiny apps that work + well on small screens.""" + + cran = "miniUI" version('0.1.1.1', sha256='452b41133289f630d8026507263744e385908ca025e9a7976925c1539816b0c0') diff --git a/var/spack/repos/builtin/packages/r-minqa/package.py b/var/spack/repos/builtin/packages/r-minqa/package.py index 74f36e1c5bb680..02482d5f069c5f 100644 --- a/var/spack/repos/builtin/packages/r-minqa/package.py +++ b/var/spack/repos/builtin/packages/r-minqa/package.py @@ -7,12 +7,12 @@ class RMinqa(RPackage): - """Derivative-free optimization by quadratic approximation based on an + """Derivative-free optimization algorithms by quadratic approximation. + + Derivative-free optimization by quadratic approximation based on an interface to Fortran implementations by M. J. D. Powell.""" - homepage = "https://optimizer.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/minqa_1.2.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/minqa" + cran = "minqa" version('1.2.4', sha256='cfa193a4a9c55cb08f3faf4ab09c11b70412523767f19894e4eafc6e94cccd0c') diff --git a/var/spack/repos/builtin/packages/r-misc3d/package.py b/var/spack/repos/builtin/packages/r-misc3d/package.py index 1908500937e407..543cfc9105ea2a 100644 --- a/var/spack/repos/builtin/packages/r-misc3d/package.py +++ b/var/spack/repos/builtin/packages/r-misc3d/package.py @@ -7,14 +7,13 @@ class RMisc3d(RPackage): - """Miscellaneous 3D Plots + """Miscellaneous 3D Plots. A collection of miscellaneous 3d plots, including isosurfaces.""" - homepage = "https://cloud.r-project.org/package=misc3d" - url = "https://cloud.r-project.org/src/contrib/misc3d_0.8-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/misc3d" + cran = "misc3d" + version('0.9-1', sha256='a07bbb0de153e806cd79675ed478d2d9221cff825654f59a71a9cf61f4293d65') version('0.9-0', sha256='a1e9291d625bd1312bae5b0e26d48b9362f66a8a0fabbf48891ba1d2432e4e82') version('0.8-4', sha256='75de3d2237f67f9e58a36e80a6bbf7e796d43eb46789f2dd1311270007bf5f62') diff --git a/var/spack/repos/builtin/packages/r-missmethyl/package.py b/var/spack/repos/builtin/packages/r-missmethyl/package.py index a54e78ec40daa0..51f2245e3a003a 100644 --- a/var/spack/repos/builtin/packages/r-missmethyl/package.py +++ b/var/spack/repos/builtin/packages/r-missmethyl/package.py @@ -7,7 +7,7 @@ class RMissmethyl(RPackage): - """Analysing Illumina HumanMethylation BeadChip Data: + """Analysing Illumina HumanMethylation BeadChip Data. Normalisation, testing for differential variability and differential methylation and gene set testing for data from Illumina's Infinium @@ -21,8 +21,9 @@ class RMissmethyl(RPackage): taking into account the number of probes per gene on the array, as well as taking into account multi-gene associated probes.""" - bioc = "missMethyl" + bioc = "missMethyl" + version('1.28.0', commit='6a36aee28837736291ac630c1da3909f0e9c8d6a') version('1.24.0', commit='f6c86048911dc0e302fb593b7d0623f6e77ac332') depends_on('r@3.6.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mitml/package.py b/var/spack/repos/builtin/packages/r-mitml/package.py index 59c7952fb8f960..e3451b4dd729db 100644 --- a/var/spack/repos/builtin/packages/r-mitml/package.py +++ b/var/spack/repos/builtin/packages/r-mitml/package.py @@ -7,15 +7,16 @@ class RMitml(RPackage): - """Provides tools for multiple imputation of missing data in multilevel + """Tools for Multiple Imputation in Multilevel Modeling. + + Provides tools for multiple imputation of missing data in multilevel modeling. Includes a user-friendly interface to the packages 'pan' and 'jomo', and several functions for visualization, data management and the analysis of multiply imputed data sets.""" - homepage = "https://cloud.r-project.org/package=mitml" - url = "https://cloud.r-project.org/src/contrib/mitml_0.3-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mitml" + cran = "mitml" + version('0.4-3', sha256='49bd3eb68a60fb2a269e7ddca8b862e1e81e0651e2b29759482fb7bcad452102') version('0.3-7', sha256='c6f796d0059f1b093b599a89d955982fa257de9c45763ecc2cbbce10fdec1e7b') version('0.3-6', sha256='bc59bdc802eb882340393752535446560c716f12c6fca2b95f03c6af30d978de') version('0.3-5', sha256='8bcfeb18f3fb8a58a516348c37369eb8356af4bd3e0688c84a2366e1534608e9') diff --git a/var/spack/repos/builtin/packages/r-mitools/package.py b/var/spack/repos/builtin/packages/r-mitools/package.py index 54a89c1c0a93c2..b5d7e243a7d97d 100644 --- a/var/spack/repos/builtin/packages/r-mitools/package.py +++ b/var/spack/repos/builtin/packages/r-mitools/package.py @@ -7,12 +7,12 @@ class RMitools(RPackage): - """Tools to perform analyses and combine results from multiple-imputation + """Tools for Multiple Imputation of Missing Data. + + Tools to perform analyses and combine results from multiple-imputation datasets.""" - homepage = "https://cloud.r-project.org/package=mitools" - url = "https://cloud.r-project.org/src/contrib/mitools_2.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mitools" + cran = "mitools" version('2.4', sha256='f204f3774e29d79810f579f128de892539518f2cbe6ed237e08c8e7283155d30') diff --git a/var/spack/repos/builtin/packages/r-mixtools/package.py b/var/spack/repos/builtin/packages/r-mixtools/package.py index 6cf536adc22e34..b2e583f02031d4 100644 --- a/var/spack/repos/builtin/packages/r-mixtools/package.py +++ b/var/spack/repos/builtin/packages/r-mixtools/package.py @@ -7,7 +7,7 @@ class RMixtools(RPackage): - """Tools for Analyzing Finite Mixture Models + """Tools for Analyzing Finite Mixture Models. Analyzes finite mixture models for various parametric and semiparametric settings. This includes mixtures of parametric distributions (normal, @@ -23,17 +23,15 @@ class RMixtools(RPackage): supported by the National Science Foundation under Grant No. SES-0518772.""" - homepage = "https://cloud.r-project.org/package=mixtools" - url = "https://cloud.r-project.org/src/contrib/mixtools_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mixtools" + cran = "mixtools" version('1.2.0', sha256='ef033ef13625209065d26767bf70d129972e6808927f755629f1d70a118b9023') version('1.1.0', sha256='543fd8d8dc8d4b6079ebf491cf97f27d6225e1a6e65d8fd48553ada23ba88d8f') version('1.0.4', sha256='62f4b0a17ce520c4f8ed50ab44f120e459143b461a9e420cd39056ee4fc8798c') depends_on('r@3.2:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.2.0:', type=('build', 'run')) - depends_on('r-kernlab', when='@1.2.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.2.0:') + depends_on('r-kernlab', type=('build', 'run'), when='@1.2.0:') depends_on('r-mass', type=('build', 'run')) depends_on('r-segmented', type=('build', 'run')) depends_on('r-survival', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py index 1f9b2b2074e782..00ceddf31bf572 100644 --- a/var/spack/repos/builtin/packages/r-mlbench/package.py +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -7,13 +7,14 @@ class RMlbench(RPackage): - """A collection of artificial and real-world machine learning benchmark + """Machine Learning Benchmark Problems. + + A collection of artificial and real-world machine learning benchmark problems, including, e.g., several data sets from the UCI repository.""" - homepage = "https://cloud.r-project.org/package=mlbench" - url = "https://cloud.r-project.org/src/contrib/mlbench_2.1-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mlbench" + cran = "mlbench" + version('2.1-3', sha256='b1f92be633243185ab86e880a1e1ac5a4dd3c535d01ebd187a4872d0a8c6f194') version('2.1-1', sha256='748141d56531a39dc4d37cf0a5165a40b653a04c507e916854053ed77119e0e6') depends_on('r@2.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mlinterfaces/package.py b/var/spack/repos/builtin/packages/r-mlinterfaces/package.py index 084d37d24c5401..ce1d932f7536d9 100644 --- a/var/spack/repos/builtin/packages/r-mlinterfaces/package.py +++ b/var/spack/repos/builtin/packages/r-mlinterfaces/package.py @@ -8,14 +8,14 @@ class RMlinterfaces(RPackage): """Uniform interfaces to R machine learning procedures for data in - Bioconductor containers + Bioconductor containers. This package provides uniform interfaces to machine learning code for data in R and Bioconductor containers.""" - homepage = "https://bioconductor.org/packages/MLInterfaces" - git = "https://git.bioconductor.org/packages/MLInterfaces.git" + bioc = "MLInterfaces" + version('1.74.0', commit='5ee73b6491b1d68d7b49ddce6483df98ad880946') version('1.70.0', commit='7b076c3e85314dd5fd5bd8a98e8123d08d9acd3b') version('1.64.1', commit='0b081112d87771248bc33b3b82d5ca4685f986a1') version('1.62.1', commit='6cf59a90b14779cf57a0b36f1087304082ae50fe') @@ -24,8 +24,8 @@ class RMlinterfaces(RPackage): version('1.56.0', commit='31fe6fb20d859fcb01d5552f42bca6bab16cc67f') depends_on('r@2.9:', type=('build', 'run')) - depends_on('r@3.5:', when='@1.60.1:', type=('build', 'run')) - depends_on('r-rcpp', when='@1.70.0:', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@1.60.1:') + depends_on('r-rcpp', type=('build', 'run'), when='@1.70.0:') depends_on('r-biocgenerics@0.13.11:', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) depends_on('r-annotate', type=('build', 'run')) @@ -44,4 +44,6 @@ class RMlinterfaces(RPackage): depends_on('r-hwriter', type=('build', 'run')) depends_on('r-threejs@0.2.2:', type=('build', 'run')) depends_on('r-mlbench', type=('build', 'run')) - depends_on('r-rda', when='@:1.64.1', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run'), when='@1.74.0:') + + depends_on('r-rda', type=('build', 'run'), when='@:1.64.1') diff --git a/var/spack/repos/builtin/packages/r-mlr/package.py b/var/spack/repos/builtin/packages/r-mlr/package.py index 774a38f09a0c11..b96990bbebfdf5 100644 --- a/var/spack/repos/builtin/packages/r-mlr/package.py +++ b/var/spack/repos/builtin/packages/r-mlr/package.py @@ -7,7 +7,7 @@ class RMlr(RPackage): - """Machine Learning in R + """Machine Learning in R. Interface to a large number of classification and regression techniques, including machine-readable parameter descriptions. There is also an @@ -20,10 +20,9 @@ class RMlr(RPackage): allowing for easy nested resampling. Most operations can be parallelized.""" - homepage = "https://github.com/mlr-org/mlr/" - url = "https://cloud.r-project.org/src/contrib/mlr_2.12.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mlr" + cran = "mlr" + version('2.19.0', sha256='1149c9b453896481c85906045aa82d511d96979ddecbe5a3faf04f9f4a5e6113') version('2.18.0', sha256='c2fe74e90ed32e5f4cbb0c09a1742051688d87db2f12dd408ddad0f5afc7f8d3') version('2.15.0', sha256='a3c2c2bd65a87d90b5e5e877b1ef8e7712e76b4eb1660d3f69672a1860ca5324') version('2.14.0', sha256='1f72184400678386c7c44297c4c92a448b50148de700df5ba0438d4e486e944a') @@ -42,7 +41,7 @@ class RMlr(RPackage): depends_on('r-bbmisc@1.11:', type=('build', 'run')) depends_on('r-checkmate@1.8.2:', type=('build', 'run')) depends_on('r-data-table', type=('build', 'run')) - depends_on('r-data-table@1.12.4:', when='@2.18.0:', type=('build', 'run')) + depends_on('r-data-table@1.12.4:', type=('build', 'run'), when='@2.18.0:') depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-parallelmap@1.3:', type=('build', 'run')) depends_on('r-stringi', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mlrmbo/package.py b/var/spack/repos/builtin/packages/r-mlrmbo/package.py index a9fa8ab8e3a274..ecdca83cf76378 100644 --- a/var/spack/repos/builtin/packages/r-mlrmbo/package.py +++ b/var/spack/repos/builtin/packages/r-mlrmbo/package.py @@ -7,7 +7,8 @@ class RMlrmbo(RPackage): - """Bayesian Optimization and Model-Based Optimization of Expensive Black-Box Functions + """Bayesian Optimization and Model-Based Optimization of Expensive + Black-Box Functions. Flexible and comprehensive R toolbox for model-based optimization ('MBO'), also known as Bayesian optimization. It is designed for both single- and @@ -22,9 +23,7 @@ class RMlrmbo(RPackage): modular fashion, such that single components can be easily replaced or adapted by the user for specific use cases.""" - homepage = "https://github.com/mlr-org/mlrMBO/" - url = "https://cloud.r-project.org/src/contrib/mlrMBO_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mlrMBO" + cran = "mlrMBO" version('1.1.5', sha256='7ab9d108ad06f6c5c480fa4beca69e09ac89bb162ae6c85fe7d6d25c41f359b8') version('1.1.2', sha256='8e84caaa5d5d443d7019128f88ebb212fb095870b3a128697c9b64fe988f3efe') diff --git a/var/spack/repos/builtin/packages/r-mmwrweek/package.py b/var/spack/repos/builtin/packages/r-mmwrweek/package.py index 93b5bc7e98afe8..00d459fe0fb34e 100644 --- a/var/spack/repos/builtin/packages/r-mmwrweek/package.py +++ b/var/spack/repos/builtin/packages/r-mmwrweek/package.py @@ -7,18 +7,15 @@ class RMmwrweek(RPackage): - """Convert Dates to MMWR Day, Week, and Year + """Convert Dates to MMWR Day, Week, and Year. - The first day of any MMWR week is Sunday. MMWR week numbering is - sequential beginning with 1 and incrementing with each week to a maximum - of 52 or 53. MMWR week #1 of an MMWR year is the first week of the year - that has at least four days in the calendar year. This package provides - functionality to convert Dates to MMWR day, week, and year and the - reverse.""" + The first day of any MMWR week is Sunday. MMWR week numbering is sequential + beginning with 1 and incrementing with each week to a maximum of 52 or 53. + MMWR week #1 of an MMWR year is the first week of the year that has at + least four days in the calendar year. This package provides functionality + to convert Dates to MMWR day, week, and year and the reverse.""" - homepage = "https://cloud.r-project.org/package=MMWRweek" - url = "https://cloud.r-project.org/src/contrib/MMWRweek_0.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/MMWRweek" + cran = "MMWRweek" version('0.1.3', sha256='1aa8b687dc3340c3f277689eb0ca529e0064a4a3a66868137f2f8ab209d133d0') version('0.1.1', sha256='969fd18535f3b78dd360d62d29d5f15409fc059f4af5d345abfde711e4adbc99') diff --git a/var/spack/repos/builtin/packages/r-mnormt/package.py b/var/spack/repos/builtin/packages/r-mnormt/package.py index 5e300aafdd37cd..41647ff47bf96a 100644 --- a/var/spack/repos/builtin/packages/r-mnormt/package.py +++ b/var/spack/repos/builtin/packages/r-mnormt/package.py @@ -7,7 +7,8 @@ class RMnormt(RPackage): - """The Multivariate Normal and t Distributions, and Their Truncated Versions + """The Multivariate Normal and t Distributions, and Their Truncated + Versions. Functions are provided for computing the density and the distribution function of multivariate normal and "t" random variables, and for @@ -15,12 +16,10 @@ class RMnormt(RPackage): are computed via non-Monte Carlo methods; different routines are used in the case d=1, d=2, d>2, if d denotes the number of dimensions.""" - homepage = "http://azzalini.stat.unipd.it/SW/Pkg-mnormt" - url = "https://cloud.r-project.org/src/contrib/mnormt_1.5-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mnormt" + cran = "mnormt" version('2.0.2', sha256='5c6aa036d3f1035ffe8f9a8e95bb908b191b126b016591cf893c50472851f334') version('1.5-5', sha256='ff78d5f935278935f1814a69e5a913d93d6dd2ac1b5681ba86b30c6773ef64ac') depends_on('r@2.2.0:', type=('build', 'run')) - depends_on('r-tmvnsim@1.0-2:', when='@2.0.2:', type=('build', 'run')) + depends_on('r-tmvnsim@1.0-2:', type=('build', 'run'), when='@2.0.2:') diff --git a/var/spack/repos/builtin/packages/r-mockery/package.py b/var/spack/repos/builtin/packages/r-mockery/package.py index e8e13d295a795d..b08d3327db5233 100644 --- a/var/spack/repos/builtin/packages/r-mockery/package.py +++ b/var/spack/repos/builtin/packages/r-mockery/package.py @@ -6,16 +6,16 @@ class RMockery(RPackage): - """The two main functionalities of this package are creating mock - objects (functions) and selectively intercepting calls to a given - function that originate in some other function. It can be used with - any testing framework available for R. Mock objects can be injected - with either this package's own stub() function or a similar - with_mock() facility present in the 'testthat' package.""" + """Mocking Library for R. - homepage = "https://github.com/r-lib/mockery" - url = "https://cran.r-project.org/src/contrib/mockery_0.4.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mockery" + The two main functionalities of this package are creating mock objects + (functions) and selectively intercepting calls to a given function that + originate in some other function. It can be used with any testing framework + available for R. Mock objects can be injected with either this package's + own stub() function or a similar with_mock() facility present in the + 'testthat' package.""" + + cran = "mockery" version('0.4.2', sha256='988e249c366ee7faf277de004084cf5ca24b5c8a8c6e3842f1b1362ce2f7ea9b') version('0.4.1', sha256='959d83f8b21e9a89c06c73f310356790c2d63d5ba39b2b60c6777a4eb33909c1') diff --git a/var/spack/repos/builtin/packages/r-modelmetrics/package.py b/var/spack/repos/builtin/packages/r-modelmetrics/package.py index f30e452ef23512..c09f9e879825fe 100644 --- a/var/spack/repos/builtin/packages/r-modelmetrics/package.py +++ b/var/spack/repos/builtin/packages/r-modelmetrics/package.py @@ -7,15 +7,13 @@ class RModelmetrics(RPackage): - """Rapid Calculation of Model Metrics + """Rapid Calculation of Model Metrics. Collection of metrics for evaluating models written in C++ using 'Rcpp'. Popular metrics include area under the curve, log loss, root mean square error, etc.""" - homepage = "https://cloud.r-project.org/package=ModelMetrics" - url = "https://cloud.r-project.org/src/contrib/ModelMetrics_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ModelMetrics" + cran = "ModelMetrics" version('1.2.2.2', sha256='5e06f1926aebca5654e1329c66ef19b04058376b2277ebb16e3bf8c208d73457') version('1.2.2', sha256='66d6fc75658287fdbae4d437b51d26781e138b8baa558345fb9e5a2df86a0d95') @@ -24,4 +22,4 @@ class RModelmetrics(RPackage): depends_on('r@3.2.2:', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) - depends_on('r-data-table', when='@1.2.0:', type=('build', 'run')) + depends_on('r-data-table', type=('build', 'run'), when='@1.2.0:') diff --git a/var/spack/repos/builtin/packages/r-modelr/package.py b/var/spack/repos/builtin/packages/r-modelr/package.py index 94c68002701998..115afc3a46c0ae 100644 --- a/var/spack/repos/builtin/packages/r-modelr/package.py +++ b/var/spack/repos/builtin/packages/r-modelr/package.py @@ -7,14 +7,12 @@ class RModelr(RPackage): - """Modelling Functions that Work with the Pipe + """Modelling Functions that Work with the Pipe. Functions for modelling that help you seamlessly integrate modelling into a pipeline of data manipulation and visualisation.""" - homepage = "https://github.com/hadley/modelr" - url = "https://cloud.r-project.org/src/contrib/modelr_0.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/modelr" + cran = "modelr" version('0.1.8', sha256='825ba77d95d60cfb94920bec910872ca2ffe7790a44148b2992be2759cb361c4') version('0.1.5', sha256='45bbee387c6ba154f9f8642e9f03ea333cce0863c324ff15d23096f33f85ce5a') @@ -22,15 +20,16 @@ class RModelr(RPackage): version('0.1.3', sha256='e536b247c17d6cacf10565dd8a1b744efc90a8815c70edd54371e413e6d1b423') version('0.1.1', sha256='25b95198d6aa23e28a0bd97dcdc78264ef168ae403928bff01e1ee81ca021ce7') - depends_on('r@3.1:', when='@:0.1.4', type=('build', 'run')) - depends_on('r@3.2:', when='@0.1.5:', type=('build', 'run')) + depends_on('r@3.1:', type=('build', 'run'), when='@:0.1.4') + depends_on('r@3.2:', type=('build', 'run'), when='@0.1.5:') depends_on('r-broom', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-purrr@0.2.2:', type=('build', 'run')) - depends_on('r-rlang@0.2.0:', when='@0.1.3:', type=('build', 'run')) + depends_on('r-rlang@0.2.0:', type=('build', 'run'), when='@0.1.3:') depends_on('r-tibble', type=('build', 'run')) depends_on('r-tidyr@0.8.0:', type=('build', 'run')) - depends_on('r-tidyselect', when='@0.1.8:', type=('build', 'run')) - depends_on('r-vctrs', when='@0.1.8:', type=('build', 'run')) - depends_on('r-lazyeval@0.2.0:', when='@:0.1.1', type=('build', 'run')) - depends_on('r-dplyr', when='@:0.1.5', type=('build', 'run')) + depends_on('r-tidyselect', type=('build', 'run'), when='@0.1.8:') + depends_on('r-vctrs', type=('build', 'run'), when='@0.1.8:') + + depends_on('r-lazyeval@0.2.0:', type=('build', 'run'), when='@:0.1.1') + depends_on('r-dplyr', type=('build', 'run'), when='@:0.1.5') diff --git a/var/spack/repos/builtin/packages/r-modeltools/package.py b/var/spack/repos/builtin/packages/r-modeltools/package.py index 2f97c645a97f97..0ddfe0c9862221 100644 --- a/var/spack/repos/builtin/packages/r-modeltools/package.py +++ b/var/spack/repos/builtin/packages/r-modeltools/package.py @@ -7,7 +7,7 @@ class RModeltools(RPackage): - """Tools and Classes for Statistical Models + """Tools and Classes for Statistical Models. A collection of tools to deal with statistical models. The functionality is experimental and the user interface is likely to change in the future. @@ -16,9 +16,7 @@ class RModeltools(RPackage): interesting we would be very interested in a discussion of this proposal. Contributions are more than welcome!""" - homepage = "https://cloud.r-project.org/package=modeltools" - url = "https://cloud.r-project.org/src/contrib/modeltools_0.2-21.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/modeltools" + cran = "modeltools" version('0.2-23', sha256='6b3e8d5af1a039db5c178498dbf354ed1c5627a8cea9229726644053443210ef') version('0.2-22', sha256='256a088fc80b0d9182f984f9bd3d6207fb7c1e743f72e2ecb480e6c1d4ac34e9') diff --git a/var/spack/repos/builtin/packages/r-mpm/package.py b/var/spack/repos/builtin/packages/r-mpm/package.py index 2d6beeb5780ff8..bc45ed08c80f90 100644 --- a/var/spack/repos/builtin/packages/r-mpm/package.py +++ b/var/spack/repos/builtin/packages/r-mpm/package.py @@ -7,13 +7,13 @@ class RMpm(RPackage): - """Exploratory graphical analysis of multivariate data, specifically - gene expression data with different projection methods: principal - component analysis, correspondence analysis, spectral map analysis.""" + """Multivariate Projection Methods. - homepage = "https://cloud.r-project.org/package=mpm" - url = "https://cloud.r-project.org/src/contrib/mpm_1.0-22.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mpm" + Exploratory graphical analysis of multivariate data, specifically gene + expression data with different projection methods: principal component + analysis, correspondence analysis, spectral map analysis.""" + + cran = "mpm" version('1.0-22', sha256='d3ba4053cd57a189cb65c5fa20e6a4152374aead8c985254cb6e550e36e23272') diff --git a/var/spack/repos/builtin/packages/r-mscoreutils/package.py b/var/spack/repos/builtin/packages/r-mscoreutils/package.py new file mode 100644 index 00000000000000..9d1e4f7dd883b3 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-mscoreutils/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2022 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 import * + + +class RMscoreutils(RPackage): + """Core Utils for Mass Spectrometry Data. + + MsCoreUtils defines low-level functions for mass spectrometry data and is + independent of any high-level data structures. These functions include mass + spectra processing functions (noise estimation, smoothing, binning), + quantitative aggregation functions (median polish, robust summarisation, + ...), missing data imputation, data normalisation (quantiles, vsn, ...) as + well as misc helper functions, that are used across high-level data + structure within the R for Mass Spectrometry packages.""" + + bioc = "MsCoreUtils" + + version('1.6.0', commit='9ed95b2d20dacaa83567fadd04349c81db9127ef') + + depends_on('r@3.6.0:', type=('build', 'run')) + depends_on('r-s4vectors', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('r-clue', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-msnbase/package.py b/var/spack/repos/builtin/packages/r-msnbase/package.py index 9b31bb3d96dd61..09cd1eec729ca6 100644 --- a/var/spack/repos/builtin/packages/r-msnbase/package.py +++ b/var/spack/repos/builtin/packages/r-msnbase/package.py @@ -7,15 +7,15 @@ class RMsnbase(RPackage): - """Base Functions and Classes for Mass Spectrometry and Proteomics + """Base Functions and Classes for Mass Spectrometry and Proteomics. MSnbase provides infrastructure for manipulation, processing and visualisation of mass spectrometry and proteomics data, ranging from raw to quantitative and annotated data.""" - homepage = "https://bioconductor.org/packages/MSnbase" - git = "https://git.bioconductor.org/packages/MSnbase.git" + bioc = "MSnbase" + version('2.20.4', commit='c86ac8b341832f2b577f2153258c1abf064e6448') version('2.16.1', commit='4d88b4edd1af59474462b1b06ad0ec5831f3a878') version('2.10.1', commit='4d5899bc9c714f0b1a70cddd537cd4621b2b53b0') version('2.8.3', commit='ef883752c5e92d445647bc5b5d23d5df320db415') @@ -24,23 +24,24 @@ class RMsnbase(RPackage): version('2.2.0', commit='d6e8fb7f106d05096fa9074da0f829ac8f02c197') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.5:', when='@2.16.1:', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@2.16.1:') depends_on('r-biocgenerics@0.7.1:', type=('build', 'run')) depends_on('r-biobase@2.15.2:', type=('build', 'run')) depends_on('r-mzr@2.7.6:', type=('build', 'run')) - depends_on('r-mzr@2.11.11:', when='@2.4.2:', type=('build', 'run')) - depends_on('r-mzr@2.13.6:', when='@2.6.4:', type=('build', 'run')) - depends_on('r-mzr@2.15.1:', when='@2.8.3:', type=('build', 'run')) - depends_on('r-mzr@2.17.3:', when='@2.10.1:', type=('build', 'run')) - depends_on('r-mzr@2.19.6:', when='@2.16.1:', type=('build', 'run')) + depends_on('r-mzr@2.11.11:', type=('build', 'run'), when='@2.4.2:') + depends_on('r-mzr@2.13.6:', type=('build', 'run'), when='@2.6.4:') + depends_on('r-mzr@2.15.1:', type=('build', 'run'), when='@2.8.3:') + depends_on('r-mzr@2.17.3:', type=('build', 'run'), when='@2.10.1:') + depends_on('r-mzr@2.19.6:', type=('build', 'run'), when='@2.16.1:') depends_on('r-s4vectors', type=('build', 'run')) depends_on('r-protgenerics@1.5.1:', type=('build', 'run')) - depends_on('r-protgenerics@1.19.3:', when='@2.16.1:', type=('build', 'run')) + depends_on('r-protgenerics@1.19.3:', type=('build', 'run'), when='@2.16.1:') + depends_on('r-protgenerics@1.25.1:', type=('build', 'run'), when='@2.20.4:') + depends_on('r-mscoreutils', type=('build', 'run'), when='@2.20.4:') depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) - depends_on('r-iranges@2.13.28:', when='@2.6.4:', type=('build', 'run')) + depends_on('r-iranges@2.13.28:', type=('build', 'run'), when='@2.6.4:') depends_on('r-plyr', type=('build', 'run')) - depends_on('r-preprocesscore', type=('build', 'run')) depends_on('r-vsn', type=('build', 'run')) depends_on('r-affy', type=('build', 'run')) depends_on('r-impute', type=('build', 'run')) @@ -51,6 +52,8 @@ class RMsnbase(RPackage): depends_on('r-lattice', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-xml', type=('build', 'run')) - depends_on('r-scales', when='@2.6.4:', type=('build', 'run')) - depends_on('r-mass', when='@2.6.4:', type=('build', 'run')) + depends_on('r-scales', type=('build', 'run'), when='@2.6.4:') + depends_on('r-mass', type=('build', 'run'), when='@2.6.4:') depends_on('r-rcpp', type=('build', 'run')) + + depends_on('r-preprocesscore', type=('build', 'run'), when='@:2.16.1') diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index 68eb612376c8eb..0a3b440cf8860c 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -7,18 +7,17 @@ class RMultcomp(RPackage): - """Simultaneous Inference in General Parametric Models + """Simultaneous Inference in General Parametric Models. - Simultaneous tests and confidence intervals for general linear - hypotheses in parametric models, including linear, generalized linear, - linear mixed effects, and survival models. The package includes demos - reproducing analyzes presented in the book "Multiple Comparisons Using R" - (Bretz, Hothorn, Westfall, 2010, CRC Press).""" + Simultaneous tests and confidence intervals for general linear hypotheses + in parametric models, including linear, generalized linear, linear mixed + effects, and survival models. The package includes demos reproducing + analyzes presented in the book "Multiple Comparisons Using R" (Bretz, + Hothorn, Westfall, 2010, CRC Press).""" - homepage = "https://multcomp.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/multcomp_1.4-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/multcomp" + cran = "multcomp" + version('1.4-18', sha256='107a5e65cfff158b271d7386240dc8672d8cf45313f016e0ed83767faf7c2806') version('1.4-15', sha256='9927607efb3eb84ac3d25d82daf2faef6a69e05a334b163ce43fd31c14b19bce') version('1.4-10', sha256='29bcc635c0262e304551b139cd9ee655ab25a908d9693e1cacabfc2a936df5cf') version('1.4-8', sha256='a20876619312310e9523d67e9090af501383ce49dc6113c6b4ca30f9c943a73a') diff --git a/var/spack/repos/builtin/packages/r-multcompview/package.py b/var/spack/repos/builtin/packages/r-multcompview/package.py new file mode 100644 index 00000000000000..e79a509a666afc --- /dev/null +++ b/var/spack/repos/builtin/packages/r-multcompview/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RMultcompview(RPackage): + """Visualizations of Paired Comparisons. + + Convert a logical vector or a vector of p-values or a correlation, + difference, or distance matrix into a display identifying the pairs for + which the differences were not significantly different. Designed for use in + conjunction with the output of functions like TukeyHSD, dist{stats}, + simint, simtest, csimint, csimtest{multcomp}, friedmanmc, + kruskalmc{pgirmess}.""" + + cran = "multcompView" + + 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 ed79d1c4132934..b62a29b522627f 100644 --- a/var/spack/repos/builtin/packages/r-multicool/package.py +++ b/var/spack/repos/builtin/packages/r-multicool/package.py @@ -7,7 +7,7 @@ class RMulticool(RPackage): - """Permutations of multisets in cool-lex order + """Permutations of multisets in cool-lex order. A set of tools to permute multisets without loops or hash tables and to generate integer partitions. The permutation functions are based on C code @@ -25,10 +25,10 @@ class RMulticool(RPackage): . The C++ code and Python code are distributed without conditions.""" - homepage = "https://cloud.r-project.org/package=multicool" - url = "https://cloud.r-project.org/src/contrib/Archive/multicool/multicool_0.1-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/multicool/Archive/multicool" + cran = "multicool" + version('0.1-12', sha256='487d28d9c3c606be0cf56e2d8f8b0d79fb71949c68886ea9251fbb1c01664a36') + version('0.1-11', sha256='1c907e64af2ac39facdf431a5691e69649f64af1f50e198ae39da5bf30026476') version('0.1-10', sha256='5bb0cb0d9eb64420c862877247a79bb0afadacfe23262ec8c3fa26e5e34d6ff9') version('0.1-9', sha256='bdf92571cef1b649952d155395a92b8683099ee13114f73a9d41fc5d7d49d329') diff --git a/var/spack/repos/builtin/packages/r-multitaper/package.py b/var/spack/repos/builtin/packages/r-multitaper/package.py index 56e4092c795ac4..8654bc8f485220 100644 --- a/var/spack/repos/builtin/packages/r-multitaper/package.py +++ b/var/spack/repos/builtin/packages/r-multitaper/package.py @@ -7,7 +7,7 @@ class RMultitaper(RPackage): - """Spectral Analysis Tools using the Multitaper Methodi + """Spectral Analysis Tools using the Multitaper Method. Implements multitaper spectral analysis using discrete prolate spheroidal sequences (Slepians) and sine tapers. It includes an adaptive weighted @@ -18,9 +18,7 @@ class RMultitaper(RPackage): implementation of the method described in D.J. Thomson (1982) "Spectrum estimation and harmonic analysis" .""" - homepage = "https://github.com/krahim/multitaper/" - url = "https://cloud.r-project.org/src/contrib/multitaper_1.0-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/multitaper/" + cran = "multitaper" version('1.0-15', sha256='837d71f3b46fbce2bea210449cf75e609f5363ff23b7808f5f115fdc51e6a3be') version('1.0-14', sha256='c84c122541dc2874131446e23b212259b3b00590d701efee49e6740fd74a8d13') diff --git a/var/spack/repos/builtin/packages/r-multtest/package.py b/var/spack/repos/builtin/packages/r-multtest/package.py index 1f8f5c7cbc55e1..793f2cc756a4b8 100644 --- a/var/spack/repos/builtin/packages/r-multtest/package.py +++ b/var/spack/repos/builtin/packages/r-multtest/package.py @@ -7,7 +7,7 @@ class RMulttest(RPackage): - """Resampling-based multiple hypothesis testing + """Resampling-based multiple hypothesis testing. Non-parametric bootstrap and permutation resampling-based multiple testing procedures (including empirical Bayes methods) for controlling @@ -27,9 +27,9 @@ class RMulttest(RPackage): identifying differentially expressed genes in DNA microarray experiments.""" - homepage = "https://bioconductor.org/packages/multtest" - git = "https://git.bioconductor.org/packages/multtest.git" + bioc = "multtest" + version('2.50.0', commit='1de96649a942b115d3d554394514745e86eb3fd3') version('2.46.0', commit='c4dd27b333c80313a88668b59d0299988c6478a2') version('2.40.0', commit='5f00017c2d3a31e05e1cfe06d9f7afdee19f8473') version('2.38.0', commit='4dfe71cecfb298a94521088fb7bd83c5498d2915') diff --git a/var/spack/repos/builtin/packages/r-munsell/package.py b/var/spack/repos/builtin/packages/r-munsell/package.py index 5ce1e972d97566..67cf7a43eee552 100644 --- a/var/spack/repos/builtin/packages/r-munsell/package.py +++ b/var/spack/repos/builtin/packages/r-munsell/package.py @@ -7,15 +7,15 @@ class RMunsell(RPackage): - """Provides easy access to, and manipulation of, the Munsell colours. + """Utilities for Using Munsell Colours. + + Provides easy access to, and manipulation of, the Munsell colours. Provides a mapping between Munsell's original notation (e.g. "5R 5/10") and hexadecimal strings suitable for use directly in R graphics. Also provides utilities to explore slices through the Munsell colour tree, to transform Munsell colours and display colour palettes.""" - homepage = "https://cloud.r-project.org/package=munsell" - url = "https://cloud.r-project.org/src/contrib/munsell_0.4.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/munsell" + cran = "munsell" version('0.5.0', sha256='d0f3a9fb30e2b5d411fa61db56d4be5733a2621c0edf017d090bdfa5e377e199') version('0.4.3', sha256='397c3c90af966f48eebe8f5d9e40c41b17541f0baaa102eec3ea4faae5a2bd49') diff --git a/var/spack/repos/builtin/packages/r-mutoss/package.py b/var/spack/repos/builtin/packages/r-mutoss/package.py index 4b5770da485b5c..b086b3935595ec 100644 --- a/var/spack/repos/builtin/packages/r-mutoss/package.py +++ b/var/spack/repos/builtin/packages/r-mutoss/package.py @@ -7,15 +7,13 @@ class RMutoss(RPackage): - """Unified Multiple Testing Procedures + """Unified Multiple Testing Procedures. Designed to ease the application and comparison of multiple hypothesis testing procedures for FWER, gFWER, FDR and FDX. Methods are standardized and usable by the accompanying 'mutossGUI'.""" - homepage = "https://github.com/kornl/mutoss/" - url = "https://cloud.r-project.org/src/contrib/mutoss_0.1-12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/mutoss" + cran = "mutoss" version('0.1-12', sha256='2889ae3d502157592697124eb86adc14911e2b7fdaa7204743a376b1eeb967fa') diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 1acff9a5aa6bbc..f465912865133f 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -7,12 +7,11 @@ class RMvtnorm(RPackage): - """Multivariate Normal and t Distributions + """Multivariate Normal and t Distributions. Computes multivariate normal and t probabilities, quantiles, random deviates and densities.""" - homepage = "https://mvtnorm.r-forge.r-project.org/" cran = "mvtnorm" version('1.1-3', sha256='ff4e302139ba631280fc9c4a2ab168596bfd09e17a805974199b043697c02448') @@ -22,5 +21,5 @@ class RMvtnorm(RPackage): version('1.0-6', sha256='4a015b57b645b520151b213eb04b7331598c06442a3f652c7dc149425bd2e444') version('1.0-5', sha256='d00f9f758f0d0d4b999f259223485dc55d23cbec09004014816f180045ac81dd') - depends_on('r@1.9.0:', when='@:1.0-8', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.0-9:', type=('build', 'run')) + depends_on('r@1.9.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.0-9:') diff --git a/var/spack/repos/builtin/packages/r-mzid/package.py b/var/spack/repos/builtin/packages/r-mzid/package.py index d7de28ad926a21..0ea0a9c30bdf42 100644 --- a/var/spack/repos/builtin/packages/r-mzid/package.py +++ b/var/spack/repos/builtin/packages/r-mzid/package.py @@ -7,7 +7,7 @@ class RMzid(RPackage): - """An mzIdentML parser for R + """An mzIdentML parser for R. A parser for mzIdentML files implemented using the XML package. The parser tries to be general and able to handle all types of mzIdentML @@ -15,9 +15,9 @@ class RMzid(RPackage): specific parser. Please contact the maintainer with any problems and supply an mzIdentML file so the problems can be fixed quickly.""" - homepage = "https://bioconductor.org/packages/mzID" - git = "https://git.bioconductor.org/packages/mzID.git" + bioc = "mzID" + version('1.32.0', commit='d4146385b54f4d8361e23fc2c2aef79e952f4730') version('1.28.0', commit='cd006631c8222ce5b4af0577a7401b39cc58fd9c') version('1.22.0', commit='382d9cf11f0cba996911a9d79e193d28f3ac6042') version('1.20.1', commit='819582646944440ddd9ed3724ae964841573e54c') diff --git a/var/spack/repos/builtin/packages/r-mzr/package.py b/var/spack/repos/builtin/packages/r-mzr/package.py index f34043a1fd7e39..3f091378a1b75b 100644 --- a/var/spack/repos/builtin/packages/r-mzr/package.py +++ b/var/spack/repos/builtin/packages/r-mzr/package.py @@ -8,7 +8,7 @@ class RMzr(RPackage): """parser for netCDF, mzXML, mzData and mzML and mzIdentML files (mass - spectrometry data) + spectrometry data). mzR provides a unified API to the common file formats and parsers available for mass spectrometry data. It comes with a wrapper for the @@ -17,9 +17,9 @@ class RMzr(RPackage): subset of the proteowizard library for mzML and mzIdentML. The netCDF reading code has previously been used in XCMS.""" - homepage = "https://bioconductor.org/packages/mzR" - git = "https://git.bioconductor.org/packages/mzR.git" + bioc = "mzR" + version('2.28.0', commit='bee7d6fb5f99e1fab5444ae1ad27b0bc6e83be9e') version('2.24.1', commit='e1d4de8761e6729fd45320d842691c8fe9116b7b') version('2.18.1', commit='13f9f9b1149859c3e29cfce941d958cc4f680546') version('2.16.2', commit='22d7dad98f46b5bed7f6f7b3a703dcdf5997f709') @@ -31,9 +31,9 @@ class RMzr(RPackage): depends_on('r-biobase', type=('build', 'run')) depends_on('r-biocgenerics@0.13.6:', type=('build', 'run')) depends_on('r-protgenerics', type=('build', 'run')) - depends_on('r-protgenerics@1.9.1:', when='@2.12.0:', type=('build', 'run')) - depends_on('r-protgenerics@1.17.3:', when='@2.24.1:', type=('build', 'run')) - depends_on('r-ncdf4', when='@2.16.2:', type=('build', 'run')) + depends_on('r-protgenerics@1.9.1:', type=('build', 'run'), when='@2.12.0:') + depends_on('r-protgenerics@1.17.3:', type=('build', 'run'), when='@2.24.1:') + depends_on('r-ncdf4', type=('build', 'run'), when='@2.16.2:') depends_on('r-zlibbioc', type=('build', 'run')) - depends_on('r-rhdf5lib@1.1.4:', when='@2.14.0:', type=('build', 'run')) + depends_on('r-rhdf5lib@1.1.4:', type=('build', 'run'), when='@2.14.0:') depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-nada/package.py b/var/spack/repos/builtin/packages/r-nada/package.py index 1d1472377f4b61..b3d45a0075a0a7 100644 --- a/var/spack/repos/builtin/packages/r-nada/package.py +++ b/var/spack/repos/builtin/packages/r-nada/package.py @@ -7,14 +7,12 @@ class RNada(RPackage): - """Nondetects and Data Analysis for Environmental Data + """Nondetects and Data Analysis for Environmental Data. Contains methods described by Dennis Helsel in his book "Nondetects And Data Analysis: Statistics for Censored Environmental Data".""" - homepage = "https://cloud.r-project.org/package=NADA" - url = "https://cloud.r-project.org/src/contrib/NADA_1.6-1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/NADA" + cran = "NADA" version('1.6-1.1', sha256='670ff6595ba074ed0a930b7a09624d5ef20616379a20e768c1a7b37332aee44a') diff --git a/var/spack/repos/builtin/packages/r-nanotime/package.py b/var/spack/repos/builtin/packages/r-nanotime/package.py index e9921e0dd86281..17542c7ca40ab3 100644 --- a/var/spack/repos/builtin/packages/r-nanotime/package.py +++ b/var/spack/repos/builtin/packages/r-nanotime/package.py @@ -7,16 +7,16 @@ class RNanotime(RPackage): - """Nanosecond-Resolution Time Support for R + """Nanosecond-Resolution Time Support for R. - Full 64-bit resolution date and time support with resolution up to - nanosecond granularity is provided, with easy transition to and from the - standard 'POSIXct' type.""" + Full 64-bit resolution date and time functionality with; nanosecond + granularity is provided, with easy transition to and from; the standard + 'POSIXct' type. Three additional classes offer interval,; period and + duration functionality for nanosecond-resolution timestamps.""" - homepage = "https://cloud.r-project.org/package=nanotime" - url = "https://cloud.r-project.org/src/contrib/nanotime_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nanotime" + cran = "nanotime" + version('0.3.5', sha256='44deaae58452bacea4855d018212593811401c2afc460ffb11905479013923a0') version('0.3.2', sha256='9ef53c3bca01b605a9519190117988e170e63865327007c90b05d31fe7f22b1d') version('0.2.4', sha256='2dfb7e7435fec59634b87563a215467e7793e2711e302749c0533901c74eb184') version('0.2.3', sha256='7d6df69a4223ae154f610b650e24ece38ce4aa706edfa38bec27d15473229f5d') @@ -24,7 +24,7 @@ class RNanotime(RPackage): depends_on('r-bit64', type=('build', 'run')) depends_on('r-rcppcctz@0.2.3:', type=('build', 'run')) - depends_on('r-rcppcctz@0.2.9:', when='@0.3.2:', type=('build', 'run')) + depends_on('r-rcppcctz@0.2.9:', type=('build', 'run'), when='@0.3.2:') depends_on('r-zoo', type=('build', 'run')) - depends_on('r-rcpp', when='@0.3.2:', type=('build', 'run')) - depends_on('r-rcppdate', when='@0.3.2:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run'), when='@0.3.2:') + depends_on('r-rcppdate', type=('build', 'run'), when='@0.3.2:') diff --git a/var/spack/repos/builtin/packages/r-ncbit/package.py b/var/spack/repos/builtin/packages/r-ncbit/package.py index f4e37d59655eb4..20c08dfbdadbf1 100644 --- a/var/spack/repos/builtin/packages/r-ncbit/package.py +++ b/var/spack/repos/builtin/packages/r-ncbit/package.py @@ -7,12 +7,12 @@ class RNcbit(RPackage): - """Making NCBI taxonomic data locally available and searchable as an R - object.""" + """Retrieve and build NBCI taxonomic data. - homepage = "https://cloud.r-project.org/package=ncbit" - url = "https://cloud.r-project.org/src/contrib/ncbit_2013.03.29.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ncbit" + Making NCBI taxonomic data locally available and searchable as an R + object.""" + + cran = "ncbit" version('2013.03.29', sha256='4480271f14953615c8ddc2e0666866bb1d0964398ba0fab6cc29046436820738') diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py index d3940dacf55b21..9878c5a83ad875 100644 --- a/var/spack/repos/builtin/packages/r-ncdf4/package.py +++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py @@ -7,7 +7,7 @@ class RNcdf4(RPackage): - """Interface to Unidata netCDF (Version 4 or Earlier) Format Data Files + """Interface to Unidata netCDF (Version 4 or Earlier) Format Data Files. Provides a high-level R interface to data files written using Unidata's netCDF library (version 4 or earlier), which are binary data files that are @@ -24,10 +24,9 @@ class RNcdf4(RPackage): packages installed simultaneously without a problem. However, the ncdf package does not provide an interface for netcdf version 4 files.""" - homepage = "https://cirrus.ucsd.edu/~pierce/ncdf" - url = "https://cloud.r-project.org/src/contrib/ncdf4_1.15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ncdf4" + cran = "ncdf4" + version('1.19', sha256='cb8d139211fc7475c435ce9f6a43e47710603409dc523b053c8b7de9848dfb63') version('1.17', sha256='db95c4729d3187d1a56dfd019958216f442be6221bd15e23cd597e6129219af6') version('1.16.1', sha256='0dde2d6d1e8474f4abd15a61af8a2f7de564f13da00f1a01d7a479ab88587a20') version('1.16', sha256='edd5731a805bbece3a8f6132c87c356deafc272351e1dd07256ca00574949253') diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py index 2273ecdbcfef40..26fe6a4610e560 100644 --- a/var/spack/repos/builtin/packages/r-network/package.py +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -7,21 +7,21 @@ class RNetwork(RPackage): - """Classes for Relational Data + """Classes for Relational Data. Tools to create and modify network objects. The network class can represent a range of relational data types, and supports arbitrary vertex/edge/graph attributes.""" - homepage = "https://statnet.org" - url = "https://cloud.r-project.org/src/contrib/network_1.13.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/network" + cran = "network" + version('1.17.1', sha256='fc3c3a0014f8895a11c33994c9b44c6ef6cc49c7d026cd41ae6bba5ef63005a7') version('1.16.1', sha256='eb6435794cacc81abe1664391e8dcf1c10112bbb76fff9016dd6dbb8e83efeb1') version('1.15', sha256='5cbe5c0369e5f8363e33a86f14fd33ce8727166106381627ecd13b7452e14cb3') version('1.14-377', sha256='013c02f8d97f1f87f2c421760534df9353d2a8c2277f20b46b59fb79822d3e46') version('1.13.0', sha256='7a04ea89261cdf32ccb52222810699d5fca59a849053e306b5ec9dd5c1184f87') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r-tibble', when='@1.14-377:', type=('build', 'run')) - depends_on('r-magrittr', when='@1.14-377:', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run'), when='@1.14-377:') + depends_on('r-magrittr', type=('build', 'run'), when='@1.14-377:') + depends_on('r-statnet-common@4.5:', type=('build', 'run'), when='@1.17.1:') diff --git a/var/spack/repos/builtin/packages/r-networkd3/package.py b/var/spack/repos/builtin/packages/r-networkd3/package.py index 3cde83c042fa09..84bf6bac8b533b 100644 --- a/var/spack/repos/builtin/packages/r-networkd3/package.py +++ b/var/spack/repos/builtin/packages/r-networkd3/package.py @@ -7,12 +7,12 @@ class RNetworkd3(RPackage): - """Creates 'D3' 'JavaScript' network, tree, dendrogram, and Sankey graphs + """D3 JavaScript Network Graphs from R. + + Creates 'D3' 'JavaScript' network, tree, dendrogram, and Sankey graphs from 'R'.""" - homepage = "https://cloud.r-project.org/package=networkD3" - url = "https://cloud.r-project.org/src/contrib/networkD3_0.2.12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/networkD3" + cran = "networkD3" version('0.4', sha256='33b82585f1eec6233303ec14033a703d0b17def441c7a0a67bf7e6764c9c9d0b') version('0.3', sha256='6f9d6b35bb1562883df734bef8fbec166dd365e34c6e656da7be5f8a8d42343c') diff --git a/var/spack/repos/builtin/packages/r-neuralnet/package.py b/var/spack/repos/builtin/packages/r-neuralnet/package.py index 14ab2629df4a5e..bf641106ef5c5d 100644 --- a/var/spack/repos/builtin/packages/r-neuralnet/package.py +++ b/var/spack/repos/builtin/packages/r-neuralnet/package.py @@ -7,16 +7,17 @@ class RNeuralnet(RPackage): - """Training of neural networks using backpropagation, resilient + """Training of Neural Networks. + + Training of neural networks using backpropagation, resilient backpropagation with (Riedmiller, 1994) or without weight backtracking (Riedmiller and Braun, 1993) or the modified globally convergent version by Anastasiadis et al. (2005). The package allows flexible settings through - custom-choice of error and activation function. Furthermore, the calculation of - generalized weights (Intrator O & Intrator N, 1993) is implemented.""" + custom-choice of error and activation function. Furthermore, the + calculation of generalized weights (Intrator O & Intrator N, 1993) is + implemented.""" - homepage = "https://cloud.r-project.org/package=neuralnet" - url = "https://cloud.r-project.org/src/contrib/neuralnet_1.44.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/neuralnet" + cran = "neuralnet" version('1.44.2', sha256='5f66cd255db633322c0bd158b9320cac5ceff2d56f93e4864a0540f936028826') diff --git a/var/spack/repos/builtin/packages/r-nfactors/package.py b/var/spack/repos/builtin/packages/r-nfactors/package.py index 7f863879bba750..70822c1a95fb67 100644 --- a/var/spack/repos/builtin/packages/r-nfactors/package.py +++ b/var/spack/repos/builtin/packages/r-nfactors/package.py @@ -7,12 +7,20 @@ class RNfactors(RPackage): - """nFactors: Parallel Analysis and Other Non Graphical Solutions to the - Cattell Scree Test""" + """Parallel Analysis and Other Non Graphical Solutions to the Cattell Scree + Test. - homepage = "https://cloud.r-project.org/package=nFactors" - url = "https://cloud.r-project.org/src/contrib/nFactors_2.4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nFactors" + Indices, heuristics and strategies to help determine the number of + factors/components to retain: 1. Acceleration factor (af with or without + Parallel Analysis); 2. Optimal Coordinates (noc with or without Parallel + Analysis); 3. Parallel analysis (components, factors and bootstrap); 4. + lambda > mean(lambda) (Kaiser, CFA and related); 5. Cattell-Nelson-Gorsuch + (CNG); 6. Zoski and Jurs multiple regression (b, t and p); 7. Zoski and + Jurs standard error of the regression coeffcient (sescree); 8. Nelson R2; + 9. Bartlett khi-2; 10. Anderson khi-2; 11. Lawley khi-2 and 12. + Bentler-Yuan khi-2.""" + + cran = "nFactors" version('2.4.1', sha256='028eb4ebd42a29f6a01297d728c7e353cabb37b46701639b4a52f17ba25a3eb6') diff --git a/var/spack/repos/builtin/packages/r-nimble/package.py b/var/spack/repos/builtin/packages/r-nimble/package.py index 47c2cccf6cc879..0b39896db267dd 100644 --- a/var/spack/repos/builtin/packages/r-nimble/package.py +++ b/var/spack/repos/builtin/packages/r-nimble/package.py @@ -7,7 +7,7 @@ class RNimble(RPackage): - """MCMC, Particle Filtering, and Programmable Hierarchical Modeling + """MCMC, Particle Filtering, and Programmable Hierarchical Modeling. A system for writing hierarchical statistical models largely compatible with 'BUGS' and 'JAGS', writing nimbleFunctions to operate models and do @@ -24,10 +24,9 @@ class RNimble(RPackage): 'NIMBLE' for writing arbitrary other kinds of model-generic algorithms as well. A full User Manual is available at .""" - homepage = "https://cloud.r-project.org/package=nimble" - url = "https://cloud.r-project.org/src/contrib/nimble_0.9.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nimble" + cran = "nimble" + version('0.12.1', sha256='3520f3212a48c8cbe08a6a8e57b3a72180594f7c09f647d1daf417c9857867d8') version('0.10.1', sha256='11e248fda442f233c3590640efd9381c9b4b2e6fb66dce45a3391db03b70e702') version('0.9.1', sha256='ad5e8a171193cb0172e68bf61c4f94432c45c131a150101ad1c5c7318c335757') version('0.9.0', sha256='ebc28fadf933143eea73900cacaf96ff81cb3c2d607405016062b7e93afa5611') diff --git a/var/spack/repos/builtin/packages/r-nleqslv/package.py b/var/spack/repos/builtin/packages/r-nleqslv/package.py index c030bbb4fa3789..84ab38c6e40838 100644 --- a/var/spack/repos/builtin/packages/r-nleqslv/package.py +++ b/var/spack/repos/builtin/packages/r-nleqslv/package.py @@ -7,10 +7,14 @@ class RNleqslv(RPackage): - """nleqslv: Solve Systems of Nonlinear Equations""" + """Solve Systems of Nonlinear Equations. - homepage = "https://cloud.r-project.org/package=nleqslv" - url = "https://cloud.r-project.org/src/contrib/nleqslv_3.3.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nleqslv" + Solve a system of nonlinear equations using a Broyden or a Newton method + with a choice of global strategies such as line search and trust region. + There are options for using a numerical or user supplied Jacobian, for + specifying a banded numerical Jacobian and for allowing a singular or + ill-conditioned Jacobian.""" + + cran = "nleqslv" 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 201deb43de7c3f..decd172005add3 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -7,13 +7,13 @@ class RNlme(RPackage): - """Fit and compare Gaussian linear and nonlinear mixed-effects models + """Linear and Nonlinear Mixed Effects Models. Fit and compare Gaussian linear and nonlinear mixed-effects models.""" - homepage = "https://cloud.r-project.org/package=nlme" cran = "nlme" + version('3.1-155', sha256='9f390f842852422921b5845130ea73c1f006d7bb5e988e82f728093a0cbdff4f') version('3.1-153', sha256='3d27a98edf1b16ee868949e823ac0babbf10c937a7220d648b7ef9480cd680e3') version('3.1-152', sha256='5b65d1b1f121caf29e60341acf6d85e267fd94ed517748cf42d36359f74e515e') version('3.1-151', sha256='a2c626bad68bf582663005170d1b9d844a10dca8efb13597f15ffb4b1fe886ca') @@ -22,8 +22,8 @@ class RNlme(RPackage): version('3.1-131', sha256='79daa167eb9bc7d8dba506da4b24b5250665b051d4e0a51dfccbb0087fdb564c') version('3.1-130', sha256='ec576bd906ef2e1c79b6a4382743d425846f63be2a43de1cce6aa397b40e290e') - depends_on('r@3.0.2:', when='@:3.1-131', type=('build', 'run')) - depends_on('r@3.3.0:', when='@3.1-131.1', type=('build', 'run')) - depends_on('r@3.4.0:', when='@3.1-135.5:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@3.1-134:3.1-135', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run')) + 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-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 0082dee12165d7..4ee5d7484b98d1 100644 --- a/var/spack/repos/builtin/packages/r-nloptr/package.py +++ b/var/spack/repos/builtin/packages/r-nloptr/package.py @@ -7,27 +7,31 @@ class RNloptr(RPackage): - """R Interface to NLopt + """R Interface to NLopt. Solve optimization problems using an R interface to NLopt. NLopt is a free/open-source library for nonlinear optimization, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. See - for more - information on the available algorithms. During installation of nloptr on - Unix-based systems, the installer checks whether the NLopt library is - installed on the system. If the NLopt library cannot be found, the code is - compiled using the NLopt source included in the nloptr package.""" - - homepage = "https://cloud.r-project.org/package=nloptr" - url = "https://cloud.r-project.org/src/contrib/nloptr_1.0.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nloptr" - + for more + information on the available algorithms. Building from included sources + requires 'CMake'. On Linux and 'macOS', if a suitable system build of + NLopt (2.7.0 or later) is found, it is used; otherwise, it is built from + included sources via 'CMake'. On Windows, NLopt is obtained through + 'rwinlib' for 'R <= 4.1.x' or grabbed from the 'Rtools42 toolchain' for 'R + >= 4.2.0'.""" + + cran = "nloptr" + + version('2.0.0', sha256='65ca3149cfc9ba15ac10a91f34b5d86b20f5fd693f44e3edf3e392402911619a') + version('1.2.2.3', sha256='af08b74fd5e7b4cb455fe67ed759346cbb8f3b9a4178f5f117e0092e5c9af6ff') version('1.2.2.2', sha256='e80ea9619ac18f4bfe44812198b40b9ae5c0ddf3f9cc91778f9ccc82168d1372') version('1.2.1', sha256='1f86e33ecde6c3b0d2098c47591a9cd0fa41fb973ebf5145859677492730df97') version('1.0.4', sha256='84225b993cb1ef7854edda9629858662cc8592b0d1344baadea4177486ece1eb') + depends_on('r-testthat', when='@2.0.0:') depends_on('nlopt@2.4.0:') + depends_on('nlopt@2.7.0:', when='@2.0.0:') def configure_args(self): include_flags = self.spec['nlopt'].headers.include_flags diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py index 4faac3cbfb8450..d7c974d79bd2e0 100644 --- a/var/spack/repos/builtin/packages/r-nmf/package.py +++ b/var/spack/repos/builtin/packages/r-nmf/package.py @@ -7,7 +7,7 @@ class RNmf(RPackage): - """Algorithms and Framework for Nonnegative Matrix Factorization (NMF) + """Algorithms and Framework for Nonnegative Matrix Factorization (NMF). Provides a framework to perform Non-negative Matrix Factorization (NMF). The package implements a set of already published algorithms and seeding @@ -16,9 +16,7 @@ class RNmf(RPackage): the main interface function provides an easy way of performing parallel computations on multicore machines.""" - homepage = "https://renozao.github.io/NMF" - url = "https://cloud.r-project.org/src/contrib/NMF_0.21.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/NMF" + cran = "NMF" version('0.23.0', sha256='0f0cca01b37bf46fce90d2e951df609d3d377908aa607825083fd0c47cc24753') version('0.21.0', sha256='3b30c81c66066fab4a63c5611a0313418b840d8b63414db31ef0e932872d02e3') @@ -37,5 +35,5 @@ class RNmf(RPackage): depends_on('r-doparallel', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) - depends_on('r-biocmanager', when='@0.23.0', type=('build', 'run')) - depends_on('r-biobase', when='@0.23.0', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@0.23.0:') + depends_on('r-biobase', type=('build', 'run'), when='@0.23.0:') diff --git a/var/spack/repos/builtin/packages/r-nmof/package.py b/var/spack/repos/builtin/packages/r-nmof/package.py index 07393733dc7678..2440ea5d6d106d 100644 --- a/var/spack/repos/builtin/packages/r-nmof/package.py +++ b/var/spack/repos/builtin/packages/r-nmof/package.py @@ -7,7 +7,7 @@ class RNmof(RPackage): - """Numerical Methods and Optimization in Finance + """Numerical Methods and Optimization in Finance. Functions, examples and data from the book "Numerical Methods and Optimization in Finance" by M. Gilli, D. Maringer and E. Schumann (2011), @@ -17,10 +17,9 @@ class RNmof(RPackage): financial instruments, such as bonds and options, and functions that help with stochastic simulations.""" - homepage = "http://nmof.net/" - url = "https://cloud.r-project.org/src/contrib/NMOF_1.6-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/NMOF" + cran = "NMOF" + version('2.5-0', sha256='f44914c86d86c62f74cbc026179a694f0b3c2e3341b076acaf5de01de194a3c7') version('2.2-2', sha256='e64472f89023f0d779a35df753747d750174ce89644a9142312a1d2dc6f24642') version('1.6-0', sha256='5484cd43c28aaf23d560c2dde8bcd8dd440a205d2214eb50e02fe0bb42ec2755') diff --git a/var/spack/repos/builtin/packages/r-nnet/package.py b/var/spack/repos/builtin/packages/r-nnet/package.py index e2f478eb1f7fb5..2a9474abbd78ff 100644 --- a/var/spack/repos/builtin/packages/r-nnet/package.py +++ b/var/spack/repos/builtin/packages/r-nnet/package.py @@ -7,17 +7,16 @@ class RNnet(RPackage): - """Feed-Forward Neural Networks and Multinomial Log-Linear Models + """Feed-Forward Neural Networks and Multinomial Log-Linear Models. - Software for feed-forward neural networks with a single hidden layer, - and for multinomial log-linear models.""" + Software for feed-forward neural networks with a single hidden layer, and + for multinomial log-linear models.""" - homepage = "https://www.stats.ox.ac.uk/pub/MASS4/" - url = "https://cloud.r-project.org/src/contrib/nnet_7.3-12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nnet" + cran = "nnet" + version('7.3-17', sha256='ee750bb8164aa058edf93823af987ab2c7ec64128dce2abeaae1b7d3661e9a67') version('7.3-14', sha256='5d1b9e9764d74d16c651f18f949aa4e9e2995ba64633cbfa2c6a7355ae30f4af') version('7.3-12', sha256='2723523e8581cc0e2215435ac773033577a16087a3f41d111757dd96b8c5559d') depends_on('r@2.14:', type=('build', 'run')) - depends_on('r@3.0.0:', when='@7.3-14:', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run'), when='@7.3-14:') diff --git a/var/spack/repos/builtin/packages/r-nnls/package.py b/var/spack/repos/builtin/packages/r-nnls/package.py index 1515c83a7491ed..dcb5ec5724e3aa 100644 --- a/var/spack/repos/builtin/packages/r-nnls/package.py +++ b/var/spack/repos/builtin/packages/r-nnls/package.py @@ -7,12 +7,12 @@ class RNnls(RPackage): - """An R interface to the Lawson-Hanson implementation of an - algorithm for non-negative least squares (NNLS). Also allows - the combination of non-negative and non-positive constraints.""" + """The Lawson-Hanson algorithm for non-negative least squares (NNLS). - homepage = "https://cloud.r-project.org/package=nnls" - url = "https://cloud.r-project.org/src/contrib/nnls_1.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nnls" + An R interface to the Lawson-Hanson implementation of an algorithm for + non-negative least squares (NNLS). Also allows the combination of + non-negative and non-positive constraints.""" + + cran = "nnls" 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 9b199435301dd1..cb00e3b05d3aa2 100644 --- a/var/spack/repos/builtin/packages/r-nonnest2/package.py +++ b/var/spack/repos/builtin/packages/r-nonnest2/package.py @@ -7,7 +7,7 @@ class RNonnest2(RPackage): - """Tests of Non-Nested Models: + """Tests of Non-Nested Models. Testing non-nested models via theory supplied by Vuong (1989) . Includes tests of model distinguishability and of @@ -16,7 +16,7 @@ class RNonnest2(RPackage): and BIC. This material is partially based on work supported by the National Science Foundation under Grant Number SES-1061334.""" - cran = "nonnest2" + cran = "nonnest2" version('0.5-5', sha256='027f510e322122fc75c936251a95ddd392f96047ac86e0fae6cf8f883ac7aab5') diff --git a/var/spack/repos/builtin/packages/r-nor1mix/package.py b/var/spack/repos/builtin/packages/r-nor1mix/package.py index 7884bad3374e41..9c1c660ce29e9a 100644 --- a/var/spack/repos/builtin/packages/r-nor1mix/package.py +++ b/var/spack/repos/builtin/packages/r-nor1mix/package.py @@ -7,15 +7,15 @@ class RNor1mix(RPackage): - """Onedimensional Normal Mixture Models Classes, for, e.g., density - estimation or clustering algorithms research and teaching; providing - the widely used Marron-Wand densities. Efficient random number - generation and graphics; now fitting to data by ML (Maximum Likelihood) - or EM estimation.""" + """Normal aka Gaussian (1-d) Mixture Models (S3 Classes and Methods). - homepage = "https://cloud.r-project.org/package=nor1mix" - url = "https://cloud.r-project.org/src/contrib/nor1mix_1.2-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nor1mix" + One dimensional Normal Mixture Models Classes, for, e.g., density + estimation or clustering algorithms research and teaching; providing the + widely used Marron-Wand densities. Efficient random number generation and + graphics; now fitting to data by ML (Maximum Likelihood) or EM + estimation.""" + + cran = "nor1mix" version('1.3-0', sha256='9ce4ee92f889a4a4041b5ea1ff09396780785a9f12ac46f40647f74a37e327a0') version('1.2-3', sha256='435e6519e832ef5229c51ccb2619640e6b50dfc7470f70f0c938d18a114273af') diff --git a/var/spack/repos/builtin/packages/r-nortest/package.py b/var/spack/repos/builtin/packages/r-nortest/package.py index 1bbcb05ec02689..17e4f241d6fb1d 100644 --- a/var/spack/repos/builtin/packages/r-nortest/package.py +++ b/var/spack/repos/builtin/packages/r-nortest/package.py @@ -7,12 +7,10 @@ class RNortest(RPackage): - """nortest: Tests for Normality + """Tests for Normality. - Five omnibus tests for testing the composite hypothesis of normality.""" + Five omnibus tests for testing the composite hypothesis of normality.""" - homepage = "https://cloud.r-project.org/package=nortest" - url = "https://cloud.r-project.org/src/contrib/nortest_1.0-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/nortest" + cran = "nortest" version('1.0-4', sha256='a3850a048181d5d059c1e74903437569873b430c915b709808237d71fee5209f') diff --git a/var/spack/repos/builtin/packages/r-np/package.py b/var/spack/repos/builtin/packages/r-np/package.py index 8657dc5e22fd82..7fe571d5269726 100644 --- a/var/spack/repos/builtin/packages/r-np/package.py +++ b/var/spack/repos/builtin/packages/r-np/package.py @@ -7,7 +7,7 @@ class RNp(RPackage): - """Nonparametric Kernel Smoothing Methods for Mixed Data Types + """Nonparametric Kernel Smoothing Methods for Mixed Data Types. This package provides a variety of nonparametric (and semiparametric) kernel methods that seamlessly handle a mix of continuous, unordered, and @@ -17,10 +17,9 @@ class RNp(RPackage): of Canada (SSHRC:www.sshrc.ca), and the Shared Hierarchical Academic Research Computing Network (SHARCNET:www.sharcnet.ca).""" - homepage = "https://github.com/JeffreyRacine/R-Package-np/" - url = "https://cloud.r-project.org/src/contrib/np_0.60-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/np" + cran = "np" + version('0.60-11', sha256='a3b31b8ad70c42826076786b2b1b63b79cdbadfa55fe126773bc357686fd33a9') version('0.60-10', sha256='a27b4bbca8b83a289c98920c1c8f5e9979ba9772086893252a4297dd2698081a') version('0.60-9', sha256='fe31a8985f0b1a576a7775022b7131093b1c9a8337734136d5fcad85fa6592fc') version('0.60-8', sha256='924c342feb2a862fa3871a45db5f8434dbbfb900cfc40c001a0872108a3a069e') @@ -28,5 +27,5 @@ class RNp(RPackage): depends_on('r-boot', type=('build', 'run')) depends_on('r-cubature', type=('build', 'run')) - depends_on('r-quadprog', when='@0.60-8:', type=('build', 'run')) - depends_on('r-quantreg', when='@0.60-8:', type=('build', 'run')) + depends_on('r-quadprog', type=('build', 'run'), when='@0.60-8:') + depends_on('r-quantreg', type=('build', 'run'), when='@0.60-8:') diff --git a/var/spack/repos/builtin/packages/r-npsurv/package.py b/var/spack/repos/builtin/packages/r-npsurv/package.py index 0a02ce03d0c813..8d9d60e7c15aad 100644 --- a/var/spack/repos/builtin/packages/r-npsurv/package.py +++ b/var/spack/repos/builtin/packages/r-npsurv/package.py @@ -7,7 +7,7 @@ class RNpsurv(RPackage): - """Nonparametric Survival Analysis + """Nonparametric Survival Analysis. Non-parametric survival analysis of exact and interval-censored observations. The methods implemented are developed by Wang (2007) @@ -16,9 +16,7 @@ class RNpsurv(RPackage): and Wang and Fani (2018) .""" - homepage = "https://www.stat.auckland.ac.nz/~yongwang" - url = "https://cloud.r-project.org/src/contrib/npsurv_0.4-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/npsurv" + cran = "npsurv" version('0.5-0', sha256='bc87db76e7017e178c2832a684fcd49c42e20054644b21b586413d26c8821dc6') version('0.4-0', sha256='404cf7135dc40a04e9b81224a543307057a8278e11109ba1fcaa28e87c6204f3') diff --git a/var/spack/repos/builtin/packages/r-numderiv/package.py b/var/spack/repos/builtin/packages/r-numderiv/package.py index dee2be43c5cea7..844969e018941f 100644 --- a/var/spack/repos/builtin/packages/r-numderiv/package.py +++ b/var/spack/repos/builtin/packages/r-numderiv/package.py @@ -7,12 +7,17 @@ class RNumderiv(RPackage): - """Methods for calculating (usually) accurate numerical first and - second order derivatives.""" + """Accurate Numerical Derivatives. - homepage = "https://cloud.r-project.org/package=numDeriv" - url = "https://cloud.r-project.org/src/contrib/numDeriv_2016.8-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/numDeriv" + Methods for calculating (usually) accurate numerical first and second order + derivatives. Accurate calculations are done using 'Richardson"s' + extrapolation or, when applicable, a complex step derivative is available. + A simple difference method is also provided. Simple difference is (usually) + less accurate but is much quicker than 'Richardson"s' extrapolation and + provides a useful cross-check. Methods are provided for real scalar and + vector valued functions.""" + + cran = "numDeriv" version('2016.8-1.1', sha256='d8c4d19ff9aeb31b0c628bd4a16378e51c1c9a3813b525469a31fe89af00b345') version('2016.8-1', sha256='1b681d273697dc780a3ac5bedabb4a257785732d9ca4ef68e4e4aac8b328d11e') diff --git a/var/spack/repos/builtin/packages/r-oligoclasses/package.py b/var/spack/repos/builtin/packages/r-oligoclasses/package.py index 403f120010e8ef..2f6e9e18c58dd5 100644 --- a/var/spack/repos/builtin/packages/r-oligoclasses/package.py +++ b/var/spack/repos/builtin/packages/r-oligoclasses/package.py @@ -7,15 +7,15 @@ class ROligoclasses(RPackage): - """Classes for high-throughput arrays supported by oligo and crlmm + """Classes for high-throughput arrays supported by oligo and crlmm. This package contains class definitions, validity checks, and initialization methods for classes used by the oligo and crlmm packages.""" - homepage = "https://bioconductor.org/packages/oligoClasses" - git = "https://git.bioconductor.org/packages/oligoClasses.git" + bioc = "oligoClasses" + version('1.56.0', commit='6e6c7b4ba54095d1d3c44c081839f57af9261cbf') version('1.52.0', commit='7995efbd2d26b8fa950830d62db92bdaf5cbeeea') version('1.46.0', commit='325684f66fc92f778098f24bcfbef0ce3da9717c') version('1.44.0', commit='d3e1134cdbea5f95b83215dc66e5f7b6a1cd0638') @@ -25,7 +25,7 @@ class ROligoclasses(RPackage): depends_on('r@2.14:', type=('build', 'run')) depends_on('r-biocgenerics@0.3.2:', type=('build', 'run')) - depends_on('r-biocgenerics@0.27.1:', when='@1.44.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.27.1:', type=('build', 'run'), when='@1.44.0:') depends_on('r-biobase@2.17.8:', type=('build', 'run')) depends_on('r-iranges@2.5.17:', type=('build', 'run')) depends_on('r-genomicranges@1.23.7:', type=('build', 'run')) @@ -33,9 +33,10 @@ class ROligoclasses(RPackage): depends_on('r-biostrings@2.23.6:', type=('build', 'run')) depends_on('r-affyio@1.23.2:', type=('build', 'run')) depends_on('r-foreach', type=('build', 'run')) - depends_on('r-biocmanager', when='@1.44.0:', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@1.44.0:') depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) depends_on('r-rsqlite', type=('build', 'run')) - depends_on('r-dbi', when='@1.40.0:', type=('build', 'run')) + depends_on('r-dbi', type=('build', 'run'), when='@1.40.0:') depends_on('r-ff', type=('build', 'run')) - depends_on('r-biocinstaller', when='@:1.42.0', type=('build', 'run')) + + depends_on('r-biocinstaller', type=('build', 'run'), when='@:1.42.0') diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index ec375e68f6fa15..2c2e9abcc6ce4c 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -7,12 +7,12 @@ class ROpenssl(RPackage): - """Toolkit for Encryption, Signatures and Certificates Based on OpenSSL + """Toolkit for Encryption, Signatures and Certificates Based on OpenSSL. - Bindings to OpenSSL libssl and libcrypto, plus custom SSH pubkey - parsers. Supports RSA, DSA and EC curves P-256, P-384 and P-521. - Cryptographic signatures can either be created and verified manually or via - x509 certificates. AES can be used in cbc, ctr or gcm mode for symmetric + Bindings to OpenSSL libssl and libcrypto, plus custom SSH pubkey parsers. + Supports RSA, DSA and EC curves P-256, P-384 and P-521. Cryptographic + signatures can either be created and verified manually or via x509 + certificates. AES can be used in cbc, ctr or gcm mode for symmetric encryption; RSA for asymmetric (public key) encryption or EC for Diffie Hellman. High-level envelope functions combine RSA and AES for encrypting arbitrary sized data. Other utilities include key generators, hash @@ -20,9 +20,9 @@ class ROpenssl(RPackage): generator, and 'bignum' math methods for manually performing crypto calculations on large multibyte integers.""" - homepage = "https://cloud.r-project.org/package=openssl" cran = "openssl" + version('1.4.6', sha256='43b832af70e71770168b997107c52c8f406f8c33e9ef9b289610bccea2f34359') version('1.4.5', sha256='4fc141aba8e94e9f5ecce6eda07e45a5e7048d8609ba909ede4f7f4933e0c1f7') version('1.4.3', sha256='342001df8ecff5df2cdf757f123d35ea4b449751045f708b91f27c1be0d48269') version('1.4.1', sha256='f7fbecc75254fc43297a95a4338c674ab9ba2ec056b59e027d16d23122161fc6') @@ -31,7 +31,7 @@ class ROpenssl(RPackage): version('0.9.6', sha256='6dd6d1cade4004962d516ad761fff0812beec0232318b385d286761423a5dc39') version('0.9.4', sha256='cb7349defa5428acc0907629a4f53f82d2519af219e5d6a41f852cf55b1feb66') - depends_on('r-askpass', when='@1.2:', type=('build', 'run')) + depends_on('r-askpass', type=('build', 'run'), when='@1.2:') depends_on('openssl@1.0.1:') def flag_handler(self, name, flags): diff --git a/var/spack/repos/builtin/packages/r-openxlsx/package.py b/var/spack/repos/builtin/packages/r-openxlsx/package.py index 8cafb9381bb791..30fb8dd701ac50 100644 --- a/var/spack/repos/builtin/packages/r-openxlsx/package.py +++ b/var/spack/repos/builtin/packages/r-openxlsx/package.py @@ -7,21 +7,20 @@ class ROpenxlsx(RPackage): - """Read, Write and Edit xlsx Files + """Read, Write and Edit xlsx Files. Simplifies the creation of Excel .xlsx files by providing a high level interface to writing, styling and editing worksheets. Through the use of 'Rcpp', read/write times are comparable to the 'xlsx' and 'XLConnect' packages with the added benefit of removing the dependency on Java.""" - homepage = "https://github.com/awalker89/openxlsx" - url = "https://cloud.r-project.org/src/contrib/openxlsx_4.1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/openxlsx" + cran = "openxlsx" + version('4.2.5', sha256='65d06d2819b656ac30fc78437ee712a83fb5a7ab750f56268e5c9e578c582519') version('4.2.3', sha256='cdef89d826e50bef772af3e5eae935ca0316626a6e22f55f7631eac733b5e46f') version('4.1.0.1', sha256='8b7011debe14714de035ef42797c8caa923162d5dc3cc3c2a299fc10eff3d4d1') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-stringi', type=('build', 'run'), when='@4.2.3:') depends_on('r-zip', type=('build', 'run')) - depends_on('r-stringi', when='@4.2.3:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-optimx/package.py b/var/spack/repos/builtin/packages/r-optimx/package.py index e32576d55ee926..f020b19fd0831b 100644 --- a/var/spack/repos/builtin/packages/r-optimx/package.py +++ b/var/spack/repos/builtin/packages/r-optimx/package.py @@ -7,7 +7,7 @@ class ROptimx(RPackage): - """Expanded Replacement and Extension of the 'optim' Function: + """Expanded Replacement and Extension of the 'optim' Function. Provides a replacement and extension of the optim() function to call to several function minimization codes in R in a single statement. These @@ -18,8 +18,9 @@ class ROptimx(RPackage): Many methods previously separate are now included here. This is the version for CRAN.""" - cran = "optimx" + cran = "optimx" + version('2021-10.12', sha256='39384c856b5efa3992cd230548b60eff936d428111ad6ad5b8fb98a3bcbb7943') version('2020-4.2', sha256='6381c25c322287fc98ab1b2965d3f68c9a92c587c76aca1d33fd6428b2167101') depends_on('r-numderiv', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-optparse/package.py b/var/spack/repos/builtin/packages/r-optparse/package.py index 474917925a7b21..2ecc532a3d2a53 100644 --- a/var/spack/repos/builtin/packages/r-optparse/package.py +++ b/var/spack/repos/builtin/packages/r-optparse/package.py @@ -7,16 +7,15 @@ class ROptparse(RPackage): - """Command Line Option Parser + """Command Line Option Parser. A command line parser inspired by Python's 'optparse' library to be used with Rscript to write "#!" shebang scripts that accept short and long flag/options""" - homepage = "https://cloud.r-project.org/package=optparse" - url = "https://cloud.r-project.org/src/contrib/optparse_1.6.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/optparse" + cran = "optparse" + version('1.7.1', sha256='324e304c13efd565d766766193d4ccd75e2cd949dfcfb416afc3939489071fe7') version('1.6.6', sha256='51779d497146e9354b1153713d939e81551e08948c2b00e4b117b1377c0b60d0') version('1.6.2', sha256='b5a5a49ae05005f20359868329b73daac83d50f5e088981dcf5c41399534377f') version('1.6.1', sha256='819be3eff54cb7f3f18703eed9714fc655290ab8e169f87605433d069b597e13') diff --git a/var/spack/repos/builtin/packages/r-ordinal/package.py b/var/spack/repos/builtin/packages/r-ordinal/package.py index 70f4c2993ae860..d083c234c72a11 100644 --- a/var/spack/repos/builtin/packages/r-ordinal/package.py +++ b/var/spack/repos/builtin/packages/r-ordinal/package.py @@ -7,7 +7,7 @@ class ROrdinal(RPackage): - """Regression Models for Ordinal Data + """Regression Models for Ordinal Data. Implementation of cumulative link (mixed) models also known as ordered regression models, proportional odds models, proportional hazards models @@ -21,9 +21,7 @@ class ROrdinal(RPackage): addition to profile methods and slice methods for visualizing the likelihood function and checking convergence.""" - homepage = "https://github.com/runehaubo/ordinal" - url = "https://cloud.r-project.org/src/contrib/ordinal_2019.4-25.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ordinal" + cran = "ordinal" version('2019.12-10', sha256='7a41e7b7e852a8fa3e911f8859d36e5709ccec5ca42ee3de14a813b7aaac7725') version('2019.4-25', sha256='2812ad7a123cae5dbe053d1fe5f2d9935afc799314077eac185c844e3c9d79df') diff --git a/var/spack/repos/builtin/packages/r-org-hs-eg-db/package.py b/var/spack/repos/builtin/packages/r-org-hs-eg-db/package.py index 69da594ef51435..178bb144dc2aa2 100644 --- a/var/spack/repos/builtin/packages/r-org-hs-eg-db/package.py +++ b/var/spack/repos/builtin/packages/r-org-hs-eg-db/package.py @@ -7,14 +7,17 @@ class ROrgHsEgDb(RPackage): - """Genome wide annotation for Human + """Genome wide annotation for Human. Genome wide annotation for Human, primarily based on mapping using Entrez Gene identifiers.""" - homepage = "https://bioconductor.org/packages/org.Hs.eg.db/" - url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/org.Hs.eg.db_3.4.1.tar.gz" + bioc = "org.Hs.eg.db" + url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/org.Hs.eg.db_3.4.1.tar.gz" + version('3.14.0', + sha256='0f87b3f1925a1d7007e5ad9200bdf511788bd1d7cb76f1121feeb109889c2b00', + url='https://www.bioconductor.org/packages/3.14/data/annotation/src/contrib/org.Hs.eg.db_3.14.0.tar.gz') version('3.12.0', sha256='48a1ab5347ec7a8602c555d9aba233102b61ffa2765826e5c8890ff0003249bb', url='https://www.bioconductor.org/packages/3.12/data/annotation/src/contrib/org.Hs.eg.db_3.12.0.tar.gz') @@ -27,5 +30,6 @@ class ROrgHsEgDb(RPackage): depends_on('r@2.7.0:', type=('build', 'run')) depends_on('r-annotationdbi@1.37.4:', type=('build', 'run')) - depends_on('r-annotationdbi@1.43.1:', when='@3.8.2:', type=('build', 'run')) - depends_on('r-annotationdbi@1.51.3:', when='@3.12.0:', type=('build', 'run')) + depends_on('r-annotationdbi@1.43.1:', type=('build', 'run'), when='@3.8.2:') + depends_on('r-annotationdbi@1.51.3:', type=('build', 'run'), when='@3.12.0:') + depends_on('r-annotationdbi@1.55.1:', type=('build', 'run'), when='@3.14.0:') diff --git a/var/spack/repos/builtin/packages/r-organismdbi/package.py b/var/spack/repos/builtin/packages/r-organismdbi/package.py index 377ee406c46d7e..017b9ea5e3e6ed 100644 --- a/var/spack/repos/builtin/packages/r-organismdbi/package.py +++ b/var/spack/repos/builtin/packages/r-organismdbi/package.py @@ -8,15 +8,15 @@ class ROrganismdbi(RPackage): """Software to enable the smooth interfacing of different database - packages + packages. The package enables a simple unified interface to several annotation packages each of which has its own schema by taking advantage of the fact that each of these packages implements a select methods.""" - homepage = "https://bioconductor.org/packages/OrganismDbi" - git = "https://git.bioconductor.org/packages/OrganismDbi.git" + bioc = "OrganismDbi" + version('1.36.0', commit='3e7a90d248ff09f05ccd381ff921e12373a4b330') version('1.32.0', commit='c8100c4fea17bf1b10d4efacc73a7e2866d649e3') version('1.26.0', commit='495b4a8f8264d06d827537d43b3c6cc705244bb5') version('1.24.0', commit='3428952dc0f267a01e256a1c0873656cfbfde7f8') @@ -28,14 +28,15 @@ class ROrganismdbi(RPackage): depends_on('r-biocgenerics@0.15.10:', type=('build', 'run')) depends_on('r-annotationdbi@1.33.15:', type=('build', 'run')) depends_on('r-genomicfeatures@1.23.31:', type=('build', 'run')) - depends_on('r-genomicfeatures@1.39.4:', when='@1.32.0:', type=('build', 'run')) + depends_on('r-genomicfeatures@1.39.4:', type=('build', 'run'), when='@1.32.0:') depends_on('r-biobase', type=('build', 'run')) - depends_on('r-biocmanager', when='@1.24.0:', type=('build', 'run')) + depends_on('r-biocmanager', type=('build', 'run'), when='@1.24.0:') depends_on('r-genomicranges', type=('build', 'run')) - depends_on('r-genomicranges@1.31.13:', when='@1.22.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.31.13:', type=('build', 'run'), when='@1.22.0:') depends_on('r-graph', type=('build', 'run')) depends_on('r-iranges', type=('build', 'run')) depends_on('r-rbgl', type=('build', 'run')) depends_on('r-dbi', type=('build', 'run')) depends_on('r-s4vectors@0.9.25:', type=('build', 'run')) - depends_on('r-biocinstaller', when='@:1.22.0', type=('build', 'run')) + + depends_on('r-biocinstaller', type=('build', 'run'), when='@:1.22.0') diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index 65d81d04f9ec07..14341f182a5a85 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -7,10 +7,12 @@ class RPackrat(RPackage): - """Manage the R packages your project depends on in an isolated, portable, - and reproducible way.""" + """A Dependency Management System for Projects and their R Package + Dependencies. + + Manage the R packages your project depends on in an isolated, portable, and + reproducible way.""" - homepage = "https://github.com/rstudio/packrat/" cran = "packrat" version('0.7.0', sha256='e8bce1fd78f28f3a7bf56e65a2ae2c6802e69bf55466c24e1d1a4b8a5f83dcc2') diff --git a/var/spack/repos/builtin/packages/r-pacman/package.py b/var/spack/repos/builtin/packages/r-pacman/package.py index 20419aa15e5a4d..4b35b19433cb71 100644 --- a/var/spack/repos/builtin/packages/r-pacman/package.py +++ b/var/spack/repos/builtin/packages/r-pacman/package.py @@ -7,20 +7,21 @@ class RPacman(RPackage): - """Tools to more conveniently perform tasks associated with add-on + """Package Management Tool. + + Tools to more conveniently perform tasks associated with add-on packages. pacman conveniently wraps library and package related functions and names them in an intuitive and consistent fashion. It seeks to combine functionality from lower level functions which can speed up workflow.""" - homepage = "https://cloud.r-project.org/package=pacman" - url = "https://cloud.r-project.org/src/contrib/pacman_0.4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pacman" + cran = "pacman" version('0.5.1', sha256='9ec9a72a15eda5b8f727adc877a07c4b36f8372fe7ed80a1bc6c2068dab3ef7c') version('0.5.0', sha256='61294757212ab0aa0153219d7d031f58be6f30ead88d84859001d58caa76603d') version('0.4.1', sha256='fffa72307912cbd5aa5bee0a9b65931500483036ccffb1791dd808eb5eb70362') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.5.0:', type=('build', 'run')) - depends_on('r-devtools', when='@:0.4.6', type=('build', 'run')) - depends_on('r-remotes', when='@0.5.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.5.0:') + depends_on('r-remotes', type=('build', 'run'), when='@0.5.0:') + + depends_on('r-devtools', type=('build', 'run'), when='@:0.4.6') diff --git a/var/spack/repos/builtin/packages/r-paleotree/package.py b/var/spack/repos/builtin/packages/r-paleotree/package.py index 96fcb07503285d..54e61b5fbc2d86 100644 --- a/var/spack/repos/builtin/packages/r-paleotree/package.py +++ b/var/spack/repos/builtin/packages/r-paleotree/package.py @@ -8,14 +8,12 @@ class RPaleotree(RPackage): - """Paleontological and Phylogenetic Analyses of Evolution + """Paleontological and Phylogenetic Analyses of Evolution. Provides tools for transforming, a posteriori time-scaling, and modifying phylogenies containing extinct (i.e. fossil) lineages""" - homepage = "https://github.com/dwbapst/paleotree" - url = "https://cloud.r-project.org/src/contrib/paleotree_3.1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/paleotree" + cran = "paleotree" version('3.3.25', sha256='aa64b9120075581229439227a12db776d052b03eb5f9721692a16a9402ac8712') version('3.3.0', sha256='f8f6b0228dd5290b251cad3a8626689442b5aa793d8f072c8c2c7813a063df90') @@ -25,6 +23,6 @@ class RPaleotree(RPackage): depends_on('r-ape@4.1:', type=('build', 'run')) depends_on('r-phangorn@2.0.0:', type=('build', 'run')) depends_on('r-phytools@0.6-00:', type=('build', 'run')) - depends_on('r-jsonlite', when='@3.3.0:', type=('build', 'run')) - depends_on('r-png', when='@3.3.0:', type=('build', 'run')) - depends_on('r-rcurl', when='@3.3.0:', type=('build', 'run')) + depends_on('r-jsonlite', type=('build', 'run'), when='@3.3.0:') + depends_on('r-png', type=('build', 'run'), when='@3.3.0:') + depends_on('r-rcurl', type=('build', 'run'), when='@3.3.0:') diff --git a/var/spack/repos/builtin/packages/r-pamr/package.py b/var/spack/repos/builtin/packages/r-pamr/package.py index 189b63bf648c05..530f024966d34a 100644 --- a/var/spack/repos/builtin/packages/r-pamr/package.py +++ b/var/spack/repos/builtin/packages/r-pamr/package.py @@ -7,11 +7,11 @@ class RPamr(RPackage): - """Some functions for sample classification in microarrays.""" + """Pam: Prediction Analysis for Microarrays - homepage = "https://cloud.r-project.org/package=pamr" - url = "https://cloud.r-project.org/src/contrib/pamr_1.55.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pamr" + Some functions for sample classification in microarrays.""" + + cran = "pamr" version('1.56.1', sha256='d0e527f2336ee4beee91eefb2a8f0dfa96413d9b5a5841d6fc7ff821e67c9779') version('1.55', sha256='ed910194937a6097ec79234d84777856fd520b111a7c79f7c86dc607169cc3c3') diff --git a/var/spack/repos/builtin/packages/r-pan/package.py b/var/spack/repos/builtin/packages/r-pan/package.py index 2bd38ff8ed72b9..15f3a58b5fd842 100644 --- a/var/spack/repos/builtin/packages/r-pan/package.py +++ b/var/spack/repos/builtin/packages/r-pan/package.py @@ -7,11 +7,16 @@ class RPan(RPackage): - """Multiple imputation for multivariate panel or clustered data.""" + """Multiple imputation for multivariate panel or clustered data. - homepage = "https://cloud.r-project.org/package=pan" - url = "https://cloud.r-project.org/src/contrib/pan_1.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pan" + It provides functions and examples for maximum likelihood estimation for + generalized linear mixed models and Gibbs sampler for multivariate linear + mixed models with incomplete data, as described in Schafer JL (1997) + "Imputation of missing covariates under a multivariate linear mixed model". + Technical report 97-04, Dept. of Statistics, The Pennsylvania State + University.""" + + cran = "pan" version('1.6', sha256='adc0df816ae38bc188bce0aef3aeb71d19c0fc26e063107eeee71a81a49463b6') version('1.4', sha256='e6a83f0799cc9714f5052f159be6e82ececd013d1626f40c828cda0ceb8b76dc') diff --git a/var/spack/repos/builtin/packages/r-parallelly/package.py b/var/spack/repos/builtin/packages/r-parallelly/package.py index c9cba212bef6a8..68bf7eef7eaaa9 100644 --- a/var/spack/repos/builtin/packages/r-parallelly/package.py +++ b/var/spack/repos/builtin/packages/r-parallelly/package.py @@ -7,7 +7,7 @@ class RParallelly(RPackage): - """Enhancing the 'parallel' Package + """Enhancing the 'parallel' Package. Utility functions that enhance the 'parallel' package and support the built-in parallel backends of the 'future' package. For example, @@ -20,8 +20,8 @@ class RParallelly(RPackage): job in setting up remote cluster workers without the need for configuring the firewall to do port-forwarding to your local computer.""" - homepage = "https://github.com/HenrikBengtsson/parallelly" cran = "parallelly" + version('1.30.0', sha256='aab080cb709bab232b2d808053efb2391eeb30a2de9497cbe474c99df89f9f3b') version('1.28.1', sha256='f4ae883b18409adb83c561ed69427e740e1b50bf85ef57f48c3f2edf837cc663') version('1.23.0', sha256='376ce2381587380a4da60f9563710d63084a605f93aa364e9349f2523e83bc08') diff --git a/var/spack/repos/builtin/packages/r-parallelmap/package.py b/var/spack/repos/builtin/packages/r-parallelmap/package.py index e35576305eb341..ae08766914d024 100644 --- a/var/spack/repos/builtin/packages/r-parallelmap/package.py +++ b/var/spack/repos/builtin/packages/r-parallelmap/package.py @@ -7,7 +7,7 @@ class RParallelmap(RPackage): - """Unified Interface to Parallelization Back-Ends + """Unified Interface to Parallelization Back-Ends. Unified parallelization framework for multiple back-end, designed for internal package and interactive usage. The main operation is a parallel @@ -16,10 +16,9 @@ class RParallelmap(RPackage): later selected by the user to switch on parallel execution for exactly this operation.""" - homepage = "https://github.com/berndbischl/parallelMap" - url = "https://cloud.r-project.org/src/contrib/parallelMap_1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/parallelMap" + cran = "parallelMap" + version('1.5.1', sha256='c108a634a335ed47b0018f532a52b032487e239c5061f939ba32355dfefde7e1') version('1.5.0', sha256='4afa727f4786279718cc799e45e91859a46f5cbc1ee652b0f47ae3b9f9d45e4e') version('1.4', sha256='fb6f15e325f729f1c5218768b17c20909ee857069c6cc5d8df50e1dafe26ed5b') version('1.3', sha256='a52d93572c1b85281e41d8e3c2db97dda5fce96c222e04171b4489ec5000cd08') diff --git a/var/spack/repos/builtin/packages/r-paramhelpers/package.py b/var/spack/repos/builtin/packages/r-paramhelpers/package.py index 5d4d6fd1798ff0..4f329fb30582c9 100644 --- a/var/spack/repos/builtin/packages/r-paramhelpers/package.py +++ b/var/spack/repos/builtin/packages/r-paramhelpers/package.py @@ -7,7 +7,8 @@ class RParamhelpers(RPackage): - """Helpers for Parameters in Black-Box Optimization, Tuning and Machine Learning + """Helpers for Parameters in Black-Box Optimization, Tuning and Machine + Learning. Functions for parameter descriptions and operations in black-box optimization, tuning and machine learning. Parameters can be described @@ -15,16 +16,14 @@ class RParamhelpers(RPackage): general be programmed on. A useful OptPath object (archive) to log function evaluations is also provided.""" - homepage = "https://github.com/berndbischl/ParamHelpers" - url = "https://cloud.r-project.org/src/contrib/ParamHelpers_1.10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ParamHelpers" + cran = "ParamHelpers" version('1.14', sha256='b17652d0a69de3241a69f20be4ad1bfe02c413328a17f3c1ac7b73886a6ba2eb') version('1.12', sha256='b54db9e6608ba530345c380c757a60cb2b78ab08992a890b1a41914ce7abcc14') version('1.11', sha256='1614f4c0842cf822befc01228ab7263417f3423dd6a1dc24347b14f8491637a0') version('1.10', sha256='80629ba62e93b0b706bf2e451578b94fbb9c5b95ff109ecfb5b011bfe0a0fa5b') - depends_on('r-backports', when='@1.11:', type=('build', 'run')) + depends_on('r-backports', type=('build', 'run'), when='@1.11:') depends_on('r-bbmisc@1.10:', type=('build', 'run')) depends_on('r-checkmate@1.8.2:', type=('build', 'run')) - depends_on('r-fastmatch', when='@1.11:', type=('build', 'run')) + depends_on('r-fastmatch', type=('build', 'run'), when='@1.11:') diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py index 5fd479dc0c7eca..3b098309391887 100644 --- a/var/spack/repos/builtin/packages/r-party/package.py +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -7,7 +7,7 @@ class RParty(RPackage): - """A Laboratory for Recursive Partytioning + """A Laboratory for Recursive Partytioning. A computational toolbox for recursive partitioning. The core of the package is ctree(), an implementation of conditional inference trees which embed @@ -26,17 +26,16 @@ class RParty(RPackage): and Strobl et al. (2007) .""" - homepage = "https://cloud.r-project.org/package=party" - url = "https://cloud.r-project.org/src/contrib/party_1.1-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/party" + cran = "party" + version('1.3-9', sha256='29a1fefdb86369285ebf5d48ab51268a83e2011fb9d9f609a2250b5f0b169089') version('1.3-5', sha256='1c3a35d3fe56498361542b3782de2326561c14a8fa1b76f3c9f13beb1fd51364') version('1.3-3', sha256='9f72eea02d43a4cee105790ae7185b0478deb6011ab049cc9d31a0df3abf7ce9') version('1.3-2', sha256='9f350fa21114151c49bccc3d5f8536dbc5a608cfd88f60461c9805a4c630510b') version('1.1-2', sha256='c3632b4b02dc12ec949e2ee5b24004e4a4768b0bc9737432e9a85acbc2ed0e74') - depends_on('r@2.14.0:', when='@:1.2-2', type=('build', 'run')) - depends_on('r@3.0.0:', when='@1.2-3:', type=('build', 'run')) + depends_on('r@2.14.0:', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run'), when='@1.2-3:') depends_on('r-mvtnorm@1.0-2:', type=('build', 'run')) depends_on('r-modeltools@0.2-21:', type=('build', 'run')) depends_on('r-strucchange', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-partykit/package.py b/var/spack/repos/builtin/packages/r-partykit/package.py index f9bd323880937e..3d9c8d0e8c836f 100644 --- a/var/spack/repos/builtin/packages/r-partykit/package.py +++ b/var/spack/repos/builtin/packages/r-partykit/package.py @@ -8,7 +8,7 @@ class RPartykit(RPackage): - """A Toolkit for Recursive Partytioning + """A Toolkit for Recursive Partytioning. A toolkit with infrastructure for representing, summarizing, and visualizing tree-structured regression and classification models. This @@ -21,20 +21,19 @@ class RPartykit(RPackage): published by Hothorn and Zeileis (2015) .""" - homepage = "https://partykit.r-forge.r-project.org/partykit" - url = "https://cloud.r-project.org/src/contrib/partykit_1.1-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/partykit" + cran = "partykit" + version('1.2-15', sha256='b2e9454b2f4b9a39c9581c5871462f00acef4eeee5696ce3e32cfa1468d1e3ac') version('1.2-11', sha256='3a83332d782a235cfb5ba60cc8f1c51d46ca5477b22979a614f514d1c951c602') version('1.2-5', sha256='f48e30790f93fa5d03e68e8ce71ce33d009d107d46d45d85da2016b38b27629c') version('1.2-3', sha256='56749b246e283f94ac2ad2cdcfc0a477e05cd44b5e8f6e462c26f4dff818da35') version('1.1-1', sha256='d9f4762690cd85ee4e3dc44f5a14069d10a1900afdfbcdc284d2a94b4a8e8332') depends_on('r@3.1.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.2-11:', type=('build', 'run')) - depends_on('r-libcoin@1.0-0:', when='@1.2-0:', type=('build', 'run')) - depends_on('r-mvtnorm', when='@1.2-0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.2-11:') + depends_on('r-libcoin@1.0-0:', type=('build', 'run'), when='@1.2-0:') + depends_on('r-mvtnorm', type=('build', 'run'), when='@1.2-0:') depends_on('r-survival', type=('build', 'run')) depends_on('r-formula@1.2-1:', type=('build', 'run')) - depends_on('r-inum@1.0-0:', when='@1.2-0:', type=('build', 'run')) - depends_on('r-rpart@4.1-11:', when='@1.2-0:', type=('build', 'run')) + depends_on('r-inum@1.0-0:', type=('build', 'run'), when='@1.2-0:') + depends_on('r-rpart@4.1-11:', type=('build', 'run'), when='@1.2-0:') diff --git a/var/spack/repos/builtin/packages/r-patchwork/package.py b/var/spack/repos/builtin/packages/r-patchwork/package.py index 213bf52d18ede2..8f70d94ed6a8b6 100644 --- a/var/spack/repos/builtin/packages/r-patchwork/package.py +++ b/var/spack/repos/builtin/packages/r-patchwork/package.py @@ -7,7 +7,7 @@ class RPatchwork(RPackage): - """The Composer of Plots + """The Composer of Plots. The 'ggplot2' package provides a strong API for sequentially building up a plot, but does not concern itself with composition of multiple plots. @@ -16,9 +16,7 @@ class RPatchwork(RPackage): operators for combining multiple plots. Other packages that try to address this need (but with a different approach) are 'gridExtra' and 'cowplot'.""" - homepage = "https://patchwork.data-imaginist.com/" - url = "https://cloud.r-project.org/src/contrib/patchwork_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/patchwork" + cran = "patchwork" version('1.1.1', sha256='cf0d7d9f92945729b499d6e343441c55007d5b371206d5389b9e5154dc7cf481') diff --git a/var/spack/repos/builtin/packages/r-pathview/package.py b/var/spack/repos/builtin/packages/r-pathview/package.py index 01e113701b5eb2..91903fb433fc5e 100644 --- a/var/spack/repos/builtin/packages/r-pathview/package.py +++ b/var/spack/repos/builtin/packages/r-pathview/package.py @@ -7,7 +7,7 @@ class RPathview(RPackage): - """a tool set for pathway based data integration and visualization + """a tool set for pathway based data integration and visualization. Pathview is a tool set for pathway based data integration and visualization. It maps and renders a wide variety of biological data on @@ -18,9 +18,9 @@ class RPathview(RPackage): seamlessly integrates with pathway and gene set (enrichment) analysis tools for large-scale and fully automated analysis.""" - homepage = "https://bioconductor.org/packages/pathview" - git = "https://git.bioconductor.org/packages/pathview.git" + bioc = "pathview" + version('1.34.0', commit='a8788902a3bb047f8ee785966e57f84596076bbd') version('1.30.1', commit='a6a32395db408798cb076894678e90148bae6bf4') version('1.24.0', commit='e4401c1425c980ce2e6e478a4602a9f6d36ccd8d') version('1.22.3', commit='ff86f9e166a5b03bbed1a0ad276778958c3045ce') diff --git a/var/spack/repos/builtin/packages/r-pbapply/package.py b/var/spack/repos/builtin/packages/r-pbapply/package.py index 3ca72c8c47e2a1..0d36943f6a71ca 100644 --- a/var/spack/repos/builtin/packages/r-pbapply/package.py +++ b/var/spack/repos/builtin/packages/r-pbapply/package.py @@ -7,7 +7,7 @@ class RPbapply(RPackage): - """Adding Progress Bar to '*apply' Functions + """Adding Progress Bar to '*apply' Functions. A lightweight package that adds progress bar to vectorized R functions ('*apply'). The implementation can easily be added to functions where @@ -15,10 +15,9 @@ class RPbapply(RPackage): progress bar (with percentages or remaining time) can be set through options. Supports several parallel processing backends.""" - homepage = "https://cloud.r-project.org/package=pbapply" - url = "https://cloud.r-project.org/src/contrib/pbapply_1.3-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pbapply" + cran = "pbapply" + version('1.5-0', sha256='effdfee286e5ba9534dc2ac3cee96590a37f5cd2af28c836d00c25ca9f070a55') version('1.4-3', sha256='8fe6287535be766b5a688810e2cc1ca4e668ac6b42b6e832473fe5701133eb21') version('1.4-1', sha256='b3633349181db944e1dfc4422b4728a6562e454117a232cbb51633906cd27cad') version('1.3-4', sha256='cdfdaf9b8aecbe48daac858aecaf65a766b74a363d1eb7cd6ebf27c0549f6552') diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index 479c346828102e..c1e31ced80c4b1 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -8,27 +8,27 @@ class RPbdzmq(RPackage): - """Programming with Big Data -- Interface to 'ZeroMQ' + """Programming with Big Data -- Interface to 'ZeroMQ'. 'ZeroMQ' is a well-known library for high-performance asynchronous - messaging in scalable, distributed applications. This package provides - high level R wrapper functions to easily utilize 'ZeroMQ'. We mainly focus - on interactive client/server programming frameworks. For convenience, a - minimal 'ZeroMQ' library (4.1.0 rc1) is shipped with 'pbdZMQ', which can - be used if no system installation of 'ZeroMQ' is available. A few wrapper + messaging in scalable, distributed applications. This package provides high + level R wrapper functions to easily utilize 'ZeroMQ'. We mainly focus on + interactive client/server programming frameworks. For convenience, a + minimal 'ZeroMQ' library (4.1.0 rc1) is shipped with 'pbdZMQ', which can be + used if no system installation of 'ZeroMQ' is available. A few wrapper functions compatible with 'rzmq' are also provided.""" - homepage = "http://r-pbd.org/" - url = "https://cloud.r-project.org/src/contrib/pbdZMQ_0.2-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pbdZMQ" + cran = "pbdZMQ" + version('0.3-6', sha256='9944c8c44221aed1dbd7763ad9ec52c0ad2611d37bee25971ca16f02e8e8c37b') version('0.3-4', sha256='07794bd6858e093f8b6b879ddd5ab0195449b47a41b70cab2f60603f0a53b129') version('0.3-3', sha256='ae26c13400e2acfb6463ff9b67156847a22ec79f3b53baf65119efaba1636eca') version('0.3-2', sha256='ece2a2881c662f77126e4801ba4e01c991331842b0d636ce5a2b591b9de3fc37') version('0.2-4', sha256='bfacac88b0d4156c70cf63fc4cb9969a950693996901a4fa3dcd59949ec065f6') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.2.0:', when='@0.2-6:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.3-4:', type=('build', 'run')) - depends_on('r-r6', when='@:0.2-6', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@0.2-6:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.3-4:') depends_on('libzmq@4.0.4:') + + depends_on('r-r6', type=('build', 'run'), when='@:0.2-6') diff --git a/var/spack/repos/builtin/packages/r-pbivnorm/package.py b/var/spack/repos/builtin/packages/r-pbivnorm/package.py index be913dce0c35ad..68f10e7a3cb451 100644 --- a/var/spack/repos/builtin/packages/r-pbivnorm/package.py +++ b/var/spack/repos/builtin/packages/r-pbivnorm/package.py @@ -7,12 +7,11 @@ class RPbivnorm(RPackage): - """ Vectorized Bivariate Normal CDF: + """Vectorized Bivariate Normal CDF. Provides a vectorized R function for calculating probabilities from a standard bivariate normal CDF.""" - homepage = "https://github.com/brentonk/pbivnorm" - cran = "pbivnorm" + cran = "pbivnorm" version('0.6.0', sha256='07c37d507cb8f8d2d9ae51a9a6d44dfbebd8a53e93c242c4378eaddfb1cc5f16') diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 05e6af8a8aaf7a..e367ef099f0128 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -8,7 +8,7 @@ class RPbkrtest(RPackage): """Parametric Bootstrap, Kenward-Roger and Satterthwaite Based Methods for - Test in Mixed Models + Test in Mixed Models. Test in mixed effects models. Attention is on mixed effects models as implemented in the 'lme4' package. For linear mixed models, this package @@ -20,9 +20,7 @@ class RPbkrtest(RPackage): paper by Halehoh and Hojsgaard, (2012, ). Please see 'citation("pbkrtest")' for citation details.""" - homepage = "https://cran.r-project.org/web/packages/pbkrtest/index.html" - url = "https://cloud.r-project.org/src/contrib/pbkrtest_0.4-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pbkrtest" + cran = "pbkrtest" version('0.5.1', sha256='b2a3452003d93890f122423b3f2487dcb6925440f5b8a05578509e98b6aec7c5') version('0.5-0.1', sha256='f56525488c6efe4a5cbf849bf9a82747041478605b166c29bad54e464e46f469') @@ -31,13 +29,13 @@ class RPbkrtest(RPackage): version('0.4-4', sha256='a685392ef3fca0ddc2254f6cc9bba6bc22b298fa823359fc4515e64e753abd31') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.2.3:', when='@0.4-6:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.5-0.1:', type=('build', 'run')) + 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-lme4@1.1-10:', type=('build', 'run')) - depends_on('r-broom', when='@0.5-0.1:', type=('build', 'run')) - depends_on('r-dplyr', when='@0.5-0.1:', type=('build', 'run')) - depends_on('r-magrittr', when='@0.5-0.1:', type=('build', 'run')) + depends_on('r-broom', type=('build', 'run'), when='@0.5-0.1:') + depends_on('r-dplyr', type=('build', 'run'), when='@0.5-0.1:') + depends_on('r-magrittr', 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-numderiv', when='@0.5-0.1:', type=('build', 'run')) - depends_on('r-knitr', when='@0.5-0.1:', 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:') diff --git a/var/spack/repos/builtin/packages/r-pcamethods/package.py b/var/spack/repos/builtin/packages/r-pcamethods/package.py index 738f898433f899..4c9f0dc07932a5 100644 --- a/var/spack/repos/builtin/packages/r-pcamethods/package.py +++ b/var/spack/repos/builtin/packages/r-pcamethods/package.py @@ -7,7 +7,7 @@ class RPcamethods(RPackage): - """A collection of PCA methods + """A collection of PCA methods. Provides Bayesian PCA, Probabilistic PCA, Nipals PCA, Inverse Non-Linear PCA and the conventional SVD PCA. A cluster based method for missing @@ -19,9 +19,9 @@ class RPcamethods(RPackage): Initiated at the Max-Planck Institute for Molecular Plant Physiology, Golm, Germany.""" - homepage = "https://bioconductor.org/packages/pcaMethods" - git = "https://git.bioconductor.org/packages/pcaMethods.git" + bioc = "pcaMethods" + version('1.86.0', commit='9419cfa18c18dfbd1e1194127fd120ab456c3657') version('1.82.0', commit='d500b3363308f1f8ca70625c5cd10cce59b27641') version('1.76.0', commit='5db995330ced37dfd5ddad6ad1d90b4815d3127a') version('1.74.0', commit='1b8f0a5cdfe3664119d0d7e926a2e0fe7320133c') diff --git a/var/spack/repos/builtin/packages/r-pcapp/package.py b/var/spack/repos/builtin/packages/r-pcapp/package.py index 5d87ed716db360..4a5808f0eb518c 100644 --- a/var/spack/repos/builtin/packages/r-pcapp/package.py +++ b/var/spack/repos/builtin/packages/r-pcapp/package.py @@ -7,12 +7,16 @@ class RPcapp(RPackage): - """Provides functions for robust PCA by projection pursuit.""" + """Provides functions for robust PCA by projection pursuit. - homepage = "https://cloud.r-project.org/package=pcaPP" - url = "https://cloud.r-project.org/src/contrib/pcaPP_1.9-72.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pcaPP" + Provides functions for robust PCA by projection pursuit. The methods are + described in Croux et al. (2006) , Croux et al. + (2013) , Todorov and Filzmoser (2013) + .""" + cran = "pcaPP" + + version('1.9-74', sha256='50837b434d67e4b5fcec34c689a9e30c7a9fb94c561b39f24e68a1456ff999b6') version('1.9-73', sha256='ca4566b0babfbe83ef9418283b08a12b3420dc362f93c6562f265df7926b53fc') version('1.9-72.1', sha256='a9e39ee15a650930c07672092f9f0c431807869b68b5471037eb7290a4d65bd5') version('1.9-72', sha256='58bd0bfb5931aecd734801654bac95f28dab6d30fd043c66c5b719b497104844') diff --git a/var/spack/repos/builtin/packages/r-pegas/package.py b/var/spack/repos/builtin/packages/r-pegas/package.py index a1390303a3afc0..300d517161aaf1 100644 --- a/var/spack/repos/builtin/packages/r-pegas/package.py +++ b/var/spack/repos/builtin/packages/r-pegas/package.py @@ -7,24 +7,23 @@ class RPegas(RPackage): - """Population and Evolutionary Genetics Analysis System + """Population and Evolutionary Genetics Analysis System. - Functions for reading, writing, plotting, analysing, and - manipulating allelic and haplotypic data, including from VCF files, - and for the analysis of population nucleotide sequences and - micro-satellites including coalescent analyses, linkage - disequilibrium, population structure (Fst, Amova) and equilibrium - (HWE), haplotype networks, minimum spanning tree and network, and - median-joining networks.""" + Functions for reading, writing, plotting, analysing, and manipulating + allelic and haplotypic data, including from VCF files, and for the analysis + of population nucleotide sequences and micro-satellites including + coalescent analyses, linkage disequilibrium, population structure (Fst, + Amova) and equilibrium (HWE), haplotype networks, minimum spanning tree and + network, and median-joining networks.""" - homepage = "http://ape-package.ird.fr/pegas.html" - url = "https://cloud.r-project.org/src/contrib/pegas_0.14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pegas" + cran = "pegas" maintainers = ['dorton21'] + version('1.1', sha256='87ba91a819496dfc3abdcc792ff853a6d49caae6335598a24c23e8851505ed59') version('0.14', sha256='7df90e6c4a69e8dbed2b3f68b18f1975182475bf6f86d4159256b52fd5332053') depends_on('r@3.2.0:', type=('build', 'run')) depends_on('r-ape@5.3-11:', type=('build', 'run')) - depends_on('r-adegenet', type=('build', 'run')) + + depends_on('r-adegenet', type=('build', 'run'), when='@:0.14') diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py index f069d817aebe37..de581bd0e0aa15 100644 --- a/var/spack/repos/builtin/packages/r-permute/package.py +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -7,18 +7,19 @@ class RPermute(RPackage): - """A set of restricted permutation designs for freely exchangeable, line + """Functions for Generating Restricted Permutations of Data. + + A set of restricted permutation designs for freely exchangeable, line transects (time series), and spatial grid designs plus permutation of blocks (groups of samples) is provided. 'permute' also allows split-plot designs, in which the whole-plots or split-plots or both can be - freely-exchangeable or one of the restricted designs. The 'permute' - package is modelled after the permutation schemes of 'Canoco 3.1' - (and later) by Cajo ter Braak.""" + freely-exchangeable or one of the restricted designs. The 'permute' package + is modelled after the permutation schemes of 'Canoco 3.1' (and later) by + Cajo ter Braak.""" - homepage = "https://github.com/gavinsimpson/permute" - url = "https://cloud.r-project.org/src/contrib/permute_0.9-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/permute" + cran = "permute" + version('0.9-7', sha256='eff88ffb579aaeb994e9f8609b776b2d9d9d56bc2879ddf180e3a2ad19f48dc0') version('0.9-5', sha256='d2885384a07497e8df273689d6713fc7c57a7c161f6935f3572015e16ab94865') version('0.9-4', sha256='a541a5f5636ddd67fd856d3e11224f15bc068e96e23aabe3e607a7e7c2fc1cf1') diff --git a/var/spack/repos/builtin/packages/r-pfam-db/package.py b/var/spack/repos/builtin/packages/r-pfam-db/package.py index bdd532213be108..77383836c2a917 100644 --- a/var/spack/repos/builtin/packages/r-pfam-db/package.py +++ b/var/spack/repos/builtin/packages/r-pfam-db/package.py @@ -7,14 +7,17 @@ class RPfamDb(RPackage): - """A set of protein ID mappings for PFAM + """A set of protein ID mappings for PFAM. A set of protein ID mappings for PFAM assembled using data from public repositories.""" - homepage = "https://www.bioconductor.org/packages/PFAM.db/" - url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/PFAM.db_3.4.1.tar.gz" + bioc = "PFAM.db" + url = "https://www.bioconductor.org/packages/3.5/data/annotation/src/contrib/PFAM.db_3.4.1.tar.gz" + version('3.14.0', + sha256='25c1915079e8f93d04e2cc1ab791f7f47813aaab5ac394feaf57520bb292d616', + url='https://bioconductor.org/packages/3.14/data/annotation/src/contrib/PFAM.db_3.14.0.tar.gz') version('3.12.0', sha256='ec42d067522baf2d7d3ca78d4f8cc0dac08a4b98f1d890f52424e5d5b16f2fe9', url='https://bioconductor.org/packages/3.12/data/annotation/src/contrib/PFAM.db_3.12.0.tar.gz') @@ -26,6 +29,7 @@ class RPfamDb(RPackage): url='https://bioconductor.org/packages/3.5/data/annotation/src/contrib/PFAM.db_3.4.1.tar.gz') depends_on('r@2.7.0:', when='@3.4.1:', type=('build', 'run')) - depends_on('r-annotationdbi@1.37.4:', when='@3.4.1:', type=('build', 'run')) - depends_on('r-annotationdbi@1.47.1:', when='@3.10.0:', type=('build', 'run')) - depends_on('r-annotationdbi@1.51.3:', when='@3.12.0:', type=('build', 'run')) + depends_on('r-annotationdbi@1.37.4:', type=('build', 'run'), when='@3.4.1:') + depends_on('r-annotationdbi@1.47.1:', type=('build', 'run'), when='@3.10.0:') + depends_on('r-annotationdbi@1.51.3:', type=('build', 'run'), when='@3.12.0:') + depends_on('r-annotationdbi@1.55.1:', type=('build', 'run'), when='@3.14.0:') diff --git a/var/spack/repos/builtin/packages/r-phangorn/package.py b/var/spack/repos/builtin/packages/r-phangorn/package.py index 57e0cd8bf45b6e..f87ac2dcc87f1b 100644 --- a/var/spack/repos/builtin/packages/r-phangorn/package.py +++ b/var/spack/repos/builtin/packages/r-phangorn/package.py @@ -7,24 +7,30 @@ class RPhangorn(RPackage): - """Package contains methods for estimation of phylogenetic trees and - networks using Maximum Likelihood, Maximum Parsimony, distance methods - and Hadamard conjugation. Allows to compare trees, models selection and - offers visualizations for trees and split networks.""" + """Phylogenetic Reconstruction and Analysis. - homepage = "https://cloud.r-project.org/package=phangorn" - url = "https://cloud.r-project.org/src/contrib/phangorn_2.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/phangorn" + Allows for estimation of phylogenetic trees and networks using Maximum + Likelihood, Maximum Parsimony, distance methods and Hadamard conjugation. + Offers methods for tree comparison, model selection and visualization of + phylogenetic networks as described in Schliep et al. (2017) + .""" + cran = "phangorn" + + version('2.8.1', sha256='6d471410ae29775104a94746936e8c1c54c7273dd289333973ec06dad489dc75') version('2.5.5', sha256='c58dc1ace26cb4358619a15da3ea4765dbdde1557acccc5103c85589a7571346') version('2.5.3', sha256='a306585a0aabe7360a2adaf9116ae2993fb5ceff641b198f2e01e4329d3768af') version('2.3.1', sha256='518c31f5b2c5f0a655d02a3c71b00c30caea2794dfc31f9d63f3d505bd7863eb') depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@4.1.0:', type=('build', 'run'), when='@2.8.1:') depends_on('r-ape@5.0:', type=('build', 'run')) - depends_on('r-quadprog', type=('build', 'run')) + depends_on('r-ape@5.5:', type=('build', 'run'), when='@2.8.1:') + depends_on('r-fastmatch', type=('build', 'run')) depends_on('r-igraph@1.0:', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) - depends_on('r-fastmatch', type=('build', 'run')) - depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-rcpp@0.12.0:', type=('build', 'run')) + depends_on('r-quadprog', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + + depends_on('r-rcpp@0.12.0:', type=('build', 'run'), when='@:2.5.5') + depends_on('r-magrittr', type=('build', 'run'), when='@:2.5.5') diff --git a/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py b/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py index 87d80217e4ddbe..5a2e56ce692f95 100644 --- a/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py +++ b/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class RPhantompeakqualtools(RPackage): @@ -18,6 +19,11 @@ class RPhantompeakqualtools(RPackage): version('1.14', sha256='d03be6163e82aed72298e54a92c181570f9975a395f57a69b21ac02b1001520b') depends_on('boost@1.41.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('r-catools', type=('build', 'run')) depends_on('r-snow', type=('build', 'run')) depends_on('r-snowfall', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-pheatmap/package.py b/var/spack/repos/builtin/packages/r-pheatmap/package.py index e125943bb562be..0a07af4629c314 100644 --- a/var/spack/repos/builtin/packages/r-pheatmap/package.py +++ b/var/spack/repos/builtin/packages/r-pheatmap/package.py @@ -7,14 +7,12 @@ class RPheatmap(RPackage): - """Pretty Heatmaps + """Pretty Heatmaps. Implementation of heatmaps that offers more control over dimensions and appearance.""" - homepage = "https://cloud.r-project.org/package=pheatmap" - url = "https://cloud.r-project.org/src/contrib/pheatmap_1.0.12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pheatmap" + cran = "pheatmap" version('1.0.12', sha256='579d96ee0417203b85417780eca921969cda3acc210c859bf9dfeff11539b0c1') diff --git a/var/spack/repos/builtin/packages/r-philentropy/package.py b/var/spack/repos/builtin/packages/r-philentropy/package.py index 5f92cee6b44b5f..0acee8f19eb45f 100644 --- a/var/spack/repos/builtin/packages/r-philentropy/package.py +++ b/var/spack/repos/builtin/packages/r-philentropy/package.py @@ -7,7 +7,9 @@ class RPhilentropy(RPackage): - """Computes 46 optimized distance and similarity measures for comparing + """Similarity and Distance Quantification Between Probability Functions. + + Computes 46 optimized distance and similarity measures for comparing probability functions (Drost (2018) ). These comparisons between probability functions have their foundations in a broad range of scientific disciplines from mathematics to ecology. The aim of @@ -16,13 +18,15 @@ class RPhilentropy(RPackage): information theory, and machine learning tasks that are based on comparing univariate or multivariate probability functions.""" - homepage = "https://github.com/HajkD/philentropy" - url = "https://cloud.r-project.org/src/contrib/philentropy_0.4.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/philentropy" + cran = "philentropy" + version('0.6.0', sha256='138acf2aedab17c9d367def378e35c8aba80d9e786284b2866955cea1c24eeb6') + version('0.5.0', sha256='b39e9a825458f3377e23b2a133180566780e89019e9d22a6a5b7ca87c49c412f') version('0.4.0', sha256='bfd30bf5635aab6a82716299a87d44cf96c7ab7f4ee069843869bcc85c357127') depends_on('r@3.1.2:', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) - depends_on('r-dplyr', type=('build', 'run')) depends_on('r-kernsmooth', type=('build', 'run')) + depends_on('r-poorman', type=('build', 'run'), when='@0.6.0:') + + depends_on('r-dplyr', type=('build', 'run'), when='@:0.5.0') diff --git a/var/spack/repos/builtin/packages/r-phylobase/package.py b/var/spack/repos/builtin/packages/r-phylobase/package.py index a81113eaacdd7e..9279cac7a63739 100644 --- a/var/spack/repos/builtin/packages/r-phylobase/package.py +++ b/var/spack/repos/builtin/packages/r-phylobase/package.py @@ -7,15 +7,12 @@ class RPhylobase(RPackage): - """phylobase: Base Package for Phylogenetic Structures and Comparative - Data. + """Base Package for Phylogenetic Structures and Comparative Data. - Provides a base S4 class for comparative methods, incorporating one or - more trees and trait data.""" + Provides a base S4 class for comparative methods, incorporating one or more + trees and trait data.""" - homepage = "https://github.com/fmichonneau/phylobase" - url = "https://cloud.r-project.org/src/contrib/phylobase_0.8.10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/phylobase" + cran = "phylobase" version('0.8.10', sha256='5a44380ff49bab333a56f6f96157324ade8afb4af0730e013194c4badb0bf94b') diff --git a/var/spack/repos/builtin/packages/r-phyloseq/package.py b/var/spack/repos/builtin/packages/r-phyloseq/package.py index 4eeb573557ee8c..339db4c4faff94 100644 --- a/var/spack/repos/builtin/packages/r-phyloseq/package.py +++ b/var/spack/repos/builtin/packages/r-phyloseq/package.py @@ -7,14 +7,14 @@ class RPhyloseq(RPackage): - """Handling and analysis of high-throughput microbiome census data + """Handling and analysis of high-throughput microbiome census data. phyloseq provides a set of classes and tools to facilitate the import, storage, analysis, and graphical display of microbiome census data.""" - homepage = "https://bioconductor.org/packages/phyloseq" - git = "https://git.bioconductor.org/packages/phyloseq.git" + bioc = "phyloseq" + version('1.38.0', commit='1e2409a6ed3c23e308275098c2dc9fdba9d5e5f6') version('1.34.0', commit='cbed93ead5528fe9024d646c597dab9fc95952d3') version('1.28.0', commit='a86ed1e0a650fdf80bee5a0a5a82aaa5a276178d') version('1.26.1', commit='a084072bc9e057b90adfbd59e27db2a1ecee151c') @@ -23,19 +23,19 @@ class RPhyloseq(RPackage): version('1.20.0', commit='107d1d5e3437a6e33982c06a548d3cc91df2a7e0') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@1.22.3', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@1.22.3') depends_on('r-ade4@1.7.4:', type=('build', 'run')) depends_on('r-ape@3.4:', type=('build', 'run')) - depends_on('r-ape@5.0:', when='@1.22.3:', type=('build', 'run')) + depends_on('r-ape@5.0:', type=('build', 'run'), when='@1.22.3:') depends_on('r-biobase', type=('build', 'run')) - depends_on('r-biobase@2.36.2:', when='@1.22.3:', type=('build', 'run')) + depends_on('r-biobase@2.36.2:', type=('build', 'run'), when='@1.22.3:') depends_on('r-biocgenerics@0.18.0:', type=('build', 'run')) - depends_on('r-biocgenerics@0.22.0:', when='@1.22.3:', type=('build', 'run')) + depends_on('r-biocgenerics@0.22.0:', type=('build', 'run'), when='@1.22.3:') depends_on('r-biomformat@1.0.0:', type=('build', 'run')) depends_on('r-biostrings@2.40.0:', type=('build', 'run')) depends_on('r-cluster@2.0.4:', type=('build', 'run')) depends_on('r-data-table@1.9.6:', type=('build', 'run')) - depends_on('r-data-table@1.10.4:', when='@1.22.3:', type=('build', 'run')) + depends_on('r-data-table@1.10.4:', type=('build', 'run'), when='@1.22.3:') depends_on('r-foreach@1.4.3:', type=('build', 'run')) depends_on('r-ggplot2@2.1.0:', type=('build', 'run')) depends_on('r-igraph@1.0.1:', type=('build', 'run')) @@ -44,5 +44,5 @@ class RPhyloseq(RPackage): depends_on('r-reshape2@1.4.1:', type=('build', 'run')) depends_on('r-scales@0.4.0:', type=('build', 'run')) depends_on('r-vegan@2.3.5:', type=('build', 'run')) - depends_on('r-vegan@2.4:', when='@1.22.3:', type=('build', 'run')) - depends_on('r-vegan@2.5:', when='@1.24.2:', type=('build', 'run')) + depends_on('r-vegan@2.4:', type=('build', 'run'), when='@1.22.3:') + depends_on('r-vegan@2.5:', type=('build', 'run'), when='@1.24.2:') diff --git a/var/spack/repos/builtin/packages/r-phytools/package.py b/var/spack/repos/builtin/packages/r-phytools/package.py index 2642ae71aa23a7..a9c6f95ba8c223 100644 --- a/var/spack/repos/builtin/packages/r-phytools/package.py +++ b/var/spack/repos/builtin/packages/r-phytools/package.py @@ -7,7 +7,7 @@ class RPhytools(RPackage): - """Phylogenetic Tools for Comparative Biology (and Other Things) + """Phylogenetic Tools for Comparative Biology (and Other Things). A wide range of functions for phylogenetic analysis. Functionality is concentrated in phylogenetic comparative biology, but also includes @@ -28,23 +28,21 @@ class RPhytools(RPackage): range of models, and for a wide variety of other manipulations and analyses that phylogenetic biologists might find useful in their research.""" - homepage = "https://github.com/liamrevell/phytools" - url = "https://cloud.r-project.org/src/contrib/phytools_0.6-60.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/phytools/" + cran = "phytools" + version('1.0-1', sha256='b7bf5d35ec4205115112481f6761de3e276e6b086a3e5249621ad63aa23a1ac8') version('0.7-70', sha256='e3432c3b006e5cc6f1292bebd81ebc20044edf1f56c3d27a3497f738eb99f0d3') version('0.6-99', sha256='2ef532cba77c5f73803bd34582bef05709705311a0b50e42316e69944567390f') version('0.6-60', sha256='55cad759510d247ebbf03a53a46caddadd3bf87584ccf7fcd6dd06d44516b377') depends_on('r@3.2.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.7-70:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.7-70:') depends_on('r-ape@4.0:', type=('build', 'run')) depends_on('r-maps', type=('build', 'run')) depends_on('r-clustergeneration', type=('build', 'run')) depends_on('r-coda', type=('build', 'run')) depends_on('r-combinat', type=('build', 'run')) depends_on('r-expm', type=('build', 'run')) - depends_on('r-gtools', when='@0.6-99:', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) depends_on('r-mnormt', type=('build', 'run')) depends_on('r-nlme', type=('build', 'run')) @@ -52,4 +50,6 @@ class RPhytools(RPackage): 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', when='@:0.6-99', 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') diff --git a/var/spack/repos/builtin/packages/r-picante/package.py b/var/spack/repos/builtin/packages/r-picante/package.py index 570ac8b70bf5db..8b59aa9b0d9a75 100644 --- a/var/spack/repos/builtin/packages/r-picante/package.py +++ b/var/spack/repos/builtin/packages/r-picante/package.py @@ -7,7 +7,7 @@ class RPicante(RPackage): - """R tools for integrating phylogenies and ecology + """R tools for integrating phylogenies and ecology. Functions for phylocom integration, community analyses, null-models, traits and evolution. Implements numerous ecophylogenetic approaches including @@ -18,9 +18,7 @@ class RPicante(RPackage): functionality and methods are provided by Kembel et al. (2010) .""" - homepage = "https://cloud.r-project.org/package=picante" - url = "https://cloud.r-project.org/src/contrib/picante_1.6-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/picante" + cran = "picante" version('1.8.2', sha256='56565ca7f7c37f49c961372a816724967c21a4f5025cd69b8b671122bfdc4aa7') version('1.8', sha256='81a6308dbb53c9cdab30c1f9ac727abee76314351823b3a2142c21ed8e1498ad') diff --git a/var/spack/repos/builtin/packages/r-pillar/package.py b/var/spack/repos/builtin/packages/r-pillar/package.py index 86c4e070317785..3dc9c7b8a81dce 100644 --- a/var/spack/repos/builtin/packages/r-pillar/package.py +++ b/var/spack/repos/builtin/packages/r-pillar/package.py @@ -7,14 +7,15 @@ class RPillar(RPackage): - """Coloured Formatting for Columns + """Coloured Formatting for Columns. Provides a 'pillar' generic designed for formatting columns of data using the full range of colours provided by modern terminals.""" - homepage = "https://cloud.r-project.org/package=pillar" cran = "pillar" + version('1.7.0', sha256='7841f89658cc8935568c0ff24dc480b4481bac896de2f6447050abc4360a13bb') + version('1.6.5', sha256='22fbf1ba0677fbd15cb35729fe4e97fab751a4c1de3eb8a4694f86b2be411bdb') version('1.6.4', sha256='033a92a271ddeec2a17323d070de8257b9ca4d57f5be6181e2ad35fe7e1ea19e') version('1.4.7', sha256='cdedb2b2a4854e917f43b0c6379efefda9d7ff4e58dec2a3159a80ee8288f298') version('1.4.2', sha256='bababb76b6db06dc32ccd947dbad6c164a1749ff5b558c6783ad03570f010825') @@ -30,13 +31,15 @@ class RPillar(RPackage): version('1.0.0', sha256='7478d0765212c5f0333b8866231a6fe350393b7fa49840e6fed3516ac64540dc') depends_on('r-cli', type=('build', 'run')) + depends_on('r-cli@2.3.0:', type=('build', 'run'), when='@1.7.0:') depends_on('r-crayon@1.3.4:', type=('build', 'run')) - depends_on('r-ellipsis', when='@1.4.7:', type=('build', 'run')) - depends_on('r-ellipsis@0.3.2', when='@1.6.1:', type=('build', 'run')) + depends_on('r-ellipsis', type=('build', 'run'), when='@1.4.7:') + depends_on('r-ellipsis@0.3.2', type=('build', 'run'), when='@1.6.1:') depends_on('r-fansi', type=('build', 'run')) - depends_on('r-lifecycle', when='@1.4.7:', type=('build', 'run')) + depends_on('r-glue', type=('build', 'run'), when='@1.6.5:') + depends_on('r-lifecycle', type=('build', 'run'), when='@1.4.7:') depends_on('r-rlang@0.3.0:', type=('build', 'run')) depends_on('r-utf8@1.1.0:', type=('build', 'run')) - depends_on('r-vctrs', when='@1.4.0:', type=('build', 'run')) - depends_on('r-vctrs@0.2.0:', when='@1.4.7:', type=('build', 'run')) - depends_on('r-vctrs@0.3.8:', when='@1.6.1:', type=('build', 'run')) + depends_on('r-vctrs', type=('build', 'run'), when='@1.4.0:') + depends_on('r-vctrs@0.2.0:', type=('build', 'run'), when='@1.4.7:') + depends_on('r-vctrs@0.3.8:', type=('build', 'run'), when='@1.6.1:') diff --git a/var/spack/repos/builtin/packages/r-pinfsc50/package.py b/var/spack/repos/builtin/packages/r-pinfsc50/package.py index 3418399b472c9d..18621620730b30 100644 --- a/var/spack/repos/builtin/packages/r-pinfsc50/package.py +++ b/var/spack/repos/builtin/packages/r-pinfsc50/package.py @@ -8,15 +8,14 @@ class RPinfsc50(RPackage): """Sequence ('FASTA'), Annotation ('GFF') and Variants ('VCF') for 17 - Samples of 'P. Infestans" and 1 'P. Mirabilis' + Samples of 'P. Infestans" and 1 'P. Mirabilis'. - Genomic data for the plant pathogen "Phytophthora infestans." It includes - a variant file ('VCF'), a sequence file ('FASTA') and an annotation file + Genomic data for the plant pathogen "Phytophthora infestans." It includes a + variant file ('VCF'), a sequence file ('FASTA') and an annotation file ('GFF'). This package is intended to be used as example data for packages that work with genomic data.""" - homepage = "https://cloud.r-project.org/web/packages/pinfsc50/index.html" - cran = "pinfsc50" + cran = "pinfsc50" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-pixmap/package.py b/var/spack/repos/builtin/packages/r-pixmap/package.py index 6619389163c1dc..dfbe6aacafb3fe 100644 --- a/var/spack/repos/builtin/packages/r-pixmap/package.py +++ b/var/spack/repos/builtin/packages/r-pixmap/package.py @@ -7,13 +7,12 @@ class RPixmap(RPackage): - """Bitmap Images ("Pixel Maps") + """Bitmap Images ("Pixel Maps"). Functions for import, export, plotting and other manipulations of bitmapped images.""" - homepage = "https://cloud.r-project.org/package=pixmap" - url = "https://cloud.r-project.org/src/contrib/pixmap_0.4-11.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pixmap" + cran = "pixmap" + 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 46194da749e3fb..7869f0d6a0848f 100644 --- a/var/spack/repos/builtin/packages/r-pkgbuild/package.py +++ b/var/spack/repos/builtin/packages/r-pkgbuild/package.py @@ -7,24 +7,23 @@ class RPkgbuild(RPackage): - """Find Tools Needed to Build R Packages + """Find Tools Needed to Build R Packages. Provides functions used to build R packages. Locates compilers needed to build R packages on various platforms and ensures the PATH is configured appropriately so R can use them.""" - homepage = "https://cloud.r-project.org/package=pkgbuild" - url = "https://cloud.r-project.org/src/contrib/pkgbuild_1.0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pkgbuild/" + cran = "pkgbuild" + version('1.3.1', sha256='7c6a82d1e6b19e136a7d16095743c50cd7b6340eeda594e4a8e14d74972ddb48') version('1.2.0', sha256='2e19308d3271fefd5e118c6d132d6a2511253b903620b5417892c72d2010a963') version('1.0.8', sha256='b149fcf3e98ef148945ff9f4272512cd03e21408c235ec6c0548167fd41219a1') version('1.0.4', sha256='2934efa5ff9ccfe1636d360aedec36713f3bb3128a493241dbb728d842ea3b5f') version('1.0.3', sha256='c93aceb499886e42bcd61eb7fb59e47a76c9ba5ab5349a426736d46c8ce21f4d') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r-callr@2.0.0:', when='@:1.0.3', type=('build', 'run')) - depends_on('r-callr@3.2.0:', when='@1.0.4:', type=('build', 'run')) + 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-crayon', type=('build', 'run')) depends_on('r-desc', type=('build', 'run')) @@ -32,3 +31,4 @@ class RPkgbuild(RPackage): 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:') diff --git a/var/spack/repos/builtin/packages/r-pkgcache/package.py b/var/spack/repos/builtin/packages/r-pkgcache/package.py new file mode 100644 index 00000000000000..bedd98d3d10f4b --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pkgcache/package.py @@ -0,0 +1,35 @@ +# Copyright 2013-2022 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 import * + + +class RPkgcache(RPackage): + """Cache 'CRAN'-Like Metadata and R Packages. + + Metadata and package cache for CRAN-like repositories. This is a utility + package to be used by package management tools that want to take advantage + of caching.""" + + cran = "pkgcache" + + version('1.3.0', sha256='bd5f460a3bee9fc1298cf9f747bc59a6b9fbed90e92454bc6ea6bf82c15b9471') + + depends_on('r@3.1:', type=('build', 'run')) + depends_on('r-assertthat', type=('build', 'run')) + depends_on('r-callr@2.0.4.9000:', type=('build', 'run')) + depends_on('r-cli@2.0.0:', type=('build', 'run')) + depends_on('r-curl@3.2:', type=('build', 'run')) + depends_on('r-digest', type=('build', 'run')) + depends_on('r-filelock', type=('build', 'run')) + depends_on('r-glue', 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-rlang', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run')) + depends_on('r-uuid', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-pkgconfig/package.py b/var/spack/repos/builtin/packages/r-pkgconfig/package.py index 6aa35856ae5799..09967bed00c45f 100644 --- a/var/spack/repos/builtin/packages/r-pkgconfig/package.py +++ b/var/spack/repos/builtin/packages/r-pkgconfig/package.py @@ -7,14 +7,12 @@ class RPkgconfig(RPackage): - """Private Configuration for 'R' Packages + """Private Configuration for 'R' Packages. Set configuration options on a per-package basis. Options set by a given package only apply to that package, other packages are unaffected.""" - homepage = "https://cloud.r-project.org/package=pkgconfig" - url = "https://cloud.r-project.org/src/contrib/pkgconfig_2.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pkgconfig" + cran = "pkgconfig" version('2.0.3', sha256='330fef440ffeb842a7dcfffc8303743f1feae83e8d6131078b5a44ff11bc3850') version('2.0.2', sha256='25997754d1adbe7a251e3bf9879bb52dced27dd8b84767d558f0f644ca8d69ca') diff --git a/var/spack/repos/builtin/packages/r-pkgdepends/package.py b/var/spack/repos/builtin/packages/r-pkgdepends/package.py new file mode 100644 index 00000000000000..bb4c27a0298438 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pkgdepends/package.py @@ -0,0 +1,44 @@ +# Copyright 2013-2022 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 import * + + +class RPkgdepends(RPackage): + """Package Dependency Resolution and Downloads. + + Find recursive dependencies of 'R' packages from various sources. Solve the + dependencies to obtain a consistent set of packages to install. Download + packages, and install them. It supports packages on 'CRAN', 'Bioconductor' + and other 'CRAN-like' repositories, 'GitHub', package 'URLs', and local + package trees and files. It caches metadata and package files via the + 'pkgcache' package, and performs all 'HTTP' requests, downloads, builds and + installations in parallel. 'pkgdepends' is the workhorse of the 'pak' + package.""" + + cran = "pkgdepends" + + version('0.2.0', sha256='59afdbe0e59663088ba4facac5cd011a0a05b0b9c540103fb8b9f0a673bf4d94') + + depends_on('r-callr@3.3.1:', type=('build', 'run')) + depends_on('r-cli@2.1.0:', type=('build', 'run')) + depends_on('r-crayon', type=('build', 'run')) + depends_on('r-curl', type=('build', 'run')) + depends_on('r-desc@1.2.0:', type=('build', 'run')) + 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-prettyunits@1.1.1:', type=('build', 'run')) + depends_on('r-processx@3.4.2:', type=('build', 'run')) + depends_on('r-ps', type=('build', 'run')) + depends_on('r-rematch2', type=('build', 'run')) + depends_on('r-rprojroot', type=('build', 'run')) + depends_on('r-r6', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run')) + depends_on('r-withr@2.1.1:', type=('build', 'run')) + depends_on('r-zip@2.1.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-pkgload/package.py b/var/spack/repos/builtin/packages/r-pkgload/package.py index 1f0cb4049c5573..5f31c309fddf63 100644 --- a/var/spack/repos/builtin/packages/r-pkgload/package.py +++ b/var/spack/repos/builtin/packages/r-pkgload/package.py @@ -7,24 +7,24 @@ class RPkgload(RPackage): - """Simulate Package Installation and Attach + """Simulate Package Installation and Attach. Simulates the process of installing a package and then attaching it. This is a key part of the 'devtools' package as it allows you to rapidly iterate while developing a package.""" - homepage = "https://cloud.r-project.org/package=pkgload" - url = "https://cloud.r-project.org/src/contrib/pkgload_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pkgload/" + cran = "pkgload" + version('1.2.4', sha256='d6912bc824a59ccc9b2895c3cf3b08a3ff310a333888bb8e90d1a6ce754dd90f') version('1.1.0', sha256='189d460dbba2b35fa15dd59ce832df252dfa654a5acee0c9a8471b4d70477b0d') version('1.0.2', sha256='3186564e690fb05eabe76e1ac0bfd4312562c3ac8794b29f8850399515dcf27c') - depends_on('r-cli', when='@1.1.0:', type=('build', 'run')) - depends_on('r-crayon', when='@1.1.0:', type=('build', 'run')) + depends_on('r-cli', type=('build', 'run'), when='@1.1.0:') + depends_on('r-crayon', type=('build', 'run'), when='@1.1.0:') depends_on('r-desc', type=('build', 'run')) - depends_on('r-pkgbuild', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) depends_on('r-rprojroot', type=('build', 'run')) depends_on('r-rstudioapi', type=('build', 'run')) depends_on('r-withr', type=('build', 'run')) + + depends_on('r-pkgbuild', type=('build', 'run'), when='@:1.1.0') diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py index 9cab569abd27f9..fbcc8793415c99 100644 --- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py +++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py @@ -7,7 +7,7 @@ class RPkgmaker(RPackage): - """Development Utilities for R Packages + """Development Utilities for R Packages. This package provides some low-level utilities to use for package development. It currently provides managers for multiple package specific @@ -17,9 +17,7 @@ class RPkgmaker(RPackage): eventually be packaged separately. It is still under heavy development and changes in the interface(s) are more than likely to happen.""" - homepage = "https://renozao.github.io/pkgmaker" - url = "https://cloud.r-project.org/src/contrib/pkgmaker_0.27.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pkgmaker" + cran = "pkgmaker" version('0.32.2', sha256='ce45b22def771a9c90a414093823e6befe7e23489c500eeccee5154b44d3ef91') version('0.27', sha256='17a289d8f596ba5637b07077b3bff22411a2c2263c0b7de59fe848666555ec6a') @@ -31,7 +29,8 @@ class RPkgmaker(RPackage): depends_on('r-stringr', type=('build', 'run')) depends_on('r-xtable', type=('build', 'run')) depends_on('r-withr', type=('build', 'run')) - depends_on('r-assertthat', when='@0.32.2:', type=('build', 'run')) - depends_on('r-stringi', when='@:0.27', type=('build', 'run')) - depends_on('r-magrittr', when='@:0.27', type=('build', 'run')) - depends_on('r-bibtex@0.4:', when='@:0.27', type=('build', 'run')) + depends_on('r-assertthat', type=('build', 'run'), when='@0.32.2:') + + depends_on('r-stringi', type=('build', 'run'), when='@:0.27') + depends_on('r-magrittr', type=('build', 'run'), when='@:0.27') + depends_on('r-bibtex@0.4:', type=('build', 'run'), when='@:0.27') diff --git a/var/spack/repos/builtin/packages/r-plogr/package.py b/var/spack/repos/builtin/packages/r-plogr/package.py index 4361223f74626e..5464c7c16990b4 100644 --- a/var/spack/repos/builtin/packages/r-plogr/package.py +++ b/var/spack/repos/builtin/packages/r-plogr/package.py @@ -7,13 +7,12 @@ class RPlogr(RPackage): - """A simple header-only logging library for C++. Add - 'LinkingTo: plogr' to 'DESCRIPTION', and '#include ' - in your C++ modules to use it.""" + """The 'plog' C++ Logging Library. - homepage = "https://cloud.r-project.org/package=plogr" - url = "https://cloud.r-project.org/src/contrib/plogr_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/plogr" + A simple header-only logging library for C++. Add 'LinkingTo: plogr' to + 'DESCRIPTION', and '#include ' in your C++ modules to use it.""" + + cran = "plogr" version('0.2.0', sha256='0e63ba2e1f624005fe25c67cdd403636a912e063d682eca07f2f1d65e9870d29') version('0.1-1', sha256='22755c93c76c26252841f43195df31681ea865e91aa89726010bd1b9288ef48f') diff --git a/var/spack/repos/builtin/packages/r-plot3d/package.py b/var/spack/repos/builtin/packages/r-plot3d/package.py index dac3f2d77a8f77..c3a75f4499c8f3 100644 --- a/var/spack/repos/builtin/packages/r-plot3d/package.py +++ b/var/spack/repos/builtin/packages/r-plot3d/package.py @@ -7,16 +7,15 @@ class RPlot3d(RPackage): - """Plotting Multi-Dimensional Data + """Plotting Multi-Dimensional Data. Functions for viewing 2-D and 3-D data, including perspective plots, slice plots, surface plots, scatter plots, etc. Includes data sets from oceanography.""" - homepage = "https://cloud.r-project.org/package=plot3D" - url = "https://cloud.r-project.org/src/contrib/plot3D_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/plot3D" + cran = "plot3D" + 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 675cfe7b8c090b..3e5698e2b82e99 100644 --- a/var/spack/repos/builtin/packages/r-plotly/package.py +++ b/var/spack/repos/builtin/packages/r-plotly/package.py @@ -7,16 +7,15 @@ class RPlotly(RPackage): - """Create Interactive Web Graphics via 'plotly.js' + """Create Interactive Web Graphics via 'plotly.js'. Create interactive web graphics from 'ggplot2' graphs and/or a custom interface to the (MIT-licensed) JavaScript library 'plotly.js' inspired by the grammar of graphics.""" - homepage = "https://cloud.r-project.org/package=plotly" - url = "https://cloud.r-project.org/src/contrib/plotly_4.7.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/plotly" + cran = "plotly" + version('4.10.0', sha256='bd995c654dbc8c09a84adaba8def99766919e3894caf18b551bb26b2f591389a') version('4.9.3', sha256='d44d1a16d96de28bc2d36f1c897384215eeec44d109546c6e9c2707db0880120') version('4.9.0', sha256='f761148338231f210fd7fe2f8325ffe9cfdaaaeddd7b933b65c44ebb4f85e2cf') version('4.8.0', sha256='78f90282c831bbbb675ed4811fb506a98dd05e37251fabd42ebc263c80bae8a6') @@ -30,7 +29,7 @@ class RPlotly(RPackage): depends_on('r-ggplot2@3.0.0:', type=('build', 'run')) depends_on('r-scales', type=('build', 'run')) depends_on('r-httr', type=('build', 'run')) - depends_on('r-httr@1.3.0:', when='@4.9.3:', type=('build', 'run')) + depends_on('r-httr@1.3.0:', type=('build', 'run'), when='@4.9.3:') depends_on('r-jsonlite@1.6:', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) @@ -38,16 +37,19 @@ class RPlotly(RPackage): depends_on('r-base64enc', type=('build', 'run')) depends_on('r-htmltools@0.3.6:', type=('build', 'run')) depends_on('r-htmlwidgets@1.3:', type=('build', 'run')) - depends_on('r-htmlwidgets@1.5.2.9001:', when='@4.9.3:', type=('build', 'run')) + depends_on('r-htmlwidgets@1.5.2.9001:', type=('build', 'run'), when='@4.9.3:') depends_on('r-tidyr', type=('build', 'run')) - depends_on('r-rcolorbrewer', when='@4.6.0:', type=('build', 'run')) + depends_on('r-tidyr@1.0.0:', type=('build', 'run'), when='@4.10.0:') + depends_on('r-rcolorbrewer', type=('build', 'run'), when='@4.6.0:') depends_on('r-dplyr', type=('build', 'run')) - depends_on('r-vctrs', when='@4.9.3:', type=('build', 'run')) + depends_on('r-vctrs', type=('build', 'run'), when='@4.9.3:') depends_on('r-tibble', type=('build', 'run')) depends_on('r-lazyeval@0.2.0:', type=('build', 'run')) - depends_on('r-rlang', when='@4.8.0:', type=('build', 'run')) - depends_on('r-crosstalk', when='@4.6.0:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@4.8.0:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@4.10.0:') + depends_on('r-crosstalk', type=('build', 'run'), when='@4.6.0:') depends_on('r-purrr', type=('build', 'run')) - depends_on('r-data-table', when='@4.7.0:', type=('build', 'run')) - depends_on('r-promises', when='@4.8.0:', type=('build', 'run')) - depends_on('r-hexbin', when='@:4.9.0', type=('build', 'run')) + depends_on('r-data-table', type=('build', 'run'), when='@4.7.0:') + depends_on('r-promises', type=('build', 'run'), when='@4.8.0:') + + depends_on('r-hexbin', type=('build', 'run'), when='@:4.9.0') diff --git a/var/spack/repos/builtin/packages/r-plotmo/package.py b/var/spack/repos/builtin/packages/r-plotmo/package.py index 29cba0110c235d..d00c376382e843 100644 --- a/var/spack/repos/builtin/packages/r-plotmo/package.py +++ b/var/spack/repos/builtin/packages/r-plotmo/package.py @@ -13,10 +13,9 @@ class RPlotmo(RPackage): plots and other techniques. Also plot model residuals and other information on the model.""" - homepage = "http://www.milbo.users.sonic.net/" - url = "https://cloud.r-project.org/src/contrib/plotmo_3.5.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/plotmo" + cran = "plotmo" + version('3.6.1', sha256='245a0c87f0cca08746c6fdc60da2e3856cd69b1a2b7b5641293c620d4ae04343') version('3.6.0', sha256='c05afcc442f9542868beea5c3c40fb93b049f9b61c42725b2a1e2bc750c241e3') version('3.5.6', sha256='78f08dc897136d21fa8ade2acb6290351b569d29eb0592c7074c0be3cf2aa594') diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 88721cc64a4de8..67f155cee26d37 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -7,18 +7,17 @@ class RPlotrix(RPackage): - """Various Plotting Functions + """Various Plotting Functions. Lots of plots, various labeling, axis and color scaling functions.""" - homepage = "https://cloud.r-project.org/package=plotrix" - url = "https://cloud.r-project.org/src/contrib/plotrix_3.6-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/plotrix" + cran = "plotrix" + version('3.8-2', sha256='bb72953102889cea41cd6521874e35d2458ebd10aab97ba6f262e102cac0bc1f') version('3.7-8', sha256='8ccd1f7e656413b9956cea614c986ce9cc61366deba356afb38cee6672a59480') version('3.7-6', sha256='83d5f7574592953288b4fe39c4c0dd7670d097598ad7f6bddbb0687a32954e46') version('3.7-5', sha256='b22f3f9d93961d23ad46e41597d1e45d2665ced04dcad8c40f6806a67cded14c') version('3.6-4', sha256='883b7d0a00c1b2b418f9167c72ed9e86eca3c9865d34158a7a6ad0b9bf95bff3') version('3.6-3', sha256='217164bdd04405c3280a0c8b2691f289287f9851fa8248648a5ae38f54962741') - depends_on('r@3.5.0:', when='@3.7-6:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.7-6:') diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py index ccf6918d304fe3..13dd0d1f49783b 100644 --- a/var/spack/repos/builtin/packages/r-pls/package.py +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -7,16 +7,15 @@ class RPls(RPackage): - """Partial Least Squares and Principal Component Regression + """Partial Least Squares and Principal Component Regression. Multivariate regression methods Partial Least Squares Regression (PLSR), Principal Component Regression (PCR) and Canonical Powered Partial Least Squares (CPPLS).""" - homepage = "https://cloud.r-project.org/package=pls" - url = "https://cloud.r-project.org/src/contrib/pls_2.6-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pls" + cran = "pls" + version('2.8-0', sha256='eff3a92756ca34cdc1661fa36d2bf7fc8e9f4132d2f1ef9ed0105c83594618bf') version('2.7-3', sha256='8f1d960ab74f05fdd11c4c7a3d30ff9e263fc658f5690b67278ca7c045d0742c') version('2.7-1', sha256='f8fd817fc2aa046970c49a9a481489a3a2aef8b6f09293fb1f0218f00bfd834b') version('2.7-0', sha256='5ddc1249a14d69a7a39cc4ae81595ac8c0fbb1e46c911af67907baddeac35875') diff --git a/var/spack/repos/builtin/packages/r-plyr/package.py b/var/spack/repos/builtin/packages/r-plyr/package.py index dcf19b3f3aad7b..197005cbbc1b6f 100644 --- a/var/spack/repos/builtin/packages/r-plyr/package.py +++ b/var/spack/repos/builtin/packages/r-plyr/package.py @@ -7,7 +7,7 @@ class RPlyr(RPackage): - """Tools for Splitting, Applying and Combining Data + """Tools for Splitting, Applying and Combining Data. A set of tools that solves a common set of problems: you need to break a big problem down into manageable pieces, operate on each piece and then put @@ -17,9 +17,7 @@ class RPlyr(RPackage): development of 'plyr' has been generously supported by 'Becton Dickinson'.""" - homepage = "http://had.co.nz/plyr" - url = "https://cloud.r-project.org/src/contrib/plyr_1.8.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/plyr" + cran = "plyr" version('1.8.6', sha256='ea55d26f155443e9774769531daa5d4c20a0697bb53abd832e891b126c935287') version('1.8.4', sha256='60b522d75961007658c9806f8394db27989f1154727cb0bb970062c96ec9eac5') diff --git a/var/spack/repos/builtin/packages/r-pmcmr/package.py b/var/spack/repos/builtin/packages/r-pmcmr/package.py index 46d361f904c2e8..147c4f059f2129 100644 --- a/var/spack/repos/builtin/packages/r-pmcmr/package.py +++ b/var/spack/repos/builtin/packages/r-pmcmr/package.py @@ -7,24 +7,18 @@ class RPmcmr(RPackage): - """The Kruskal and Wallis one-way analysis of variance by ranks or van - der Waerden's normal score test can be employed, if the data do not - meet the assumptions for one-way ANOVA. Provided that significant - differences were detected by the omnibus test, one may be interested - in applying post-hoc tests for pairwise multiple comparisons (such as - Nemenyi's test, Dunn's test, Conover's test, van der Waerden's test). - Similarly, one-way ANOVA with repeated measures that is also referred - to as ANOVA with unreplicated block design can also be conducted via - the Friedman-Test or the Quade-test. The consequent post-hoc pairwise - multiple comparison tests according to Nemenyi, Conover and Quade are - also provided in this package. Finally Durbin's test for a two-way - balanced incomplete block design (BIBD) is also given in this - package.""" + """Calculate Pairwise Multiple Comparisons of Mean Rank Sums. - homepage = "https://cloud.r-project.org/package=PMCMR" - url = "https://cloud.r-project.org/src/contrib/PMCMR_4.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/PMCMR" + Note, that the 'PMCMR' package is superset by the novel 'PMCMRplus' + package. The 'PMCMRplus' package contains all functions from 'PMCMR' and + many more parametric and non-parametric multiple comparison procedures, + one-factorial trend tests, as well as improved method functions, such as + print, summary and plot. The 'PMCMR' package is no longer maintained, but + kept for compatibility of reverse depending packages for some time.""" + cran = "PMCMR" + + version('4.4', sha256='e7b4d9d595a879a62c9b3bb44c1f95432ad75a6607f84ce6bfc6395fee1dc116') version('4.3', sha256='328a2880dd614dc412e8dca21d29ed9d5eea29ccbe0eff98c8068100856c7b25') version('4.1', sha256='6c164e2976c59ddd27297433a34fa61b1e70b9e26265abdf9c8af1b639d2d555') diff --git a/var/spack/repos/builtin/packages/r-pmcmrplus/package.py b/var/spack/repos/builtin/packages/r-pmcmrplus/package.py new file mode 100644 index 00000000000000..f726daae43a879 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pmcmrplus/package.py @@ -0,0 +1,51 @@ +# Copyright 2013-2022 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 import * + + +class RPmcmrplus(RPackage): + """Calculate Pairwise Multiple Comparisons of Mean Rank Sums Extended. + + For one-way layout experiments the one-way ANOVA can be performed as an + omnibus test. All-pairs multiple comparisons tests (Tukey-Kramer test, + Scheffe test, LSD-test) and many-to-one tests (Dunnett test) for normally + distributed residuals and equal within variance are available. Furthermore, + all-pairs tests (Games-Howell test, Tamhane's T2 test, Dunnett T3 test, + Ury-Wiggins-Hochberg test) and many-to-one (Tamhane-Dunnett Test) for + normally distributed residuals and heterogeneous variances are provided. + Van der Waerden's normal scores test for omnibus, all-pairs and many-to-one + tests is provided for non-normally distributed residuals and homogeneous + variances. The Kruskal-Wallis, BWS and Anderson-Darling omnibus test and + all-pairs tests (Nemenyi test, Dunn test, Conover test, + Dwass-Steele-Critchlow- Fligner test) as well as many-to-one (Nemenyi test, + Dunn test, U-test) are given for the analysis of variance by ranks. + Non-parametric trend tests (Jonckheere test, Cuzick test, Johnson-Mehrotra + test, Spearman test) are included. In addition, a Friedman-test for + one-way ANOVA with repeated measures on ranks (CRBD) and Skillings-Mack + test for unbalanced CRBD is provided with consequent all-pairs tests + (Nemenyi test, Siegel test, Miller test, Conover test, Exact test) and + many-to-one tests (Nemenyi test, Demsar test, Exact test). A trend can be + tested with Pages's test. Durbin's test for a two-way balanced incomplete + block design (BIBD) is given in this package as well as Gore's test for + CRBD with multiple observations per cell is given. Outlier tests, Mandel's + k- and h statistic as well as functions for Type I error and Power analysis + as well as generic summary, print and plot methods are provided.""" + + cran = "PMCMRplus" + + version('1.9.3', sha256='76baba60f57343fa5bb6f6d2ea27aab77178e02b0d2f9d5d74abde7d18994f03') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-mvtnorm@1.0:', type=('build', 'run')) + depends_on('r-multcompview', type=('build', 'run')) + depends_on('r-gmp', type=('build', 'run')) + depends_on('r-rmpfr', type=('build', 'run')) + depends_on('r-suppdists', type=('build', 'run')) + depends_on('r-ksamples@1.2.7:', type=('build', 'run')) + depends_on('r-bwstest@0.2.1:', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('gmp@4.2.3:') + depends_on('mpfr@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-png/package.py b/var/spack/repos/builtin/packages/r-png/package.py index 7ac0fe9cb63a39..5d4f03e5d7b598 100644 --- a/var/spack/repos/builtin/packages/r-png/package.py +++ b/var/spack/repos/builtin/packages/r-png/package.py @@ -7,13 +7,13 @@ class RPng(RPackage): - """This package provides an easy and simple way to read, write and display + """Read and write PNG images. + + This package provides an easy and simple way to read, write and display bitmap images stored in the PNG format. It can read and write both files and in-memory raw vectors.""" - homepage = "https://www.rforge.net/png/" - url = "https://cloud.r-project.org/src/contrib/png_0.1-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/png" + cran = "png" version('0.1-7', sha256='e269ff968f04384fc9421d17cfc7c10cf7756b11c2d6d126e9776f5aca65553c') diff --git a/var/spack/repos/builtin/packages/r-polspline/package.py b/var/spack/repos/builtin/packages/r-polspline/package.py index f03e5c8dd4448c..6d036dc33fab61 100644 --- a/var/spack/repos/builtin/packages/r-polspline/package.py +++ b/var/spack/repos/builtin/packages/r-polspline/package.py @@ -7,15 +7,13 @@ class RPolspline(RPackage): - """Polynomial Spline Routines + """Polynomial Spline Routines. Routines for the polynomial spline fitting routines hazard regression, hazard estimation with flexible tails, logspline, lspec, polyclass, and polymars, by C. Kooperberg and co-authors.""" - homepage = "https://cloud.r-project.org/package=polspline" - url = "https://cloud.r-project.org/src/contrib/polspline_1.1.18.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/polspline" + cran = "polspline" version('1.1.19', sha256='953e3c4d007c3ef86ac2af3c71b272a99e8e35b194bdd58575785558c6711f66') version('1.1.18', sha256='df250ee144bfff154249ba50308f46863107ef3efb2333ad908e599ed0eb0102') diff --git a/var/spack/repos/builtin/packages/r-polyclip/package.py b/var/spack/repos/builtin/packages/r-polyclip/package.py index 631d8c6f7883b1..e201f632ec75e0 100644 --- a/var/spack/repos/builtin/packages/r-polyclip/package.py +++ b/var/spack/repos/builtin/packages/r-polyclip/package.py @@ -7,11 +7,17 @@ class RPolyclip(RPackage): - """polyclip: Polygon Clipping""" + """Polygon Clipping. - homepage = "https://cloud.r-project.org/package=polyclip" - url = "https://cloud.r-project.org/src/contrib/polyclip_1.10-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/polyclip" + R port of Angus Johnson's open source library Clipper. Performs polygon + clipping operations (intersection, union, set minus, set difference) for + polygonal regions of arbitrary complexity, including holes. Computes offset + polygons (spatial buffer zones, morphological dilations, Minkowski + dilations) for polygonal regions and polygonal lines. Computes Minkowski + Sum of general polygons. There is a function for removing + self-intersections from polygon data.""" + + cran = "polyclip" version('1.10-0', sha256='74dabc0dfe5a527114f0bb8f3d22f5d1ae694e6ea9345912909bae885525d34b') diff --git a/var/spack/repos/builtin/packages/r-polynom/package.py b/var/spack/repos/builtin/packages/r-polynom/package.py index 06465843bd4163..ef20f15b9f4cc7 100644 --- a/var/spack/repos/builtin/packages/r-polynom/package.py +++ b/var/spack/repos/builtin/packages/r-polynom/package.py @@ -10,8 +10,6 @@ class RPolynom(RPackage): """A collection of functions to implement a class for univariate polynomial manipulations.""" - homepage = "https://cloud.r-project.org/package=polynom" - url = "https://cloud.r-project.org/src/contrib/polynom_1.4-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/polynom" + cran = "polynom" version('1.4-0', sha256='c5b788b26f7118a18d5d8e7ba93a0abf3efa6603fa48603c70ed63c038d3d4dd') diff --git a/var/spack/repos/builtin/packages/r-pool/package.py b/var/spack/repos/builtin/packages/r-pool/package.py index 53221153398f4c..97aa33a1a4d00c 100644 --- a/var/spack/repos/builtin/packages/r-pool/package.py +++ b/var/spack/repos/builtin/packages/r-pool/package.py @@ -7,14 +7,13 @@ class RPool(RPackage): - """Object Pooling + """Object Pooling. Enables the creation of object pools, which make it less computationally expensive to fetch a new object. Currently the only supported pooled objects are 'DBI' connections.""" - homepage = "https://github.com/rstudio/pool" - cran = "pool" + cran = "pool" version('0.1.6', sha256='cdbe5f6c7f757c01893dc9870df0fb8d300829da0e427f6c2559b01caa52d9e1') diff --git a/var/spack/repos/builtin/packages/r-poorman/package.py b/var/spack/repos/builtin/packages/r-poorman/package.py new file mode 100644 index 00000000000000..7eb3dbb846030b --- /dev/null +++ b/var/spack/repos/builtin/packages/r-poorman/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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 import * + + +class RPoorman(RPackage): + """A Poor Man's Dependency Free Recreation of 'dplyr'. + + A replication of key functionality from 'dplyr' and the wider 'tidyverse' + using only 'base'.""" + + cran = "poorman" + + version('0.2.5', sha256='b92b30ce0f4f02c4fa4a4e90673ef2e0ed8de9b9080dd064506581989fcc0716') + + depends_on('r@3.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-popgenome/package.py b/var/spack/repos/builtin/packages/r-popgenome/package.py index b6ab3286f074f8..2d03c4536ae6dd 100644 --- a/var/spack/repos/builtin/packages/r-popgenome/package.py +++ b/var/spack/repos/builtin/packages/r-popgenome/package.py @@ -7,7 +7,7 @@ class RPopgenome(RPackage): - """An Efficient Swiss Army Knife for Population Genomic Analyses + """An Efficient Swiss Army Knife for Population Genomic Analyses. Provides efficient tools for population genomics data analysis, able to process individual loci, large sets of loci, or whole genomes. PopGenome @@ -16,9 +16,7 @@ class RPopgenome(RPackage): algorithms by other researchers. PopGenome is optimized for speed via the seamless integration of C code.""" - homepage = "https://popgenome.weebly.com" - url = "https://cloud.r-project.org/src/contrib/PopGenome_2.6.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/PopGenome" + cran = "PopGenome" version('2.7.5', sha256='d627b8ac87b4db6038d7349b2df20648d2fcfd48e2dafcd7f4731d1b607cbc75') version('2.7.1', sha256='a84903b151528fa026ccaba42ada22cd89babbc1824afd40269b7204e488a5fa') diff --git a/var/spack/repos/builtin/packages/r-popvar/package.py b/var/spack/repos/builtin/packages/r-popvar/package.py index 45f14f2b87fd84..7234c19ad7aee3 100644 --- a/var/spack/repos/builtin/packages/r-popvar/package.py +++ b/var/spack/repos/builtin/packages/r-popvar/package.py @@ -7,16 +7,26 @@ class RPopvar(RPackage): - """PopVar: Genomic Breeding Tools: Genetic Variance Prediction andCross- - Validation""" + """Genomic Breeding Tools: Genetic Variance Prediction and + Cross-Validation. - homepage = "https://cloud.r-project.org/package=PopVar" - url = "https://cloud.r-project.org/src/contrib/PopVar_1.2.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/PopVar" + The main attribute of 'PopVar' is the prediction of genetic variance in + bi-parental populations, from which the package derives its name. 'PopVar' + contains a set of functions that use phenotypic and genotypic data from a + set of candidate parents to 1) predict the mean, genetic variance, and + superior progeny value of all, or a defined set of pairwise bi-parental + crosses, and 2) perform cross-validation to estimate genome-wide prediction + accuracy of multiple statistical models. More details are available in + Mohammadi, Tiede, and Smith (2015, ). A + dataset 'think_barley.rda' is included for reference and examples.""" + cran = "PopVar" + + version('1.3.0', sha256='3145c41c9aa1588d47aaf76c082e6b1c2fd95cf5014b98bd2867cbf2cec782f9') version('1.2.1', sha256='5e3df79634ab63708a431e4b8e6794675972ac6c58d2bc615726aa0f142f5f25') depends_on('r@3.1.1:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.3.0:') depends_on('r-bglr', type=('build', 'run')) depends_on('r-qtl', type=('build', 'run')) depends_on('r-rrblup', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-posterior/package.py b/var/spack/repos/builtin/packages/r-posterior/package.py index c0725f41dc7ca8..e64678ff2c4b70 100644 --- a/var/spack/repos/builtin/packages/r-posterior/package.py +++ b/var/spack/repos/builtin/packages/r-posterior/package.py @@ -19,9 +19,9 @@ class RPosterior(RPackage): lightweight implementations of state of the art posterior inference diagnostics. References: Vehtari et al. (2021) .""" - homepage = "https://mc-stan.org/posterior/" - cran = "posterior" + cran = "posterior" + version('1.2.0', sha256='2ba01711a98448acc939cf506d22e8ee4cf680cdcea873226671fa8ae6934386') version('1.1.0', sha256='eff6262dbcc1bf18337f535b0c75ba2fe360322e8b170c466e24ed3ee76cf4d2') depends_on('r@3.2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-powerlaw/package.py b/var/spack/repos/builtin/packages/r-powerlaw/package.py index d577b1afc175db..594a5da50c8db4 100644 --- a/var/spack/repos/builtin/packages/r-powerlaw/package.py +++ b/var/spack/repos/builtin/packages/r-powerlaw/package.py @@ -7,22 +7,21 @@ class RPowerlaw(RPackage): - """Analysis of Heavy Tailed Distributions + """Analysis of Heavy Tailed Distributions. An implementation of maximum likelihood estimators for a variety of heavy tailed distributions, including both the discrete and continuous power law distributions. Additionally, a goodness-of-fit based approach is used to estimate the lower cut-off for the scaling region.""" - homepage = "https://github.com/csgillespie/poweRlaw" - url = "https://cloud.r-project.org/src/contrib/poweRlaw_0.70.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/poweRlaw" + cran = "poweRlaw" version('0.70.6', sha256='efc091449c5c6494c1c13c85a8eb95625d1c55ffffebe86c7ea16e4abbafa191') version('0.70.2', sha256='240f1454389b1a00ad483fb63e5b53243cc9367f21a3e7253ab2c293673459ab') version('0.70.1', sha256='15b1b8dadeb550c01b9f1308cfa64720be6fbf56afb80f6a096987d6a0055913') - depends_on('r@3.1.0:', when='@:0.70.1', type=('build', 'run')) - depends_on('r@3.4.0:', when='@0.70.2:', type=('build', 'run')) - depends_on('r-pracma', when='@0.70.6:', type=('build', 'run')) - depends_on('r-vgam', when='@:0.70.2', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@0.70.2:') + depends_on('r-pracma', type=('build', 'run'), when='@0.70.6:') + + depends_on('r-vgam', type=('build', 'run'), when='@:0.70.2') diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py index cccd8acd1b8474..7ffc7cb5355501 100644 --- a/var/spack/repos/builtin/packages/r-prabclus/package.py +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -7,8 +7,8 @@ class RPrabclus(RPackage): - """prabclus: Functions for Clustering of Presence-Absence, Abundance and - Multilocus Genetic Data + """Functions for Clustering of Presence-Absence, Abundance and Multilocus + Genetic Data. Distance-based parametric bootstrap tests for clustering with spatial neighborhood information. Some distance measures, Clustering of @@ -17,9 +17,7 @@ class RPrabclus(RPackage): between communities. Tests whether various distance-based regressions are equal. Try package?prabclus for on overview.""" - homepage = "https://www.homepages.ucl.ac.uk/~ucakche" - url = "https://cloud.r-project.org/src/contrib/prabclus_2.2-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/prabclus" + cran = "prabclus" version('2.3-2', sha256='f421bcbcb557281e0de4a06b15f9a496adb5c640e883c0f7bb12051efc69e441') version('2.3-1', sha256='ef3294767d43bc3f72478fdaf0d1f13c8de18881bf9040c9f1add68af808b3c0') diff --git a/var/spack/repos/builtin/packages/r-pracma/package.py b/var/spack/repos/builtin/packages/r-pracma/package.py index 1653c54a1410af..c2439bed992225 100644 --- a/var/spack/repos/builtin/packages/r-pracma/package.py +++ b/var/spack/repos/builtin/packages/r-pracma/package.py @@ -7,17 +7,16 @@ class RPracma(RPackage): - """Practical Numerical Math Functions + """Practical Numerical Math Functions. Provides a large number of functions from numerical analysis and linear algebra, numerical optimization, differential equations, time series, plus some well-known special mathematical functions. Uses 'MATLAB' function names where appropriate to simplify porting.""" - homepage = "https://cloud.r-project.org/package=pracma" - url = "https://cloud.r-project.org/src/contrib/pracma_2.2.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pracma" + cran = "pracma" + version('2.3.6', sha256='17ac83fd48c9155e00dc3f0433f95723505dc73d046860afd9001866d699b8de') version('2.2.9', sha256='0cea0ff5e88643df121e07b9aebfe57084c61e11801680039752f371fe87bf1e') depends_on('r@3.1.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-praise/package.py b/var/spack/repos/builtin/packages/r-praise/package.py index ac8a1bbefbe60f..eb452fc575ed23 100644 --- a/var/spack/repos/builtin/packages/r-praise/package.py +++ b/var/spack/repos/builtin/packages/r-praise/package.py @@ -7,11 +7,11 @@ class RPraise(RPackage): - """Build friendly R packages that praise their users if they have done + """Praise Users. + + Build friendly R packages that praise their users if they have done something good, or they just need it to feel better.""" - homepage = "https://github.com/gaborcsardi/praise" - url = "https://cloud.r-project.org/src/contrib/praise_1.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/praise" + cran = "praise" version('1.0.0', sha256='5c035e74fd05dfa59b03afe0d5f4c53fbf34144e175e90c53d09c6baedf5debd') diff --git a/var/spack/repos/builtin/packages/r-preprocesscore/package.py b/var/spack/repos/builtin/packages/r-preprocesscore/package.py index 07ecc41c484d02..d635e04b26c2cb 100644 --- a/var/spack/repos/builtin/packages/r-preprocesscore/package.py +++ b/var/spack/repos/builtin/packages/r-preprocesscore/package.py @@ -7,13 +7,13 @@ class RPreprocesscore(RPackage): - """A collection of pre-processing functions + """A collection of pre-processing functions. A library of core preprocessing routines.""" - homepage = "https://bioconductor.org/packages/preprocessCore" - git = "https://git.bioconductor.org/packages/preprocessCore.git" + bioc = "preprocessCore" + version('1.56.0', commit='8f3272219507aa85e0c876fb434dc3b926c22c5d') version('1.52.1', commit='91de4ab67315dc2af68554ae3c48823f4b1ea8ac') version('1.46.0', commit='8cfc3938c1b08424587f437ed6cd2ec43512500e') version('1.44.0', commit='dc1dc61fc562aaff3fd9b11ab0d48c2d6b3a5b81') diff --git a/var/spack/repos/builtin/packages/r-prettydoc/package.py b/var/spack/repos/builtin/packages/r-prettydoc/package.py index 3964d4bd225a3f..0a1dd61a4f760e 100644 --- a/var/spack/repos/builtin/packages/r-prettydoc/package.py +++ b/var/spack/repos/builtin/packages/r-prettydoc/package.py @@ -7,15 +7,14 @@ class RPrettydoc(RPackage): - """Creating Pretty Documents from R Markdown: + """Creating Pretty Documents from R Markdown. Creating tiny yet beautiful documents and vignettes from R Markdown. The package provides the 'html_pretty' output format as an alternative to the 'html_document' and 'html_vignette' engines that convert R Markdown into HTML pages. Various themes and syntax highlight styles are supported.""" - homepage = "https://github.com/yixuan/prettydoc" - cran = "prettydoc" + cran = "prettydoc" version('0.4.1', sha256='1094a69b026238d149435472b4f41c75151c7370a1be6c6332147c88ad4c4829') diff --git a/var/spack/repos/builtin/packages/r-prettyunits/package.py b/var/spack/repos/builtin/packages/r-prettyunits/package.py index 9d5d485e339034..414c6041ab682e 100644 --- a/var/spack/repos/builtin/packages/r-prettyunits/package.py +++ b/var/spack/repos/builtin/packages/r-prettyunits/package.py @@ -7,18 +7,16 @@ class RPrettyunits(RPackage): - """Pretty, Human Readable Formatting of Quantities + """Pretty, Human Readable Formatting of Quantities. Pretty, human readable formatting of quantities. Time intervals: 1337000 -> 15d 11h 23m 20s. Vague time intervals: 2674000 -> about a month ago. Bytes: 1337 -> 1.34 kB.""" - homepage = "https://cloud.r-project.org/package=prettyunits" - url = "https://cloud.r-project.org/src/contrib/prettyunits_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/prettyunits" + cran = "prettyunits" version('1.1.1', sha256='9a199aa80c6d5e50fa977bc724d6e39dae1fc597a96413053609156ee7fb75c5') version('1.0.2', sha256='35a4980586c20650538ae1e4fed4d80fdde3f212b98546fc3c7d9469a1207f5c') - depends_on('r-magrittr', when='@:1.0.2', type=('build', 'run')) - depends_on('r-assertthat', when='@:1.0.2', type=('build', 'run')) + 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 c89e7c637093c3..a66ba3e94f7700 100644 --- a/var/spack/repos/builtin/packages/r-proc/package.py +++ b/var/spack/repos/builtin/packages/r-proc/package.py @@ -7,17 +7,16 @@ class RProc(RPackage): - """Display and Analyze ROC Curves + """Display and Analyze ROC Curves. Tools for visualizing, smoothing and comparing receiver operating characteristic (ROC curves). (Partial) area under the curve (AUC) can be compared with statistical tests based on U-statistics or bootstrap. Confidence intervals can be computed for (p)AUC or ROC curves.""" - homepage = "https://expasy.org/tools/pROC/" - url = "https://cloud.r-project.org/src/contrib/pROC_1.17.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pROC" + cran = "pROC" + version('1.18.0', sha256='d5ef54b384176ece6d6448014ba40570a98181b58fee742f315604addb5f7ba9') version('1.17.0.1', sha256='221c726ffb81b04b999905effccfd3a223cd73cae70d7d86688e2dd30e51a6bd') depends_on('r@2.14:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-processx/package.py b/var/spack/repos/builtin/packages/r-processx/package.py index b9d5c290c801ff..6022618084fc9c 100644 --- a/var/spack/repos/builtin/packages/r-processx/package.py +++ b/var/spack/repos/builtin/packages/r-processx/package.py @@ -7,7 +7,7 @@ class RProcessx(RPackage): - """Execute and Control System Processes + """Execute and Control System Processes. Tools to run system processes in the background. It can check if a background process is running; wait on a background process to finish; get @@ -16,7 +16,6 @@ class RProcessx(RPackage): connections. 'processx' can poll a process for standard output or error, with a timeout. It can also poll several processes at once.""" - homepage = "https://github.com/r-lib/processx" cran = "processx" version('3.5.2', sha256='ed6f2d1047461c6061e6ed58fb6de65a289b56009867892abad76c6bba46fc2b') @@ -29,9 +28,9 @@ class RProcessx(RPackage): version('2.0.0.1', sha256='8f61b2952d0f2d13c74465bfba174ce11eee559475c2f7b9be6bcb9e2e1d827b') version('2.0.0', sha256='8325b56a60a276909228756281523cda9256bc754c5f3ca03b41c5c17cc398ad') - depends_on('r-ps@1.2.0:', when='@3.2.0:', type=('build', 'run')) + depends_on('r-ps@1.2.0:', type=('build', 'run'), when='@3.2.0:') depends_on('r-r6', type=('build', 'run')) - depends_on('r-assertthat', when='@:3.2.9', type=('build', 'run')) - depends_on('r-crayon', when='@:3.2.9', type=('build', 'run')) - depends_on('r-debugme', when='@:3.0.9', type=('build', 'run')) + depends_on('r-assertthat', type=('build', 'run'), when='@:3.2.9') + depends_on('r-crayon', type=('build', 'run'), when='@:3.2.9') + depends_on('r-debugme', type=('build', 'run'), when='@:3.0.9') diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py index b3c8c7b25f2154..f6da27db743fa2 100644 --- a/var/spack/repos/builtin/packages/r-prodlim/package.py +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -7,15 +7,13 @@ class RProdlim(RPackage): - """Product-Limit Estimation for Censored Event History Analysis + """Product-Limit Estimation for Censored Event History Analysis. - Product-Limit Estimation for Censored Event History Analysis. Fast and - user friendly implementation of nonparametric estimators for censored event + Product-Limit Estimation for Censored Event History Analysis. Fast and user + friendly implementation of nonparametric estimators for censored event history (survival) analysis. Kaplan-Meier and Aalen-Johansen method.""" - homepage = "https://cloud.r-project.org/package=prodlim" - url = "https://cloud.r-project.org/src/contrib/prodlim_1.5.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/prodlim" + cran = "prodlim" version('2019.11.13', sha256='6809924f503a14681de84730489cdaf9240d7951c64f5b98ca37dc1ce7809b0f') version('2018.04.18', sha256='4b22b54fdf712439309be0ff74f63cde9080464667b00e19823372ac0fc254ab') diff --git a/var/spack/repos/builtin/packages/r-progress/package.py b/var/spack/repos/builtin/packages/r-progress/package.py index 858356abed8884..97e5a0e352f6ed 100644 --- a/var/spack/repos/builtin/packages/r-progress/package.py +++ b/var/spack/repos/builtin/packages/r-progress/package.py @@ -7,15 +7,14 @@ class RProgress(RPackage): - """Configurable Progress bars, they may include percentage, elapsed time, - and/or the estimated completion time. They work in terminals, in - 'Emacs' 'ESS', 'RStudio', 'Windows' 'Rgui' and the 'macOS' 'R.app'. - The package also provides a 'C++' 'API', that works with or without - 'Rcpp'.""" + """Terminal Progress Bars. - homepage = "https://cloud.r-project.org/package=progress" - url = "https://cloud.r-project.org/src/contrib/progress_1.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/progress" + Configurable Progress bars, they may include percentage, elapsed time, + and/or the estimated completion time. They work in terminals, in 'Emacs' + 'ESS', 'RStudio', 'Windows' 'Rgui' and the 'macOS' 'R.app'. The package + also provides a 'C++' 'API', that works with or without 'Rcpp'.""" + + cran = "progress" version('1.2.2', sha256='b4a4d8ed55db99394b036a29a0fb20b5dd2a91c211a1d651c52a1023cc58ff35') version('1.2.1', sha256='7401e86ff76bef4d26508b74ee8bd169a0377b2738d9ec79ebff0b7fd5c55326') @@ -23,5 +22,5 @@ class RProgress(RPackage): depends_on('r-r6', type=('build', 'run')) depends_on('r-prettyunits', type=('build', 'run')) - depends_on('r-hms', when='@1.2.0:', type=('build', 'run')) - depends_on('r-crayon', when='@1.2.0:', type=('build', 'run')) + depends_on('r-hms', type=('build', 'run'), when='@1.2.0:') + depends_on('r-crayon', 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 new file mode 100644 index 00000000000000..b395c73a895b15 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-progressr/package.py @@ -0,0 +1,35 @@ +# Copyright 2013-2022 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 import * + + +class RProgressr(RPackage): + """An Inclusive, Unifying API for Progress Updates. + + A minimal, unifying API for scripts and packages to report progress updates + from anywhere including when using parallel processing. The package is + designed such that the developer can to focus on what progress should be + reported on without having to worry about how to present it. The end user + has full control of how, where, and when to render these progress updates, + e.g. in the terminal using utils::txtProgressBar() or + progress::progress_bar(), in a graphical user interface using + utils::winProgressBar(), tcltk::tkProgressBar() or shiny::withProgress(), + via the speakers using beep::beepr(), or on a file system via the size of a + file. Anyone can add additional, customized, progression handlers. The + 'progressr' package uses R's condition framework for signaling progress + updated. Because of this, progress can be reported from almost anywhere in + R, e.g. from classical for and while loops, from map-reduce API:s like the + lapply() family of functions, 'purrr', 'plyr', and 'foreach'. It will also + work with parallel processing via the 'future' framework, e.g. + future.apply::future_lapply(), furrr::future_map(), and 'foreach' with + 'doFuture'. The package is compatible with Shiny applications.""" + + cran = "progressr" + + version('0.10.0', sha256='4c95dc11c50c792440fa17f4538d59f1f3012bf6ef462a5a141609f87319badc') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-digest', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-proj/package.py b/var/spack/repos/builtin/packages/r-proj/package.py index 8d872852e18cf0..120de9680f4f98 100644 --- a/var/spack/repos/builtin/packages/r-proj/package.py +++ b/var/spack/repos/builtin/packages/r-proj/package.py @@ -7,17 +7,15 @@ class RProj(RPackage): - """Generic Coordinate System Transformations Using 'PROJ' + """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.""" - homepage = "https://github.com/hypertidy/PROJ" - url = "https://cloud.r-project.org/src/contrib/PROJ_0.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/PROJ" + cran = "PROJ" 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:', when='@0.4.0:', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run'), when='@0.4.0:') diff --git a/var/spack/repos/builtin/packages/r-proj4/package.py b/var/spack/repos/builtin/packages/r-proj4/package.py index 89a57a4044e70e..71ddd170518069 100644 --- a/var/spack/repos/builtin/packages/r-proj4/package.py +++ b/var/spack/repos/builtin/packages/r-proj4/package.py @@ -7,18 +7,22 @@ class RProj4(RPackage): - """A simple interface to the PROJ.4 cartographic projections library + """A simple interface to the PROJ.4 cartographic projections library. - A simple interface to lat/long projection and datum transformation of - the PROJ.4 cartographic projections library. It allows transformation of + A simple interface to lat/long projection and datum transformation of the + PROJ.4 cartographic projections library. It allows transformation of geographic coordinates from one projection and/or datum to another.""" - homepage = "https://www.rforge.net/proj4/" - url = "https://cloud.r-project.org/src/contrib/proj4_1.0-8.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/proj4" + cran = "proj4" + version('1.0-11', sha256='c5f186530267005d53cc2e86849613b254ca4515a8b10310146f712d45a1d11d') + version('1.0-10.1', sha256='66857cbe5cba4930b18621070f9a7263ea0d8ddc3e5a035a051a1496e4e1da19') version('1.0-10', sha256='5f396f172a17cfa9821a390f11ff7d3bff3c92ccf585572116dec459c621d1d0') version('1.0-8.1', sha256='a3a2a8f0014fd79fa34b5957440fd38299d8e97f1a802a61a068a6c6cda10a7e') depends_on('r@2.0.0:', type=('build', 'run')) - depends_on('proj@4.4.6:5') + depends_on('proj@4.4.6:7', when='@:1.0-8') + depends_on('proj@4.4.6:') + + # This is needed because the configure script links to sqlite3 + depends_on('sqlite', when='@1.0-10.1:') diff --git a/var/spack/repos/builtin/packages/r-projpred/package.py b/var/spack/repos/builtin/packages/r-projpred/package.py index 64d22609aa162c..bde772b6ec536b 100644 --- a/var/spack/repos/builtin/packages/r-projpred/package.py +++ b/var/spack/repos/builtin/packages/r-projpred/package.py @@ -7,7 +7,7 @@ class RProjpred(RPackage): - """Projection Predictive Feature Selection: + """Projection Predictive Feature Selection. Performs projection predictive feature selection for generalized linear models and generalized linear and additive multilevel models (see, @@ -17,8 +17,7 @@ class RProjpred(RPackage): 'rstanarm' and 'brms' packages, but other reference models can also be used. See the package vignette for more information and examples.""" - homepage = "https://mc-stan.org/projpred/" - cran = "projpred" + cran = "projpred" version('2.0.2', sha256='af0a9fb53f706090fe81b6381b27b0b6bd3f7ae1e1e44b0ada6f40972b09a55b') diff --git a/var/spack/repos/builtin/packages/r-promises/package.py b/var/spack/repos/builtin/packages/r-promises/package.py index 14f5d709d076c0..dca9d202b032ce 100644 --- a/var/spack/repos/builtin/packages/r-promises/package.py +++ b/var/spack/repos/builtin/packages/r-promises/package.py @@ -7,18 +7,17 @@ class RPromises(RPackage): - """Abstractions for Promise-Based Asynchronous Programming + """Abstractions for Promise-Based Asynchronous Programming. - Provides fundamental abstractions for doing asynchronous programming in - R using promises. Asynchronous programming is useful for allowing a single - R process to orchestrate multiple tasks in the background while also + Provides fundamental abstractions for doing asynchronous programming in R + using promises. Asynchronous programming is useful for allowing a single R + process to orchestrate multiple tasks in the background while also attending to something else. Semantics are similar to 'JavaScript' promises, but with a syntax that is idiomatic R.""" - homepage = "https://rstudio.github.io/promises" - url = "https://cloud.r-project.org/src/contrib/promises_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/promises" + cran = "promises" + version('1.2.0.1', sha256='8d3a8217909e91f4c2a2eebba5ac8fc902a9ac1a9e9d8a30815c9dc0f162c4b7') version('1.1.1', sha256='3718c6eb2c3362cbe89389e613118f783f9977dbf24757f85026e661199c5800') version('1.0.1', sha256='c2dbc7734adf009377a41e570dfe0d82afb91335c9d0ca1ef464b9bdcca65558') diff --git a/var/spack/repos/builtin/packages/r-protgenerics/package.py b/var/spack/repos/builtin/packages/r-protgenerics/package.py index b6f880e59a787d..3084e927a43080 100644 --- a/var/spack/repos/builtin/packages/r-protgenerics/package.py +++ b/var/spack/repos/builtin/packages/r-protgenerics/package.py @@ -7,13 +7,13 @@ class RProtgenerics(RPackage): - """S4 generic functions for Bioconductor proteomics infrastructure + """S4 generic functions for Bioconductor proteomics infrastructure. S4 generic functions needed by Bioconductor proteomics packages.""" - homepage = "https://bioconductor.org/packages/ProtGenerics" - git = "https://git.bioconductor.org/packages/ProtGenerics.git" + bioc = "ProtGenerics" + version('1.26.0', commit='2033289ab928034b86c321e56c37e502e557c7a1') version('1.22.0', commit='2bb3011fb0d79536e1c50251084a7057004449c6') version('1.16.0', commit='960a5fdc586898513b5ae9c48fffba5c5d703723') version('1.14.0', commit='c85940b70a16ad69275c4facb3ef673d20a1c998') diff --git a/var/spack/repos/builtin/packages/r-proto/package.py b/var/spack/repos/builtin/packages/r-proto/package.py index 13a2d2176f5ae7..406df2ae0e7592 100644 --- a/var/spack/repos/builtin/packages/r-proto/package.py +++ b/var/spack/repos/builtin/packages/r-proto/package.py @@ -7,12 +7,12 @@ class RProto(RPackage): - """An object oriented system using object-based, also called - prototype-based, rather than class-based object oriented ideas.""" + """Prototype Object-Based Programming. - homepage = "https://cran.r-project.org/web/packages/proto/index.html" - url = "https://cloud.r-project.org/src/contrib/proto_0.3-10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/proto" + An object oriented system using object-based, also called prototype-based, + rather than class-based object oriented ideas.""" + + cran = "proto" version('1.0.0', sha256='9294d9a3b2b680bb6fac17000bfc97453d77c87ef68cfd609b4c4eb6d11d04d1') version('0.3-10', sha256='d0d941bfbf247879b3510c8ef3e35853b1fbe83ff3ce952e93d3f8244afcbb0e') diff --git a/var/spack/repos/builtin/packages/r-proxy/package.py b/var/spack/repos/builtin/packages/r-proxy/package.py index d60c6033fa8660..e992e3522ee9ee 100644 --- a/var/spack/repos/builtin/packages/r-proxy/package.py +++ b/var/spack/repos/builtin/packages/r-proxy/package.py @@ -7,18 +7,17 @@ class RProxy(RPackage): - """Distance and Similarity Measures + """Distance and Similarity Measures. Provides an extensible framework for the efficient calculation of auto- and cross-proximities, along with implementations of the most popular ones.""" - homepage = "https://cloud.r-project.org/package=proxy" - url = "https://cloud.r-project.org/src/contrib/proxy_0.4-19.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/proxy" + cran = "proxy" + version('0.4-26', sha256='676bad821343974e0297a0566c4bf0cf0ea890104906a745b87d3b5989c81a4d') version('0.4-24', sha256='8cff9bf036475941a7c44ba9bb5e2f6d4777d49ab3daaeb52d23f4b2af6d9c7c') version('0.4-23', sha256='9dd4eb0978f40e4fcb55c8a8a26266d32eff9c63ac9dfe70cf1f664ca9c3669d') version('0.4-19', sha256='6b27e275018366e6024382704da9a9757c8878535dbcd7d450824b70e2e34d51') depends_on('r@3.3.2:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@0.4-21:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@0.4-21:') diff --git a/var/spack/repos/builtin/packages/r-pryr/package.py b/var/spack/repos/builtin/packages/r-pryr/package.py index 548696ef21cc72..575716a986f13b 100644 --- a/var/spack/repos/builtin/packages/r-pryr/package.py +++ b/var/spack/repos/builtin/packages/r-pryr/package.py @@ -8,18 +8,20 @@ class RPryr(RPackage): - """Useful tools to pry back the covers of R and understand the language - at a deeper level.""" + """Tools for Computing on the Language. - homepage = "https://github.com/hadley/pryr" - url = "https://cloud.r-project.org/src/contrib/pryr_0.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pryr" + Useful tools to pry back the covers of R and understand the language at a + deeper level.""" + cran = "pryr" + + version('0.1.5', sha256='7b1653ec51850f4633cee8e2eb7d0b2724fb587b801539488b426cf88f0f770b') version('0.1.4', sha256='d39834316504c49ecd4936cbbcaf3ee3dae6ded287af42475bf38c9e682f721b') version('0.1.3', sha256='6acd88341dde4fe247a5cafd3949b281dc6742b7d60f68b57c1feb84b96739ac') version('0.1.2', sha256='65c2b7c9f96e2aa683ac9cdab3c215fd3039ecd66a2ba7002a8e77881428c3c6') depends_on('r@3.1.0:', type=('build', 'run')) depends_on('r-stringr', type=('build', 'run')) - depends_on('r-rcpp@0.11.0:', type=('build', 'run')) depends_on('r-codetools', type=('build', 'run')) + depends_on('r-rcpp@0.11.0:', type=('build', 'run')) + depends_on('r-lobstr', type=('build', 'run'), when='@0.1.5:') diff --git a/var/spack/repos/builtin/packages/r-ps/package.py b/var/spack/repos/builtin/packages/r-ps/package.py index 8a2479fb83bf55..1d58d5f8f32464 100644 --- a/var/spack/repos/builtin/packages/r-ps/package.py +++ b/var/spack/repos/builtin/packages/r-ps/package.py @@ -7,15 +7,14 @@ class RPs(RPackage): - """List, Query, Manipulate System Processes + """List, Query, Manipulate System Processes. List, query and manipulate all system processes, on 'Windows', 'Linux' and 'macOS'.""" - homepage = "https://github.com/r-lib/ps" - url = "https://cloud.r-project.org/src/contrib/ps_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ps" + cran = "ps" + version('1.6.0', sha256='89ad7ddc5e0818bccacfd0673ddf2da0892ac2a3b4d3a821e40884ab1e96bf31') version('1.5.0', sha256='7461a196f55557feda569a9791ad851c884f9a2dd71671655ed17cb048fafe96') version('1.3.0', sha256='289193d0ccd2db0b6fe8702e8c5711e935219b17f90f01a6e9684982413e98d1') version('1.2.1', sha256='bd7207164e6557a9e4213c4b00dc5dc23d7705ab290569765998640b16a3beff') diff --git a/var/spack/repos/builtin/packages/r-pscbs/package.py b/var/spack/repos/builtin/packages/r-pscbs/package.py index 1ce479d0421d23..5b7fbcc7e5dbdc 100644 --- a/var/spack/repos/builtin/packages/r-pscbs/package.py +++ b/var/spack/repos/builtin/packages/r-pscbs/package.py @@ -7,23 +7,31 @@ class RPscbs(RPackage): - """Segmentation of allele-specific DNA copy number data and detection of + """Analysis of Parent-Specific DNA Copy Numbers. + + Segmentation of allele-specific DNA copy number data and detection of regions with abnormal copy number within each parental chromosome. Both tumor-normal paired and tumor-only analyses are supported.""" - homepage = "https://github.com/HenrikBengtsson/PSCBS" - url = "https://cloud.r-project.org/src/contrib/PSCBS_0.65.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/PSCBS" + cran = "PSCBS" + 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-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-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-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-matrixstats@0.54.0:', type=('build', 'run')) + depends_on('r-matrixstats@0.61.0:', type=('build', 'run'), when='@0.66.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:') diff --git a/var/spack/repos/builtin/packages/r-pspline/package.py b/var/spack/repos/builtin/packages/r-pspline/package.py index d63f44d72321c2..0fa9be5598ab9c 100644 --- a/var/spack/repos/builtin/packages/r-pspline/package.py +++ b/var/spack/repos/builtin/packages/r-pspline/package.py @@ -7,11 +7,11 @@ class RPspline(RPackage): - """Smoothing splines with penalties on order m derivatives.""" + """Penalized Smoothing Splines. - homepage = "https://cloud.r-project.org/package=pspline" - url = "https://cloud.r-project.org/src/contrib/pspline_1.0-18.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pspline" + Smoothing splines with penalties on order m derivatives.""" + + cran = "pspline" 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 ddee749d826499..7d2c7d102e6462 100644 --- a/var/spack/repos/builtin/packages/r-psych/package.py +++ b/var/spack/repos/builtin/packages/r-psych/package.py @@ -7,7 +7,7 @@ class RPsych(RPackage): - """Procedures for Psychological, Psychometric, and Personality Research + """Procedures for Psychological, Psychometric, and Personality Research. A general purpose toolbox for personality, psychometric theory and experimental psychology. Functions are primarily for multivariate analysis @@ -25,10 +25,9 @@ class RPsych(RPackage): research. For more information, see the web page.""" - homepage = "https://personality-project.org/r/psych" - url = "https://cloud.r-project.org/src/contrib/psych_1.7.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/psych" + cran = "psych" + version('2.1.9', sha256='1475e03a17f1ae6837834f01c2472aed68887c89d90a84a3e09a532ce218500c') version('2.0.12', sha256='8a71d4a1d8bc8c96703f9b4515cfb497e1947c6e017cb08270a7cfb36ce1ad4c') version('1.8.12', sha256='6e175e049bc1ee5b79a9e51ccafb22b962b4e6c839ce5c9cfa1ad83967037743') version('1.8.10', sha256='e8901ddab14729bfccbd82a8824fbb6523c10c2cd8fb7199b1ca56a7ffcb6e58') @@ -37,4 +36,5 @@ class RPsych(RPackage): depends_on('r-mnormt', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-nlme', type=('build', 'run')) - depends_on('r-foreign', when='@:1.8.12', type=('build', 'run')) + + depends_on('r-foreign', type=('build', 'run'), when='@:1.8.12') diff --git a/var/spack/repos/builtin/packages/r-ptw/package.py b/var/spack/repos/builtin/packages/r-ptw/package.py index 35d7785dbf5d79..c58fbdeb71edab 100644 --- a/var/spack/repos/builtin/packages/r-ptw/package.py +++ b/var/spack/repos/builtin/packages/r-ptw/package.py @@ -7,7 +7,7 @@ class RPtw(RPackage): - """Parametric Time Warping + """Parametric Time Warping. Parametric Time Warping aligns patterns, i.e. it aims to put corresponding features at the same locations. The algorithm searches for an optimal @@ -21,12 +21,12 @@ class RPtw(RPackage): directory of the source package - the vignette source can be found on the package github site.""" - homepage = "https://cloud.r-project.org/package=ptw" - url = "https://cloud.r-project.org/src/contrib/ptw_1.9-12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ptw" + cran = "ptw" + version('1.9-16', sha256='7e87c34b9eeaeabe3bfb937162e6cda4dd48d6bd6a97b9db8bb8303d131caa66') version('1.9-15', sha256='22fa003f280bc000f46bca88d69bf332b29bc68435115ba8044533b70bfb7b46') version('1.9-13', sha256='7855e74a167db3d3eba9df9d9c3daa25d7cf487cbcfe8b095f16d96eba862f46') version('1.9-12', sha256='cdb1752e04e661e379f11867b0a17e2177e9ee647c54bbcc37d39d6b8c062b84') depends_on('r-nloptr', type=('build', 'run')) + depends_on('r-rcppde', type=('build', 'run'), when='@1.9-16:') diff --git a/var/spack/repos/builtin/packages/r-purrr/package.py b/var/spack/repos/builtin/packages/r-purrr/package.py index 87787622f58980..aaee25474b0a6c 100644 --- a/var/spack/repos/builtin/packages/r-purrr/package.py +++ b/var/spack/repos/builtin/packages/r-purrr/package.py @@ -7,11 +7,11 @@ class RPurrr(RPackage): - """A complete and consistent functional programming toolkit for R.""" + """Functional Programming Tools. - homepage = "https://purrr.tidyverse.org/" - url = "https://cloud.r-project.org/src/contrib/purrr_0.2.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/purrr" + A complete and consistent functional programming toolkit for R.""" + + cran = "purrr" version('0.3.4', sha256='23ebc93bc9aed9e7575e8eb9683ff4acc0270ef7d6436cc2ef4236a9734840b2') version('0.3.2', sha256='27c74dd9e4f6f14bf442473df22bcafc068822f7f138f0870326532f143a9a31') @@ -19,7 +19,8 @@ class RPurrr(RPackage): version('0.2.4', sha256='ed8d0f69d29b95c2289ae52be08a0e65f8171abb6d2587de7b57328bf3b2eb71') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@0.3.3:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@0.3.3:') depends_on('r-magrittr@1.5:', type=('build', 'run')) depends_on('r-rlang@0.3.1:', type=('build', 'run')) - depends_on('r-tibble', when='@:0.2.9', type=('build', 'run')) + + depends_on('r-tibble', type=('build', 'run'), when='@:0.2.9') diff --git a/var/spack/repos/builtin/packages/r-pvclust/package.py b/var/spack/repos/builtin/packages/r-pvclust/package.py index b712dd29de32b3..aad55c22bb2cb0 100644 --- a/var/spack/repos/builtin/packages/r-pvclust/package.py +++ b/var/spack/repos/builtin/packages/r-pvclust/package.py @@ -7,17 +7,15 @@ class RPvclust(RPackage): - """pvclust: Hierarchical Clustering with P-Values via Multiscale Bootstrap - Resampling + """Hierarchical Clustering with P-Values via Multiscale Bootstrap + Resampling. An implementation of multiscale bootstrap resampling for assessing the uncertainty in hierarchical cluster analysis. It provides SI (selective inference) p-value, AU (approximately unbiased) p-value and BP (bootstrap probability) value for each cluster in a dendrogram.""" - homepage = "https://cloud.r-project.org/package=pvclust" - url = "https://cloud.r-project.org/src/contrib/pvclust_2.2-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/pvclust" + cran = "pvclust" version('2.2-0', sha256='7892853bacd413b5a921006429641ad308a344ca171b3081c15e4c522a8b0201') diff --git a/var/spack/repos/builtin/packages/r-qs/package.py b/var/spack/repos/builtin/packages/r-qs/package.py index 809535c147092a..78141b337d35e8 100644 --- a/var/spack/repos/builtin/packages/r-qs/package.py +++ b/var/spack/repos/builtin/packages/r-qs/package.py @@ -7,20 +7,21 @@ class RQs(RPackage): - """Quick Serialization of R Objects + """Quick Serialization of R Objects. - Provides functions for quickly writing and reading any R object - to and from disk.""" + Provides functions for quickly writing and reading any R object to and from + disk.""" - homepage = "https://cloud.r-project.org/web/packages/qs/index.html" - url = "https://cloud.r-project.org/src/contrib/qs_0.23.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/qs" + cran = "qs" maintainers = ['dorton21'] + version('0.25.2', sha256='fe428ae5dc46f88fdf454ca74c4a073f5ac288d6d039080a3c0d66c4ebbd5cbf') version('0.23.6', sha256='c6e958e9741ee981bf2388c91b8f181718ffb0f32283cd7ebcd2d054817280e4') 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-rcpp', type=('build', 'run')) depends_on('r-rapiserialize', type=('build', 'run')) depends_on('r-stringfish@0.14.1:', type=('build', 'run')) + depends_on('r-stringfish@0.15.1:', type=('build', 'run'), when='@0.25.2:') diff --git a/var/spack/repos/builtin/packages/r-qtl/package.py b/var/spack/repos/builtin/packages/r-qtl/package.py index 493c568caaeb44..94ccccd7f636e4 100644 --- a/var/spack/repos/builtin/packages/r-qtl/package.py +++ b/var/spack/repos/builtin/packages/r-qtl/package.py @@ -7,16 +7,15 @@ class RQtl(RPackage): - """Tools for Analyzing QTL Experiments + """Tools for Analyzing QTL Experiments. Analysis of experimental crosses to identify genes (called quantitative trait loci, QTLs) contributing to variation in quantitative traits. Broman et al. (2003) .""" - homepage = "https://rqtl.org" - url = "https://cloud.r-project.org/src/contrib/qtl_1.44-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/qtl" + cran = "qtl" + version('1.50', sha256='2d38656f04dc4187aefe56c29a8f915b8c7e222d76b84afe7045d272294f9ed5') version('1.47-9', sha256='6ba4e7b40d946b3ab68d54624599284b1d352c86fb50d31b134826be758ece41') version('1.44-9', sha256='315063f0c3fbb95cd2169eb4109ade0339e8f3c28670b38c3167214b9bdf950e') diff --git a/var/spack/repos/builtin/packages/r-quadprog/package.py b/var/spack/repos/builtin/packages/r-quadprog/package.py index 5957d24c350193..0a0e46a7c26b20 100644 --- a/var/spack/repos/builtin/packages/r-quadprog/package.py +++ b/var/spack/repos/builtin/packages/r-quadprog/package.py @@ -7,14 +7,12 @@ class RQuadprog(RPackage): - """Functions to Solve Quadratic Programming Problems + """Functions to Solve Quadratic Programming Problems. This package contains routines and documentation for solving quadratic programming problems.""" - homepage = "https://cloud.r-project.org/package=quadprog" - url = "https://cloud.r-project.org/src/contrib/quadprog_1.5-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/quadprog" + cran = "quadprog" version('1.5-8', sha256='22128dd6b08d3516c44ff89276719ad4fe46b36b23fdd585274fa3a93e7a49cd') version('1.5-7', sha256='1af41e57df6f2d08ee8b72a1a5ada137beadb36c7ec9ab9bdb7c05226e8ae76d') diff --git a/var/spack/repos/builtin/packages/r-quantmod/package.py b/var/spack/repos/builtin/packages/r-quantmod/package.py index 64e12dc4243b65..2c5b12290d94bd 100644 --- a/var/spack/repos/builtin/packages/r-quantmod/package.py +++ b/var/spack/repos/builtin/packages/r-quantmod/package.py @@ -7,14 +7,12 @@ class RQuantmod(RPackage): - """Quantitative Financial Modelling Framework + """Quantitative Financial Modelling Framework. Specify, build, trade, and analyse quantitative financial trading strategies.""" - homepage = "https://www.quantmod.com/" - url = "https://cloud.r-project.org/src/contrib/quantmod_0.4-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/quantmod" + cran = "quantmod" version('0.4.18', sha256='aa40448e93a1facf399213ac691784007731e869ad243fe762381ab099cd6c35') version('0.4-15', sha256='7ef2e798d4d8e4d2af0a5b2b9fecebec30568087afbd24bfd923cdeb8b53df53') @@ -22,7 +20,7 @@ class RQuantmod(RPackage): version('0.4-10', sha256='030040aa567adaba1ea4a1f05eb45712dbdaabbabca72733e7fb2984051f688b') version('0.4-5', sha256='c7889eb55a21296e7bda1242c46e734a0a8bd6dcbf5726aafae5313354eec893') - depends_on('r@3.2.0:', when='@0.4-11:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@0.4-11:') depends_on('r-xts@0.9-0:', type=('build', 'run')) depends_on('r-zoo', type=('build', 'run')) depends_on('r-ttr@0.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index 170cc9196159a6..475684aac477e6 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -7,18 +7,21 @@ class RQuantreg(RPackage): - """Quantile Regression + """Quantile Regression. Estimation and inference methods for models of conditional quantiles: Linear and nonlinear parametric and non-parametric (total variation penalized) models for conditional quantiles of a univariate response and several methods for handling censored survival data. Portfolio selection - methods based on expected shortfall risk are also now included.""" + methods based on expected shortfall risk are also now included. See Koenker + (2006) and Koenker et al. (2017) + .""" - homepage = "https://cloud.r-project.org/package=quantreg" - url = "https://cloud.r-project.org/src/contrib/quantreg_5.29.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/quantreg" + cran = "quantreg" + version('5.88', sha256='1940e553711ed50655b2692ba29432d1083ed83c2db06e31a031ce8f82823a3f') + version('5.87', sha256='9ad7ef09e5f53b89ef09dea3a1aa25cfda9f3f2528994f874ec1cd9ca7fda38e') + version('5.86', sha256='71d1c829af7574ca00575cc0375376ac3ecd54b3d6d36e8eecd71ed8acb9d605') version('5.82', sha256='eac34e1e34d00a24ed7cb6981af258a3afc561843c00501de3206b4540548c07') version('5.51', sha256='df1330d245f66ee6d924b209bd4c15d44ff8cce52667959ec0d299975428bdb1') version('5.42.1', sha256='4cc2b0883c52694e58fcfde83e30e4a54be9f4d9cbcf6138f6498cc8e0b3ccab') @@ -30,4 +33,5 @@ class RQuantreg(RPackage): depends_on('r-sparsem', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) depends_on('r-matrixmodels', type=('build', 'run')) - depends_on('r-conquer', when='@5.82:', type=('build', 'run')) + + depends_on('r-conquer', type=('build', 'run'), when='@5.82:5.86') diff --git a/var/spack/repos/builtin/packages/r-quantro/package.py b/var/spack/repos/builtin/packages/r-quantro/package.py index 659ba05889eb2c..9b152a8dda61b7 100644 --- a/var/spack/repos/builtin/packages/r-quantro/package.py +++ b/var/spack/repos/builtin/packages/r-quantro/package.py @@ -7,7 +7,7 @@ class RQuantro(RPackage): - """A test for when to use quantile normalization + """A test for when to use quantile normalization. A data-driven test for the assumptions of quantile normalization using raw data such as objects that inherit eSets (e.g. ExpressionSet, @@ -16,9 +16,9 @@ class RQuantro(RPackage): are global differences in the distributions between the user-defined groups.""" - homepage = "https://bioconductor.org/packages/quantro" - git = "https://git.bioconductor.org/packages/quantro.git" + bioc = "quantro" + version('1.28.0', commit='109e7452a349f273e10d2ffb79d5624260b67dd5') version('1.24.0', commit='c7c0180292156a01722d91b353da44324e72d68f') version('1.18.0', commit='f6553c2296289eed31e4b2f32a082e990bdb8359') version('1.16.0', commit='cfc2e853bdc3cc90fd35e153fe243892d50d61c6') @@ -27,7 +27,7 @@ class RQuantro(RPackage): version('1.10.0', commit='111337c0aba052aa49c3d2e2d3042794b28858c9') depends_on('r@3.1.3:', type=('build', 'run')) - depends_on('r@4.0:', when='@1.24.0:', type=('build', 'run')) + depends_on('r@4.0:', type=('build', 'run'), when='@1.24.0:') depends_on('r-biobase', type=('build', 'run')) depends_on('r-minfi', type=('build', 'run')) depends_on('r-doparallel', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-questionr/package.py b/var/spack/repos/builtin/packages/r-questionr/package.py index bf8b6d3776d142..9485cae149b429 100644 --- a/var/spack/repos/builtin/packages/r-questionr/package.py +++ b/var/spack/repos/builtin/packages/r-questionr/package.py @@ -7,22 +7,25 @@ class RQuestionr(RPackage): - """Set of functions to make the processing and analysis of surveys easier : + """Functions to Make Surveys Processing Easier. + + Set of functions to make the processing and analysis of surveys easier: interactive shiny apps and addins for data recoding, contingency tables, dataset metadata handling, and several convenience functions.""" - homepage = "https://cloud.r-project.org/package=questionr" - url = "https://cloud.r-project.org/src/contrib/questionr_0.7.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/questionr" + cran = "questionr" + version('0.7.7', sha256='ce24c40bd98dbeca615b9eb2a9cd2da26852821dc3840f8394eeecb0739dfd56') + version('0.7.6', sha256='4b71d049d9e032157e12a7809dbfa2a39262b49d0c7a03ed434791a66f0cee5e') version('0.7.4', sha256='818ad87723aa7ebe466b3a639c9e86b7f77e6a341c8d9a933073925a21d4555c') - depends_on('r@3.5.0:', type=('build', 'run')) - depends_on('r-shiny@1.0.5:', type=('build', 'run')) - depends_on('r-miniui', type=('build', 'run')) - depends_on('r-rstudioapi', type=('build', 'run')) - depends_on('r-highr', type=('build', 'run')) - depends_on('r-styler', type=('build', 'run')) - depends_on('r-classint', type=('build', 'run')) - depends_on('r-htmltools', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-shiny@1.0.5:', type=('build', 'run')) + depends_on('r-miniui', type=('build', 'run')) + depends_on('r-rstudioapi', type=('build', 'run')) + depends_on('r-highr', type=('build', 'run')) + depends_on('r-styler', type=('build', 'run')) + depends_on('r-classint', type=('build', 'run')) + depends_on('r-htmltools', type=('build', 'run')) depends_on('r-labelled@2.6.0:', type=('build', 'run')) + depends_on('xclip', when='platform=linux') diff --git a/var/spack/repos/builtin/packages/r-quickplot/package.py b/var/spack/repos/builtin/packages/r-quickplot/package.py index 103b1cd47f83b4..c3d2c41df73af3 100644 --- a/var/spack/repos/builtin/packages/r-quickplot/package.py +++ b/var/spack/repos/builtin/packages/r-quickplot/package.py @@ -7,16 +7,14 @@ class RQuickplot(RPackage): - """A System of Plotting Optimized for Speed and Modularity + """A System of Plotting Optimized for Speed and Modularity. - A high-level plotting system, built using 'grid' graphics, that - is optimized for speed and modularity. This has great utility - for quick visualizations when testing code, with the key benefit - that visualizations are updated independently of one another.""" + A high-level plotting system, built using 'grid' graphics, that is + optimized for speed and modularity. This has great utility for quick + visualizations when testing code, with the key benefit that visualizations + are updated independently of one another.""" - homepage = "https://quickplot.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/quickPlot_0.1.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/quickPlot" + cran = "quickPlot" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-qvalue/package.py b/var/spack/repos/builtin/packages/r-qvalue/package.py index abeacf2706b42f..040b9eefdad8e5 100644 --- a/var/spack/repos/builtin/packages/r-qvalue/package.py +++ b/var/spack/repos/builtin/packages/r-qvalue/package.py @@ -7,7 +7,7 @@ class RQvalue(RPackage): - """Q-value estimation for false discovery rate control + """Q-value estimation for false discovery rate control. This package takes a list of p-values resulting from the simultaneous testing of many hypotheses and estimates their q-values and local FDR @@ -21,9 +21,9 @@ class RQvalue(RPackage): software can be applied to problems in genomics, brain imaging, astrophysics, and data mining.""" - homepage = "https://bioconductor.org/packages/qvalue" - git = "https://git.bioconductor.org/packages/qvalue.git" + bioc = "qvalue" + version('2.26.0', commit='6d7410d4b8673bcf9065e054670c1fbcb917a27e') version('2.22.0', commit='b4bde8198252737b287fd7f9a4ed697f57fad92c') version('2.16.0', commit='5efbe20ef522a45a7a04b681f72bb9a12e2747ae') version('2.14.1', commit='b694e4b264f25250eb1d1115e70c07f65767c20e') diff --git a/var/spack/repos/builtin/packages/r-r-cache/package.py b/var/spack/repos/builtin/packages/r-r-cache/package.py index 9e86cf7a76cbf2..45d6c31ac12959 100644 --- a/var/spack/repos/builtin/packages/r-r-cache/package.py +++ b/var/spack/repos/builtin/packages/r-r-cache/package.py @@ -7,23 +7,28 @@ class RRCache(RPackage): - """Memoization can be used to speed up repetitive and computational - expensive function calls. The first time a function that implements - memoization is called the results are stored in a cache memory. The next - time the function is called with the same set of parameters, the results - are momentarily retrieved from the cache avoiding repeating the - calculations. With this package, any R object can be cached in a key-value - storage where the key can be an arbitrary set of R objects. The cache - memory is persistent (on the file system).""" + """Fast and Light-Weight Caching (Memoization) of Objects and Results to + Speed Up Computations. - homepage = "https://github.com/HenrikBengtsson/R.cache" - url = "https://cloud.r-project.org/src/contrib/R.cache_0.14.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/R.cache" + Memoization can be used to speed up repetitive and computational expensive + function calls. The first time a function that implements memoization is + called the results are stored in a cache memory. The next time the function + is called with the same set of parameters, the results are momentarily + retrieved from the cache avoiding repeating the calculations. With this + package, any R object can be cached in a key-value storage where the key + can be an arbitrary set of R objects. The cache memory is persistent (on + the file system).""" + cran = "R.cache" + + version('0.15.0', sha256='adb4d3b08f7917e10fe6188c7b90a3318701a974c58eaa09943b929382bdf126') version('0.14.0', sha256='18af4e372440b9f28b4b71346c8ed9de220232f9903730ccee2bfb3c612c16d9') depends_on('r@2.14.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.15.0:') depends_on('r-r-oo@1.23.0:', type=('build', 'run')) + depends_on('r-r-oo@1.24.0:', type=('build', 'run'), when='@0.15.0:') depends_on('r-r-utils@2.8.0:', type=('build', 'run')) + depends_on('r-r-utils@2.10.1:', type=('build', 'run'), when='@0.15.0:') depends_on('r-digest@0.6.13:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-r-methodss3/package.py b/var/spack/repos/builtin/packages/r-r-methodss3/package.py index 04f6383ee8699f..3c2db2cfa7b662 100644 --- a/var/spack/repos/builtin/packages/r-r-methodss3/package.py +++ b/var/spack/repos/builtin/packages/r-r-methodss3/package.py @@ -7,21 +7,18 @@ class RRMethodss3(RPackage): - """S3 Methods Simplified + """S3 Methods Simplified. - Methods that simplify the setup of S3 generic functions and - S3 methods. Major effort has been made in making definition of - methods as simple as possible with a minimum of maintenance for - package developers. For example, generic functions are created - automatically, if missing, and naming conflict are automatically - solved, if possible. The method setMethodS3() is a good start - for those who in the future may want to migrate to S4. This is - a cross-platform package implemented in pure R that generates - standard S3 methods.""" + Methods that simplify the setup of S3 generic functions and S3 methods. + Major effort has been made in making definition of methods as simple as + possible with a minimum of maintenance for package developers. For example, + generic functions are created automatically, if missing, and naming + conflict are automatically solved, if possible. The method setMethodS3() is + a good start for those who in the future may want to migrate to S4. This is + a cross-platform package implemented in pure R that generates standard S3 + methods.""" - homepage = "https://cloud.r-project.org/package=R.methodsS3" - url = "https://cloud.r-project.org/src/contrib/R.methodsS3_1.7.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/R.methodsS3" + cran = "R.methodsS3" version('1.8.1', sha256='8a98fb81bcfa78193450f855f614f6f64e6c65daf115f301d97d1f474f5e619b') version('1.7.1', sha256='44b840399266cd27f8f9157777b4d9d85ab7bd31bfdc143b3fc45079a2d8e687') 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 5acc4267db4d59..990c5b11cdf3cd 100644 --- a/var/spack/repos/builtin/packages/r-r-oo/package.py +++ b/var/spack/repos/builtin/packages/r-r-oo/package.py @@ -7,19 +7,16 @@ class RROo(RPackage): - """R Object-Oriented Programming with or without References + """R Object-Oriented Programming with or without References. - Methods and classes for object-oriented programming in R with - or without references. Large effort has been made on making - definition of methods as simple as possible with a minimum of - maintenance for package developers. The package has been developed - since 2001 and is now considered very stable. This is a - cross-platform package implemented in pure R that defines + Methods and classes for object-oriented programming in R with or without + references. Large effort has been made on making definition of methods as + simple as possible with a minimum of maintenance for package developers. + The package has been developed since 2001 and is now considered very + stable. This is a cross-platform package implemented in pure R that defines standard S3 classes without any tricks.""" - homepage = "https://github.com/HenrikBengtsson/R.oo" - url = "https://cloud.r-project.org/src/contrib/R.oo_1.21.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/R.oo" + cran = "R.oo" version('1.24.0', sha256='37a1dab8dd668ceba69a1ba36c0c60e9809e29b74bd56d1e8ed519e19c8e3bb6') version('1.23.0', sha256='f5124ce3dbb0a62e8ef1bfce2de2d1dc2f776e8c48fd8cac358f7f5feb592ea1') @@ -28,4 +25,4 @@ class RROo(RPackage): depends_on('r@2.13.0:', type=('build', 'run')) depends_on('r-r-methodss3@1.7.1:', type=('build', 'run')) - depends_on('r-r-methodss3@1.8.0:', when='@1.24.0:', type=('build', 'run')) + depends_on('r-r-methodss3@1.8.0:', type=('build', 'run'), when='@1.24.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 d50adae3a71432..d176f3698ce9e8 100644 --- a/var/spack/repos/builtin/packages/r-r-utils/package.py +++ b/var/spack/repos/builtin/packages/r-r-utils/package.py @@ -7,21 +7,21 @@ class RRUtils(RPackage): - """Various Programming Utilities + """Various Programming Utilities. - Utility functions useful when programming and - developing R packages.""" + Utility functions useful when programming and developing R packages.""" - homepage = "https://github.com/HenrikBengtsson/R.utils" - url = "https://cloud.r-project.org/src/contrib/R.utils_2.5.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/R.utils" + cran = "R.utils" + version('2.11.0', sha256='622860f995f78be3a6e439f29d945874c5cb0866f6a73a9b43ac1d4d7f23fed8') version('2.10.1', sha256='957a4f51998c79403a50f6a46266e6553bbf08757b26bf80603a423bceb45abf') version('2.9.0', sha256='b2aacc5a55d3ea86c41ac576d2583e446af145f4cb1103ad7b6f95b09ab09ff0') version('2.5.0', sha256='1ae1a0f0c6a4972bb2369a2dbccd29ade87d747255ff9cb5a0bd784a5be1039f') depends_on('r@2.14.0:', type=('build', 'run')) depends_on('r-r-oo@1.22.0:', type=('build', 'run')) - depends_on('r-r-oo@1.23.0:', when='@2.10.1:', type=('build', 'run')) + depends_on('r-r-oo@1.23.0:', type=('build', 'run'), when='@2.10.1:') + depends_on('r-r-oo@1.24.0:', type=('build', 'run'), when='@2.11.0:') depends_on('r-r-methodss3@1.7.1:', type=('build', 'run')) - depends_on('r-r-methodss3@1.8.0:', when='@2.10.1:', type=('build', 'run')) + depends_on('r-r-methodss3@1.8.0:', type=('build', 'run'), when='@2.10.1:') + depends_on('r-r-methodss3@1.8.1:', type=('build', 'run'), when='@2.11.0:') diff --git a/var/spack/repos/builtin/packages/r-r6/package.py b/var/spack/repos/builtin/packages/r-r6/package.py index 8a9282ace4c8bc..104c2fc44778f1 100644 --- a/var/spack/repos/builtin/packages/r-r6/package.py +++ b/var/spack/repos/builtin/packages/r-r6/package.py @@ -7,7 +7,7 @@ class RR6(RPackage): - """Encapsulated Classes with Reference Semantics + """Encapsulated Classes with Reference Semantics. The R6 package allows the creation of classes with reference semantics, similar to R's built-in reference classes. Compared to reference classes, @@ -16,7 +16,6 @@ class RR6(RPackage): public and private members, and they support inheritance, even when the classes are defined in different packages.""" - homepage = "https://github.com/wch/R6/" cran = "R6" version('2.5.1', sha256='8d92bd29c2ed7bf15f2778618ffe4a95556193d21d8431a7f75e7e5fc102bf48') diff --git a/var/spack/repos/builtin/packages/r-rainbow/package.py b/var/spack/repos/builtin/packages/r-rainbow/package.py index 9b102edec1f242..e1edd5b49831b8 100644 --- a/var/spack/repos/builtin/packages/r-rainbow/package.py +++ b/var/spack/repos/builtin/packages/r-rainbow/package.py @@ -5,7 +5,9 @@ class RRainbow(RPackage): - """Visualizing functional data and identifying functional outliers.""" + """Bagplots, Boxplots and Rainbow Plots for Functional Data. + + Visualizing functional data and identifying functional outliers.""" cran = 'rainbow' diff --git a/var/spack/repos/builtin/packages/r-randomfields/package.py b/var/spack/repos/builtin/packages/r-randomfields/package.py index 2df91f1fd550ad..316bb241ea923b 100644 --- a/var/spack/repos/builtin/packages/r-randomfields/package.py +++ b/var/spack/repos/builtin/packages/r-randomfields/package.py @@ -7,27 +7,25 @@ class RRandomfields(RPackage): - """Simulation and Analysis of Random Fields + """Simulation and Analysis of Random Fields. Methods for the inference on and the simulation of Gaussian fields are - provided, as well as methods for the simulation of extreme value random - fields. Main geostatistical parts are based on the books by Christian - Lantuejoul , Jean-Paul Chiles and Pierre - Delfiner and Noel A. Cressie - . For the extreme value random fields see - Oesting, Schlather, Schillings (2019) and - Schlather (2002) .""" + provided. Furthermore, methods for the simulation of extreme value random + fields are provided. Main geostatistical parts are based among others on + the books by Christian Lantuejoul .""" - homepage = "https://cloud.r-project.org/package=RandomFields" - url = "https://cloud.r-project.org/src/contrib/RandomFields_3.1.50.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RandomFields" + cran = "RandomFields" + version('3.3.14', sha256='242600b9bf93af9d49a06c00ff2398054a882d644a4653ea348533410c3db930') + version('3.3.13', sha256='dbf82a8a39a79ca1b53665c2375cdd58f7accb38062063bbd9854d13493d3f49') version('3.3.8', sha256='8a08e2fdae428e354a29fb6818ae781cc56235a6849a0d29574dc756f73199d0') version('3.3.6', sha256='51b7bfb4e5bd7fd0ce1207c77f428508a6cd3dfc9de01545a8724dfd9c050213') version('3.3.4', sha256='a340d4f3ba7950d62acdfa19b9724c82e439d7b1a9f73340124038b7c90c73d4') version('3.1.50', sha256='2d6a07c3a716ce20f9c685deb59e8fcc64fd52c8a50b0f04baf451b6b928e848') depends_on('r@3.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@3.3.8:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.3.8:') depends_on('r-sp', type=('build', 'run')) depends_on('r-randomfieldsutils@0.5.1:', type=('build', 'run')) + depends_on('r-randomfieldsutils@0.5.5:', type=('build', 'run'), when='@3.3.13:') + depends_on('r-randomfieldsutils@1.1:', type=('build', 'run'), when='@3.3.14:') diff --git a/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py b/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py index b6f4a0cebd346f..adb16cfc0839dc 100644 --- a/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py +++ b/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py @@ -7,15 +7,17 @@ class RRandomfieldsutils(RPackage): - """Various utilities are provided that might be used in spatial statistics - and elsewhere. It delivers a method for solving linear equations that - checks the sparsity of the matrix before any algorithm is used. - Furthermore, it includes the Struve functions.""" + """Utilities for the Simulation and Analysis of Random Fields and Genetic + Data. - homepage = "https://cloud.r-project.org/package=RandomFieldsUtils" - url = "https://cloud.r-project.org/src/contrib/RandomFieldsUtils_0.5.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RandomFieldsUtils" + Various utilities are provided that might be used in spatial statistics and + elsewhere. It delivers a method for solving linear equations that checks + the sparsity of the matrix before any algorithm is used.""" + cran = "RandomFieldsUtils" + + version('1.1.0', sha256='f472602fed449a505a2e5787ab8a6c8c1b764335980adaeeb7b1f24069124a9d') + version('0.5.6', sha256='07f484443dffab53fb530e56f1e36e7a59e77768638555975587b6a1e619480b') version('0.5.3', sha256='ea823cba2e254a9f534efb4b772c0aeef2039ee9ef99744e077b969a87f8031d') version('0.5.1', sha256='a95aab4e2025c4247503ff513570a65aa3c8e63cb7ce2979c9317a2798dfaca2') diff --git a/var/spack/repos/builtin/packages/r-randomforest/package.py b/var/spack/repos/builtin/packages/r-randomforest/package.py index 6e621f72ddcd03..9d781f19bd7cbd 100644 --- a/var/spack/repos/builtin/packages/r-randomforest/package.py +++ b/var/spack/repos/builtin/packages/r-randomforest/package.py @@ -7,15 +7,15 @@ class RRandomforest(RPackage): - """Classification and regression based on a forest of trees using random + """Breiman and Cutler's Random Forests for Classification and Regression. + + Classification and regression based on a forest of trees using random inputs.""" - homepage = "https://www.stat.berkeley.edu/~breiman/RandomForests/" - url = "https://cloud.r-project.org/src/contrib/randomForest_4.6-12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/randomForest" + cran = "randomForest" version('4.6-14', sha256='f4b88920419eb0a89d0bc5744af0416d92d112988702dc726882394128a8754d') version('4.6-12', sha256='6e512f8f88a51c01a918360acba61f1f39432f6e690bc231b7864218558b83c4') - depends_on('r@2.5.0:', when='@:4.6-12', type=('build', 'run')) - depends_on('r@3.2.2:', when='@4.6-14:', type=('build', 'run')) + depends_on('r@2.5.0:', type=('build', 'run')) + depends_on('r@3.2.2:', type=('build', 'run'), when='@4.6-14:') diff --git a/var/spack/repos/builtin/packages/r-randomglm/package.py b/var/spack/repos/builtin/packages/r-randomglm/package.py index f5810f415f4711..b1e71b8a10da9d 100644 --- a/var/spack/repos/builtin/packages/r-randomglm/package.py +++ b/var/spack/repos/builtin/packages/r-randomglm/package.py @@ -7,15 +7,16 @@ class RRandomglm(RPackage): - """randomGLM: Random General Linear Model Prediction""" + """Random General Linear Model Prediction. - homepage = "http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/" - url = "https://cloud.r-project.org/src/contrib/randomGLM_1.02-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/randomGLM" + The package implements a bagging predictor based on general linear + models.""" + + cran = "randomGLM" version('1.02-1', sha256='3bf7c1dbdacc68125f8ae3014b9bc546dd3328d04ad015d154781bdf3f1a230c') depends_on('r@2.14.0:', type=('build', 'run')) - depends_on('r-doparallel', type=('build', 'run')) - depends_on('r-foreach', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) + depends_on('r-foreach', type=('build', 'run')) + depends_on('r-doparallel', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ranger/package.py b/var/spack/repos/builtin/packages/r-ranger/package.py index 6cd2fc0f604621..dd79e0774a1b6a 100644 --- a/var/spack/repos/builtin/packages/r-ranger/package.py +++ b/var/spack/repos/builtin/packages/r-ranger/package.py @@ -7,19 +7,18 @@ class RRanger(RPackage): - """A Fast Implementation of Random Forests + """A Fast Implementation of Random Forests. A fast implementation of Random Forests, particularly suited for high dimensional data. Ensembles of classification, regression, survival and probability prediction trees are supported. Data from genome-wide association studies can be analyzed efficiently. In addition to data frames, datasets of class 'gwaa.data' (R package 'GenABEL') and 'dgCMatrix' - (R package 'Matrix') can be directly analyzed.""" + (R package 'Matrix') can be directly analyzed.""" - homepage = "https://cloud.r-project.org/package=ranger" - url = "https://cloud.r-project.org/src/contrib/ranger_0.8.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ranger" + cran = "ranger" + version('0.13.1', sha256='60934f0accc21edeefddbb4ddebfdd7cd10a3d3e90b31aa2e6e4b7f50d632d0a') version('0.12.1', sha256='fc308e0ac06718272799928e1a19612de16b05bde481d8f38e11a101df5425ef') version('0.11.2', sha256='13ac8a9433fdd92f62f66de44abc52477dcbb436b2045c1947951a266bffbeeb') version('0.11.1', sha256='999fb114602e27601ff0fe8ab461c39d667c6f5e8434e7feb3d21c7caf0dcffb') diff --git a/var/spack/repos/builtin/packages/r-rann/package.py b/var/spack/repos/builtin/packages/r-rann/package.py index 707d5c6044e5bd..76482217decff7 100644 --- a/var/spack/repos/builtin/packages/r-rann/package.py +++ b/var/spack/repos/builtin/packages/r-rann/package.py @@ -7,15 +7,15 @@ class RRann(RPackage): - """Finds the k nearest neighbours for every point in a given dataset in O(N + """Fast Nearest Neighbour Search (Wraps ANN Library) Using L2 Metric. + + Finds the k nearest neighbours for every point in a given dataset in O(N log N) time using Arya and Mount's ANN library (v1.1.3). There is support for approximate as well as exact searches, fixed radius searches and 'bd' as well as 'kd' trees. The distance is computed using the L2 (Euclidean) metric. Please see package 'RANN.L1' for the same functionality using the L1 (Manhattan, taxicab) metric.""" - homepage = "https://github.com/jefferis/RANN" - url = "https://cloud.r-project.org/src/contrib/RANN_2.6.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RANN" + cran = "RANN" version('2.6.1', sha256='b299c3dfb7be17aa41e66eff5674fddd2992fb6dd3b10bc59ffbf0c401697182') diff --git a/var/spack/repos/builtin/packages/r-rapidjsonr/package.py b/var/spack/repos/builtin/packages/r-rapidjsonr/package.py new file mode 100644 index 00000000000000..e639095a964410 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rapidjsonr/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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 import * + + +class RRapidjsonr(RPackage): + """'Rapidjson' C++ Header Files. + + Provides JSON parsing capability through the 'Rapidjson' 'C++' header-only + library.""" + + cran = "rapidjsonr" + + version('1.2.0', sha256='62c94fcdcf5d0fbdfa2f6168affe526bf547c37c16d94e2e1b78d7bf608eed1f') + + depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-rapiserialize/package.py b/var/spack/repos/builtin/packages/r-rapiserialize/package.py index 9d2006f65fdbf0..545e80ec907ed0 100644 --- a/var/spack/repos/builtin/packages/r-rapiserialize/package.py +++ b/var/spack/repos/builtin/packages/r-rapiserialize/package.py @@ -7,20 +7,18 @@ class RRapiserialize(RPackage): - """R API Serialization + """R API Serialization. This package provides other packages with access to the internal R - serialization code. Access to this code is provided at the C function - level by using the registration of native function mechanism. Client - packages simply include a single header file RApiSerializeAPI.h provided - by this package. This packages builds on the Rhpc package by Junji Nakano - and Ei-ji Nakama which also includes a (partial) copy of the file - src/main/serialize.c from R itself. The R Core group is the original - author of the serialization code made available by this package.""" + serialization code. Access to this code is provided at the C function level + by using the registration of native function mechanism. Client packages + simply include a single header file RApiSerializeAPI.h provided by this + package. This packages builds on the Rhpc package by Junji Nakano and Ei-ji + Nakama which also includes a (partial) copy of the file + src/main/serialize.c from R itself. The R Core group is the original author + of the serialization code made available by this package.""" - homepage = "https://cloud.r-project.org/web/packages/RApiSerialize/index.html" - url = "https://cloud.r-project.org/src/contrib/RApiSerialize_0.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RApiSerialize" + cran = "RApiSerialize" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-rappdirs/package.py b/var/spack/repos/builtin/packages/r-rappdirs/package.py index 41756949b4d2e6..84566e6a602f03 100644 --- a/var/spack/repos/builtin/packages/r-rappdirs/package.py +++ b/var/spack/repos/builtin/packages/r-rappdirs/package.py @@ -7,15 +7,16 @@ class RRappdirs(RPackage): - """An easy way to determine which directories on the users computer - you should use to save data, caches and logs. A port of Python's - 'Appdirs' to R.""" + """Application Directories: Determine Where to Save Data, Caches, and Logs. + + An easy way to determine which directories on the users computer you should + use to save data, caches and logs. A port of Python's 'Appdirs' + () to R.""" - homepage = "https://cloud.r-project.org/package=rappdirs" cran = "rappdirs" version('0.3.3', sha256='49959f65b45b0b189a2792d6c1339bef59674ecae92f8c2ed9f26ff9e488c184') version('0.3.1', sha256='2fd891ec16d28862f65bb57e4a78f77a597930abb59380e757afd8b6c6d3264a') depends_on('r@2.14:', type=('build', 'run')) - depends_on('r@3.2:', when='@0.3.2:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@0.3.2:') diff --git a/var/spack/repos/builtin/packages/r-raster/package.py b/var/spack/repos/builtin/packages/r-raster/package.py index 0fee2b2648aa6d..20d72d54c1b230 100644 --- a/var/spack/repos/builtin/packages/r-raster/package.py +++ b/var/spack/repos/builtin/packages/r-raster/package.py @@ -7,24 +7,27 @@ class RRaster(RPackage): - """Geographic Data Analysis and Modeling + """Geographic Data Analysis and Modeling. Reading, writing, manipulating, analyzing and modeling of spatial data. The package implements basic and high-level functions for raster data and for vector data operations such as intersections. See the manual and tutorials on to get started.""" - homepage = "https://cloud.r-project.org/package=raster" - url = "https://cloud.r-project.org/src/contrib/raster_2.5-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/raster" + cran = "raster" + version('3.5-15', sha256='29c7d3c5d34284f8b5a2ddc9989fbcf092ce209d5eb5310ebc772b5ebdfdd685') + version('3.5-11', sha256='e6c4823925260c65fe98585d7a0d47778616ae2e4eb1a1782b219580a9db61a3') version('3.4-5', sha256='c6620d790b3aba1b64aec31325f726e63f26a14a1b48c1a0f9167a0b1a64e4a5') version('2.9-23', sha256='90aaec9e3b1e3e6015d9993ea7491e008f2f71990f8abb8610f979c4e28b38af') version('2.9-22', sha256='8107d95f1aa85cea801c8101c6aa391becfef4b5b915d9bc7a323531fee26128') version('2.5-8', sha256='47992abd783450513fbce3770298cc257030bf0eb77e42aa3a4b3924b16264cc') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@3.4-5:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.4-5:') depends_on('r-sp@1.2-0:', type=('build', 'run')) - depends_on('r-sp@1.4.1:', when='@3.4-5:', type=('build', 'run')) + depends_on('r-sp@1.4.1:', type=('build', 'run'), when='@3.4-5:') + depends_on('r-sp@1.4.5:', type=('build', 'run'), when='@3.5-11:') depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-terra@1.4-11:', type=('build', 'run'), when='@3.5-11:') + depends_on('r-terra@1.5-12:', type=('build', 'run'), when='@3.5-15:') diff --git a/var/spack/repos/builtin/packages/r-rbgl/package.py b/var/spack/repos/builtin/packages/r-rbgl/package.py index 6529dd1284081c..5b1e4fb16ee3a8 100644 --- a/var/spack/repos/builtin/packages/r-rbgl/package.py +++ b/var/spack/repos/builtin/packages/r-rbgl/package.py @@ -7,14 +7,14 @@ class RRbgl(RPackage): - """An interface to the BOOST graph library + """An interface to the BOOST graph library. A fairly extensive and comprehensive interface to the graph algorithms contained in the BOOST library.""" - homepage = "https://bioconductor.org/packages/RBGL" - git = "https://git.bioconductor.org/packages/RBGL.git" + bioc = "RBGL" + version('1.70.0', commit='9cfd5fdad4f1f438ff748317f32e822aede8921b') version('1.66.0', commit='bf0c111dbc231de6d3423c28e115b54fb010e1ea') version('1.60.0', commit='ef24c17c411659b8f030602bd9781c534d6ec93b') version('1.58.2', commit='086ad0c6bab7be29311b6ae14fd39df7a21331a6') @@ -23,4 +23,4 @@ class RRbgl(RPackage): version('1.52.0', commit='93e8fcfafec8f1cd5638fe30dc0f9506d15b49c0') depends_on('r-graph', type=('build', 'run')) - depends_on('r-bh', when='@1.60.0:', type=('build', 'run')) + depends_on('r-bh', type=('build', 'run'), when='@1.60.0:') diff --git a/var/spack/repos/builtin/packages/r-rbibutils/package.py b/var/spack/repos/builtin/packages/r-rbibutils/package.py index 390972d9748f4b..8351ab50ab3e12 100644 --- a/var/spack/repos/builtin/packages/r-rbibutils/package.py +++ b/var/spack/repos/builtin/packages/r-rbibutils/package.py @@ -7,17 +7,16 @@ class RRbibutils(RPackage): - """Convert Between Bibliography Formats + """Convert Between Bibliography Formats. Converts between a number of bibliography formats, including 'BibTeX', 'BibLaTeX' and 'Bibentry'. Includes a port of the 'bibutils' utilities by Chris Putnam . Supports all bibliography formats and character encodings implemented in 'bibutils'.""" - homepage = "https://geobosh.github.io/rbibutils/" - url = "https://cloud.r-project.org/src/contrib/rbibutils_2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rbibutils" + cran = "rbibutils" + version('2.2.7', sha256='7c9e6719556b8caa9fb58743b717e89f45e8e7018371bf16f07dc3c1f96a55c5') version('2.0', sha256='03d13abee321decb88bc4e7c9f27276d62a4a880fa72bb6b86be91885010cfed') depends_on('r@2.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rbokeh/package.py b/var/spack/repos/builtin/packages/r-rbokeh/package.py index 4cf22ee6532a92..1f3d49576afb28 100644 --- a/var/spack/repos/builtin/packages/r-rbokeh/package.py +++ b/var/spack/repos/builtin/packages/r-rbokeh/package.py @@ -8,16 +8,15 @@ class RRbokeh(RPackage): - """R Interface for Bokeh + """R Interface for Bokeh. A native R plotting library that provides a flexible declarative interface for creating interactive web-based graphics, backed by the Bokeh visualization library .""" - homepage = "https://hafen.github.io/rbokeh" - url = "https://cloud.r-project.org/src/contrib/rbokeh_0.5.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rbokeh" + cran = "rbokeh" + version('0.5.2', sha256='d8c47dbd978efce04e5676a3a91d511517a9bb8fe1859c404bfc9ee0f0bf4ec0') version('0.5.1', sha256='48eba3b238cea2b9aa408d8a48c663564292e76f2ab3f603bc671315a4a75a88') version('0.5.0', sha256='499c3224a7dcaeb4bb60fd645b3ef528a20e59437747a073713941b80cbcebd2') @@ -30,6 +29,7 @@ class RRbokeh(RPackage): depends_on('r-lazyeval', type=('build', 'run')) depends_on('r-pryr', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-scales', type=('build', 'run')) depends_on('r-gistr', type=('build', 'run')) + + depends_on('r-ggplot2', type=('build', 'run'), when='@:0.5.1') diff --git a/var/spack/repos/builtin/packages/r-rcmdcheck/package.py b/var/spack/repos/builtin/packages/r-rcmdcheck/package.py index 73e9c50ee1cba1..9c05ff75350526 100644 --- a/var/spack/repos/builtin/packages/r-rcmdcheck/package.py +++ b/var/spack/repos/builtin/packages/r-rcmdcheck/package.py @@ -7,19 +7,21 @@ class RRcmdcheck(RPackage): - """Run 'R CMD check' from 'R' and capture the results of the individual + """Run 'R CMD check' from 'R' and Capture Results. + + Run 'R CMD check' from 'R' and capture the results of the individual checks. Supports running checks in the background, timeouts, pretty printing and comparing check results.""" - homepage = "https://github.com/r-Lib/rcmdcheck#readme" - url = "https://cloud.r-project.org/src/contrib/rcmdcheck_1.3.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rcmdcheck" + cran = "rcmdcheck" + version('1.4.0', sha256='bbd4ef7d514b8c2076196a7c4a6041d34623d55fbe73f2771758ce61fd32c9d0') version('1.3.3', sha256='1ab679eb1976d74cd3be5bcad0af7fcc673dbdfd4406bbce32591c8fddfb93b4') depends_on('r-callr@3.1.1.9000:', type=('build', 'run')) depends_on('r-cli@1.1.0:', type=('build', 'run')) - depends_on('r-crayon', type=('build', 'run')) + depends_on('r-cli@3.0.0:', type=('build', 'run'), when='@1.4.0:') + depends_on('r-curl', type=('build', 'run'), when='@1.4.0:') depends_on('r-desc@1.2.0:', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) depends_on('r-pkgbuild', type=('build', 'run')) @@ -29,3 +31,5 @@ class RRcmdcheck(RPackage): depends_on('r-sessioninfo@1.1.1:', type=('build', 'run')) depends_on('r-withr', type=('build', 'run')) depends_on('r-xopen', type=('build', 'run')) + + depends_on('r-crayon', type=('build', 'run'), when='@:1.3.3') diff --git a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py index aebe520de29e4a..b57da787f74915 100644 --- a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py +++ b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py @@ -7,12 +7,12 @@ class RRcolorbrewer(RPackage): - """Provides color schemes for maps (and other graphics) designed by Cynthia + """ColorBrewer Palettes. + + Provides color schemes for maps (and other graphics) designed by Cynthia Brewer as described at https://colorbrewer2.org/""" - homepage = "https://colorbrewer2.org" - url = "https://cloud.r-project.org/src/contrib/RColorBrewer_1.1-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RColorBrewer" + cran = "RColorBrewer" version('1.1-2', sha256='f3e9781e84e114b7a88eb099825936cc5ae7276bbba5af94d35adb1b3ea2ccdd') diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index 066c2210da6729..22493cd9e2bf67 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -7,7 +7,7 @@ class RRcpp(RPackage): - """Seamless R and C++ Integration + """Seamless R and C++ Integration. The 'Rcpp' package provides R functions as well as C++ classes which; offer a seamless integration of R and C++. Many R data types and objects can be; @@ -21,9 +21,9 @@ class RRcpp(RPackage): (2018,; ); see 'citation("Rcpp")' for details.""" - homepage = "https://dirk.eddelbuettel.com/code/rcpp.html" cran = "Rcpp" + version('1.0.8', sha256='879f9296bc045ac4ed464578723bd37fcabbbdaa30aaaf070cf953e329f678ee') version('1.0.7', sha256='15e5a4732216daed16263c79fb37017c2ada84a2d4e785e3b76445d0eba3dc1d') version('1.0.6', sha256='c9f24756bc000f7a989bd4f9aa93d57f7739dcde77946703f8bb32332a35f012') version('1.0.4.6', sha256='45af675ddbbe155e671453b2e84fe32250bb98d4ccb4342b61c1e25cff10b302') diff --git a/var/spack/repos/builtin/packages/r-rcppannoy/package.py b/var/spack/repos/builtin/packages/r-rcppannoy/package.py index 440e8d1618465b..4d42070520819b 100644 --- a/var/spack/repos/builtin/packages/r-rcppannoy/package.py +++ b/var/spack/repos/builtin/packages/r-rcppannoy/package.py @@ -7,7 +7,8 @@ class RRcppannoy(RPackage): - """'Rcpp' Bindings for 'Annoy', a Library for Approximate Nearest Neighbors + """'Rcpp' Bindings for 'Annoy', a Library for Approximate Nearest + Neighbors. 'Annoy' is a small C++ library for Approximate Nearest Neighbors written for efficient memory usage as well an ability to load from / save to disk. @@ -17,12 +18,12 @@ class RRcppannoy(RPackage): under Version 2.0 of the Apache License. Also included is a small Windows port of 'mmap' which is released under the MIT license.""" - homepage = "https://cloud.r-project.org/package=RcppAnnoy" - url = "https://cloud.r-project.org/src/contrib/RcppAnnoy_0.0.12.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppAnnoy" + cran = "RcppAnnoy" + version('0.0.19', sha256='89b209900516f3096b53c90937081fb8965c605c867aa465f1b3b68092b7688a') version('0.0.18', sha256='e4e7ddf071109b47b4fdf285db6d2155618ed73da829c30d8e64fc778e63c858') version('0.0.12', sha256='8f736cbbb4a32c80cb08ba4e81df633846d725f27867e983af2012966eac0eac') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r-rcpp@0.11.3:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-rcpp@0.11.3:', type=('build', 'run'), when='@:0.0.12') diff --git a/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py b/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py index a9790d92cef221..79e6b364d64be6 100644 --- a/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py +++ b/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py @@ -7,7 +7,7 @@ class RRcpparmadillo(RPackage): - """'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library + """'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library. 'Armadillo' is a templated C++ linear algebra library (by Conrad; Sanderson) that aims towards a good balance between speed and ease of; use. @@ -21,14 +21,15 @@ class RRcpparmadillo(RPackage): under licensed as MPL; 2.0 from version 3.800.0 onwards and LGPL-3 prior to that""" - homepage = "https://cloud.r-project.org/package=RcppArmadillo" cran = "RcppArmadillo" + version('0.10.8.1.0', sha256='efa415afb38514648456d1feab247c556735573673986a4fb0f512960b9af5f4') + version('0.10.7.5.0', sha256='7c061e6371c3c068d17744fd7f764dfd02f25393c3f5d534aa7d9e62ac912614') version('0.10.7.3.0', sha256='3710b767708e3b9408723eedb98391daa8651fda53a2c6b033273265512f6262') version('0.10.1.2.2', sha256='38323703fcf2b61f46f2984aafdd3ddf17c3c993d1d27a8f0f4ba5012b99d069') version('0.9.600.4.0', sha256='2057b7aa965a4c821dd734276d8e6a01cd59a1b52536b65cb815fa7e8c114f1e') version('0.9.400.3.0', sha256='56936d501fe8e6f8796ae1a6badb9294d7dad98a0b557c3b3ce6bd4ecaad13b0') version('0.8.100.1.0', sha256='97ca929b34d84d99d7cadc3612b544632cdd0c43ed962933a3d47caa27854fa7') - depends_on('r@3.3.0:', when='@0.8.500.0:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.8.500.0:') depends_on('r-rcpp@0.11.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rcppblaze/package.py b/var/spack/repos/builtin/packages/r-rcppblaze/package.py index 8b34ef434840c5..b990b3653b1396 100644 --- a/var/spack/repos/builtin/packages/r-rcppblaze/package.py +++ b/var/spack/repos/builtin/packages/r-rcppblaze/package.py @@ -8,35 +8,32 @@ class RRcppblaze(RPackage): """'Blaze' is an open-source, high-performance C++ math library for dense - and sparse arithmetic. + and sparse arithmetic. - With its state-of-the-art Smart Expression Template implementation - 'Blaze' combines the elegance and ease of use of a domain-specific - language with 'HPC'-grade performance, making it one of the most - intuitive and fastest C++ math libraries available. The 'Blaze' - library offers: - high performance through the integration of - 'BLAS' libraries and manually tuned 'HPC' math kernels - vectorization - by 'SSE', 'SSE2', 'SSE3', 'SSSE3', 'SSE4', 'AVX', 'AVX2', 'AVX-512', - 'FMA', and 'SVML' - parallel execution by 'OpenMP', C++11 threads and - 'Boost' threads ('Boost' threads are disabled in 'RcppBlaze') - the - intuitive and easy to use API of a domain specific language - unified - arithmetic with dense and sparse vectors and matrices - thoroughly - tested matrix and vector arithmetic - completely portable, high quality - C++ source code. The 'RcppBlaze' package includes the header files from - the 'Blaze' library with disabling some functionalities related to link - to the thread and system libraries which make 'RcppBlaze' be a - header-only library. Therefore, users do not need to install 'Blaze' - and the dependency 'Boost'. 'Blaze' is licensed under the New (Revised) - BSD license, while 'RcppBlaze' (the 'Rcpp' bindings/bridge to 'Blaze') - is licensed under the GNU GPL version 2 or later, as is the rest of - 'Rcpp'. Note that since 'Blaze' has committed to 'C++14' commit to - 'C++14' which does not used by most R users from version 3.0, we will - use the version 2.6 of 'Blaze' which is 'C++98' compatible to support - the most compilers and system.""" + With its state-of-the-art Smart Expression Template implementation 'Blaze' + combines the elegance and ease of use of a domain-specific language with + 'HPC'-grade performance, making it one of the most intuitive and fastest + C++ math libraries available. The 'Blaze' library offers: - high + performance through the integration of 'BLAS' libraries and manually tuned + 'HPC' math kernels - vectorization by 'SSE', 'SSE2', 'SSE3', 'SSSE3', + 'SSE4', 'AVX', 'AVX2', 'AVX-512', 'FMA', and 'SVML' - parallel execution by + 'OpenMP', C++11 threads and 'Boost' threads ('Boost' threads are disabled + in 'RcppBlaze') - the intuitive and easy to use API of a domain specific + language - unified arithmetic with dense and sparse vectors and matrices - + thoroughly tested matrix and vector arithmetic - completely portable, high + quality C++ source code. The 'RcppBlaze' package includes the header files + from the 'Blaze' library with disabling some functionalities related to + link to the thread and system libraries which make 'RcppBlaze' be a + header-only library. Therefore, users do not need to install 'Blaze' and + the dependency 'Boost'. 'Blaze' is licensed under the New (Revised) BSD + license, while 'RcppBlaze' (the 'Rcpp' bindings/bridge to 'Blaze') is + licensed under the GNU GPL version 2 or later, as is the rest of 'Rcpp'. + Note that since 'Blaze' has committed to 'C++14' commit to 'C++14' which + does not used by most R users from version 3.0, we will use the version 2.6 + of 'Blaze' which is 'C++98' compatible to support the most compilers and + system.""" - homepage = "https://github.com/Chingchuan-chen/RcppBlaze" - url = "https://cloud.r-project.org/src/contrib/RcppBlaze_0.2.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppBlaze" + cran = "RcppBlaze" version('0.2.2', sha256='67550ed8aea12a219047af61b41e5b9f991608a21ce9a8fbf7ac55da0f7c2742') diff --git a/var/spack/repos/builtin/packages/r-rcppcctz/package.py b/var/spack/repos/builtin/packages/r-rcppcctz/package.py index 945011b5e83699..bc343f32a32a9b 100644 --- a/var/spack/repos/builtin/packages/r-rcppcctz/package.py +++ b/var/spack/repos/builtin/packages/r-rcppcctz/package.py @@ -7,7 +7,7 @@ class RRcppcctz(RPackage): - """'Rcpp' Bindings for the 'CCTZ' Library + """'Rcpp' Bindings for the 'CCTZ' Library. 'Rcpp' Access to the 'CCTZ' timezone library is provided. 'CCTZ' is a C++ library for translating between absolute and civil times using the rules of @@ -15,10 +15,9 @@ class RRcppcctz(RPackage): is included in this package. See for more details.""" - homepage = "https://github.com/eddelbuettel/rcppcctz" - url = "https://cloud.r-project.org/src/contrib/RcppCCTZ_0.2.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppCCTZ" + cran = "RcppCCTZ" + version('0.2.10', sha256='3a78188ec771270c87d5ccb8237506adac1827220c694df2f683f64002e2444a') version('0.2.9', sha256='723f45eca1be08903234e339523daca35748fe65c1a9d59afcb583d3a17bcaae') version('0.2.6', sha256='0e9a76055d29da24cd4c4069c78c1f44998f3461be60c7a6c3e7a35059fb79ae') version('0.2.4', sha256='98b6867d38abe03957fe803e88b6cc2d122b85a68ef07fa86f7e1009d6c00819') diff --git a/var/spack/repos/builtin/packages/r-rcppcnpy/package.py b/var/spack/repos/builtin/packages/r-rcppcnpy/package.py index 3dd1c25fd157d8..4266a58645fd85 100644 --- a/var/spack/repos/builtin/packages/r-rcppcnpy/package.py +++ b/var/spack/repos/builtin/packages/r-rcppcnpy/package.py @@ -7,11 +7,16 @@ class RRcppcnpy(RPackage): - """Rcpp bindings for NumPy files.""" + """Read-Write Support for 'NumPy' Files via 'Rcpp'. - homepage = "https://github.com/eddelbuettel/rcppcnpy" - url = "https://cloud.r-project.org/src/contrib/RcppCNPy_0.2.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppCNPy" + The 'cnpy' library written by Carl Rogers provides read and write + facilities for files created with (or for) the 'NumPy' extension for + 'Python'. Vectors and matrices of numeric types can be read or written to + and from files as well as compressed files. Support for integer files is + available if the package has been built with -std=c++11 which should be the + default on all platforms since the release of R 3.3.0.""" + + cran = "RcppCNPy" version('0.2.10', sha256='77d6fbc86520a08da40d44c0b82767099f8f719ca95870d91efff1a9cab1ab9c') version('0.2.9', sha256='733f004ad1a8b0e5aafbf547c4349d2df3118afd57f1ff99f20e39135c6edb30') diff --git a/var/spack/repos/builtin/packages/r-rcppdate/package.py b/var/spack/repos/builtin/packages/r-rcppdate/package.py index b5def212daad88..48f39fb548ab97 100644 --- a/var/spack/repos/builtin/packages/r-rcppdate/package.py +++ b/var/spack/repos/builtin/packages/r-rcppdate/package.py @@ -7,7 +7,7 @@ class RRcppdate(RPackage): - """'date' C++ Header Library for Date and Time Functionality + """'date' C++ Header Library for Date and Time Functionality. 'date' is a C++ header library offering extensive date and time functionality for the C++11, C++14 and C++17 standards written by Howard @@ -17,8 +17,7 @@ class RRcppdate(RPackage): other R packages can use them in their C++ code. At present, few of the types have explicit 'Rcpp' wrapper though these may be added as needed.""" - homepage = "https://github.com/eddelbuettel/rcppdate" - url = "https://cloud.r-project.org/src/contrib/RcppDate_0.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppDate" + cran = "RcppDate" + version('0.0.3', sha256='9c5ee7cf76d63cd51e8faff831f5f865762868d7d705395960c0f22e9b238bdb') version('0.0.1', sha256='117721fc677dfb4209200a7ff894fbbb8ee1b652d01b3878b11c3253733b4a5f') diff --git a/var/spack/repos/builtin/packages/r-rcppde/package.py b/var/spack/repos/builtin/packages/r-rcppde/package.py new file mode 100644 index 00000000000000..c093147c568486 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rcppde/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2022 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 import * + + +class RRcppde(RPackage): + """Global Optimization by Differential Evolution in C++. + + An efficient C++ based implementation of the 'DEoptim' function which + performs global optimization by differential evolution. Its creation was + motivated by trying to see if the old approximation "easier, shorter, + faster: pick any two" could in fact be extended to achieving all three + goals while moving the code from plain old C to modern C++. The initial + version did in fact do so, but a good part of the gain was due to an + implicit code review which eliminated a few inefficiencies which have since + been eliminated in 'DEoptim'.""" + + cran = "RcppDE" + + version('0.1.6', sha256='c9386709f72cdc33505b3ac675c173013fe098434b7c21bc09eb625b529132c5') + + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-rcpparmadillo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index 7970198fe34158..adbda4c47af8ee 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -7,25 +7,23 @@ class RRcppeigen(RPackage): - """'Rcpp' Integration for the 'Eigen' Templated Linear Algebra Library + """'Rcpp' Integration for the 'Eigen' Templated Linear Algebra Library. - R and 'Eigen' integration using 'Rcpp'. 'Eigen' is a C++ template - library for linear algebra: matrices, vectors, numerical solvers and - related algorithms. It supports dense and sparse matrices on integer, - floating point and complex numbers, decompositions of such matrices, and - solutions of linear systems. Its performance on many algorithms is - comparable with some of the best implementations based on 'Lapack' and - level-3 'BLAS'. The 'RcppEigen' package includes the header files from the - 'Eigen' C++ template library (currently version 3.2.8). Thus users do not - need to install 'Eigen' itself in order to use 'RcppEigen'. Since version - 3.1.1, 'Eigen' is licensed under the Mozilla Public License (version 2); - earlier version were licensed under the GNU LGPL version 3 or later. - 'RcppEigen' (the 'Rcpp' bindings/bridge to 'Eigen') is licensed under the - GNU GPL version 2 or later, as is the rest of 'Rcpp'.""" + R and 'Eigen' integration using 'Rcpp'. 'Eigen' is a C++ template library + for linear algebra: matrices, vectors, numerical solvers and related + algorithms. It supports dense and sparse matrices on integer, floating + point and complex numbers, decompositions of such matrices, and solutions + of linear systems. Its performance on many algorithms is comparable with + some of the best implementations based on 'Lapack' and level-3 'BLAS'. The + 'RcppEigen' package includes the header files from the 'Eigen' C++ template + library (currently version 3.2.8). Thus users do not need to install + 'Eigen' itself in order to use 'RcppEigen'. Since version 3.1.1, 'Eigen' is + licensed under the Mozilla Public License (version 2); earlier version were + licensed under the GNU LGPL version 3 or later. 'RcppEigen' (the 'Rcpp' + bindings/bridge to 'Eigen') is licensed under the GNU GPL version 2 or + later, as is the rest of 'Rcpp'.""" - homepage = "https://eigen.tuxfamily.org/" - url = "https://cloud.r-project.org/src/contrib/RcppEigen_0.3.2.9.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppEigen" + cran = "RcppEigen" version('0.3.3.9.1', sha256='8a0486249b778a4275a1168fc89fc7fc49c2bb031cb14b50a50089acae7fe962') version('0.3.3.5.0', sha256='e5c6af17770c5f57b7cf2fba04ad1a519901b446e8138bfff221952458207f05') diff --git a/var/spack/repos/builtin/packages/r-rcppgsl/package.py b/var/spack/repos/builtin/packages/r-rcppgsl/package.py new file mode 100644 index 00000000000000..7eb99833716fa3 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rcppgsl/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2022 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 import * + + +class RRcppgsl(RPackage): + """'Rcpp' Integration for 'GNU GSL' Vectors and Matrices. + + 'Rcpp' integration for 'GNU GSL' vectors and matrices The 'GNU Scientific + Library' (or 'GSL') is a collection of numerical routines for scientific + computing. It is particularly useful for C and C++ programs as it provides + a standard C interface to a wide range of mathematical routines. There are + over 1000 functions in total with an extensive test suite. The 'RcppGSL' + package provides an easy-to-use interface between 'GSL' data structures and + R using concepts from 'Rcpp' which is itself a package that eases the + interfaces between R and C++. This package also serves as a prime example + of how to build a package that uses 'Rcpp' to connect to another + third-party library. The 'autoconf' script, 'inline' plugin and example + package can all be used as a stanza to write a similar package against + another library.""" + + cran = "RcppGSL" + + version('0.3.10', sha256='8612087da02fb791f427fed310c23d0482a8eb60fb089119f018878143f95451') + + depends_on('r-rcpp@0.11.0:', type=('build', 'run')) + depends_on('gsl') diff --git a/var/spack/repos/builtin/packages/r-rcpphnsw/package.py b/var/spack/repos/builtin/packages/r-rcpphnsw/package.py index e69be5a8286daf..18e353349e4f30 100644 --- a/var/spack/repos/builtin/packages/r-rcpphnsw/package.py +++ b/var/spack/repos/builtin/packages/r-rcpphnsw/package.py @@ -8,16 +8,14 @@ class RRcpphnsw(RPackage): """'Rcpp' Bindings for 'hnswlib', a Library for Approximate - NearestNeighbors + NearestNeighbors. 'Hnswlib' is a C++ library for Approximate Nearest Neighbors. This ; package provides a minimal R interface by relying on the 'Rcpp' package. See ; for more on 'hnswlib'. 'hnswlib' is ; released under Version 2.0 of the Apache License.""" - homepage = "https://cloud.r-project.org/package=RcppHNSW" - url = "https://cloud.r-project.org/src/contrib/RcppHNSW_0.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppHNSW" + cran = "RcppHNSW" 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 54458338b8dde0..52241335dc626d 100644 --- a/var/spack/repos/builtin/packages/r-rcppparallel/package.py +++ b/var/spack/repos/builtin/packages/r-rcppparallel/package.py @@ -7,21 +7,21 @@ class RRcppparallel(RPackage): - """Parallel Programming Tools for 'Rcpp' + """Parallel Programming Tools for 'Rcpp'. - High level functions for parallel programming with 'Rcpp'. For example, - the 'parallelFor()' function can be used to convert the work of a standard + High level functions for parallel programming with 'Rcpp'. For example, the + 'parallelFor()' function can be used to convert the work of a standard serial "for" loop into a parallel one and the 'parallelReduce()' function can be used for accumulating aggregate or other values.""" - homepage = "https://rcppcore.github.io/RcppParallel" - url = "https://cloud.r-project.org/src/contrib/RcppParallel_4.4.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppParallel" + cran = "RcppParallel" + version('5.1.5', sha256='6396322b3b6d6f7019aac808ceb74707bc5c4ed01677fab408372c2a5508c2ea') version('5.0.2', sha256='8ca200908c6365aafb2063be1789f0894969adc03c0f523c6cc45434b8236f81') version('4.4.3', sha256='7a04929ecab97e46c0b09fe5cdbac9d7bfa17ad7d111f1a9787a9997f45fa0fa') depends_on('r@3.0.2:', type=('build', 'run')) depends_on('gmake', type='build') + depends_on('tbb', when='@5.1.5:') patch('asclang.patch', when='%fj') diff --git a/var/spack/repos/builtin/packages/r-rcppprogress/package.py b/var/spack/repos/builtin/packages/r-rcppprogress/package.py index 9c0821926d2c95..b5ca017f40a54f 100644 --- a/var/spack/repos/builtin/packages/r-rcppprogress/package.py +++ b/var/spack/repos/builtin/packages/r-rcppprogress/package.py @@ -7,15 +7,13 @@ class RRcppprogress(RPackage): - """An Interruptible Progress Bar with OpenMP Support for C++ in R Packages + """An Interruptible Progress Bar with OpenMP Support for C++ in R Packages. Allows to display a progress bar in the R console for long running - computations taking place in c++ code, and support for interrupting - those computations even in multithreaded code, typically using OpenMP.""" + computations taking place in c++ code, and support for interrupting those + computations even in multithreaded code, typically using OpenMP.""" - homepage = "https://cloud.r-project.org/package=RcppProgress" - url = "https://cloud.r-project.org/src/contrib/RcppProgress_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RcppProgress" + cran = "RcppProgress" version('0.4.2', sha256='b1624b21b7aeb1dafb30f092b2a4bef4c3504efd2d6b00b2cdf55dc9df194b48') version('0.4.1', sha256='11764105922f763d4c75c502599ec7dcc2fd629a029964caf53f98b41d0c607a') @@ -25,4 +23,4 @@ class RRcppprogress(RPackage): version('0.2', sha256='ca32624739058f1b5aab18b09dc4c613ecfd18a3ace39f3b97790232db829481') version('0.1', sha256='04f71d3391b7dfab997afadf7ffdd87b88037f7fbc751bea544ad2a65e2872bf') - depends_on('r-rcpp@0.9.4:', when='@:0.4', type=('build', 'run')) + depends_on('r-rcpp@0.9.4:', type=('build', 'run'), when='@:0.4') diff --git a/var/spack/repos/builtin/packages/r-rcpptoml/package.py b/var/spack/repos/builtin/packages/r-rcpptoml/package.py new file mode 100644 index 00000000000000..05fee75b566d84 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rcpptoml/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class RRcpptoml(RPackage): + """'Rcpp' Bindings to Parser for Tom's Obvious Markup Language. + + The configuration format defined by 'TOML' (which expands to "Tom's Obvious + Markup Language") specifies an excellent format (described at + ) suitable for both human editing as well as the + common uses of a machine-readable format. This package uses 'Rcpp' to + connect the 'cpptoml' parser written by Chase Geigle (in C++11) to R.""" + + cran = "RcppTOML" + + version('0.1.7', sha256='2f09f00cbee6c6eeff5d5f0195c10de0155496de15fbe8189c18627ee3090541') + + depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r-rcpp@0.11.5:', 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 new file mode 100644 index 00000000000000..d043ec20a7ad3d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rcppziggurat/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2022 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 import * + + +class RRcppziggurat(RPackage): + """'Rcpp' Integration of Different "Ziggurat" Normal RNG Implementations. + + The Ziggurat generator for normally distributed random numbers, originally + proposed by Marsaglia and Tsang (2000, ) has + been improved upon a few times starting with Leong et al (2005, + ). This package provides an aggregation in order + to compare different implementations in order to provide an 'faster but + good enough' alternative for use with R and C++ code.""" + + cran = "RcppZiggurat" + + version('0.1.6', sha256='9c78255ca476c945c05a564d1e4da363de714d890e0e27f3b252fd73c50eed71') + + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-rcppgsl', type=('build', 'run')) + + # not listed as a dependency but needed + depends_on('gsl') diff --git a/var/spack/repos/builtin/packages/r-rcurl/package.py b/var/spack/repos/builtin/packages/r-rcurl/package.py index 48a0b8cf56d259..0fb3912aae4ab2 100644 --- a/var/spack/repos/builtin/packages/r-rcurl/package.py +++ b/var/spack/repos/builtin/packages/r-rcurl/package.py @@ -7,27 +7,28 @@ class RRcurl(RPackage): - """A wrapper for 'libcurl' Provides - functions to allow one to compose general HTTP requests and provides - convenient functions to fetch URIs, get & post forms, etc. and process - the results returned by the Web server. This provides a great deal of - control over the HTTP/FTP/... connection and the form of the request - while providing a higher-level interface than is available just using - R socket connections. Additionally, the underlying implementation is - robust and extensive, supporting FTP/FTPS/TFTP (uploads and downloads), - SSL/HTTPS, telnet, dict, ldap, and also supports cookies, redirects, - authentication, etc.""" + """General Network (HTTP/FTP/...) Client Interface for R. - homepage = "https://cloud.r-project.org/package=RCurl" - url = "https://cloud.r-project.org/src/contrib/RCurl_1.95-4.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RCurl" + A wrapper for 'libcurl' Provides functions + to allow one to compose general HTTP requests and provides convenient + functions to fetch URIs, get & post forms, etc. and process the results + returned by the Web server. This provides a great deal of control over the + HTTP/FTP/... connection and the form of the request while providing a + higher-level interface than is available just using R socket connections. + Additionally, the underlying implementation is robust and extensive, + supporting FTP/FTPS/TFTP (uploads and downloads), SSL/HTTPS, telnet, dict, + ldap, and also supports cookies, redirects, authentication, etc.""" + cran = "RCurl" + + version('1.98-1.6', sha256='6cb56864ac043195b658bbdb345518d561507d84ccd60362866e970c2f71d1a2') + version('1.98-1.5', sha256='73187c9a039188ffdc255fb7fa53811a6abfb31e6375a51eae8c763b37dd698d') version('1.98-1.2', sha256='5d74a0cdc3c5684b0348b959f67039e3c2a5da2bbb6176f6800a94124895a7a8') version('1.95-4.12', sha256='393779efafdf40823dac942a1e028905d65c34f3d41cfd21bcd225e411385ff4') version('1.95-4.8', sha256='e72243251bbbec341bc5864305bb8cc23d311d19c5d0d9310afec7eb35aa2bfb') - depends_on('r@3.4.0:', when='@1.98:', type=('build', 'run')) depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@1.98:') depends_on('r-bitops', type=('build', 'run')) depends_on('curl') depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-rda/package.py b/var/spack/repos/builtin/packages/r-rda/package.py index 0ee90bd287cd70..03580dbf9698ab 100644 --- a/var/spack/repos/builtin/packages/r-rda/package.py +++ b/var/spack/repos/builtin/packages/r-rda/package.py @@ -7,12 +7,12 @@ class RRda(RPackage): - """Shrunken Centroids Regularized Discriminant Analysis for the - classification purpose in high dimensional data.""" + """Shrunken Centroids Regularized Discriminant Analysis. - homepage = "https://cloud.r-project.org/package=rda" - url = "https://cloud.r-project.org/src/contrib/rda_1.0.2-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rda" + Shrunken Centroids Regularized Discriminant Analysis for the classification + purpose in high dimensional data.""" + + cran = "rda" # Note: Package 'rda' was removed from the CRAN repository. # The latest archived version is below diff --git a/var/spack/repos/builtin/packages/r-rdpack/package.py b/var/spack/repos/builtin/packages/r-rdpack/package.py index 8dada315d5e4b7..89ec7e0e3446e1 100644 --- a/var/spack/repos/builtin/packages/r-rdpack/package.py +++ b/var/spack/repos/builtin/packages/r-rdpack/package.py @@ -7,24 +7,24 @@ class RRdpack(RPackage): - """Update and Manipulate Rd Documentation Objects + """Update and Manipulate Rd Documentation Objects. - Functions for manipulation of R documentation objects, including - functions reprompt() and ereprompt() for updating 'Rd' documentation for - functions, methods and classes; 'Rd' macros for citations and import of - references from 'bibtex' files for use in 'Rd' files and 'roxygen2' - comments; 'Rd' macros for evaluating and inserting snippets of 'R' code and - the results of its evaluation or creating graphics on the fly; and many - functions for manipulation of references and Rd files.""" + Functions for manipulation of R documentation objects, including functions + reprompt() and ereprompt() for updating 'Rd' documentation for functions, + methods and classes; 'Rd' macros for citations and import of references + from 'bibtex' files for use in 'Rd' files and 'roxygen2' comments; 'Rd' + macros for evaluating and inserting snippets of 'R' code and the results of + its evaluation or creating graphics on the fly; and many functions for + manipulation of references and Rd files.""" - homepage = "https://github.com/GeoBosh/Rdpack" - url = "https://cloud.r-project.org/src/contrib/Rdpack_0.11-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Rdpack" + cran = "Rdpack" + version('2.1.3', sha256='8381a8866b9acf5acb2c80069684339c3921f1b45fa202719e8f6852fb4d55b8') version('2.1', sha256='26e094fe3c077fb2a99e95c5bd94015a5f993a4a5f5d217829b4872ff004bfce') version('0.11-0', sha256='8fb449c80fbe931cdce51f728fb03a1978009ccce66fd6b9edacdc6ff4118d85') depends_on('r@2.15.0:', type=('build', 'run')) - depends_on('r-gbrd', type=('build', 'run')) - depends_on('r-rbibutils@1.3:', when='@2.1:', type=('build', 'run')) - depends_on('r-bibtex@0.4.0:', when='@:0.11-0', type=('build', 'run')) + depends_on('r-rbibutils@1.3:', type=('build', 'run'), when='@2.1:') + + depends_on('r-bibtex@0.4.0:', type=('build', 'run'), when='@:0.11-0') + depends_on('r-gbrd', type=('build', 'run'), when='@:2.1') diff --git a/var/spack/repos/builtin/packages/r-readbitmap/package.py b/var/spack/repos/builtin/packages/r-readbitmap/package.py index c5c9af6ee03bea..b28986d58d807e 100644 --- a/var/spack/repos/builtin/packages/r-readbitmap/package.py +++ b/var/spack/repos/builtin/packages/r-readbitmap/package.py @@ -7,15 +7,14 @@ class RReadbitmap(RPackage): - """Identifies and reads Windows BMP, JPEG, PNG, and TIFF format bitmap - images. Identification defaults to the use of the magic number embedded in - the file rather than the file extension. Reading of JPEG and PNG image - depends on libjpg and libpng libraries. See file INSTALL for details if - necessary.""" + """Simple Unified Interface to Read Bitmap Images (BMP,JPEG,PNG,TIFF). - homepage = "https://github.com/jefferis/readbitmap" - url = "https://cloud.r-project.org/src/contrib/readbitmap_0.1.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/readbitmap" + Identifies and reads Windows BMP, JPEG, PNG, and TIFF format bitmap images. + Identification defaults to the use of the magic number embedded in the file + rather than the file extension. Reading of JPEG and PNG image depends on + libjpg and libpng libraries. See file INSTALL for details if necessary.""" + + cran = "readbitmap" version('0.1.5', sha256='737d7d585eb33de2c200da64d16781e3c9522400fe2af352e1460c6a402a0291') @@ -23,6 +22,5 @@ class RReadbitmap(RPackage): depends_on('r-jpeg', type=('build', 'run')) depends_on('r-png', type=('build', 'run')) depends_on('r-tiff', type=('build', 'run')) - depends_on('jpeg') depends_on('libpng') diff --git a/var/spack/repos/builtin/packages/r-readr/package.py b/var/spack/repos/builtin/packages/r-readr/package.py index c1922637eed149..96a80ec3c1209b 100644 --- a/var/spack/repos/builtin/packages/r-readr/package.py +++ b/var/spack/repos/builtin/packages/r-readr/package.py @@ -7,36 +7,39 @@ class RReadr(RPackage): - """Read Rectangular Text Data + """Read Rectangular Text Data. The goal of 'readr' is to provide a fast and friendly way to read rectangular data (like 'csv', 'tsv', and 'fwf'). It is designed to flexibly parse many types of data found in the wild, while still cleanly failing when data unexpectedly changes.""" - homepage = "https://cloud.r-project.org/package=readr" cran = "readr" + version('2.1.2', sha256='94afd03a1fa4abcf2985ec903bbf5995d7c590e1a50512ed80d081ef4fe10c1b') + version('2.1.1', sha256='03937918a547e3a1587295f5e5f8c7f6865a4d04047d2b20c8d0f0701f1cbc84') version('2.0.2', sha256='98b05ed751dda2bcf7a29d070ce3d3e8475e0138a3e3ec68941dc45218db7615') version('1.4.0', sha256='02b1188aab8b2bc3f3d2bba5b946bd299610e87f3f7660c88b60b444093c46b9') version('1.3.1', sha256='33f94de39bb7f2a342fbb2bd4e5afcfec08798eac39672ee18042ac0b349e4f3') version('1.1.1', sha256='1a29b99009a06f2cee18d08bc6201fd4985b6d45c76cefca65084dcc1a2f7cb3') - depends_on('r@3.0.2:', when='@:1.2.1', type=('build', 'run')) - depends_on('r@3.1:', when='@1.3.0:', type=('build', 'run')) - depends_on('r-cli', when='@1.4.0:', type=('build', 'run')) - depends_on('r-clipr', when='@1.2.0:', type=('build', 'run')) - depends_on('r-crayon', when='@1.3.1:', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r@3.1:', type=('build', 'run'), when='@1.3.0:') + 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-clipr', type=('build', 'run'), when='@1.2.0:') + depends_on('r-crayon', type=('build', 'run'), when='@1.3.1:') depends_on('r-hms@0.4.1:', type=('build', 'run')) - depends_on('r-rlang', when='@1.4.0:', type=('build', 'run')) + depends_on('r-lifecycle', type=('build', 'run'), when='@1.4.0:') + depends_on('r-lifecycle@0.2.0:', type=('build', 'run'), when='@2:') depends_on('r-r6', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@1.4.0:') depends_on('r-tibble', type=('build', 'run')) - depends_on('r-vroom@1.5.2:', when='@2.0.0', type=('build', 'run')) - depends_on('r-vroom@1.5.4:', when='@2.0.1:', type=('build', 'run')) - depends_on('r-lifecycle', when='@1.4.0:', type=('build', 'run')) - depends_on('r-lifecycle@0.2.0:', when='@2:', type=('build', 'run')) - depends_on('r-cpp11', when='@1.4.0:', type=('build', 'run')) - depends_on('r-tzdb@0.1.1:', when='@2:', type=('build', 'run')) - - depends_on('r-bh', when='@:1', type=('build', 'run')) - depends_on('r-rcpp@0.12.0.5:', when='@:1.3.1', type=('build', 'run')) + depends_on('r-vroom@1.5.2:', type=('build', 'run'), when='@2.0.0') + depends_on('r-vroom@1.5.4:', type=('build', 'run'), when='@2.0.1:') + depends_on('r-vroom@1.5.6:', type=('build', 'run'), when='@2.1.1:') + depends_on('r-cpp11', type=('build', 'run'), when='@1.4.0:') + depends_on('r-tzdb@0.1.1:', type=('build', 'run'), when='@2:') + + depends_on('r-bh', type=('build', 'run'), when='@:1') + depends_on('r-rcpp@0.12.0.5:', type=('build', 'run'), when='@:1.3.1') diff --git a/var/spack/repos/builtin/packages/r-readxl/package.py b/var/spack/repos/builtin/packages/r-readxl/package.py index f6aa28642d1cc7..01e25435630730 100644 --- a/var/spack/repos/builtin/packages/r-readxl/package.py +++ b/var/spack/repos/builtin/packages/r-readxl/package.py @@ -7,15 +7,14 @@ class RReadxl(RPackage): - """Import excel files into R. Supports '.xls' via the embedded - 'libxls' C library and - '.xlsx' via the embedded 'RapidXML' C++ library - . Works on Windows, Mac and Linux - without external dependencies.""" + """Read Excel Files. - homepage = "https://readxl.tidyverse.org/" - url = "https://cloud.r-project.org/src/contrib/readxl_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/readxl" + Import excel files into R. Supports '.xls' via the embedded 'libxls' C + library and '.xlsx' via the + embedded 'RapidXML' C++ library . Works + on Windows, Mac and Linux without external dependencies.""" + + cran = "readxl" version('1.3.1', sha256='24b441713e2f46a3e7c6813230ad6ea4d4ddf7e0816ad76614f33094fbaaaa96') version('1.3.0', sha256='8379d1026dcfc662d073eb1c69ed1d90aa6439d6cb3c6fc1b5d1db4f51b3fadc') @@ -25,4 +24,4 @@ class RReadxl(RPackage): depends_on('r-tibble@1.3.1:', type=('build', 'run')) depends_on('r-rcpp@0.12.18:', type=('build', 'run')) depends_on('r-cellranger', type=('build', 'run')) - depends_on('r-progress', when='@1.2.0:', type=('build', 'run')) + depends_on('r-progress', type=('build', 'run'), when='@1.2.0:') diff --git a/var/spack/repos/builtin/packages/r-reams/package.py b/var/spack/repos/builtin/packages/r-reams/package.py index 515e86d8a40387..2179d290a8489a 100644 --- a/var/spack/repos/builtin/packages/r-reams/package.py +++ b/var/spack/repos/builtin/packages/r-reams/package.py @@ -7,11 +7,13 @@ class RReams(RPackage): - """reams: Resampling-Based Adaptive Model Selection""" + """Resampling-Based Adaptive Model Selection. - homepage = "https://cloud.r-project.org/package=reams" - url = "https://cloud.r-project.org/src/contrib/reams_0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/reams" + Resampling methods for adaptive linear model selection. These can be + thought of as extensions of the Akaike information criterion that account + for searching among candidate models.""" + + cran = "reams" version('0.1', sha256='ac24ea875b24bd18152afd87538b1f807f442cf2bd1c6ac1a365cf543c88181e') diff --git a/var/spack/repos/builtin/packages/r-recipes/package.py b/var/spack/repos/builtin/packages/r-recipes/package.py index a4d9fa49229773..5e3c0570da7eb9 100644 --- a/var/spack/repos/builtin/packages/r-recipes/package.py +++ b/var/spack/repos/builtin/packages/r-recipes/package.py @@ -7,29 +7,33 @@ class RRecipes(RPackage): - """Preprocessing Tools to Create Design Matrices + """Preprocessing Tools to Create Design Matrices. - An extensible framework to create and preprocess design matrices. - Recipes consist of one or more data manipulation and analysis "steps". - Statistical parameters for the steps can be estimated from an initial data - set and then applied to other data sets. The resulting design matrices can - then be used as inputs into statistical or machine learning models.""" + An extensible framework to create and preprocess design matrices. Recipes + consist of one or more data manipulation and analysis "steps". Statistical + parameters for the steps can be estimated from an initial data set and then + applied to other data sets. The resulting design matrices can then be used + as inputs into statistical or machine learning models.""" - homepage = "https://github.com/tidymodels/recipes" - url = "https://cloud.r-project.org/src/contrib/recipes_0.1.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/recipes" + cran = "recipes" + version('0.2.0', sha256='3d0073e3eb98ac089a94bf8430f3c50915ff1f495d8e967c37baa6a0f6cea0a4') + version('0.1.17', sha256='ed20ba0ea0165310e31864ed7d2e005a2a37b76c7913977fd124d8b567616d3d') version('0.1.15', sha256='808ad2f4d68ae03aa27332437f037597e9c1bebd65ed4ebfab1d243ea6022e76') version('0.1.6', sha256='51e0db72de171d58d13ad8ffcf1dea402ab8f82100d161722041b6fd014cbfd9') depends_on('r@3.1:', type=('build', 'run')) depends_on('r-dplyr', type=('build', 'run')) + 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:', when='@0.1.15:', 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:') depends_on('r-glue', type=('build', 'run')) depends_on('r-gower', type=('build', 'run')) + depends_on('r-hardhat@0.1.6.9001:', type=('build', 'run'), when='@0.2.0:') depends_on('r-ipred', type=('build', 'run')) - depends_on('r-lifecycle', when='@0.1.15:', 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:') depends_on('r-lubridate', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) @@ -37,8 +41,9 @@ class RRecipes(RPackage): depends_on('r-rlang@0.4.0:', type=('build', 'run')) depends_on('r-tibble', type=('build', 'run')) depends_on('r-tidyr', type=('build', 'run')) - depends_on('r-tidyr@1.0.0:', when='@0.1.15:', type=('build', 'run')) + depends_on('r-tidyr@1.0.0:', type=('build', 'run'), when='@0.1.15:') depends_on('r-tidyselect@0.2.5:', type=('build', 'run')) - depends_on('r-tidyselect@1.1.0:', when='@0.1.15:', type=('build', 'run')) + depends_on('r-tidyselect@1.1.0:', type=('build', 'run'), when='@0.1.15:') depends_on('r-timedate', type=('build', 'run')) + depends_on('r-vctrs', type=('build', 'run'), when='@0.1.17:') depends_on('r-withr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-registry/package.py b/var/spack/repos/builtin/packages/r-registry/package.py index b0b2dde6a96468..ac90b09ae74a0b 100644 --- a/var/spack/repos/builtin/packages/r-registry/package.py +++ b/var/spack/repos/builtin/packages/r-registry/package.py @@ -7,11 +7,11 @@ class RRegistry(RPackage): - """Provides a generic infrastructure for creating and using registries.""" + """Infrastructure for R Package Registries. - homepage = "https://cloud.r-project.org/package=registry" - url = "https://cloud.r-project.org/src/contrib/registry_0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/registry" + Provides a generic infrastructure for creating and using registries.""" + + cran = "registry" version('0.5-1', sha256='dfea36edb0a703ec57e111016789b47a1ba21d9c8ff30672555c81327a3372cc') version('0.5', sha256='5d8be59ba791987b2400e9e8eaaac614cd544c1aece785ec4782ea6d5ea00efb') diff --git a/var/spack/repos/builtin/packages/r-rematch/package.py b/var/spack/repos/builtin/packages/r-rematch/package.py index 2ec612bbb6195a..89fabf91edddde 100644 --- a/var/spack/repos/builtin/packages/r-rematch/package.py +++ b/var/spack/repos/builtin/packages/r-rematch/package.py @@ -7,12 +7,11 @@ class RRematch(RPackage): - """A small wrapper on 'regexpr' to extract the matches and - captured groups from the match of a regular expression to a - character vector.""" + """Match Regular Expressions with a Nicer 'API'. - homepage = "https://cloud.r-project.org/package=rematch" - url = "https://cloud.r-project.org/src/contrib/rematch_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rematch" + A small wrapper on 'regexpr' to extract the matches and captured groups + from the match of a regular expression to a character vector.""" + + cran = "rematch" version('1.0.1', sha256='a409dec978cd02914cdddfedc974d9b45bd2975a124d8870d52cfd7d37d47578') diff --git a/var/spack/repos/builtin/packages/r-rematch2/package.py b/var/spack/repos/builtin/packages/r-rematch2/package.py index 98fde2d516863c..42e67d721d446f 100644 --- a/var/spack/repos/builtin/packages/r-rematch2/package.py +++ b/var/spack/repos/builtin/packages/r-rematch2/package.py @@ -7,13 +7,12 @@ class RRematch2(RPackage): - """Wrappers on 'regexpr' and 'gregexpr' to return - the match results in tidy data frames. - """ + """Tidy Output from Regular Expression Matching. - homepage = "https://cloud.r-project.org/package=rematch2" - url = "https://cloud.r-project.org/src/contrib/rematch2_2.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rematch2" + Wrappers on 'regexpr' and 'gregexpr' to return the match results in tidy + data frames.""" + + cran = "rematch2" version('2.1.2', sha256='fe9cbfe99dd7731a0a2a310900d999f80e7486775b67f3f8f388c30737faf7bb') version('2.1.1', sha256='d0423a418e8b46ac3a4819af7a7d19c39ca7c8c862c1e9a1c1294aa19152518f') diff --git a/var/spack/repos/builtin/packages/r-remotes/package.py b/var/spack/repos/builtin/packages/r-remotes/package.py index 5b49e3b3d9d108..2c354ea3c1ca9f 100644 --- a/var/spack/repos/builtin/packages/r-remotes/package.py +++ b/var/spack/repos/builtin/packages/r-remotes/package.py @@ -7,17 +7,16 @@ class RRemotes(RPackage): - """R Package Installation from Remote Repositories, Including 'GitHub' + """R Package Installation from Remote Repositories, Including 'GitHub'. - Download and install R packages stored in 'GitHub', 'BitBucket', or - plain 'subversion' or 'git' repositories. This package provides the - 'install_*' functions in 'devtools'. Indeed most of the code was copied - over from 'devtools'. """ + Download and install R packages stored in 'GitHub', 'BitBucket', or plain + 'subversion' or 'git' repositories. This package provides the 'install_*' + functions in 'devtools'. Indeed most of the code was copied over from + 'devtools'. """ - homepage = "https://github.com/r-lib/remotes#readme" - url = "https://cloud.r-project.org/src/contrib/remotes_2.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/remotes" + cran = "remotes" + version('2.4.2', sha256='f2ef875f24a485bf4f55a8c830f87cdd5db868f9a8cdb624dc452d0bf66ba516') version('2.2.0', sha256='12f234fd8c46f4ac54e06a3c60e4015ed2193a32762ca4dd6854f120136f33b8') version('2.1.1', sha256='4e590746fce618094089372b185e1ea234b3337b23c44c44118e942d0fb5118b') version('2.1.0', sha256='8944c8f6fc9f0cd0ca04d6cf1221b716eee08facef9f4b4c4d91d0346d6d68a7') diff --git a/var/spack/repos/builtin/packages/r-renv/package.py b/var/spack/repos/builtin/packages/r-renv/package.py index c26fb7b8174b7d..a0f22846af9cb9 100644 --- a/var/spack/repos/builtin/packages/r-renv/package.py +++ b/var/spack/repos/builtin/packages/r-renv/package.py @@ -7,7 +7,7 @@ class RRenv(RPackage): - """Project Environments for R packages: + """Project Environments for R packages. A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a @@ -15,7 +15,8 @@ class RRenv(RPackage): tools can help make your projects more isolated, portable, and reproducible.""" - homepage = "https://rstudio.github.io/renv/" - cran = "renv" + cran = "renv" + version('0.15.2', sha256='d07effd329f6d653fec9cb517bc8adf3cd6b711758e439055b6d2f06c88765db') + version('0.15.1', sha256='36e8c8df4af50f2341053aa567798dfca6852ade10fa70f9dc146fe9f96f9b5b') version('0.13.2', sha256='41f208ed957e27c50cbd8b0fff77a434bad963707df85e462419e2edb6719a4a') diff --git a/var/spack/repos/builtin/packages/r-reordercluster/package.py b/var/spack/repos/builtin/packages/r-reordercluster/package.py index c7bd7b2912ab96..c75d6bd9d6d3ed 100644 --- a/var/spack/repos/builtin/packages/r-reordercluster/package.py +++ b/var/spack/repos/builtin/packages/r-reordercluster/package.py @@ -7,13 +7,13 @@ class RReordercluster(RPackage): - """Tools for performing the leaf reordering for the dendrogram - that preserves the hierarchical clustering result and at the - same time tries to group instances from the same class together.""" + """Reordering the dendrogram according to the class labels. - homepage = "https://cloud.r-project.org/package=ReorderCluster" - url = "https://cloud.r-project.org/src/contrib/ReorderCluster_1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ReorderCluster" + Tools for performing the leaf reordering for the dendrogram that preserves + the hierarchical clustering result and at the same time tries to group + instances from the same class together.""" + + cran = "ReorderCluster" version('1.0', sha256='a87898faa20380aac3e06a52eedcb2f0eb2b35ab74fdc3435d40ee9f1d28476b') diff --git a/var/spack/repos/builtin/packages/r-reportingtools/package.py b/var/spack/repos/builtin/packages/r-reportingtools/package.py index 76fd34b2ca2cbe..850ac4dd7fa64f 100644 --- a/var/spack/repos/builtin/packages/r-reportingtools/package.py +++ b/var/spack/repos/builtin/packages/r-reportingtools/package.py @@ -7,7 +7,7 @@ class RReportingtools(RPackage): - """Tools for making reports in various formats + """Tools for making reports in various formats. The ReportingTools software package enables users to easily display reports of analysis results generated from sources such as microarray @@ -21,9 +21,9 @@ class RReportingtools(RPackage): be viewed in a web browser. For more examples, please visit our site: http:// research-pub.gene.com/ReportingTools.""" - homepage = "https://bioconductor.org/packages/ReportingTools" - git = "https://git.bioconductor.org/packages/ReportingTools.git" + bioc = "ReportingTools" + version('2.34.0', commit='fb5aef0b6e1c6166d0f025d9e6ca60e54c68dbaf') version('2.30.0', commit='fb9aee416f38cfd308d6d7264ccbcda0467642a7') version('2.24.0', commit='d114c658affba9b682a37b4e2caf4341cf8da6cf') version('2.22.1', commit='dce6af6c6a1cddff077fe61368f2c13e5a0e7bab') diff --git a/var/spack/repos/builtin/packages/r-repr/package.py b/var/spack/repos/builtin/packages/r-repr/package.py index d87dcdd948c548..18a63bdc739a53 100644 --- a/var/spack/repos/builtin/packages/r-repr/package.py +++ b/var/spack/repos/builtin/packages/r-repr/package.py @@ -8,22 +8,21 @@ class RRepr(RPackage): - """Serializable Representations + """Serializable Representations. - String and binary representations of objects for several formats and - mime types.""" + String and binary representations of objects for several formats and mime + types.""" - homepage = "https://github.com/IRkernel/repr" - url = "https://cloud.r-project.org/src/contrib/repr_0.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/repr" + cran = "repr" + version('1.1.4', sha256='6f799ca83e0940618dd8c22e62ffdce5ec11ba3366c5306ae58b55b53c097040') version('1.1.0', sha256='743fe018f9e3e54067a970bc38b6b8c0c0498b43f88d179ac4a959c2013a5f96') version('1.0.1', sha256='ecde22c17fd800e1ff5c2b2962689119aa486fba40fbc6f2c50e8d4cc61bc44b') version('1.0.0', sha256='98b2eb1058c1cb2caa8f98708b63726f5564b45de03d38b95ff6b963a8261f49') version('0.9', sha256='24cac6e98f2a7e5483cf87aaffcb37611702099b63d3783e319441b4ecd0264b') depends_on('r@3.0.1:', type=('build', 'run')) - depends_on('r-htmltools', when='@0.13:', type=('build', 'run')) - depends_on('r-jsonlite', when='@0.19.1:', type=('build', 'run')) - depends_on('r-pillar@1.4.0:', when='@1.0.0:', type=('build', 'run')) - depends_on('r-base64enc', when='@0.13:', type=('build', 'run')) + depends_on('r-htmltools', type=('build', 'run'), when='@0.13:') + depends_on('r-jsonlite', type=('build', 'run'), when='@0.19.1:') + depends_on('r-pillar@1.4.0:', type=('build', 'run'), when='@1.0.0:') + depends_on('r-base64enc', type=('build', 'run'), when='@0.13:') diff --git a/var/spack/repos/builtin/packages/r-reprex/package.py b/var/spack/repos/builtin/packages/r-reprex/package.py index 6eba6a51811062..c1d1b26d317f5a 100644 --- a/var/spack/repos/builtin/packages/r-reprex/package.py +++ b/var/spack/repos/builtin/packages/r-reprex/package.py @@ -10,14 +10,13 @@ class RReprex(RPackage): """Prepare Reproducible Example Code via the Clipboard. Convenience wrapper that uses the 'rmarkdown' package to render small - snippets of code to target formats that include both code and output. - The goal is to encourage the sharing of small, reproducible, and - runnable examples on code-oriented websites, such as - and , or in email. - 'reprex' also extracts clean, runnable R code from various common - formats, such as copy/paste from an R session.""" - - homepage = "https://github.com/jennybc/reprex" + snippets of code to target formats that include both code and output. The + goal is to encourage the sharing of small, reproducible, and runnable + examples on code-oriented websites, such as + and , or in email. 'reprex' also extracts clean, + runnable R code from various common formats, such as copy/paste from an R + session.""" + cran = "reprex" version('2.0.1', sha256='0e6d8667cacb63135476a766fba3a4f91e5ad86274ea66d2b1e6d773b5ca6426') @@ -27,25 +26,25 @@ class RReprex(RPackage): depends_on('r+X', type=('build', 'run')) depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.1:', when='@0.2.0:', type=('build', 'run')) - depends_on('r@3.3:', when='@1:', type=('build', 'run')) + 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-callr@2.0.0:', type=('build', 'run')) - depends_on('r-callr@3.3.1:', when='@1:', type=('build', 'run')) - depends_on('r-callr@3.6.0:', when='@2:', type=('build', 'run')) - depends_on('r-cli', when='@1:', type=('build', 'run')) - depends_on('r-cli@2.3.1:', when='@2:', 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:') + depends_on('r-cli', type=('build', 'run'), when='@1:') + depends_on('r-cli@2.3.1:', type=('build', 'run'), when='@2:') depends_on('r-clipr@0.4.0:', type=('build', 'run')) - depends_on('r-fs', when='@0.2.1:', type=('build', 'run')) - depends_on('r-glue', when='@1:', type=('build', 'run')) - depends_on('r-knitr', when='@:0.1.9', type=('build', 'run')) - depends_on('r-knitr@1.23:', when='@1:', type=('build', 'run')) - depends_on('r-rlang', when='@0.2.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.0:', when='@1:', type=('build', 'run')) + depends_on('r-fs', type=('build', 'run'), when='@0.2.1:') + depends_on('r-glue', type=('build', 'run'), when='@1:') + depends_on('r-knitr', type=('build', 'run'), when='@:0.1.9') + depends_on('r-knitr@1.23:', type=('build', 'run'), when='@1:') + depends_on('r-rlang', type=('build', 'run'), when='@0.2.0:') + depends_on('r-rlang@0.4.0:', type=('build', 'run'), when='@1:') depends_on('r-rmarkdown', type=('build', 'run')) - depends_on('r-rstudioapi', when='@2:', type=('build', 'run')) - depends_on('r-withr', when='@0.2.0:', type=('build', 'run')) - depends_on('r-withr@2.3.0:', when='@1:', type=('build', 'run')) + depends_on('r-rstudioapi', type=('build', 'run'), when='@2:') + depends_on('r-withr', type=('build', 'run'), when='@0.2.0:') + depends_on('r-withr@2.3.0:', type=('build', 'run'), when='@1:') depends_on('pandoc@1.12.3:') depends_on('pandoc@2:', when='@2:') - depends_on('r-whisker', when='@:0', type=('build', 'run')) + depends_on('r-whisker', type=('build', 'run'), when='@:0') diff --git a/var/spack/repos/builtin/packages/r-reproducible/package.py b/var/spack/repos/builtin/packages/r-reproducible/package.py index f89f5c7f53a32d..8029ed28b6ffe1 100644 --- a/var/spack/repos/builtin/packages/r-reproducible/package.py +++ b/var/spack/repos/builtin/packages/r-reproducible/package.py @@ -7,34 +7,33 @@ class RReproducible(RPackage): - """A Set of Tools that Enhance Reproducibility Beyond Package Management - - Collection of high-level, machine- and OS-independent tools for - making deeply reproducible and reusable content in R. The two - workhorse functions are Cache and prepInputs; these allow for: - nested caching, robust to environments, and objects with - environments (like functions); and data retrieval and processing - in continuous workflow environments. In all cases, efforts are - made to make the first and subsequent calls of functions have - the same result, but vastly faster at subsequent times by way of - checksums and digesting. Several features are still under active - development, including cloud storage of cached objects, allowing - for sharing between users. Several advanced options are - available, see ?reproducibleOptions.""" - - homepage = "https://reproducible.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/reproducible_1.2.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/reproducible" + """A Set of Tools that Enhance Reproducibility Beyond Package Management. + + Collection of high-level, machine- and OS-independent tools for making + deeply reproducible and reusable content in R. The two workhorse functions + are Cache and prepInputs; these allow for: nested caching, robust to + environments, and objects with environments (like functions); and data + retrieval and processing in continuous workflow environments. In all cases, + efforts are made to make the first and subsequent calls of functions have + the same result, but vastly faster at subsequent times by way of checksums + and digesting. Several features are still under active development, + including cloud storage of cached objects, allowing for sharing between + users. Several advanced options are available, see ?reproducibleOptions.""" + + cran = "reproducible" maintainers = ['dorton21'] + version('1.2.8', sha256='6f453016404f6a2a235cb4d951a29aa7394dc3bd0b9cfc338dc85fb3d5045dd5') version('1.2.4', sha256='0525deefa6a0713c3fe2da8bfc529f62d6352bebf2ef08866503b4853412f149') depends_on('r@3.5:', type=('build', 'run')) + depends_on('r@3.6:', type=('build', 'run'), when='@1.2.8:') 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-fpcompare', type=('build', 'run')) + depends_on('r-gdalutilities', type=('build', 'run'), when='@1.2.8:') depends_on('r-glue', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-require', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-require/package.py b/var/spack/repos/builtin/packages/r-require/package.py index 9361c542cbbce8..d802b5ecfb87bf 100644 --- a/var/spack/repos/builtin/packages/r-require/package.py +++ b/var/spack/repos/builtin/packages/r-require/package.py @@ -7,23 +7,23 @@ class RRequire(RPackage): - """Installing and Loading R Packages for Reproducible Workflows + """Installing and Loading R Packages for Reproducible Workflows. A single key function, 'Require' that wraps 'install.packages', 'remotes::install_github', 'versions::install.versions', and - 'base::require' that allows for reproducible workflows. As with - other functions in a reproducible workflow, this package - emphasizes functions that return the same result whether it is - the first or subsequent times running the function. Maturing.""" + 'base::require' that allows for reproducible workflows. As with other + functions in a reproducible workflow, this package emphasizes functions + that return the same result whether it is the first or subsequent times + running the function. Maturing.""" - homepage = "https://require.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/Require_0.0.10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Require" + cran = "Require" maintainers = ['dorton21'] + version('0.0.13', sha256='ad9cb167694abe70beadc972c2c25086f0ac8e7e5802bf9606c1868e01be2526') version('0.0.10', sha256='2087c3bb4d660d205962e241c1fc4a366dada5a1ed090d545c52188490567f8d') depends_on('r@3.5:', type=('build', 'run')) + depends_on('r@3.6:', type=('build', 'run'), when='@0.0.13:') depends_on('r-data-table@1.10.4:', type=('build', 'run')) depends_on('r-remotes', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-reshape/package.py b/var/spack/repos/builtin/packages/r-reshape/package.py index b5b94fb43b300e..f035125a97cd05 100644 --- a/var/spack/repos/builtin/packages/r-reshape/package.py +++ b/var/spack/repos/builtin/packages/r-reshape/package.py @@ -7,12 +7,12 @@ class RReshape(RPackage): - """Flexibly restructure and aggregate data using just two functions: melt - and cast.""" + """Flexibly Reshape Data. - homepage = "https://cloud.r-project.org/package=reshape" - url = "https://cloud.r-project.org/src/contrib/reshape_0.8.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/reshape" + Flexibly restructure and aggregate data using just two functions: melt and + cast.""" + + cran = "reshape" version('0.8.8', sha256='4d5597fde8511e8fe4e4d1fd7adfc7ab37ff41ac68c76a746f7487d7b106d168') version('0.8.7', sha256='2fa6c87d1e89f182e51bc5a4fcda3d42d83b8fb4474ca525fa7a8db5081f3992') diff --git a/var/spack/repos/builtin/packages/r-reshape2/package.py b/var/spack/repos/builtin/packages/r-reshape2/package.py index 3875cf98756e19..b1287e17a78e87 100644 --- a/var/spack/repos/builtin/packages/r-reshape2/package.py +++ b/var/spack/repos/builtin/packages/r-reshape2/package.py @@ -7,21 +7,19 @@ class RReshape2(RPackage): - """Flexibly Reshape Data: A Reboot of the Reshape Package + """Flexibly Reshape Data: A Reboot of the Reshape Package. - Flexibly restructure and aggregate data using just two functions: melt - and dcast (or acast).""" + Flexibly restructure and aggregate data using just two functions: melt and + dcast (or acast).""" - homepage = "https://github.com/hadley/reshape" - url = "https://cloud.r-project.org/src/contrib/reshape2_1.4.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/reshape2" + cran = "reshape2" version('1.4.4', sha256='d88dcf9e2530fa9695fc57d0c78adfc5e361305fe8919fe09410b17da5ca12d8') version('1.4.3', sha256='8aff94c935e75032344b52407593392ddd4e16a88bb206984340c816d42c710e') version('1.4.2', sha256='6d3783610379be4c5676d9236cf66276a166b5b96c18f2759e9b219758959b6b') version('1.4.1', sha256='fbd49f75a5b0b7266378515af98db310cf6c772bf6e68bed01f38ee99b408042') - depends_on('r@3.1:', when='@1.4.3:', type=('build', 'run')) + depends_on('r@3.1:', type=('build', 'run'), when='@1.4.3:') depends_on('r-plyr@1.8.1:', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) depends_on('r-stringr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-restfulr/package.py b/var/spack/repos/builtin/packages/r-restfulr/package.py new file mode 100644 index 00000000000000..015588fd0d0747 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-restfulr/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class RRestfulr(RPackage): + """R Interface to RESTful Web Services. + + Models a RESTful service as if it were a nested R list.""" + + cran = "restfulr" + + version('0.0.13', sha256='7b59f5887aaf02f46a80617f4d1e0ffd4e11e4840e9e2fbd486a9a9c7f2d64b6') + + depends_on('r@3.4.0:', type=('build', 'run')) + depends_on('r-xml', type=('build', 'run')) + depends_on('r-rcurl', type=('build', 'run')) + depends_on('r-rjson', type=('build', 'run')) + depends_on('r-s4vectors@0.13.15:', type=('build', 'run')) + depends_on('r-yaml', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-reticulate/package.py b/var/spack/repos/builtin/packages/r-reticulate/package.py index 3a59ac8437617f..3367073a83d238 100644 --- a/var/spack/repos/builtin/packages/r-reticulate/package.py +++ b/var/spack/repos/builtin/packages/r-reticulate/package.py @@ -7,7 +7,7 @@ class RReticulate(RPackage): - """Interface to 'Python' + """Interface to 'Python'. Interface to 'Python' modules, classes, and functions. When calling into 'Python', R data types are automatically converted to their equivalent @@ -15,17 +15,21 @@ class RReticulate(RPackage): converted back to R types. Compatible with all versions of 'Python' >= 2.7.""" - homepage = "https://github.com/rstudio/reticulate" - url = "https://cloud.r-project.org/src/contrib/reticulate_1.13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/reticulate" + cran = "reticulate" + version('1.24', sha256='b918c5204916601f757ad0fc629b2ae1eabab7cdf7f6aa2e219d26e506d916cc') + version('1.23', sha256='fea04a3ff33c71f1910d65000a93c6882180ca03f8657ee118ea9e79786c36d6') version('1.18', sha256='b33f855a58f446eefbe38df8a1a4865390f5d4ebd64b2c72266baaee64628513') version('1.15', sha256='47db3e9c9424263ade15287da8e74f6ba261a936b644b197dba6772853b7b50d') version('1.13', sha256='adbe41d556b667c4419d563680f8608a56b0f792b8bc427b3bf4c584ff819de3') depends_on('r@3.0:', type=('build', 'run')) - depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) - depends_on('r-rappdirs', when='@1.15:', type=('build', 'run')) depends_on('r-rcpp@0.12.7:', type=('build', 'run', 'link')) + depends_on('r-rcpptoml', type=('build', 'run', 'link'), when='@1.23:') + 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:') + depends_on('r-rappdirs', type=('build', 'run'), when='@1.15:') + depends_on('r-withr', type=('build', 'run', 'link'), when='@1.23:') depends_on('python@2.7.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rex/package.py b/var/spack/repos/builtin/packages/r-rex/package.py index 7926e5d889f33b..94f1ec56c49c1c 100644 --- a/var/spack/repos/builtin/packages/r-rex/package.py +++ b/var/spack/repos/builtin/packages/r-rex/package.py @@ -7,16 +7,16 @@ class RRex(RPackage): - """Friendly Regular Expressions + """Friendly Regular Expressions. A friendly interface for the construction of regular expressions.""" - homepage = "https://cloud.r-project.org/package=rex" - url = "https://cloud.r-project.org/src/contrib/rex_1.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rex" + cran = "rex" + version('1.2.1', sha256='af42e649c06e4bbdba94d5a1870a7e8347903571c90cd5e5ca40f52307a3bfd6') version('1.2.0', sha256='06b491f1469078862e40543fd74e1d38b2e0fb61fdf01c8083add4b11ac2eb54') version('1.1.2', sha256='bd3c74ceaf335336f5dd04314d0a791f6311e421a2158f321f5aab275f539a2a') depends_on('r-lazyeval', type=('build', 'run')) - depends_on('r-magrittr', when='@:1.1.2', type=('build', 'run')) + + depends_on('r-magrittr', type=('build', 'run'), when='@:1.1.2') diff --git a/var/spack/repos/builtin/packages/r-rfast/package.py b/var/spack/repos/builtin/packages/r-rfast/package.py new file mode 100644 index 00000000000000..195d45db1da64b --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rfast/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2022 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 import * + + +class RRfast(RPackage): + """A Collection of Efficient and Extremely Fast R Functions. + + A collection of fast (utility) functions for data analysis. Column- and + row- wise means, medians, variances, minimums, maximums, many t, F and + G-square tests, many regressions (normal, logistic, Poisson), are some of + the many fast functions. References: a) Tsagris M., Papadakis M. (2018). + Taking R to its limits: 70+ tips. PeerJ Preprints 6:e26605v1 + . b) Tsagris M. and Papadakis M. + (2018). Forward regression in R: from the extreme slow to the extreme fast. + Journal of Data Science, 16(4): 771-780. + .""" + + cran = "Rfast" + + 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-rcppziggurat', type=('build', 'run')) + depends_on('r-rcpparmadillo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rferns/package.py b/var/spack/repos/builtin/packages/r-rferns/package.py index c9409273e551f8..535231dfc52366 100644 --- a/var/spack/repos/builtin/packages/r-rferns/package.py +++ b/var/spack/repos/builtin/packages/r-rferns/package.py @@ -7,16 +7,15 @@ class RRferns(RPackage): - """Random Ferns Classifier + """Random Ferns Classifier. Provides the random ferns classifier by Ozuysal, Calonder, Lepetit and Fua (2009) , modified for generic and multi-label classification and featuring OOB error approximation and importance measure as introduced in Kursa (2014) .""" - homepage = "https://cloud.r-project.org/package=rFerns" - url = "https://cloud.r-project.org/src/contrib/rFerns_3.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rFerns" + cran = "rFerns" + version('5.0.0', sha256='78da671e18dc1fb499eddcc6db7eedd69cef673ba0b46c873bd95615cbb583fb') version('4.0.0', sha256='cc8cea0893390bf5db0fb0f59748d5bf6f29537d68bedca900268fd551489128') version('3.0.0', sha256='35e7e31a6497e415a0fe578678cf9b2f537b21319e4c015a1e2dade00310227c') diff --git a/var/spack/repos/builtin/packages/r-rgdal/package.py b/var/spack/repos/builtin/packages/r-rgdal/package.py index c013c4103f47ab..6e45bea3b67b36 100644 --- a/var/spack/repos/builtin/packages/r-rgdal/package.py +++ b/var/spack/repos/builtin/packages/r-rgdal/package.py @@ -7,7 +7,7 @@ class RRgdal(RPackage): - """Bindings for the 'Geospatial' Data Abstraction Library + """Bindings for the 'Geospatial' Data Abstraction Library. Provides bindings to the 'Geospatial' Data Abstraction Library ('GDAL') (>= 1.11.4) and access to projection/transformation operations from the 'PROJ' @@ -21,10 +21,9 @@ class RRgdal(RPackage): and 'macOS' binaries (including 'GDAL', 'PROJ' and their dependencies) are provided on 'CRAN'.""" - homepage = "https://cloud.r-project.org/package=rgdal" - url = "https://cloud.r-project.org/src/contrib/rgdal_1.3-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rgdal" + cran = "rgdal" + version('1.5-28', sha256='7f54432cfa8c0db463f68e8856c3ca0a90671dc841ac5203af049eb318e261a2') version('1.5-19', sha256='6fbfd71b19e7b8d9dbddc91cb1eef8890c74a1e2bf8f619da165ff51bf1231b2') version('1.5-18', sha256='53467c19bc93d8ea311458eaa281c8c456168ab75e84d76ef5cc6c00f53122df') version('1.4-4', sha256='2532e76e0af27d145f799d70006a5dbecb2d3be698e3d0bbf580f4c41a34c5d7') @@ -32,8 +31,11 @@ class RRgdal(RPackage): version('1.2-16', sha256='017fefea4f9a6d4540d128c707197b7025b55e4aff98fc763065366b025b03c9') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.5:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.5:') depends_on('r-sp@1.1-0:', type=('build', 'run')) depends_on('gdal@1.11.4:') depends_on('proj@4.8.0:5', when='@:1.3-9') depends_on('proj@4.8.0:', when='@1.4-2:') + + conflicts('^proj@:5', when='^gdal@3:') + conflicts('^proj@6:', when='^gdal@:2') diff --git a/var/spack/repos/builtin/packages/r-rgenoud/package.py b/var/spack/repos/builtin/packages/r-rgenoud/package.py index 61014e09b04553..032299d76ff38a 100644 --- a/var/spack/repos/builtin/packages/r-rgenoud/package.py +++ b/var/spack/repos/builtin/packages/r-rgenoud/package.py @@ -7,11 +7,11 @@ class RRgenoud(RPackage): - """A genetic algorithm plus derivative optimizer.""" + """R Version of GENetic Optimization Using Derivatives. - homepage = "https://sekhon.berkeley.edu/rgenoud/" - url = "https://cloud.r-project.org/src/contrib/rgenoud_5.8-1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rgenoud" + A genetic algorithm plus derivative optimizer.""" + + cran = "rgenoud" 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 3c8f119a67e8c9..c83777e470e9aa 100644 --- a/var/spack/repos/builtin/packages/r-rgeos/package.py +++ b/var/spack/repos/builtin/packages/r-rgeos/package.py @@ -7,7 +7,7 @@ class RRgeos(RPackage): - """Interface to Geometry Engine - Open Source ('GEOS') + """Interface to Geometry Engine - Open Source ('GEOS'). Interface to Geometry Engine - Open Source ('GEOS') using the C 'API' for topology operations on geometries. The 'GEOS' library is external to the @@ -28,14 +28,14 @@ class RRgeos(RPackage): 'gMakeValid()', which may, however, return a collection of geometries of different types.""" - homepage = "https://cloud.r-project.org/package=rgeos" - url = "https://cloud.r-project.org/src/contrib/rgeos_0.3-26.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rgeos" + cran = "rgeos" + version('0.5-9', sha256='ab90cbfe6a3680a9d2eed5e655064a075adc66788e304468969ab7cc2df0e3d4') version('0.5-5', sha256='4baa0dfe6ff76e87ddb67a030fc14fe963d28b518485a4d71058923b2606d420') version('0.5-1', sha256='8408973e7fe5648e39aa53f3d4bfe800638021a146a4e06f86496c0132e05488') version('0.3-26', sha256='98524a0b8113abe6c3d0ecc1f2f66e7ab6d40c783a76158cfc017e1ab1e3f433') depends_on('r@3.3.0:', type=('build', 'run')) depends_on('r-sp@1.1-0:', type=('build', 'run')) - depends_on('geos@3.2.0:3.8.0') + depends_on('geos@3.2.0:3.8.0', when='@:0.5-1') + depends_on('geos@3.2.0:') diff --git a/var/spack/repos/builtin/packages/r-rgexf/package.py b/var/spack/repos/builtin/packages/r-rgexf/package.py index 7d4d60bb6f29a8..b2d68391fafc0d 100644 --- a/var/spack/repos/builtin/packages/r-rgexf/package.py +++ b/var/spack/repos/builtin/packages/r-rgexf/package.py @@ -7,25 +7,24 @@ class RRgexf(RPackage): - """Build, Import and Export GEXF Graph Files + """Build, Import and Export GEXF Graph Files. - Create, read and write GEXF (Graph Exchange XML Format) graph files - (used in Gephi and others). Using the XML package, it allows the user to - easily build/read graph files including attributes, GEXF viz attributes - (such as color, size, and position), network dynamics (for both edges and - nodes) and edge weighting. Users can build/handle graphs element-by-element - or massively through data-frames, visualize the graph on a web browser - through "sigmajs" (a javascript library) and interact with the igraph - package.""" + Create, read and write GEXF (Graph Exchange XML Format) graph files (used + in Gephi and others). Using the XML package, it allows the user to easily + build/read graph files including attributes, GEXF viz attributes (such as + color, size, and position), network dynamics (for both edges and nodes) and + edge weighting. Users can build/handle graphs element-by-element or + massively through data-frames, visualize the graph on a web browser through + "sigmajs" (a javascript library) and interact with the igraph package.""" - homepage = "https://bitbucket.org/gvegayon/rgexf" - url = "https://cloud.r-project.org/src/contrib/rgexf_0.15.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rgexf" + cran = "rgexf" + version('0.16.2', sha256='6ee052b0de99d0c7492366b991d345a51b3d0cc890d10a68b8670e1bd4fc8201') version('0.16.0', sha256='2a671df9ac70cfefd4092754317cb28e32a33df345b80e1975bf838e838245ee') version('0.15.3', sha256='2e8a7978d1fb977318e6310ba65b70a9c8890185c819a7951ac23425c6dc8147') depends_on('r-xml', type=('build', 'run')) depends_on('r-igraph', type=('build', 'run')) - depends_on('r-servr', when='@0.16.0:', type=('build', 'run')) - depends_on('r-rook', when='@:0.15.3', type=('build', 'run')) + depends_on('r-servr', type=('build', 'run'), when='@0.16.0:') + + depends_on('r-rook', type=('build', 'run'), when='@:0.15.3') diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py index 36993ccf2b0724..e6f1694cf5981a 100644 --- a/var/spack/repos/builtin/packages/r-rgl/package.py +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -7,19 +7,18 @@ class RRgl(RPackage): - """3D Visualization Using OpenGL + """3D Visualization Using OpenGL. Provides medium to high level functions for 3D interactive graphics, including functions modelled on base graphics (plot3d(), etc.) as well as functions for constructing representations of geometric objects (cube3d(), - etc.). Output may be on screen using OpenGL, or to various standard - 3D file formats including WebGL, PLY, OBJ, STL as well as 2D image formats, + etc.). Output may be on screen using OpenGL, or to various standard 3D file + formats including WebGL, PLY, OBJ, STL as well as 2D image formats, including PNG, Postscript, SVG, PGF.""" - homepage = "https://r-forge.r-project.org/projects/rgl" - url = "https://cloud.r-project.org/src/contrib/rgl_0.99.16.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rgl" + cran = "rgl" + version('0.108.3', sha256='89f96eb462cacfcc796ad351d7dac0480a7eb9f80e9bd75e58c5a79f0ee8133b') version('0.104.16', sha256='b82d2e2b965e76d6cc55bbd15ee0f79c36913ab09ce5436d2104551563462a99') version('0.100.26', sha256='e1889c2723ad458b39fdf9366fdaf590d7657d3762748f8534a8491ef754e740') version('0.100.24', sha256='1233a7bdc5a2b908fc64d5f56e92a0e123e8f7c0b9bac93dfd005608b78fa35a') @@ -29,14 +28,14 @@ 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-htmlwidgets', type=('build', 'run')) depends_on('r-htmltools', type=('build', 'run')) depends_on('r-knitr', type=('build', 'run')) + depends_on('r-knitr@1.33:', type=('build', 'run'), when='@0.108.3:') depends_on('r-jsonlite@0.9.20:', type=('build', 'run')) - depends_on('r-shiny', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-crosstalk', when='@0.99.16:', type=('build', 'run')) - depends_on('r-manipulatewidget@0.9.0:', when='@0.99.16:', type=('build', 'run')) + depends_on('r-r6', type=('build', 'run'), when='@0.108.3:') depends_on('libx11') depends_on('gl') depends_on('glu') @@ -45,6 +44,10 @@ class RRgl(RPackage): depends_on('freetype', type='link') depends_on('pandoc@1.14:', type='build') + depends_on('r-shiny', type=('build', 'run'), when='@:0.104.16') + depends_on('r-crosstalk', type=('build', 'run'), when='@0.99.16:0.104.16') + depends_on('r-manipulatewidget@0.9.0:', type=('build', 'run'), when='@0.99.16:0.104.16') + def configure_args(self): args = ['--x-includes=%s' % self.spec['libx11'].prefix.include, '--x-libraries=%s' % self.spec['libx11'].prefix.lib, diff --git a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py index 563cb1cb8e8983..b0118c2dcf9b75 100644 --- a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py +++ b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py @@ -7,16 +7,14 @@ class RRgooglemaps(RPackage): - """Overlays on Static Maps + """Overlays on Static Maps. - This package serves two purposes: (i) Provide a comfortable R interface - to query the Google server for static maps, and (ii) Use the map as a + This package serves two purposes: (i) Provide a comfortable R interface to + query the Google server for static maps, and (ii) Use the map as a background image to overlay plots within R. This requires proper coordinate scaling.""" - homepage = "https://cloud.r-project.org/package=RgoogleMaps" - url = "https://cloud.r-project.org/src/contrib/RgoogleMaps_1.2.0.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RgoogleMaps" + cran = "RgoogleMaps" version('1.4.5.3', sha256='d1d5ad8db841754af175d4104a05c5c31e5cc445be314a3ac70483c31798680b') version('1.4.3', sha256='44cb62bcd23e5b4807e91c5825352eb8d38aaaeb3b38a8271ca9f21c1e1d4b19') @@ -25,5 +23,6 @@ class RRgooglemaps(RPackage): depends_on('r@2.10:', type=('build', 'run')) depends_on('r-png', type=('build', 'run')) - depends_on('r-sp', when='@1.4.5.3:', type=('build', 'run')) - depends_on('r-rjsonio', when='@1.2.0.5:1.2.0.7', type=('build', 'run')) + depends_on('r-sp', type=('build', 'run'), when='@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-rgraphviz/package.py b/var/spack/repos/builtin/packages/r-rgraphviz/package.py index 1250ca0f8275f2..0ba51737d78e26 100644 --- a/var/spack/repos/builtin/packages/r-rgraphviz/package.py +++ b/var/spack/repos/builtin/packages/r-rgraphviz/package.py @@ -7,14 +7,14 @@ class RRgraphviz(RPackage): - """Provides plotting capabilities for R graph objects + """Provides plotting capabilities for R graph objects. Interfaces R with the AT and T graphviz library for plotting R graph objects from the graph package.""" - homepage = "https://bioconductor.org/packages/Rgraphviz" - git = "https://git.bioconductor.org/packages/Rgraphviz.git" + bioc = "Rgraphviz" + version('2.38.0', commit='004de09a5b171211aff6cbaa1969ab8e3a5d6c61') version('2.34.0', commit='9746623211be794226258631992dfcccccfd7487') version('2.28.0', commit='c1f57c11f037c977f1d17f227f12a09a999e8c0b') version('2.26.0', commit='e9b08c77121a45c65129d94a12b5c0b31c65617f') diff --git a/var/spack/repos/builtin/packages/r-rhdf5/package.py b/var/spack/repos/builtin/packages/r-rhdf5/package.py index 058bbdf10692c5..84dcbb17589a51 100644 --- a/var/spack/repos/builtin/packages/r-rhdf5/package.py +++ b/var/spack/repos/builtin/packages/r-rhdf5/package.py @@ -7,7 +7,7 @@ class RRhdf5(RPackage): - """R Interface to HDF5 + """R Interface to HDF5. This package provides an interface between HDF5 and R. HDF5's main features are the ability to store and access very large and/or complex @@ -17,9 +17,9 @@ class RRhdf5(RPackage): software package, and for letting R applications work on datasets that are larger than the available RAM.""" - homepage = "https://bioconductor.org/packages/rhdf5" - git = "https://git.bioconductor.org/packages/rhdf5.git" + bioc = "rhdf5" + version('2.38.0', commit='f6fdfa807f5cd5a4d11d4aa6ebfaa81c118b4c3f') version('2.34.0', commit='ec861b81fc6962e844bf56b7549ba565a7e4c69c') version('2.28.1', commit='e230fa34d6f3e97dd4e6065115675baf5e8213bb') version('2.26.2', commit='81e11258db493661a19cf83e142b690ecac4e6cf') @@ -27,10 +27,13 @@ class RRhdf5(RPackage): version('2.22.0', commit='4431bdc0a2bcbb8086ee08a0f2300129b808d1be') version('2.20.0', commit='37b5165325062728bbec9167f89f5f4b794f30bc') - depends_on('r@3.5.0:', when='@2.26.2:', type=('build', 'run')) - depends_on('r-rhdf5lib', when='@2.24.0:', type=('build', 'run')) - depends_on('r-rhdf5lib@1.3.2:', when='@2.26.2:', type=('build', 'run')) - depends_on('r-rhdf5lib@1.11.0:', when='@2.34.0:', type=('build', 'run')) - depends_on('r-rhdf5filters', when='@2.34.0:', type=('build', 'run')) - depends_on('r-zlibbioc', when='@:2.28.1', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.26.2:') + depends_on('r@4.0.0:', type=('build', 'run'), when='@2.38.0:') + depends_on('r-rhdf5lib', type=('build', 'run'), when='@2.24.0:') + depends_on('r-rhdf5lib@1.3.2:', type=('build', 'run'), when='@2.26.2:') + depends_on('r-rhdf5lib@1.11.0:', type=('build', 'run'), when='@2.34.0:') + depends_on('r-rhdf5lib@1.13.4:', type=('build', 'run'), when='@2.38.0:') + depends_on('r-rhdf5filters', type=('build', 'run'), when='@2.34.0:') depends_on('gmake', type='build') + + depends_on('r-zlibbioc', type=('build', 'run'), when='@:2.28.1') diff --git a/var/spack/repos/builtin/packages/r-rhdf5filters/package.py b/var/spack/repos/builtin/packages/r-rhdf5filters/package.py index c8a8c8894bb9a5..2ed7ccaab6d9e7 100644 --- a/var/spack/repos/builtin/packages/r-rhdf5filters/package.py +++ b/var/spack/repos/builtin/packages/r-rhdf5filters/package.py @@ -7,13 +7,13 @@ class RRhdf5filters(RPackage): - """HDF5 Compression Filters + """HDF5 Compression Filters. Provides a collection of compression filters for use with HDF5 datasets.""" - homepage = "https://github.com/grimbough/rhdf5filters" - git = "https://git.bioconductor.org/packages/rhdf5filters" + bioc = "rhdf5filters" + version('1.6.0', commit='5f7f3a5b7dabd6e7d0c50cda70290e2472ff4f53') version('1.2.0', commit='25af0180f926b4b3ea11b30ec9277d26ad3d56b3') depends_on('r-rhdf5lib', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rhdf5lib/package.py b/var/spack/repos/builtin/packages/r-rhdf5lib/package.py index 8b3bd015a83400..d47e579ec3045a 100644 --- a/var/spack/repos/builtin/packages/r-rhdf5lib/package.py +++ b/var/spack/repos/builtin/packages/r-rhdf5lib/package.py @@ -7,18 +7,19 @@ class RRhdf5lib(RPackage): - """hdf5 library as an R package + """hdf5 library as an R package. Provides C and C++ hdf5 libraries.""" - homepage = "https://bioconductor.org/packages/Rhdf5lib" - git = "https://git.bioconductor.org/packages/Rhdf5lib.git" + bioc = "Rhdf5lib" + version('1.16.0', commit='534c49705dbdb27ae0c564acff2c72df2b27b3f1') version('1.12.1', commit='cf464f40fd95274d0d351cf28b586c49307c4f0b') version('1.6.3', commit='11ac3069f28b0068002db9c645817401f6c5b3c4') version('1.4.3', commit='f6be8c2659b2daa17541506058917b7981490d65') version('1.2.1', commit='dbf85dbedb736d5a696794d52875729c8514494e') version('1.0.0', commit='79608038c2016a518ba747fe6a2bf02ce53a75f9') - depends_on('r@3.3.0:', when='@1.12.1:', type='build') + depends_on('r@3.3.0:', type='build', when='@1.12.1:') + depends_on('r@4.0.0:', type='build', when='@1.16.0:') depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-rhmmer/package.py b/var/spack/repos/builtin/packages/r-rhmmer/package.py index c2360dc4b417a2..75807264753fa3 100644 --- a/var/spack/repos/builtin/packages/r-rhmmer/package.py +++ b/var/spack/repos/builtin/packages/r-rhmmer/package.py @@ -7,11 +7,13 @@ class RRhmmer(RPackage): - """rhmmer: Utilities Parsing 'HMMER' Results""" + """Utilities Parsing 'HMMER' Results. - homepage = "https://cloud.r-project.org/package=rhmmer" - url = "https://cloud.r-project.org/src/contrib/rhmmer_0.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rhmmer/" + 'HMMER' is a profile hidden Markov model tool used primarily for sequence + analysis in bioinformatics (). 'rhmmer' provides + utilities for parsing the 'HMMER' output into tidy data frames.""" + + cran = "rhmmer" version('0.1.0', sha256='5022cefc9ba335160c1ad8d1b614610ae0ad48287c9fdbaf8f8966149358e520') diff --git a/var/spack/repos/builtin/packages/r-rhtslib/package.py b/var/spack/repos/builtin/packages/r-rhtslib/package.py index c052b311f051a5..6f86945770ab9b 100644 --- a/var/spack/repos/builtin/packages/r-rhtslib/package.py +++ b/var/spack/repos/builtin/packages/r-rhtslib/package.py @@ -7,7 +7,7 @@ class RRhtslib(RPackage): - """HTSlib high-throughput sequencing library as an R package + """HTSlib high-throughput sequencing library as an R package. This package provides version 1.7 of the 'HTSlib' C library for high- throughput sequence analysis. The package is primarily useful to @@ -15,9 +15,9 @@ class RRhtslib(RPackage): Motivation and instructions for use of this package are in the vignette, vignette(package="Rhtslib", "Rhtslib").""" - homepage = "https://bioconductor.org/packages/Rhtslib" - git = "https://git.bioconductor.org/packages/Rhtslib.git" + bioc = "Rhtslib" + version('1.26.0', commit='f5b20e97b283942877529f750b28398782552655') version('1.22.0', commit='899b79faa54d42c7c9b9a2bc49972109637d367f') version('1.18.1', commit='751a2ebaed43b7991204b27bd6c7870645001d82') version('1.16.3', commit='3ed0b5db2ee3cf0df1c6096fde8855c8485eebd4') @@ -35,7 +35,7 @@ class RRhtslib(RPackage): # Some versions of this package will leave the temporary installation # directory in the htslib shared object. R will fix this if patchelf is # available - depends_on('patchelf', when='@1.12:1.14', type='build') + depends_on('patchelf', type='build', when='@1.12:1.14') patch('use_spack_Makeconf.patch', when='@1.12:') patch('find_deps-1.12.patch', when='@1.12:1.14') diff --git a/var/spack/repos/builtin/packages/r-rinside/package.py b/var/spack/repos/builtin/packages/r-rinside/package.py index 4205a7ce514b42..dbd780af7c3abf 100644 --- a/var/spack/repos/builtin/packages/r-rinside/package.py +++ b/var/spack/repos/builtin/packages/r-rinside/package.py @@ -7,26 +7,24 @@ class RRinside(RPackage): - """C++ Classes to Embed R in C++ (and C) Applications + """C++ Classes to Embed R in C++ (and C) Applications. - C++ classes to embed R in C++ applications The 'RInside' packages makes - it easier to have "R inside" your C++ application by providing a C++ - wrapperclass providing the R interpreter. As R itself is embedded into - your application, a shared library build of R is required. This works on - Linux, OS X and even on Windows provided you use the same tools used to - build R itself. Numerous examples are provided in the eight subdirectories - of the examples/ directory of the installed package: standard, mpi (for - parallel computing) qt (showing how to embed 'RInside' inside a Qt GUI - application), wt (showing how to build a "web-application" using the Wt - toolkit), armadillo (for 'RInside' use with 'RcppArmadillo') and eigen (for - 'RInside' use with 'RcppEigen'). The example use GNUmakefile(s) with GNU - extensions, so a GNU make is required (and will use the GNUmakefile - automatically). Doxygen-generated documentation of the C++ classes is - available at the 'RInside' website as well.""" + C++ classes to embed R in C++ applications The 'RInside' packages makes it + easier to have "R inside" your C++ application by providing a C++ + wrapperclass providing the R interpreter. As R itself is embedded into your + application, a shared library build of R is required. This works on Linux, + OS X and even on Windows provided you use the same tools used to build R + itself. Numerous examples are provided in the eight subdirectories of the + examples/ directory of the installed package: standard, mpi (for parallel + computing) qt (showing how to embed 'RInside' inside a Qt GUI application), + wt (showing how to build a "web-application" using the Wt toolkit), + armadillo (for 'RInside' use with 'RcppArmadillo') and eigen (for 'RInside' + use with 'RcppEigen'). The example use GNUmakefile(s) with GNU extensions, + so a GNU make is required (and will use the GNUmakefile automatically). + Doxygen-generated documentation of the C++ classes is available at the + 'RInside' website as well.""" - homepage = "https://dirk.eddelbuettel.com/code/rinside.html" - url = "https://cloud.r-project.org/src/contrib/RInside_0.2.15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RInside" + cran = "RInside" version('0.2.16', sha256='7ae4ade128ea05f37068d59e610822ff0b277f9d39d8900f7eb31759ad5a2a0e') version('0.2.15', sha256='1e1d87a3584961f3aa4ca6acd4d2f3cda26abdab027ff5be2fd5cd76a98af02b') diff --git a/var/spack/repos/builtin/packages/r-rio/package.py b/var/spack/repos/builtin/packages/r-rio/package.py index d5e95eeead4e04..851aa29cb438d2 100644 --- a/var/spack/repos/builtin/packages/r-rio/package.py +++ b/var/spack/repos/builtin/packages/r-rio/package.py @@ -18,7 +18,6 @@ class RRio(RPackage): where appropriate. An additional convenience function, 'convert()', provides a simple method for converting between file types.""" - homepage = "https://github.com/leeper/rio" cran = "rio" version('0.5.29', sha256='9fa63187e1814053e6ed2a164665b4924e08c3453adccb78f7211d403dcc5412') @@ -26,7 +25,7 @@ class RRio(RPackage): depends_on('r@2.15.0:', type=('build', 'run')) depends_on('r-foreign', type=('build', 'run')) - depends_on('r-haven@1.1.2:', when='@0.5.26:', 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.9.8:', 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 b1e6fc49beb57d..927ba100d64f0c 100644 --- a/var/spack/repos/builtin/packages/r-rjags/package.py +++ b/var/spack/repos/builtin/packages/r-rjags/package.py @@ -8,14 +8,13 @@ class RRjags(RPackage): - """Bayesian Graphical Models using MCMC + """Bayesian Graphical Models using MCMC. Interface to the JAGS MCMC library.""" - homepage = "https://cloud.r-project.org/package=rjags" - url = "https://cloud.r-project.org/src/contrib/rjags_4-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rjags/" + cran = "rjags" + version('4-12', sha256='b91f34c3f9ebf78fa44bd661346fbb6f28a01693a7203ac133c98392dd273e10') version('4-10', sha256='bd3e0bdf50b23b63061a0caa2428be585ccbf0b3f5d28eaa690e714e508d0ada') version('4-8', sha256='1529827ab11493fb5f05552e239d700ae2f818995d86d3c9e4c92523f594b59f') version('4-6', sha256='cf24bb1e7c8445bafb49097089ad33e5bd5d8efbccf16fc7e32ad230f05f89ad') diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 334c8006cb2afe..7d2d095117b154 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -7,20 +7,20 @@ class RRjava(RPackage): - """Low-Level R to Java Interface + """Low-Level R to Java Interface. - Low-level interface to Java VM very much like .C/.Call and friends. - Allows creation of objects, calling methods and accessing fields.""" + Low-level interface to Java VM very much like .C/.Call and friends. Allows + creation of objects, calling methods and accessing fields.""" - homepage = "https://www.rforge.net/rJava/" - url = "https://cloud.r-project.org/src/contrib/rJava_0.9-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rJava" + cran = "rJava" + version('1.0-6', sha256='e290d0493317a5d6c452793e92baa914e37ef03faef19b2e436329b4ec8658c6') version('0.9-13', sha256='5b1688f5044476b34f71d868b222ac5fce3a088f0c2b9e4591c1e48f3d8c75f4') version('0.9-11', sha256='c28ae131456a98f4d3498aa8f6eac9d4df48727008dacff1aa561fc883972c69') version('0.9-8', sha256='dada5e031414da54eb80b9024d51866c20b92d41d68da65789fe0130bc54bd8a') depends_on('r@2.5:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@1.0-6:') depends_on('java@2:') depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-rjson/package.py b/var/spack/repos/builtin/packages/r-rjson/package.py index c2213c74f4b42d..6573287b091519 100644 --- a/var/spack/repos/builtin/packages/r-rjson/package.py +++ b/var/spack/repos/builtin/packages/r-rjson/package.py @@ -7,14 +7,16 @@ class RRjson(RPackage): - """Converts R object into JSON objects and vice-versa.""" + """JSON for R. - homepage = "https://cloud.r-project.org/package=rjson" - url = "https://cloud.r-project.org/src/contrib/rjson_0.2.15.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rjson" + Converts R object into JSON objects and vice-versa.""" + cran = "rjson" + + version('0.2.21', sha256='982b56d35ccc0c7db0b20c1d3eab5f5f47c620309646fdc278ff1cc3433ea2e2') version('0.2.20', sha256='3a287c1e5ee7c333ed8385913c0a307daf99335fbdf803e9dcca6e3d5adb3f6c') version('0.2.19', sha256='5c2672461986f2b715416cab92ed262abe9875f31299bc8a1a072ef7c6dd49bc') version('0.2.15', sha256='77d00d8f6a1c936329b46f3b8b0be79a165f8c5f1989497f942ecc53dcf6f2ef') depends_on('r@3.1.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@0.2.21:') diff --git a/var/spack/repos/builtin/packages/r-rjsonio/package.py b/var/spack/repos/builtin/packages/r-rjsonio/package.py index 25e9d185982190..3d73444cd70909 100644 --- a/var/spack/repos/builtin/packages/r-rjsonio/package.py +++ b/var/spack/repos/builtin/packages/r-rjsonio/package.py @@ -7,7 +7,7 @@ class RRjsonio(RPackage): - """Serialize R Objects to JSON, JavaScript Object Notation + """Serialize R Objects to JSON, JavaScript Object Notation. This is a package that allows conversion to and from data in Javascript object notation (JSON) format. This allows R objects to be inserted into @@ -25,10 +25,9 @@ class RRjsonio(RPackage): aim is to support other general projects by building on their work, providing feedback and benefit from their ongoing development.""" - homepage = "https://cloud.r-project.org/package=RJSONIO" - url = "https://cloud.r-project.org/src/contrib/RJSONIO_1.3-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RJSONIO" + cran = "RJSONIO" + version('1.3-1.6', sha256='82d1c9ea7758b2a64ad683f9c46223dcba9aa8146b43c1115bf9aa76a657a09f') version('1.3-1.4', sha256='54142c931e15eca278a02dad5734026bb49d960471eb085008af825352953190') version('1.3-1.2', sha256='550e18f7c04186376d67747b8258f529d205bfc929da9194fe45ec384e092d7e') version('1.3-1.1', sha256='c72493b441758cd1e3e9d91296b9ea31068e71104649f46ad84c854a02c09693') diff --git a/var/spack/repos/builtin/packages/r-rlang/package.py b/var/spack/repos/builtin/packages/r-rlang/package.py index 38bc3b56ddd8ae..ef1ba71bb9f579 100644 --- a/var/spack/repos/builtin/packages/r-rlang/package.py +++ b/var/spack/repos/builtin/packages/r-rlang/package.py @@ -7,14 +7,15 @@ class RRlang(RPackage): - """Functions for Base Types and Core R and 'Tidyverse' Features + """Functions for Base Types and Core R and 'Tidyverse' Features. A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation.""" - homepage = "https://cloud.r-project.org/package=rlang" cran = "rlang" + version('1.0.1', sha256='e59fd5c0f7530dbe329aa01621f6ef5a6474ff3ec96de0c0d24018fc2f21ad7f') + version('1.0.0', sha256='ab6134c97b3100613ba2a15792fde5341f485ba85432a81370c6270c73396e6a') version('0.4.12', sha256='2a26915738be120a56ec93e781bcb50ffa1031e11904544198b4a15c35029915') version('0.4.10', sha256='07530270c4c199f2b7efc5d57a476d99babd9d0c3388a02bb7d57fe312da3576') version('0.4.6', sha256='3a81b107765fd6ac0ad716c428d01878775ded9208ba125d43c890c73d2533ca') @@ -28,6 +29,6 @@ class RRlang(RPackage): version('0.1.2', sha256='90cfcd88cae6fff044fca64b24a8e6bdc09fc276163b518ff2d90268b0c785f9') version('0.1.1', sha256='5901f95d68728a7d9bb1c2373a20ce6e4ad222f66e397e7735e9eff987c73c3f') - depends_on('r@3.1.0:', when='@:0.3.4', type=('build', 'run')) - depends_on('r@3.2.0:', when='@0.4.0:', type=('build', 'run')) - depends_on('r@3.3.0:', when='@0.4.10:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@0.4.0:') + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.4.10:') diff --git a/var/spack/repos/builtin/packages/r-rle/package.py b/var/spack/repos/builtin/packages/r-rle/package.py index be364e6ba35483..dbcc32319cd727 100644 --- a/var/spack/repos/builtin/packages/r-rle/package.py +++ b/var/spack/repos/builtin/packages/r-rle/package.py @@ -7,14 +7,12 @@ class RRle(RPackage): - """Common Functions for Run-Length Encoded Vectors + """Common Functions for Run-Length Encoded Vectors. Common 'base' and 'stats' methods for 'rle' objects, aiming to make it possible to treat them transparently as vectors.""" - homepage = "https://cloud.r-project.org/package=rle" - url = "https://cloud.r-project.org/src/contrib/rle_0.9.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rle" + cran = "rle" version('0.9.2', sha256='803cbe310af6e882e27be61d37d660dbe5910ac1ee1eff61a480bcf724a04f69') diff --git a/var/spack/repos/builtin/packages/r-rmariadb/package.py b/var/spack/repos/builtin/packages/r-rmariadb/package.py index 9431d1e244c0a3..cbc29161f22cbc 100644 --- a/var/spack/repos/builtin/packages/r-rmariadb/package.py +++ b/var/spack/repos/builtin/packages/r-rmariadb/package.py @@ -7,29 +7,31 @@ class RRmariadb(RPackage): - """Database Interface and 'MariaDB' Driver + """Database Interface and 'MariaDB' Driver. Implements a 'DBI'-compliant interface to 'MariaDB' () and 'MySQL' () databases.""" - homepage = "https://rmariadb.r-dbi.org/" - url = "https://cloud.r-project.org/src/contrib/RMariaDB_1.0.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RMariaDB" + cran = "RMariaDB" + version('1.2.1', sha256='c9176a096854ce33a98ce0faef0065c50b5d356174f90cea742c70e130cf5f0c') version('1.1.0', sha256='9ffa63a15052876a51a7996ca4e6a5b7b937f594b5cc7ca5a86f43789e22a956') version('1.0.8', sha256='3c8aedc519dc063ceb068535a3700bc5caf26f867078cc5a228aa8961e2d99f5') depends_on('r@2.8.0:', type=('build', 'run')) depends_on('r-bit64', type=('build', 'run')) + depends_on('r-blob', type=('build', 'run'), when='@1.2.1:') depends_on('r-dbi@1.1.0:', type=('build', 'run')) depends_on('r-hms@0.5.0:', type=('build', 'run')) - depends_on('r-lubridate', when='@1.1.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-bh', type=('build', 'run')) + 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-bh', type=('build', 'run'), when='@:1.1.0') + # Set the library explicitly to prevent configure from finding a system # mysql-client def configure_vars(self): diff --git a/var/spack/repos/builtin/packages/r-rmarkdown/package.py b/var/spack/repos/builtin/packages/r-rmarkdown/package.py index b38a16b7b15871..8cfa1b1a068b7a 100644 --- a/var/spack/repos/builtin/packages/r-rmarkdown/package.py +++ b/var/spack/repos/builtin/packages/r-rmarkdown/package.py @@ -8,12 +8,11 @@ class RRmarkdown(RPackage): - """Dynamic Documents for R + """Dynamic Documents for R. Convert R Markdown documents into a variety of formats.""" - homepage = "https://rmarkdown.rstudio.com/" - cran = "rmarkdown" + cran = "rmarkdown" version('2.11', sha256='9371255300e7ea4cd936978ad2ca3d205d8605e09f4913cb0d4725005a7a9775') version('2.9', sha256='6ce5af8b9a7c282619f74d3999d27ec4de12d3f93cde8fd12cc4c19f02ea8668') @@ -30,16 +29,16 @@ class RRmarkdown(RPackage): depends_on('r-htmltools@0.3.5:', type=('build', 'run')) depends_on('r-evaluate@0.13:', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) - depends_on('r-tinytex@0.11:', when='@1.10:', type=('build', 'run')) - depends_on('r-tinytex@0.31:', when='@2.8:', type=('build', 'run')) - depends_on('r-xfun', when='@1.13:', type=('build', 'run')) - depends_on('r-xfun@0.15:', when='@2.6:', type=('build', 'run')) - depends_on('r-xfun@0.21:', when='@2.8:', type=('build', 'run')) - depends_on('r-jquerylib', when='@2.11:', type=('build', 'run')) - depends_on('r-stringr@1.2.0:', when='@1.6:', type=('build', 'run')) - depends_on('r-rprojroot', when='@1.3:1.7', type=('build', 'run')) - depends_on('r-mime', when='@1.8:1.14', type=('build', 'run')) - depends_on('r-catools', when='@:1.7', type=('build', 'run')) - depends_on('r-base64enc', when='@:1.14', type=('build', 'run')) + 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:') + depends_on('r-xfun@0.15:', type=('build', 'run'), when='@2.6:') + depends_on('r-xfun@0.21:', type=('build', 'run'), when='@2.8:') + depends_on('r-jquerylib', type=('build', 'run'), when='@2.11:') + depends_on('r-stringr@1.2.0:', type=('build', 'run'), when='@1.6:') + depends_on('r-rprojroot', type=('build', 'run'), when='@1.3:1.7') + 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('pandoc@1.12.3:') depends_on('pandoc@1.14:', when='@2.6:') diff --git a/var/spack/repos/builtin/packages/r-rminer/package.py b/var/spack/repos/builtin/packages/r-rminer/package.py index 2fbe71d0f44001..da511c44a9b143 100644 --- a/var/spack/repos/builtin/packages/r-rminer/package.py +++ b/var/spack/repos/builtin/packages/r-rminer/package.py @@ -7,7 +7,7 @@ class RRminer(RPackage): - """Data Mining Classification and Regression Methods + """Data Mining Classification and Regression Methods. Facilitates the use of data mining algorithms in classification and regression (including time series forecasting) tasks by presenting a short @@ -25,9 +25,7 @@ class RRminer(RPackage): 1.2 - new input importance methods via improved Importance() function; 1.0 - first version.""" - homepage = "http://www3.dsi.uminho.pt/pcortez/rminer.html" - url = "https://cloud.r-project.org/src/contrib/rminer_1.4.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rminer" + cran = "rminer" version('1.4.6', sha256='1f8bf7b3fbc887fd766568c1ec1f861021c962259354bd8967a61c1d0761cdf7') version('1.4.2', sha256='64444dcedcd17f2f26129819d6bd2f84d4bb59c8f65328b6054ef32cb9624fc2') diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index 3bd78e15be81dc..215a42cffe34af 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -7,7 +7,7 @@ class RRmpfr(RPackage): - """R MPFR - Multiple Precision Floating-Point Reliable + """R MPFR - Multiple Precision Floating-Point Reliable. Arithmetic (via S4 classes and methods) for arbitrary precision floating point numbers, including transcendental ("special") functions. To this end, @@ -15,20 +15,20 @@ class RRmpfr(RPackage): Reliable) Library which itself is based on the GMP (GNU Multiple Precision) Library.""" - homepage = "https://rmpfr.r-forge.r-project.org" - url = "https://cloud.r-project.org/src/contrib/Rmpfr_0.6-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Rmpfr" + cran = "Rmpfr" + version('0.8-7', sha256='93c2db785ff705dcfc6fa7f0373c2426cdc2ef72ceb5b294edeb2952775f57d2') version('0.8-2', sha256='74f6af1738b2cd21e7f2564b4cc2c84d5473a3745ba88ec76355d07fdd61f700') version('0.7-2', sha256='ec1da6ec5292ea6ac95495c6a299591d367e520ae324719817fb884c865603ff') version('0.7-1', sha256='9b3021617a22b0710b0f1acc279290762317ff123fd9e8fd03f1449f4bbfe204') version('0.6-1', sha256='bf50991055e9336cd6a110d711ae8a91a0551b96f9eaab5fef8c05f578006e1c') depends_on('r@3.0.1:', type=('build', 'run')) - depends_on('r@3.1.0:', when='@0.7-0', type=('build', 'run')) - depends_on('r@3.3.0:', when='@0.7-1:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.8-2:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@0.7-0') + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.7-1:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.8-2:') depends_on('r-gmp@0.5-8:', type=('build', 'run')) - depends_on('r-gmp@0.6-1:', when='@0.8-2:', type=('build', 'run')) + depends_on('r-gmp@0.6-1:', type=('build', 'run'), when='@0.8-2:') depends_on('gmp@4.2.3:') depends_on('mpfr@3.0.0:') + depends_on('texlive', type='build') diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index 17931cbc61cd88..baeb12d66d0185 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -7,13 +7,14 @@ class RRmpi(RPackage): - """An interface (wrapper) to MPI APIs. It also provides interactive R - manager and worker environment.""" + """Interface (Wrapper) to MPI (Message-Passing Interface). - homepage = "https://cran.r-project.org/web/packages/Rmpi/index.html" - url = "https://cloud.r-project.org/src/contrib/Rmpi_0.6-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Rmpi" + An interface (wrapper) to MPI APIs. It also provides interactive R manager + and worker environment.""" + cran = "Rmpi" + + version('0.6-9.2', sha256='358ac1af97402e676f209261a231f36a35e60f0301edf8ca53dac11af3c3bd1a') version('0.6-9', sha256='b2e1eac3e56f6b26c7ce744b29d8994ab6507ac88df64ebbb5af439414651ee6') version('0.6-8', sha256='9b453ce3bd7284eda33493a0e47bf16db6719e3c48ac5f69deac6746f5438d96') version('0.6-6', sha256='d8fc09ad38264697caa86079885a7a1098921a3116d5a77a62022b9508f8a63a') diff --git a/var/spack/repos/builtin/packages/r-rms/package.py b/var/spack/repos/builtin/packages/r-rms/package.py index dc87dd9398b676..961080be9d376f 100644 --- a/var/spack/repos/builtin/packages/r-rms/package.py +++ b/var/spack/repos/builtin/packages/r-rms/package.py @@ -7,7 +7,7 @@ class RRms(RPackage): - """Regression Modeling Strategies + """Regression Modeling Strategies. Regression modeling, testing, estimation, validation, graphics, prediction, and typesetting by storing enhanced model design attributes in the fit. @@ -23,10 +23,9 @@ class RRms(RPackage): for serially or spatially correlated observations, generalized linear models, and quantile regression.""" - homepage = "https://cloud.r-project.org/package=rms" - url = "https://cloud.r-project.org/src/contrib/rms_5.1-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rms" + cran = "rms" + version('6.2-0', sha256='10d58cbfe39fb434223834e29e5248c9384cded23e6267cfc99367d0f5ee24b6') version('6.1-0', sha256='b89ec3b9211a093bfe83a2a8107989b5ce3b7b7c323b88a5d887d99753289f52') version('5.1-4', sha256='38f5844c4944a95b2adebea6bb1d163111270b8662399ea0349c45c0758076a6') version('5.1-3.1', sha256='0946d9547a4e3ff020a61ab3fce38f88aa9545729683e2bfefeb960edec82b37') @@ -37,7 +36,7 @@ class RRms(RPackage): depends_on('r@3.5.0:', type=('build', 'run')) depends_on('r-hmisc@4.3-0:', type=('build', 'run')) depends_on('r-survival@3.1-6:', type=('build', 'run')) - depends_on('r-survival@3.1-12:', when='@6.1-0:', type=('build', 'run')) + depends_on('r-survival@3.1-12:', type=('build', 'run'), when='@6.1-0:') depends_on('r-lattice', type=('build', 'run')) depends_on('r-ggplot2@2.2:', type=('build', 'run')) depends_on('r-sparsem', type=('build', 'run')) @@ -48,6 +47,6 @@ class RRms(RPackage): depends_on('r-multcomp', type=('build', 'run')) depends_on('r-htmltable@1.11.0:', type=('build', 'run')) depends_on('r-htmltools', type=('build', 'run')) - depends_on('r-mass', when='@6.1-0:', type=('build', 'run')) - depends_on('r-cluster', when='@6.1-0:', type=('build', 'run')) - depends_on('r-digest', when='@6.1-0:', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run'), when='@6.1-0:') + depends_on('r-cluster', type=('build', 'run'), when='@6.1-0:') + depends_on('r-digest', type=('build', 'run'), when='@6.1-0:') diff --git a/var/spack/repos/builtin/packages/r-rmutil/package.py b/var/spack/repos/builtin/packages/r-rmutil/package.py index fb762ad282919b..ada5f5b391ddab 100644 --- a/var/spack/repos/builtin/packages/r-rmutil/package.py +++ b/var/spack/repos/builtin/packages/r-rmutil/package.py @@ -7,16 +7,14 @@ class RRmutil(RPackage): - """Utilities for Nonlinear Regression and Repeated MeasurementsModels + """Utilities for Nonlinear Regression and Repeated MeasurementsModels. A toolkit of functions for nonlinear regression and repeated measurements not to be used by itself but called by other Lindsey packages such as 'gnlm', 'stable', 'growth', 'repeated', and 'event' (available at ).""" - homepage = "https://www.commanster.eu/rcode.html" - url = "https://cloud.r-project.org/src/contrib/rmutil_1.1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rmutil" + cran = "rmutil" version('1.1.5', sha256='6077e643d6daeba6edcf49d928320b54cc6aa6ff59934f9e9e6071a2f9afb2f6') version('1.1.3', sha256='7abaf41e99d1c4a0e4082c4594964ac1421c53b4268116c82fa55aa8bc0582da') diff --git a/var/spack/repos/builtin/packages/r-rmysql/package.py b/var/spack/repos/builtin/packages/r-rmysql/package.py index 6072a41afa581c..d020170d0694f7 100644 --- a/var/spack/repos/builtin/packages/r-rmysql/package.py +++ b/var/spack/repos/builtin/packages/r-rmysql/package.py @@ -7,16 +7,15 @@ class RRmysql(RPackage): - """Database Interface and 'MySQL' Driver for R + """Database Interface and 'MySQL' Driver for R. Legacy 'DBI' interface to 'MySQL' / 'MariaDB' based on old code ported from S-PLUS. A modern 'MySQL' client based on 'Rcpp' is available from the 'RMariaDB' package.""" - homepage = "https://github.com/rstats-db/rmysql" - url = "https://cloud.r-project.org/src/contrib/RMySQL_0.10.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RMySQL" + cran = "RMySQL" + version('0.10.23', sha256='f4ac7ed4fba83749819c07ce32d53ee024cf1cedebbda3b832644bff9edf4a15') version('0.10.21', sha256='3a6bf06d32d66c7c958d4f89ed517614171a7fd254ef6f4d40f4c5982c2d6b31') version('0.10.17', sha256='754df4fce159078c1682ef34fc96aa5ae30981dc91f4f2bada8d1018537255f5') version('0.10.9', sha256='41289c743dc8ee2e0dea8b8f291d65f0a7cd11e799b713d94840406ff296fd42') diff --git a/var/spack/repos/builtin/packages/r-rnaseqmap/package.py b/var/spack/repos/builtin/packages/r-rnaseqmap/package.py index e1fa7b13091cef..0378e1f6538824 100644 --- a/var/spack/repos/builtin/packages/r-rnaseqmap/package.py +++ b/var/spack/repos/builtin/packages/r-rnaseqmap/package.py @@ -7,14 +7,13 @@ class RRnaseqmap(RPackage): - """rnaSeq secondary analyses + """rnaSeq secondary analyses. The rnaSeqMap library provides classes and functions to analyze the RNA- sequencing data using the coverage profiles in multiple samples at a time""" - homepage = "https://bioconductor.org/packages/rnaSeqMap" - git = "https://git.bioconductor.org/packages/rnaSeqMap.git" + bioc = "rnaSeqMap" version('2.48.0', commit='a8c515e518cebf571d1524c3a8a986ba7d1557db') version('2.42.0', commit='3a3a1030cc38d79d04536e0ab16114e4fa6721cf') diff --git a/var/spack/repos/builtin/packages/r-rncl/package.py b/var/spack/repos/builtin/packages/r-rncl/package.py index 06ebc5b26ad24d..2f19835d0886e2 100644 --- a/var/spack/repos/builtin/packages/r-rncl/package.py +++ b/var/spack/repos/builtin/packages/r-rncl/package.py @@ -7,7 +7,7 @@ class RRncl(RPackage): - """rncl: An Interface to the Nexus Class Library. + """An Interface to the Nexus Class Library. An interface to the Nexus Class Library which allows parsing of NEXUS, Newick and other phylogenetic tree file formats. It provides elements of @@ -15,9 +15,7 @@ class RRncl(RPackage): 'phylo' or phylobase's 'phylo4(d)'. This functionality is demonstrated with 'read_newick_phylo()' and 'read_nexus_phylo()'.""" - homepage = "https://github.com/fmichonneau/rncl" - url = "https://cloud.r-project.org/src/contrib/rncl_0.8.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rncl" + cran = "rncl" version('0.8.4', sha256='6b19d0dd9bb08ecf99766be5ad684bcd1894d1cd9291230bdd709dbd3396496b') diff --git a/var/spack/repos/builtin/packages/r-rnexml/package.py b/var/spack/repos/builtin/packages/r-rnexml/package.py index ce09a68b50c1c2..e617b6d19303a7 100644 --- a/var/spack/repos/builtin/packages/r-rnexml/package.py +++ b/var/spack/repos/builtin/packages/r-rnexml/package.py @@ -7,16 +7,14 @@ class RRnexml(RPackage): - """RNeXML: Semantically Rich I/O for the 'NeXML' Format. + """Semantically Rich I/O for the 'NeXML' Format. Provides access to phyloinformatic data in 'NeXML' format. The package should add new functionality to R such as the possibility to manipulate 'NeXML' objects in more various and refined way and compatibility with 'ape' objects.""" - homepage = "https://github.com/ropensci/RNeXML" - url = "https://cloud.r-project.org/src/contrib/RNeXML_2.4.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RNeXML" + cran = "RNeXML" version('2.4.5', sha256='2b667ecb6400e4c0c125ca73a98cde81330cde3a85b764261f77159e702754f3') diff --git a/var/spack/repos/builtin/packages/r-rngtools/package.py b/var/spack/repos/builtin/packages/r-rngtools/package.py index acfe8444628b72..7af3db7edf39a5 100644 --- a/var/spack/repos/builtin/packages/r-rngtools/package.py +++ b/var/spack/repos/builtin/packages/r-rngtools/package.py @@ -7,7 +7,7 @@ class RRngtools(RPackage): - """Utility Functions for Working with Random Number Generators + """Utility Functions for Working with Random Number Generators. Provides a set of functions for working with Random Number Generators (RNGs). In particular, a generic S4 framework is defined for @@ -15,17 +15,17 @@ class RRngtools(RPackage): for reproducibility. Notably, convenient default methods greatly facilitate the way current RNG settings can be changed.""" - homepage = "https://renozao.github.io/rngtools" - url = "https://cloud.r-project.org/src/contrib/rngtools_1.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rngtools" + cran = "rngtools" + version('1.5.2', sha256='7f8c76ca4c7851b69a86e27be09b02ddc86357f0388659ef8787634682e8a74d') version('1.5', sha256='8274873b73f7acbe0ce007e62893bf4d369d2aab8768754a60da46b3f078f575') version('1.4', sha256='3aa92366e5d0500537964302f5754a750aff6b169a27611725e7d84552913bce') version('1.3.1.1', sha256='99e1a8fde6b81128d0946746c1ef84ec5b6c2973ad843a080098baf73aa3364c') version('1.3.1', sha256='763fc493cb821a4d3e514c0dc876d602a692c528e1d67f295dde70c77009e224') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.2.0:', when='@1.4:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@1.4:') depends_on('r-digest', type=('build', 'run')) - depends_on('r-pkgmaker@0.20:', when='@:1.4', type=('build', 'run')) - depends_on('r-stringr', when='@:1.4', type=('build', 'run')) + + depends_on('r-pkgmaker@0.20:', type=('build', 'run'), when='@:1.4') + depends_on('r-stringr', type=('build', 'run'), when='@:1.4') diff --git a/var/spack/repos/builtin/packages/r-rnoaa/package.py b/var/spack/repos/builtin/packages/r-rnoaa/package.py index e63699f84f9ae9..df40001dda6259 100644 --- a/var/spack/repos/builtin/packages/r-rnoaa/package.py +++ b/var/spack/repos/builtin/packages/r-rnoaa/package.py @@ -7,7 +7,7 @@ class RRnoaa(RPackage): - """'NOAA' Weather Data from R + """'NOAA' Weather Data from R. Client for many 'NOAA' data sources including the 'NCDC' climate 'API' at , with functions for each @@ -18,10 +18,9 @@ class RRnoaa(RPackage): storm data via 'IBTrACS', tornado data via the 'NOAA' storm prediction center, and more.""" - homepage = "https://github.com/ropensci/rnoaa" - url = "https://cloud.r-project.org/src/contrib/rnoaa_0.8.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rnoaa" + cran = "rnoaa" + version('1.3.8', sha256='57974b48162637e98888f041d6f0e580d3c60bd5008af2d2bc659491f0deb98a') version('1.3.0', sha256='4c421ad6e4c2b25e4dea5351c338aed70bea6e382562412d1dad825a50b0d161') version('0.8.4', sha256='fb9ae771111dd5f638c1eff3290abad2ff9cc7e68a6678bf2414433ebed2dbbf') @@ -29,16 +28,17 @@ class RRnoaa(RPackage): depends_on('r-lubridate', type=('build', 'run')) depends_on('r-dplyr', type=('build', 'run')) depends_on('r-tidyr', type=('build', 'run')) - depends_on('r-tidyselect', when='@1.3.0:', type=('build', 'run')) + depends_on('r-tidyselect', type=('build', 'run'), when='@1.3.0:') depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-scales', type=('build', 'run')) depends_on('r-xml', type=('build', 'run')) depends_on('r-xml2', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) - depends_on('r-rappdirs', type=('build', 'run')) depends_on('r-gridextra', type=('build', 'run')) depends_on('r-tibble', type=('build', 'run')) depends_on('r-isdparser@0.2.0:', type=('build', 'run')) depends_on('r-geonames', type=('build', 'run')) depends_on('r-hoardr@0.5.2:', type=('build', 'run')) - depends_on('r-data-table', when='@1.3.0:', type=('build', 'run')) + depends_on('r-data-table', type=('build', 'run'), when='@1.3.0:') + + depends_on('r-rappdirs', type=('build', 'run'), when='@:1.3.0') diff --git a/var/spack/repos/builtin/packages/r-robust/package.py b/var/spack/repos/builtin/packages/r-robust/package.py index c453d7ce6c8fe7..491dbe7acace85 100644 --- a/var/spack/repos/builtin/packages/r-robust/package.py +++ b/var/spack/repos/builtin/packages/r-robust/package.py @@ -8,15 +8,14 @@ class RRobust(RPackage): - """Port of the S+ Robust Library + """Port of the S+ Robust Library. Methods for robust statistics, a state of the art in the early 2000s, notably for robust regression and robust multivariate analysis.""" - homepage = "https://cloud.r-project.org/package=robust" - url = "https://cloud.r-project.org/src/contrib/robust_0.4-18.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/robust/" + cran = "robust" + version('0.6-1', sha256='496fd225f6bc6f734e338308f18475125aaf691b39e25308bddb284d3106117d') version('0.5-0.0', sha256='82f0b50028938966f807a4c4da5c345a3a64ccafd9a31c64a22cda852ed345cf') version('0.4-18.1', sha256='de31901882873ef89748bb6863caf55734431df5b3eb3c6663ed17ee2e4a4077') version('0.4-18', sha256='e4196f01bb3b0d768759d4411d524238b627eb8dc213d84cb30014e75480f8ac') diff --git a/var/spack/repos/builtin/packages/r-robustbase/package.py b/var/spack/repos/builtin/packages/r-robustbase/package.py index d3631fa653ab0e..3c253dff58ef70 100644 --- a/var/spack/repos/builtin/packages/r-robustbase/package.py +++ b/var/spack/repos/builtin/packages/r-robustbase/package.py @@ -7,7 +7,7 @@ class RRobustbase(RPackage): - """Basic Robust Statistics + """Basic Robust Statistics. "Essential" Robust Statistics. Tools allowing to analyze data with robust methods. This includes regression methodology including model selections @@ -15,15 +15,15 @@ class RRobustbase(RPackage): Statistics, Theory and Methods" by 'Maronna, Martin and Yohai'; Wiley 2006.""" - homepage = "https://robustbase.r-forge.r-project.org" - url = "https://cloud.r-project.org/src/contrib/robustbase_0.92-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/robustbase" + cran = "robustbase" + version('0.93-9', sha256='d75fb5075463fec61d063bced7003936e9198492328b6fae15f67e8415713c45') version('0.93-7', sha256='8911d2d0fdca5e2627033e046279f9d106e25ce98d588f9ccc4d8e4b42680956') version('0.93-5', sha256='bde564dbd52f04ab32f9f2f9dd09b9578f3ccd2541cf5f8ff430da42a55e7f56') version('0.93-4', sha256='ea9e03d484ef52ea805803477ffc48881e4c8c86ffda4eea56109f8b23f0a6e0') version('0.92-7', sha256='fcbd6ccbb0291b599fe6a674a91344511e0a691b9cadba0a9d40037faa22bf8f') - depends_on('r@3.0.2:', when='@:0.93-1.1', type=('build', 'run')) - depends_on('r@3.1.0:', when='@0.93-2:', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@0.93-2:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.93-9:') depends_on('r-deoptimr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-roc/package.py b/var/spack/repos/builtin/packages/r-roc/package.py index cae16c3b2d48fa..6da81d310b750c 100644 --- a/var/spack/repos/builtin/packages/r-roc/package.py +++ b/var/spack/repos/builtin/packages/r-roc/package.py @@ -7,13 +7,13 @@ class RRoc(RPackage): - """utilities for ROC, with microarray focus + """utilities for ROC, with microarray focus. Provide utilities for ROC, with microarray focus.""" - homepage = "https://bioconductor.org/packages/release/bioc/html/ROC.html" - git = "https://git.bioconductor.org/packages/ROC" + bioc = "ROC" + version('1.70.0', commit='44fd639958b9b1be4f8f731dc2be9dd91b2fa632') version('1.66.0', commit='62701ee41f48f99d15344127384fa032db69486f') version('1.62.0', commit='60250fdb091f6a938709b8a2cffe6442ee22a9a2') diff --git a/var/spack/repos/builtin/packages/r-rocr/package.py b/var/spack/repos/builtin/packages/r-rocr/package.py index f126aed5c647ca..25214432062fdb 100644 --- a/var/spack/repos/builtin/packages/r-rocr/package.py +++ b/var/spack/repos/builtin/packages/r-rocr/package.py @@ -7,31 +7,27 @@ class RRocr(RPackage): - """Visualizing the Performance of Scoring Classifiers + """Visualizing the Performance of Scoring Classifiers. - ROC graphs, sensitivity/specificity curves, lift charts, - and precision/recall plots are popular examples of trade-off - visualizations for specific pairs of performance measures. ROCR - is a flexible tool for creating cutoff-parameterized 2D performance - curves by freely combining two from over 25 performance measures - (new performance measures can be added using a standard interface). - Curves from different cross-validation or bootstrapping runs can - be averaged by different methods, and standard deviations, standard - errors or box plots can be used to visualize the variability across - the runs. The parameterization can be visualized by printing cutoff - values at the corresponding curve positions, or by coloring the - curve according to cutoff. All components of a performance plot - can be quickly adjusted using a flexible parameter dispatching - mechanism. Despite its flexibility, ROCR is easy to use, with only - three commands and reasonable default values for all optional - parameters.""" + ROC graphs, sensitivity/specificity curves, lift charts, and + precision/recall plots are popular examples of trade-off visualizations for + specific pairs of performance measures. ROCR is a flexible tool for + creating cutoff-parameterized 2D performance curves by freely combining two + from over 25 performance measures (new performance measures can be added + using a standard interface). Curves from different cross-validation or + bootstrapping runs can be averaged by different methods, and standard + deviations, standard errors or box plots can be used to visualize the + variability across the runs. The parameterization can be visualized by + printing cutoff values at the corresponding curve positions, or by coloring + the curve according to cutoff. All components of a performance plot can be + quickly adjusted using a flexible parameter dispatching mechanism. Despite + its flexibility, ROCR is easy to use, with only three commands and + reasonable default values for all optional parameters.""" - homepage = "https://cloud.r-project.org/package=ROCR" - url = "https://cloud.r-project.org/src/contrib/ROCR_1.0-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ROCR" + cran = "ROCR" version('1.0-11', sha256='57385a773220a3aaef5b221a68b2d9c2a94794d4f9e9fc3c1eb9521767debb2a') version('1.0-7', sha256='e7ef710f847e441a48b20fdc781dbc1377f5a060a5ee635234053f7a2a435ec9') - depends_on('r@3.6:', when='@1.0-11:', type=('build', 'run')) + depends_on('r@3.6:', type=('build', 'run'), when='@1.0-11:') depends_on('r-gplots', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rodbc/package.py b/var/spack/repos/builtin/packages/r-rodbc/package.py index 563acfbc363681..54054d2dadcbe3 100644 --- a/var/spack/repos/builtin/packages/r-rodbc/package.py +++ b/var/spack/repos/builtin/packages/r-rodbc/package.py @@ -7,19 +7,17 @@ class RRodbc(RPackage): - """ODBC Database Access + """ODBC Database Access. An ODBC database interface.""" - homepage = "https://cloud.r-project.org/package=RODBC" - url = "https://cloud.r-project.org/src/contrib/RODBC_1.3-13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RODBC/" + cran = "RODBC" + version('1.3-19', sha256='3afcbd6877cd8b7c8df4a94bacd041a51e5ac607810acb88efd380b45d2d4efe') version('1.3-17', sha256='469fc835f65c344d5c3eaa097ff278ee8e9f12f845722a9aad340115faa704f7') version('1.3-15', sha256='c43e5a2f0aa2f46607e664bfc0bb3caa230bbb779f4ff084e01727642da136e1') version('1.3-13', sha256='e8ea7eb77a07be36fc2d824c28bb426334da7484957ffbc719140373adf1667c') - depends_on('unixodbc') - depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@1.3-17:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.3-17:') + depends_on('unixodbc') diff --git a/var/spack/repos/builtin/packages/r-rook/package.py b/var/spack/repos/builtin/packages/r-rook/package.py index 0c8360222fbb4f..d4d782b3ff420b 100644 --- a/var/spack/repos/builtin/packages/r-rook/package.py +++ b/var/spack/repos/builtin/packages/r-rook/package.py @@ -7,13 +7,13 @@ class RRook(RPackage): - """This package contains the Rook specification and convenience software - for building and running Rook applications. To get started, be sure and - read the 'Rook' help file first.""" + """Rook - a web server interface for R. - homepage = "https://cloud.r-project.org/package=Rook" - url = "https://cloud.r-project.org/src/contrib/Rook_1.1-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Rook" + This package contains the Rook specification and convenience software for + building and running Rook applications. To get started, be sure and read + the 'Rook' help file first.""" + + cran = "Rook" version('1.1-1', sha256='00f4ecfa4c5c57018acbb749080c07154549a6ecaa8d4130dd9de79427504903') diff --git a/var/spack/repos/builtin/packages/r-rots/package.py b/var/spack/repos/builtin/packages/r-rots/package.py index 202344810ae03f..329aa6f1385476 100644 --- a/var/spack/repos/builtin/packages/r-rots/package.py +++ b/var/spack/repos/builtin/packages/r-rots/package.py @@ -7,14 +7,14 @@ class RRots(RPackage): - """Reproducibility-Optimized Test Statistic + """Reproducibility-Optimized Test Statistic. Calculates the Reproducibility-Optimized Test Statistic (ROTS) for differential testing in omics data.""" - homepage = "https://bioconductor.org/packages/ROTS" - git = "https://git.bioconductor.org/packages/ROTS.git" + bioc = "ROTS" + version('1.22.0', commit='a53ec77c40ed3b3c84e91d794c1602dd509cad83') version('1.18.0', commit='1d4e206a8ce68d5a1417ff51c26174ed9d0ba7d2') version('1.12.0', commit='7e2c96fd8fd36710321498745f24cc6b59ac02f0') version('1.10.1', commit='1733d3f868cef4d81af6edfc102221d80793937b') diff --git a/var/spack/repos/builtin/packages/r-roxygen2/package.py b/var/spack/repos/builtin/packages/r-roxygen2/package.py index 6ee7349a4e8966..468611453d337d 100644 --- a/var/spack/repos/builtin/packages/r-roxygen2/package.py +++ b/var/spack/repos/builtin/packages/r-roxygen2/package.py @@ -7,36 +7,38 @@ class RRoxygen2(RPackage): - """In-Line Documentation for R + """In-Line Documentation for R. Generate your Rd documentation, 'NAMESPACE' file, and collation field using specially formatted comments. Writing documentation in-line with code makes it easier to keep your documentation up-to-date as your requirements change. 'Roxygen2' is inspired by the 'Doxygen' system for C++.""" - homepage = "https://github.com/klutometis/roxygen" - url = "https://cloud.r-project.org/src/contrib/roxygen2_5.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/roxygen2" + cran = "roxygen2" + version('7.1.2', sha256='b3693d1eb57bb1c27134447ea7f64c353c085dd2237af7cfacc75fca3d2fc5fd') version('7.1.1', sha256='bdc55ded037d4366f4d25a0d69e880dacc0fa22bee20f595d45855eef8548861') version('7.1.0', sha256='7e9b36f6e7c01a5c8c4747340b3d0c064ce2e48c93fcfbfe45139854fae74103') version('6.1.1', sha256='ed46b7e062e0dfd8de671c7a5f6d120fb2b720982e918dbeb01e6985694c0273') version('5.0.1', sha256='9f755ddd08358be436f08b02df398e50e7508b856131aeeed235099bb3a7eba5') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.1:', when='@6.1.0:', type=('build', 'run')) - depends_on('r@3.2:', when='@7.1.0:', type=('build', 'run')) + 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-brew', type=('build', 'run')) depends_on('r-commonmark', type=('build', 'run')) depends_on('r-desc@1.2.0:', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) - depends_on('r-knitr', when='@7.1.0:', type=('build', 'run')) + depends_on('r-knitr', type=('build', 'run'), when='@7.1.0:') depends_on('r-pkgload@1.0.2:', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) - depends_on('r-purrr@0.3.3:', when='@7.1.0:', type=('build', 'run')) + depends_on('r-purrr@0.3.3:', type=('build', 'run'), when='@7.1.0:') depends_on('r-r6@2.1.2:', type=('build', 'run')) - depends_on('r-rcpp@0.11.0:', type=('build', 'run')) - depends_on('r-rlang', when='@7.1.0:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@7.1.0:') depends_on('r-stringi', type=('build', 'run')) depends_on('r-stringr@1.0.0:', type=('build', 'run')) depends_on('r-xml2', type=('build', 'run')) + depends_on('r-cpp11', type=('build', 'run'), when='@7.1.2:') + + depends_on('r-rcpp@0.11.0:', type=('build', 'run'), when='@:7.1.1') 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 b46a55e925da36..37519fcd59620b 100644 --- a/var/spack/repos/builtin/packages/r-rpart-plot/package.py +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -7,21 +7,20 @@ class RRpartPlot(RPackage): - """Plot 'rpart' Models: An Enhanced Version of 'plot.rpart' + """Plot 'rpart' Models: An Enhanced Version of 'plot.rpart'. - Plot 'rpart' models. Extends plot.rpart() and text.rpart() in the - 'rpart' package.""" + Plot 'rpart' models. Extends plot.rpart() and text.rpart() in the 'rpart' + package.""" - homepage = "https://cloud.r-project.org/package=rpart.plot" - url = "https://cloud.r-project.org/src/contrib/rpart.plot_2.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rpart.plot" + cran = "rpart.plot" + version('3.1.0', sha256='2aaba0c0cabbc17aca9085248b0ad74ee7ff2b8f729e020e84b3917de174c15e') version('3.0.9', sha256='1150f5e9899b3b31b17160617cd99c3ad340c8361aeb229264a7a3a3a28015a4') version('3.0.7', sha256='04e7fcadfa907507b74529c3ecfae4a0c782badf55e87d9c62dbd9a536ea9144') version('3.0.6', sha256='1c584290c8f58ded5c3f0638790a0da63408eca3ecd5d5c4d8c46954de9f4b02') version('2.1.0', sha256='17686da1883f97cb8f44be0d9cb915b366a3cb7313cd131b96497ab09f727436') - depends_on('r@3.2.0:', when='@2.1.2:3.0.6', type=('build', 'run')) - depends_on('r@3.4.0:', when='@3.0.7:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@3.0.7:') depends_on('r-rpart@4.1-10:', type=('build', 'run')) - depends_on('r-rpart@4.1-15:', when='@3.0.9:', type=('build', 'run')) + depends_on('r-rpart@4.1-15:', type=('build', 'run'), when='@3.0.9:') diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index 513bcd18754d03..2a207ee2be2ac7 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -7,13 +7,15 @@ class RRpart(RPackage): - """Recursive partitioning for classification, regression and - survival trees.""" + """Recursive Partitioning and Regression Trees. - homepage = "https://cloud.r-project.org/package=rpart" - url = "https://cloud.r-project.org/src/contrib/rpart_4.1-10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rpart" + Recursive partitioning for classification, regression and survival trees. + An implementation of most of the functionality of the 1984 book by Breiman, + Friedman, Olshen and Stone.""" + cran = "rpart" + + version('4.1.16', sha256='27ec75258a5a3459ad999f5f36760ead974930744249605bf8465f234f31425c') version('4.1-15', sha256='2b8ebe0e9e11592debff893f93f5a44a6765abd0bd956b0eb1f70e9394cfae5c') version('4.1-13', sha256='8e11a6552224e0fbe23a85aba95acd21a0889a3fe48277f3d345de3147c7494c') version('4.1-11', sha256='38ab80959f59bcdd2c4c72860e8dd0deab0307668cbbf24f96014d7a2496ad98') diff --git a/var/spack/repos/builtin/packages/r-rpmm/package.py b/var/spack/repos/builtin/packages/r-rpmm/package.py index 549d7e104805bf..8588840d977aa0 100644 --- a/var/spack/repos/builtin/packages/r-rpmm/package.py +++ b/var/spack/repos/builtin/packages/r-rpmm/package.py @@ -7,14 +7,14 @@ class RRpmm(RPackage): - """Recursively Partitioned Mixture Model: + """Recursively Partitioned Mixture Model. Recursively Partitioned Mixture Model for Beta and Gaussian Mixtures. This is a model-based clustering algorithm that returns a hierarchy of classes, similar to hierarchical clustering, but also similar to finite mixture models.""" - cran = "RPMM" + cran = "RPMM" version('1.25', sha256='f04a524b13918062616beda50c4e759ce2719ce14150a0e677d07132086c88c8') diff --git a/var/spack/repos/builtin/packages/r-rpostgres/package.py b/var/spack/repos/builtin/packages/r-rpostgres/package.py index a6d06234c287c5..9da3523be43864 100644 --- a/var/spack/repos/builtin/packages/r-rpostgres/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgres/package.py @@ -7,14 +7,14 @@ class RRpostgres(RPackage): - """'Rcpp' Interface to 'PostgreSQL' + """'Rcpp' Interface to 'PostgreSQL'. Fully 'DBI'-compliant 'Rcpp'-backed interface to 'PostgreSQL' , an open-source relational database.""" - homepage = "https://rpostgres.r-dbi.org/" - cran = "RPostgres" + cran = "RPostgres" + version('1.4.3', sha256='a5be494a54b6e989fadafdc6ee2dc5c4c15bb17bacea9ad540b175c693331be2') version('1.3.1', sha256='f68ab095567317ec32d3faa10e5bcac400aee5aeca8d7132260d4e90f82158ea') depends_on('r@3.1.0:', type=('build', 'run')) @@ -22,9 +22,12 @@ class RRpostgres(RPackage): depends_on('r-blob@1.2.0:', type=('build', 'run')) depends_on('r-dbi@1.1.0:', type=('build', 'run')) 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-bh', type=('build', 'run')) depends_on('r-plogr@0.2.0:', type=('build', 'run')) depends_on('postgresql@9.0:') + + 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 de6806b1c5c9b7..88bf94ba7b6f08 100644 --- a/var/spack/repos/builtin/packages/r-rpostgresql/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgresql/package.py @@ -7,7 +7,9 @@ class RRpostgresql(RPackage): - """Database interface and PostgreSQL driver for R This package provides a + """R Interface to the 'PostgreSQL' Database System. + + Database interface and PostgreSQL driver for R This package provides a Database Interface (DBI) compliant driver for R to access PostgreSQL database systems. In order to build and install this package from source, PostgreSQL itself must be present your system to provide PostgreSQL @@ -17,10 +19,9 @@ class RRpostgresql(RPackage): issue tracking system for the package are available at Google Code at https://code.google.com/p/rpostgresql/.""" - homepage = "https://cran.r-project.org/web/packages/RPostgreSQL/index.html" - url = "https://cloud.r-project.org/src/contrib/RPostgreSQL_0.4-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RPostgreSQL" + cran = "RPostgreSQL" + version('0.7-3', sha256='bdbca10329aeb357f05364772964716dfb5ce2470f7eb4a33770862b6ded71b9') version('0.6-2', sha256='080118647208bfa2621bcaac0d324891cc513e07618fa22e3c50ec2050e1b0d5') version('0.4-1', sha256='6292e37fa841670a3fb1a0950ceb83d15beb4631c3c532c8ce279d1c0d10bf79') diff --git a/var/spack/repos/builtin/packages/r-rprojroot/package.py b/var/spack/repos/builtin/packages/r-rprojroot/package.py index 5e6687b8979559..714c713d9bc626 100644 --- a/var/spack/repos/builtin/packages/r-rprojroot/package.py +++ b/var/spack/repos/builtin/packages/r-rprojroot/package.py @@ -7,19 +7,18 @@ class RRprojroot(RPackage): - """Finding Files in Project Subdirectories + """Finding Files in Project Subdirectories. - Robust, reliable and flexible paths to files below a project root. - The 'root' of a project is defined as a directory that matches a - certain criterion, e.g., it contains a certain regular file.""" + Robust, reliable and flexible paths to files below a project root. The + 'root' of a project is defined as a directory that matches a certain + criterion, e.g., it contains a certain regular file.""" - homepage = "https://cloud.r-project.org/package=rprojroot" - url = "https://cloud.r-project.org/src/contrib/rprojroot_1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rprojroot" + cran = "rprojroot" version('2.0.2', sha256='5fa161f0d4ac3b7a99dc6aa2d832251001dc92e93c828593a51fe90afd019e1f') version('1.3-2', sha256='df5665834941d8b0e377a8810a04f98552201678300f168de5f58a587b73238b') version('1.2', sha256='28b4d235ce67314528a0c1cc7e98faed42437b42e07fca18a59a80fdc3eefeb9') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r-backports', when='@:1.3-2', type=('build', 'run')) + + depends_on('r-backports', type=('build', 'run'), when='@:1.3-2') diff --git a/var/spack/repos/builtin/packages/r-rpsychi/package.py b/var/spack/repos/builtin/packages/r-rpsychi/package.py index 4023ea141f436b..dbf9264aaf289d 100644 --- a/var/spack/repos/builtin/packages/r-rpsychi/package.py +++ b/var/spack/repos/builtin/packages/r-rpsychi/package.py @@ -5,16 +5,17 @@ class RRpsychi(RPackage): - """The rpsychi offers a number of functions for psychiatry, - psychiatric nursing, clinical psychology. Functions are primarily - for statistical significance testing using published work. For - example, you can conduct a factorial analysis of variance (ANOVA), - which requires only the mean, standard deviation, and sample size - for each cell, rather than the individual data. This package - covers fundamental statistical tests such as t-test, chi-square - test, analysis of variance, and multiple regression analysis. With - some exceptions, you can obtain effect size and its confidence - interval. These functions help you to obtain effect size from + """Statistics for psychiatric research. + + The rpsychi offers a number of functions for psychiatry, psychiatric + nursing, clinical psychology. Functions are primarily for statistical + significance testing using published work. For example, you can conduct a + factorial analysis of variance (ANOVA), which requires only the mean, + standard deviation, and sample size for each cell, rather than the + individual data. This package covers fundamental statistical tests such as + t-test, chi-square test, analysis of variance, and multiple regression + analysis. With some exceptions, you can obtain effect size and its + confidence interval. These functions help you to obtain effect size from published work, and then to conduct a priori power analysis or meta-analysis, even if a researcher do not report effect size in a published work.""" diff --git a/var/spack/repos/builtin/packages/r-rrblup/package.py b/var/spack/repos/builtin/packages/r-rrblup/package.py index d79b6800717bd0..790863fed04ec7 100644 --- a/var/spack/repos/builtin/packages/r-rrblup/package.py +++ b/var/spack/repos/builtin/packages/r-rrblup/package.py @@ -7,7 +7,7 @@ class RRrblup(RPackage): - """Ridge Regression and Other Kernels for Genomic Selection + """Ridge Regression and Other Kernels for Genomic Selection. Software for genomic prediction with the RR-BLUP mixed model (Endelman 2011, ). One application is to @@ -15,9 +15,7 @@ class RRrblup(RPackage): calculated based on an additive relationship matrix or a Gaussian kernel.""" - homepage = "https://potatobreeding.cals.wisc.edu/software" - url = "https://cloud.r-project.org/src/contrib/rrBLUP_4.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rrBLUP" + cran = "rrBLUP" 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 e97ec63101efd3..f9a8f69c485489 100644 --- a/var/spack/repos/builtin/packages/r-rrcov/package.py +++ b/var/spack/repos/builtin/packages/r-rrcov/package.py @@ -7,7 +7,7 @@ class RRrcov(RPackage): - """Scalable Robust Estimators with High Breakdown Point + """Scalable Robust Estimators with High Breakdown Point. Robust Location and Scatter Estimation and Robust Multivariate Analysis with High Breakdown Point: principal component analysis (Filzmoser and @@ -19,10 +19,10 @@ class RRrcov(RPackage): Filzmoser (2010) and Boudt et al. (2019) .""" - homepage = "https://cloud.r-project.org/package=rrcov" - url = "https://cloud.r-project.org/src/contrib/rrcov_1.4-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rrcov" + cran = "rrcov" + version('1.6-1', sha256='9f3b500f2bdac375d0374cd1b120806c785b1981101d7d018fc1fcc73e305d90') + version('1.6-0', sha256='795f3a49b3e17c9c6e0fdd865e81a0402cefda970032c8299bcf2056ca7ec944') version('1.5-5', sha256='1f7f07558e347e7d1f1adff68631764670bc672777a7d990901c4fa94cc0e629') version('1.4-7', sha256='cbd08ccce8b583a2f88946a3267c8fc494ee2b44ba749b9296a6e3d818f6f293') @@ -31,4 +31,5 @@ class RRrcov(RPackage): depends_on('r-mvtnorm', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-pcapp', type=('build', 'run')) - depends_on('r-cluster', when='@:1.4-7', type=('build', 'run')) + + depends_on('r-cluster', type=('build', 'run'), when='@:1.4-7') diff --git a/var/spack/repos/builtin/packages/r-rrpp/package.py b/var/spack/repos/builtin/packages/r-rrpp/package.py index 2ee4990a588c09..273b13ccef42e3 100644 --- a/var/spack/repos/builtin/packages/r-rrpp/package.py +++ b/var/spack/repos/builtin/packages/r-rrpp/package.py @@ -8,7 +8,8 @@ class RRrpp(RPackage): - """Linear Model Evaluation with Randomized Residuals in a Permutation Procedure + """Linear Model Evaluation with Randomized Residuals in a Permutation + Procedure. Linear model calculations are made for many random versions of data. Using residual randomization in a permutation procedure, sums of squares are @@ -22,14 +23,15 @@ class RRrpp(RPackage): data, especially in ecology and evolutionary biology, but certainly other fields, as well.""" - homepage = "https://github.com/mlcollyer/RRPP" - url = "https://cloud.r-project.org/src/contrib/RRPP_0.3.0.tar.gz" - list_url = "https://cron.r-project.org/src/contrib/Archive/RRPP" + cran = "RRPP" + version('1.1.2', sha256='2b563f3db9e349abe481444f48a1a3e6bc1154de8259b7a7060ab588287e80c0') version('0.6.2', sha256='f8ffa318d806184c0e65929ea1b8b6a88bb9e45f77db2da5a83c6fe550b084dc') version('0.4.2', sha256='21a4ebb549d21f66ee9107adf762eee630e478bc740f232f384ba1a6b1cd3bf4') version('0.4.1', sha256='d7cd3b089240d7f7e13f65f0259487669a378ffae062aee33d4dc6ab0f86f899') version('0.3.0', sha256='34fea6ce7a78e4f38398d3b99585bab11a8171bc8b9a4e461b6d984ed1373739') - depends_on('r@3.5.0:', when='@0.6.2:', type=('build', 'run')) - depends_on('r-ape', when='@0.6.2:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.6.2:') + 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-rsamtools/package.py b/var/spack/repos/builtin/packages/r-rsamtools/package.py index b96f7c1b6e5ceb..bfaa8e2c4d3008 100644 --- a/var/spack/repos/builtin/packages/r-rsamtools/package.py +++ b/var/spack/repos/builtin/packages/r-rsamtools/package.py @@ -8,16 +8,16 @@ class RRsamtools(RPackage): """Binary alignment (BAM), FASTA, variant call (BCF), and tabix file - import + import. This package provides an interface to the 'samtools', 'bcftools', and 'tabix' utilities for manipulating SAM (Sequence Alignment / Map), FASTA, binary variant call (BCF) and compressed indexed tab-delimited (tabix) files.""" - homepage = "https://bioconductor.org/packages/Rsamtools" - git = "https://git.bioconductor.org/packages/Rsamtools.git" + bioc = "Rsamtools" + version('2.10.0', commit='b19738e85a467f9032fc7903be3ba10e655e7061') version('2.6.0', commit='f2aea061517c5a55e314c039251ece9831c7fad2') version('2.2.1', commit='f10084658b4c9744961fcacd79c0ae9a7a40cd30') version('2.0.3', commit='17d254cc026574d20db67474260944bf60befd70') @@ -26,24 +26,25 @@ class RRsamtools(RPackage): version('1.30.0', commit='61b365fe3762e796b3808cec7238944b7f68d7a6') version('1.28.0', commit='dfa5b6abef68175586f21add7927174786412472') + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.10.0:') depends_on('r-genomeinfodb@1.1.3:', type=('build', 'run')) depends_on('r-genomicranges@1.21.6:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.8:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-genomicranges@1.31.8:', type=('build', 'run'), when='@1.32.3:') depends_on('r-biostrings@2.37.1:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.32.3:') depends_on('r-biocgenerics@0.1.3:', type=('build', 'run')) - depends_on('r-biocgenerics@0.25.1:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-biocgenerics@0.25.1:', type=('build', 'run'), when='@1.32.3:') depends_on('r-s4vectors@0.13.8:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@1.32.3:') depends_on('r-iranges@2.3.7:', type=('build', 'run')) - depends_on('r-iranges@2.13.12:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-iranges@2.13.12:', type=('build', 'run'), when='@1.32.3:') depends_on('r-xvector@0.15.1:', type=('build', 'run')) - depends_on('r-xvector@0.19.7:', when='@1.32.3:', type=('build', 'run')) + depends_on('r-xvector@0.19.7:', type=('build', 'run'), when='@1.32.3:') depends_on('r-zlibbioc', type=('build', 'run')) depends_on('r-bitops', type=('build', 'run')) depends_on('r-biocparallel', type=('build', 'run')) - depends_on('r-rhtslib@1.16.3', when='@2.0.3', type=('build', 'run')) - depends_on('r-rhtslib@1.17.7:', when='@2.2.1:', type=('build', 'run')) + depends_on('r-rhtslib@1.16.3', type=('build', 'run'), when='@2.0.3') + depends_on('r-rhtslib@1.17.7:', type=('build', 'run'), when='@2.2.1:') depends_on('gmake', type='build') # this is not a listed dependency but is needed diff --git a/var/spack/repos/builtin/packages/r-rsconnect/package.py b/var/spack/repos/builtin/packages/r-rsconnect/package.py index 3a3bdb535a7c85..71ba58ad45ecdd 100644 --- a/var/spack/repos/builtin/packages/r-rsconnect/package.py +++ b/var/spack/repos/builtin/packages/r-rsconnect/package.py @@ -7,14 +7,13 @@ class RRsconnect(RPackage): - """Deployment Interface for R Markdown Documents and Shiny Applications: + """Deployment Interface for R Markdown Documents and Shiny Applications. Programmatic deployment interface for 'RPubs', 'shinyapps.io', and 'RStudio Connect'. Supported content types include R Markdown documents, Shiny applications, Plumber APIs, plots, and static web content.""" - homepage = "https://github.com/rstudio/rsconnect" - cran = "rsconnect" + cran = "rsconnect" version('0.8.25', sha256='3c055277f745f2ca37a73e2f425249307cea4dc95ecc59fbe05ee8b6cf26d9cf') version('0.8.17', sha256='64767a4d626395b7871375956a9f0455c3d64ff6e779633b0e554921d85da231') @@ -24,7 +23,7 @@ class RRsconnect(RPackage): depends_on('r-digest', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-openssl', type=('build', 'run')) - depends_on('r-packrat@0.6:', when='@0.8.18:', type=('build', 'run')) + 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-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 41c52982256c5c..235421cdc10bf8 100644 --- a/var/spack/repos/builtin/packages/r-rsnns/package.py +++ b/var/spack/repos/builtin/packages/r-rsnns/package.py @@ -8,20 +8,19 @@ class RRsnns(RPackage): - """Neural Networks using the Stuttgart Neural Network Simulator (SNNS) + """Neural Networks using the Stuttgart Neural Network Simulator (SNNS). - The Stuttgart Neural Network Simulator (SNNS) is a library containing - many standard implementations of neural networks. This package wraps the - SNNS functionality to make it available from within R. Using the RSNNS - low-level interface, all of the algorithmic functionality and flexibility - of SNNS can be accessed. Furthermore, the package contains a convenient - high-level interface, so that the most common neural network topologies - and learning algorithms integrate seamlessly into R.""" + The Stuttgart Neural Network Simulator (SNNS) is a library containing many + standard implementations of neural networks. This package wraps the SNNS + functionality to make it available from within R. Using the RSNNS low-level + interface, all of the algorithmic functionality and flexibility of SNNS can + be accessed. Furthermore, the package contains a convenient high-level + interface, so that the most common neural network topologies and learning + algorithms integrate seamlessly into R.""" - homepage = "https://sci2s.ugr.es/dicits/software/RSNNS" - url = "https://cloud.r-project.org/src/contrib/RSNNS_0.4-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RSNNS" + cran = "RSNNS" + version('0.4-14', sha256='7f6262cb2b49b5d5979ccce9ded9cbb2c0b348fd7c9eabc1ea1d31c51a102c20') version('0.4-12', sha256='b18dfeda71573bc92c6888af72da407651bff7571967965fd3008f0d331743b9') version('0.4-11', sha256='87943126e98ae47f366e3025d0f3dc2f5eb0aa2924508fd9ee9a0685d7cb477c') version('0.4-10.1', sha256='38bb3d172390bd01219332ec834744274b87b01f94d23b29a9d818c2bca04071') diff --git a/var/spack/repos/builtin/packages/r-rsolnp/package.py b/var/spack/repos/builtin/packages/r-rsolnp/package.py index 4f9747056d1ad3..7ceef0cead98dd 100644 --- a/var/spack/repos/builtin/packages/r-rsolnp/package.py +++ b/var/spack/repos/builtin/packages/r-rsolnp/package.py @@ -7,12 +7,12 @@ class RRsolnp(RPackage): - """General Non-linear Optimization Using Augmented Lagrange Multiplier + """General Non-Linear Optimization. + + General Non-linear Optimization Using Augmented Lagrange Multiplier Method.""" - homepage = "https://cloud.r-project.org/package=Rsolnp" - url = "https://cloud.r-project.org/src/contrib/Rsolnp_1.16.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Rsolnp" + cran = "Rsolnp" version('1.16', sha256='3142776062beb8e2b45cdbc4fe6e5446b6d33505253d79f2890fe4178d9cf670') diff --git a/var/spack/repos/builtin/packages/r-rspectra/package.py b/var/spack/repos/builtin/packages/r-rspectra/package.py index dfee912101cad8..26d426661267da 100644 --- a/var/spack/repos/builtin/packages/r-rspectra/package.py +++ b/var/spack/repos/builtin/packages/r-rspectra/package.py @@ -7,7 +7,7 @@ class RRspectra(RPackage): - """Solvers for Large-Scale Eigenvalue and SVD Problems + """Solvers for Large-Scale Eigenvalue and SVD Problems. R interface to the 'Spectra' library for large-scale eigenvalue and SVD problems. It is typically used to compute a @@ -20,9 +20,7 @@ class RRspectra(RPackage): on can be dense, sparse, or in the form of an operator defined by the user.""" - homepage = "https://github.com/yixuan/RSpectra" - url = "https://cloud.r-project.org/src/contrib/RSpectra_0.15-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RSpectra" + cran = "RSpectra" 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 34fee5b33d1805..671c2c3c30db95 100644 --- a/var/spack/repos/builtin/packages/r-rsqlite/package.py +++ b/var/spack/repos/builtin/packages/r-rsqlite/package.py @@ -7,16 +7,16 @@ class RRsqlite(RPackage): - """'SQLite' Interface for R + """'SQLite' Interface for R. This package embeds the SQLite database engine in R and provides an interface compliant with the DBI package. The source for the SQLite engine (version 3.8.6) is included.""" - homepage = "https://cloud.r-project.org/package=RSQLite" - url = "https://cloud.r-project.org/src/contrib/RSQLite_2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RSQLite" + cran = "RSQLite" + version('2.2.10', sha256='06aeff33902082ef1ebd5378cd0927df7922aaf377c78acfdd8f34f2888800a8') + version('2.2.9', sha256='4423f1fea179ecd1c09b0b52bfb684983a27de82d5807590b5fc723697d5bb1c') version('2.2.2', sha256='299ceafd4986f60dbca2d705112aa3c29ff68fcbc188d9caaa0493e63a57a873') version('2.1.2', sha256='66dad425d22b09651c510bf84b7fc36375ce537782f02585cf1c6856ae82d9c6') version('2.1.0', sha256='ad6081be2885be5921b1a44b1896e6a8568c8cff40789f43bfaac9f818767642') @@ -26,8 +26,11 @@ class RRsqlite(RPackage): depends_on('r-bit64', type=('build', 'run')) 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-memoise', type=('build', 'run')) depends_on('r-pkgconfig', type=('build', 'run')) depends_on('r-rcpp@0.12.7:', type=('build', 'run')) - depends_on('r-bh', type=('build', 'run')) + depends_on('r-rcpp@1.0.7:', type=('build', 'run'), when='@2.2.9:') depends_on('r-plogr@0.2.0:', type=('build', 'run')) + + depends_on('r-bh', type=('build', 'run'), when='@:2.2.2') diff --git a/var/spack/repos/builtin/packages/r-rstan/package.py b/var/spack/repos/builtin/packages/r-rstan/package.py index eb3c0010068f77..1844b5cf926a4e 100644 --- a/var/spack/repos/builtin/packages/r-rstan/package.py +++ b/var/spack/repos/builtin/packages/r-rstan/package.py @@ -7,11 +7,11 @@ class RRstan(RPackage): - """R Interface to Stan + """R Interface to Stan. - User-facing R functions are provided to parse, compile, test, estimate, - and analyze Stan models by accessing the header-only Stan library provided - by the 'StanHeaders' package. The Stan project develops a probabilistic + User-facing R functions are provided to parse, compile, test, estimate, and + analyze Stan models by accessing the header-only Stan library provided by + the 'StanHeaders' package. The Stan project develops a probabilistic programming language that implements full Bayesian statistical inference via Markov Chain Monte Carlo, rough Bayesian inference via variational approximation, and (optionally penalized) maximum likelihood estimation via @@ -19,10 +19,9 @@ class RRstan(RPackage): quickly and accurately evaluate gradients without burdening the user with the need to derive the partial derivatives.""" - homepage = "https://mc-stan.org/users/interfaces/rstan" - url = "https://cloud.r-project.org/src/contrib/rstan_2.10.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rstan" + cran = "rstan" + version('2.21.3', sha256='76bcbf1cb246a202e5680ea6e91bb4142ce19156e8960a9850f6ea0e206f92b1') version('2.21.2', sha256='e30e04d38a612e2cb3ac69b53eaa19f7ede8b3548bf82f7892a2e9991d46054a') version('2.19.2', sha256='31e4ceb9c327cd62873225097ffa538c2ac4cb0547c52271e52e4c7652d508da') version('2.18.2', sha256='4d75dad95610d5a1d1c89a4ddbaf4326462e4ffe0ad28aed2129f2d9292e70ff') @@ -31,24 +30,25 @@ class RRstan(RPackage): depends_on('r+X', type=('build', 'run')) depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@2.18.1:', type=('build', 'run')) + 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:', when='@2.21.2:', type=('build', 'run')) + depends_on('r-stanheaders@2.21.0:', type=('build', 'run'), when='@2.21.2:') depends_on('r-ggplot2@2.0.0:', type=('build', 'run')) - depends_on('r-ggplot2@3.0.0:', when='@2.21.2:', type=('build', 'run')) + depends_on('r-ggplot2@3.0.0:', type=('build', 'run'), when='@2.21.2:') depends_on('r-inline', type=('build', 'run')) depends_on('r-gridextra@2.0.0:', type=('build', 'run')) depends_on('r-rcpp@0.12.0:', type=('build', 'run')) - depends_on('r-rcppparallel@5.0.1:', when='@2.21.2:', type=('build', 'run')) - depends_on('r-loo@2.0.0:', when='@2.18:', type=('build', 'run')) - depends_on('r-loo@2.3.0:', when='@2.21.2:', type=('build', 'run')) - depends_on('r-pkgbuild', when='@2.18:', type=('build', 'run')) - depends_on('r-withr', when='@2.21.2:', type=('build', 'run')) - depends_on('r-v8', when='@2.21.2:', type=('build', 'run')) + depends_on('r-rcppparallel@5.0.1:', type=('build', 'run'), when='@2.21.2:') + 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-pkgbuild', type=('build', 'run'), when='@2.18:') depends_on('r-rcppeigen@0.3.3.3.0:', type=('build', 'run')) depends_on('r-bh@1.69.0:', type=('build', 'run')) - depends_on('r-bh@1.72.0-2:', when='@2.21.2:', type=('build', 'run')) + depends_on('r-bh@1.72.0-2:', type=('build', 'run'), when='@2.21.2:') depends_on('gmake', type='build') depends_on('pandoc', type='build') + depends_on('r-withr', type=('build', 'run'), when='@2.21.2') + depends_on('r-v8', type=('build', 'run'), when='@2.21.2') + conflicts('%gcc@:4.9', when='@2.18:') diff --git a/var/spack/repos/builtin/packages/r-rstantools/package.py b/var/spack/repos/builtin/packages/r-rstantools/package.py index f0deffe9b275d2..46c672947b003d 100644 --- a/var/spack/repos/builtin/packages/r-rstantools/package.py +++ b/var/spack/repos/builtin/packages/r-rstantools/package.py @@ -7,7 +7,7 @@ class RRstantools(RPackage): - """Tools for Developing R Packages Interfacing with 'Stan' + """Tools for Developing R Packages Interfacing with 'Stan'. Provides various tools for developers of R packages interfacing with 'Stan' , including functions to set up the required package @@ -15,15 +15,13 @@ class RRstantools(RPackage): 'Stan'-based R packages, and vignettes with recommendations for developers.""" - homepage = "https://discourse.mc-stan.org/" - url = "https://cloud.r-project.org/src/contrib/rstantools_1.5.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rstantools" + cran = "rstantools" version('2.1.1', sha256='c95b15de8ec577eeb24bb5206e7b685d882f88b5e6902efda924b7217f463d2d') version('1.5.1', sha256='5cab16c132c12e84bd08e18cd6ef25ba39d67a04ce61015fc4490659c7cfb485') depends_on('r+X', type=('build', 'run')) - depends_on('r-desc', when='@2.1.1:', type=('build', 'run')) - depends_on('r-rcpp@0.12.16:', when='@2.1.1:', type=('build', 'run')) - depends_on('r-rcppparallel@5.0.1:', when='@2.1.1:', type=('build', 'run')) + depends_on('r-desc', type=('build', 'run'), when='@2.1.1:') + depends_on('r-rcpp@0.12.16:', type=('build', 'run'), when='@2.1.1:') + depends_on('r-rcppparallel@5.0.1:', type=('build', 'run'), when='@2.1.1:') depends_on('pandoc', type='build') diff --git a/var/spack/repos/builtin/packages/r-rstatix/package.py b/var/spack/repos/builtin/packages/r-rstatix/package.py index e0c32d2d404ec3..2e77674be8d491 100644 --- a/var/spack/repos/builtin/packages/r-rstatix/package.py +++ b/var/spack/repos/builtin/packages/r-rstatix/package.py @@ -7,7 +7,7 @@ class RRstatix(RPackage): - """Pipe-Friendly Framework for Basic Statistical Tests + """Pipe-Friendly Framework for Basic Statistical Tests. Provides a simple and intuitive pipe-friendly framework, coherent with the 'tidyverse' design philosophy, for performing basic statistical tests, @@ -24,16 +24,16 @@ class RRstatix(RPackage): functions for identifying univariate and multivariate outliers, assessing normality and homogeneity of variances.""" - homepage = "https://rpkgs.datanovia.com/rstatix/" - url = "https://cloud.r-project.org/src/contrib/rstatix_0.6.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rstatix" + cran = "rstatix" + version('0.7.0', sha256='a5ae17dc32cc26fc5dcab9ff0a9747ce3786c9fe091699247ad8b9f823f2600c') version('0.6.0', sha256='ebb28e20c7e28809194a2a027bc83303b17be1e3db32f49325727c9279df9c5b') depends_on('r@3.3.0:', type=('build', 'run')) depends_on('r-tidyr@1.0.0:', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) depends_on('r-broom@0.5.6:', type=('build', 'run')) + depends_on('r-broom@0.7.4:', type=('build', 'run'), when='@0.7.0:') depends_on('r-rlang@0.3.1:', type=('build', 'run')) depends_on('r-tibble@2.1.3:', type=('build', 'run')) depends_on('r-dplyr@0.7.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rstudioapi/package.py b/var/spack/repos/builtin/packages/r-rstudioapi/package.py index eac0986a940791..4edb04668c61b3 100644 --- a/var/spack/repos/builtin/packages/r-rstudioapi/package.py +++ b/var/spack/repos/builtin/packages/r-rstudioapi/package.py @@ -7,14 +7,12 @@ class RRstudioapi(RPackage): - """Safely Access the RStudio API + """Safely Access the RStudio API. Access the RStudio API (if available) and provide informative error messages when it's not.""" - homepage = "https://cloud.r-project.org/package=rstudioapi" - url = "https://cloud.r-project.org/src/contrib/rstudioapi_0.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rstudioapi" + cran = "rstudioapi" version('0.13', sha256='aac35bbdcb4a8e8caba943bc8a2b98120e8940b80cd1020224bb1a26ff776d8b') version('0.11', sha256='13e07fb7e2eba8cf1d885db2721901d676d219a1042d7ef5d166125e4905306b') diff --git a/var/spack/repos/builtin/packages/r-rsvd/package.py b/var/spack/repos/builtin/packages/r-rsvd/package.py index 9364ad37ee3fba..12f6283d052edd 100644 --- a/var/spack/repos/builtin/packages/r-rsvd/package.py +++ b/var/spack/repos/builtin/packages/r-rsvd/package.py @@ -7,7 +7,7 @@ class RRsvd(RPackage): - """Randomized Singular Value Decomposition + """Randomized Singular Value Decomposition. Low-rank matrix decompositions are fundamental tools and widely used for data analysis, dimension reduction, and data compression. Classically, @@ -24,12 +24,12 @@ class RRsvd(RPackage): The methods are discussed in detail by Erichson et al. (2016) .""" - homepage = "https://github.com/erichson/rSVD" - url = "https://cloud.r-project.org/src/contrib/rsvd_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rsvd" + cran = "rsvd" + version('1.0.5', sha256='e40686b869acd4f71fdb1e8e7a6c64cd6792fc9d52a78f9e559a7176ab84e21e') version('1.0.3', sha256='13560e0fc3ae6927c4cc4d5ad816b1f640a2a445b712a5a612ab17ea0ce179bb') version('1.0.2', sha256='c8fe5c18bf7bcfe32604a897e3a7caae39b49e47e93edad9e4d07657fc392a3a') depends_on('r@3.2.2:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.0.5:') depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rtracklayer/package.py b/var/spack/repos/builtin/packages/r-rtracklayer/package.py index b2b1db51cbd579..56280ffc87f443 100644 --- a/var/spack/repos/builtin/packages/r-rtracklayer/package.py +++ b/var/spack/repos/builtin/packages/r-rtracklayer/package.py @@ -7,7 +7,7 @@ class RRtracklayer(RPackage): - """R interface to genome annotation files and the UCSC genome browser + """R interface to genome annotation files and the UCSC genome browser. Extensible framework for interacting with multiple genome browsers (currently UCSC built-in) and manipulating annotation tracks in various @@ -16,9 +16,9 @@ class RRtracklayer(RPackage): browsers, as well as query and modify the browser state, such as the current viewport.""" - homepage = "https://bioconductor.org/packages/rtracklayer" - git = "https://git.bioconductor.org/packages/rtracklayer.git" + bioc = "rtracklayer" + version('1.54.0', commit='04cdd75521a8364e67a49d7352500dd4a3e83c55') version('1.50.0', commit='d2e61f72ff5d5a94c2c487ba108a37f23bfcc1e6') version('1.44.4', commit='aec96e85daf53b5c5eb2e89250d2755352be4de3') version('1.42.2', commit='76702f671faea736807d54aeecfbadcd152d94c5') @@ -28,27 +28,29 @@ class RRtracklayer(RPackage): depends_on('r@3.3:', type=('build', 'run')) depends_on('r-genomicranges@1.21.20:', type=('build', 'run')) - depends_on('r-genomicranges@1.37.2:', when='@1.50.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.37.2:', type=('build', 'run'), when='@1.50.0:') depends_on('r-xml@1.98-0:', type=('build', 'run')) depends_on('r-biocgenerics@0.13.8:', type=('build', 'run')) - depends_on('r-biocgenerics@0.25.1:', when='@1.40.6:', type=('build', 'run')) - depends_on('r-biocgenerics@0.35.3:', when='@1.50.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.25.1:', type=('build', 'run'), when='@1.40.6:') + depends_on('r-biocgenerics@0.35.3:', type=('build', 'run'), when='@1.50.0:') depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@1.40.6:', type=('build', 'run')) - depends_on('r-s4vectors@0.19.22:', when='@1.42.2:', type=('build', 'run')) - depends_on('r-s4vectors@0.23.18:', when='@1.50.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@1.40.6:') + depends_on('r-s4vectors@0.19.22:', type=('build', 'run'), when='@1.42.2:') + depends_on('r-s4vectors@0.23.18:', type=('build', 'run'), when='@1.50.0:') depends_on('r-iranges@2.3.7:', type=('build', 'run')) - depends_on('r-iranges@2.11.12:', when='@1.38.3:', type=('build', 'run')) - depends_on('r-iranges@2.13.13:', when='@1.40.6:', type=('build', 'run')) + depends_on('r-iranges@2.11.12:', type=('build', 'run'), when='@1.38.3:') + depends_on('r-iranges@2.13.13:', type=('build', 'run'), when='@1.40.6:') depends_on('r-xvector@0.9.4:', type=('build', 'run')) - depends_on('r-xvector@0.19.7:', when='@1.40.6:', type=('build', 'run')) + depends_on('r-xvector@0.19.7:', type=('build', 'run'), when='@1.40.6:') depends_on('r-genomeinfodb@1.3.14:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.15.2:', when='@1.40.6:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.15.2:', type=('build', 'run'), when='@1.40.6:') depends_on('r-biostrings@2.43.7:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.40.6:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.40.6:') depends_on('r-zlibbioc', type=('build', 'run')) depends_on('r-rcurl@1.4-2:', type=('build', 'run')) depends_on('r-rsamtools@1.17.8:', type=('build', 'run')) - depends_on('r-rsamtools@1.31.2:', when='@1.40.6:', type=('build', 'run')) + depends_on('r-rsamtools@1.31.2:', type=('build', 'run'), when='@1.40.6:') depends_on('r-genomicalignments@1.5.4:', type=('build', 'run')) - depends_on('r-genomicalignments@1.15.6:', when='@1.40.6:', type=('build', 'run')) + depends_on('r-genomicalignments@1.15.6:', type=('build', 'run'), when='@1.40.6:') + depends_on('r-biocio', type=('build', 'run'), when='@1.54.0:') + depends_on('r-restfulr@0.0.13:', type=('build', 'run'), when='@1.54.0:') diff --git a/var/spack/repos/builtin/packages/r-rtsne/package.py b/var/spack/repos/builtin/packages/r-rtsne/package.py index aca21300217b08..58dc56b5c1cabe 100644 --- a/var/spack/repos/builtin/packages/r-rtsne/package.py +++ b/var/spack/repos/builtin/packages/r-rtsne/package.py @@ -7,12 +7,13 @@ class RRtsne(RPackage): - """An R wrapper around the fast T-distributed Stochastic Neighbor - Embedding implementation.""" + """T-Distributed Stochastic Neighbor Embedding using a Barnes-Hut + Implementation. - homepage = "https://cloud.r-project.org/package=Rtsne" - url = "https://cloud.r-project.org/src/contrib/Rtsne_0.13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Rtsne" + An R wrapper around the fast T-distributed Stochastic Neighbor Embedding + implementation.""" + + cran = "Rtsne" 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 9ceac706470dc5..959902fc4b250c 100644 --- a/var/spack/repos/builtin/packages/r-runit/package.py +++ b/var/spack/repos/builtin/packages/r-runit/package.py @@ -7,11 +7,12 @@ class RRunit(RPackage): - """RUnit: R Unit Test Framework""" + """R Unit Test Framework. - homepage = "https://cloud.r-project.org/package=RUnit" - url = "https://cloud.r-project.org/src/contrib/RUnit_0.4.32.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RUnit/" + R functions implementing a standard Unit Testing framework, with additional + code inspection and report generation tools. """ + + cran = "RUnit" version('0.4.32', sha256='23a393059989000734898685d0d5509ece219879713eb09083f7707f167f81f1') diff --git a/var/spack/repos/builtin/packages/r-runjags/package.py b/var/spack/repos/builtin/packages/r-runjags/package.py index fe322a917f230a..a74c9f8e5a843e 100644 --- a/var/spack/repos/builtin/packages/r-runjags/package.py +++ b/var/spack/repos/builtin/packages/r-runjags/package.py @@ -8,7 +8,7 @@ class RRunjags(RPackage): """Interface Utilities, Model Templates, Parallel Computing Methods and - Additional Distributions for MCMC Models in JAGS: + Additional Distributions for MCMC Models in JAGS. User-friendly interface utilities for MCMC models via Just Another Gibbs Sampler (JAGS), facilitating the use of parallel (or distributed) @@ -20,9 +20,9 @@ class RRunjags(RPackage): additional distributions including the Pareto family of distributions, the DuMouchel prior and the half-Cauchy prior.""" - homepage = "https://github.com/ku-awdc/runjags" - cran = "runjags" + cran = "runjags" + version('2.2.0-3', sha256='1b1fc0b0cfecf9ecdecc3abcba804cdc114b3c5352d5cc801602deeca90db528') version('2.2.0-2', sha256='e5dfeb83d36faf19ebe64429f6db64aedecf3c9a040fd5bf9c0200914bf5039a') depends_on('r@2.14.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ruv/package.py b/var/spack/repos/builtin/packages/r-ruv/package.py index da1f6285b6822d..997addcd23666c 100644 --- a/var/spack/repos/builtin/packages/r-ruv/package.py +++ b/var/spack/repos/builtin/packages/r-ruv/package.py @@ -7,7 +7,7 @@ class RRuv(RPackage): - """Detect and Remove Unwanted Variation using Negative Controls: + """Detect and Remove Unwanted Variation using Negative Controls. Implements the 'RUV' (Remove Unwanted Variation) algorithms. These algorithms attempt to adjust for systematic errors of unknown origin in @@ -22,8 +22,7 @@ class RRuv(RPackage): 'RUV-rinv', 'RUV-I', and RUV-III', along with various supporting algorithms.""" - homepage = "http://www-personal.umich.edu/~johanngb/ruv/" - cran = "ruv" + cran = "ruv" version('0.9.7.1', sha256='a0c54e56ba3d8f6ae178ae4d0e417a79295abf5dcb68bbae26c4b874734d98d8') diff --git a/var/spack/repos/builtin/packages/r-rvcheck/package.py b/var/spack/repos/builtin/packages/r-rvcheck/package.py index f011bf58547a71..201db39016574b 100644 --- a/var/spack/repos/builtin/packages/r-rvcheck/package.py +++ b/var/spack/repos/builtin/packages/r-rvcheck/package.py @@ -7,20 +7,21 @@ class RRvcheck(RPackage): - """R/Package Version Check + """R/Package Version Check. Check latest release version of R and R package (both in 'CRAN', 'Bioconductor' or 'Github').""" - homepage = "https://cloud.r-project.org/package=rvcheck" - url = "https://cloud.r-project.org/src/contrib/rvcheck_0.0.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rvcheck" + cran = "rvcheck" + version('0.2.1', sha256='2ad9efd2af8d103e88bff0a01692f0e32515805f269152f2694eadbfe9947026') version('0.1.8', sha256='4ca5aa48fbf543e6171696ca7e1bff81e3112d06c919e88769b5c38a115b4718') version('0.1.3', sha256='0b59986c1ccc5b89f8aca8fa7cf62d0b875719addb40e08dbda1791cfd334fc4') version('0.0.9', sha256='6e7be7b029d28181a1b57ebd4d25978f3459722ffdb45a3698157a7f943bea92') - depends_on('r@3.3.0:', when='@:0.1.1', type=('build', 'run')) - depends_on('r@3.4.0:', when='@0.1.3:', type=('build', 'run')) - depends_on('r-biocmanager', when='@0.1.8:', type=('build', 'run')) - depends_on('r-rlang', when='@0.1.1:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@0.1.3:') + depends_on('r-biocmanager', type=('build', 'run'), when='@0.1.8:') + depends_on('r-yulab-utils', type=('build', 'run'), when='@0.2.1:') + + depends_on('r-rlang', type=('build', 'run'), when='@0.1.1:0.1.8') diff --git a/var/spack/repos/builtin/packages/r-rversions/package.py b/var/spack/repos/builtin/packages/r-rversions/package.py index a774776f7e460e..255f8741e09774 100644 --- a/var/spack/repos/builtin/packages/r-rversions/package.py +++ b/var/spack/repos/builtin/packages/r-rversions/package.py @@ -7,16 +7,15 @@ class RRversions(RPackage): - """Query 'R' Versions, Including 'r-release' and 'r-oldrel' + """Query 'R' Versions, Including 'r-release' and 'r-oldrel'. Query the main 'R' 'SVN' repository to find the versions 'r-release' and 'r-oldrel' refer to, and also all previous 'R' versions and their release dates.""" - homepage = "https://cloud.r-project.org/package=rversions" - url = "https://cloud.r-project.org/src/contrib/rversions_2.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rversions" + cran = "rversions" + version('2.1.1', sha256='79aaacf5a1258d91ac0ddedf3c8c16a2d10d39010993dcc7b0a2638afee27cb1') version('2.0.2', sha256='3523f4b7393365341d429500b01ba3a224056e89d134635b81dfb4918ba2173e') version('2.0.1', sha256='51ec1f64e7d628e88d716a020d5d521eba71d472e3c9ae7b694428ef6dd786c5') version('2.0.0', sha256='b50c321d9e973284ae6b1d0c89bd46a40f5174de51fb28e3c77cd12ef34f6f56') diff --git a/var/spack/repos/builtin/packages/r-rvest/package.py b/var/spack/repos/builtin/packages/r-rvest/package.py index a1fdd837b42ac8..2e51772980ec86 100644 --- a/var/spack/repos/builtin/packages/r-rvest/package.py +++ b/var/spack/repos/builtin/packages/r-rvest/package.py @@ -7,12 +7,11 @@ class RRvest(RPackage): - """Easily Harvest (Scrape) Web Pages + """Easily Harvest (Scrape) Web Pages. Wrappers around the 'xml2' and 'httr' packages to make it easy to download, then manipulate, HTML and XML.""" - homepage = "https://github.com/hadley/rvest" cran = "rvest" version('1.0.2', sha256='89bb477e0944c80298a52ccf650db8f6377fd7ed3c1bc7034d000f695fdf05a4') @@ -21,14 +20,14 @@ class RRvest(RPackage): version('0.3.3', sha256='b10a87fa2d733f7c0fc567242ef0ab10a1a77d58d51796996cc0fd81381a556f') version('0.3.2', sha256='0d6e8837fb1df79b1c83e7b48d8f1e6245f34a10c4bb6952e7bec7867e4abb12') - depends_on('r@3.0.1:', when='@:0.3.2', type=('build', 'run')) - depends_on('r@3.1:', when='@0.3.3', type=('build', 'run')) - depends_on('r@3.2:', when='@0.3.4:', type=('build', 'run')) + 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-httr@0.5:', type=('build', 'run')) - depends_on('r-lifecycle@1.0.0:', when='@1:', type=('build', 'run')) + depends_on('r-lifecycle@1.0.0:', type=('build', 'run'), when='@1:') depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-rlang@0.4.10:', when='@1:', type=('build', 'run')) + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@1:') depends_on('r-selectr', type=('build', 'run')) - depends_on('r-tibble', when='@1:', 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:', when='@1:', type=('build', 'run')) + depends_on('r-xml2@1.3:', type=('build', 'run'), when='@1:') diff --git a/var/spack/repos/builtin/packages/r-rviennacl/package.py b/var/spack/repos/builtin/packages/r-rviennacl/package.py index 79fba1bf44ab4d..251770efe6e946 100644 --- a/var/spack/repos/builtin/packages/r-rviennacl/package.py +++ b/var/spack/repos/builtin/packages/r-rviennacl/package.py @@ -7,10 +7,16 @@ class RRviennacl(RPackage): - """RViennaCL: 'ViennaCL' C++ Header Files""" + """'ViennaCL' C++ Header Files. - homepage = "https://cloud.r-project.org/package=RViennaCL" - url = "https://cloud.r-project.org/src/contrib/RViennaCL_1.7.1.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/RViennaCL" + 'ViennaCL' is a free open-source linear algebra library for computations on + many-core architectures (GPUs, MIC) and multi-core CPUs. The library is + written in C++ and supports 'CUDA', 'OpenCL', and 'OpenMP' (including + switches at runtime). I have placed these libraries in this package as a + more efficient distribution system for CRAN. The idea is that you can write + a package that depends on the 'ViennaCL' library and yet you do not need to + distribute a copy of this code with your package.""" + + cran = "RViennaCL" version('1.7.1.8', sha256='adcc74537337582153d5b11d281e391e91a7f3afae116aa1b9a034ffd11b0252') diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py index 54c374fab41a5c..c50c4c7c03c7ba 100644 --- a/var/spack/repos/builtin/packages/r-rzmq/package.py +++ b/var/spack/repos/builtin/packages/r-rzmq/package.py @@ -8,19 +8,18 @@ class RRzmq(RPackage): - """R Bindings for 'ZeroMQ' + """R Bindings for 'ZeroMQ'. Interface to the 'ZeroMQ' lightweight messaging kernel (see for more information).""" - homepage = "https://github.com/armstrtw/rzmq" - url = "https://cloud.r-project.org/src/contrib/rzmq_0.7.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/rzmq" + cran = "rzmq" + version('0.9.8', sha256='815a7eb502b1da3a84246b2dfb6594ca3f241a8675783e6bcdbbf9c952ec1c53') version('0.9.7', sha256='5f47b67b75fd4a230780406f7a55a3708ce8c014cff755a809a6bfa1a6925a45') version('0.9.6', sha256='80a3fc6eb6f7851224c4cd5e219ca4db0286551ad429359d4df853ccb9234316') version('0.9.4', sha256='03fbda756d823c11fba359b94a6213c3440e61973331668eaac35779717f73ad') version('0.7.7', sha256='bdbaf77a0e04c5b6d6ce79ab2747848a5044355eed2e2c4d39c4ba16f97dc83d') - depends_on('r@3.1.0:', when='@0.9.0:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@0.9.0:') depends_on('libzmq@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-s2/package.py b/var/spack/repos/builtin/packages/r-s2/package.py index deb46f91c242c7..893af8437aa834 100644 --- a/var/spack/repos/builtin/packages/r-s2/package.py +++ b/var/spack/repos/builtin/packages/r-s2/package.py @@ -7,7 +7,7 @@ class RS2(RPackage): - """Spherical Geometry Operators Using the S2 Geometry Library + """Spherical Geometry Operators Using the S2 Geometry Library. Provides R bindings for Google's s2 library for geometric calculations on the sphere. High-performance constructors and exporters provide high @@ -16,11 +16,13 @@ class RS2(RPackage): geometries based on spatial relationships, and accessors extract information about geometries.""" - homepage = "https://r-spatial.github.io/s2/" - cran = "s2" + cran = "s2" + version('1.0.7', sha256='2010c1c6ae29938ec9cd153a8b2c06a333ea4d647932369b2fc7d0c68d6d9e3f') version('1.0.4', sha256='3c274ebae33aa5473f94afb3066c6f388aced17ff3b5f6add9edcc9af22b985e') depends_on('r@3.0.0:', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) depends_on('r-wk', type=('build', 'run')) + depends_on('r-wk@0.5.0:', type=('build', 'run'), when='@1.0.7:') + depends_on('openssl@1.0.1:', when='@1.0.7:') diff --git a/var/spack/repos/builtin/packages/r-s4vectors/package.py b/var/spack/repos/builtin/packages/r-s4vectors/package.py index 58053088a5d255..ca6cec34eee58e 100644 --- a/var/spack/repos/builtin/packages/r-s4vectors/package.py +++ b/var/spack/repos/builtin/packages/r-s4vectors/package.py @@ -7,7 +7,7 @@ class RS4vectors(RPackage): - """Foundation of vector-like and list-like containers in Bioconductor + """Foundation of vector-like and list-like containers in Bioconductor. The S4Vectors package defines the Vector and List virtual classes and a set of generic functions that extend the semantic of ordinary vectors @@ -18,9 +18,9 @@ class RS4vectors(RPackage): more are implemented in the IRanges package and in other Bioconductor infrastructure packages).""" - homepage = "https://bioconductor.org/packages/S4Vectors" - git = "https://git.bioconductor.org/packages/S4Vectors.git" + bioc = "S4Vectors" + version('0.32.3', commit='ad90e78fd3a4059cfcf2846498fb0748b4394e1a') version('0.28.1', commit='994cb7ef830e76f8b43169cc72b553869fafb2ed') version('0.26.1', commit='935769c') version('0.22.1', commit='d25e517b48ca4184a4c2ee1f8223c148a55a8b8a') @@ -30,8 +30,9 @@ class RS4vectors(RPackage): version('0.14.7', commit='40af17fe0b8e93b6a72fc787540d2961773b8e23') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@0.28.1:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@0.28.1:') depends_on('r-biocgenerics@0.21.1:', type=('build', 'run')) - depends_on('r-biocgenerics@0.23.3:', when='@0.16.0:0.22.1', type=('build', 'run')) - depends_on('r-biocgenerics@0.31.1:', when='@0.26.1:', type=('build', 'run')) - depends_on('r-biocgenerics@0.36.0:', when='@0.28.1:', type=('build', 'run')) + depends_on('r-biocgenerics@0.23.3:', type=('build', 'run'), when='@0.16.0:0.22.1') + depends_on('r-biocgenerics@0.31.1:', type=('build', 'run'), when='@0.26.1:') + depends_on('r-biocgenerics@0.36.0:', type=('build', 'run'), when='@0.28.1:') + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@0.32.3:') diff --git a/var/spack/repos/builtin/packages/r-samr/package.py b/var/spack/repos/builtin/packages/r-samr/package.py index 9013f672f3a773..f62c57c78b5bfd 100644 --- a/var/spack/repos/builtin/packages/r-samr/package.py +++ b/var/spack/repos/builtin/packages/r-samr/package.py @@ -7,17 +7,19 @@ class RSamr(RPackage): - """Significance Analysis of Microarrays.""" + """SAM: Significance Analysis of Microarrays. + + Significance Analysis of Microarrays for differential expression analysis, + RNAseq data and related problems.""" + + cran = "samr" - homepage = "https://cloud.r-project.org/package=samr" - url = "https://cloud.r-project.org/src/contrib/samr_2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/samr" version('3.0', sha256='25f88ac002c2adce8881a562241bc12d683810a05defb553e8e3d4878f037506') version('2.0', sha256='090b5becd91d60f4bb8269df5c9bc19a03c09917d327b28e75b0ee7b80624e67') depends_on('r-impute', type=('build', 'run')) depends_on('r-matrixstats', type=('build', 'run')) - depends_on('r-shiny', when='@3.0:', type=('build', 'run')) - depends_on('r-shinyfiles', when='@3.0:', type=('build', 'run')) - depends_on('r-openxlsx', when='@3.0:', type=('build', 'run')) - depends_on('r-gsa', when='@3.0:', type=('build', 'run')) + depends_on('r-shiny', type=('build', 'run'), when='@3.0:') + depends_on('r-shinyfiles', type=('build', 'run'), when='@3.0:') + depends_on('r-openxlsx', type=('build', 'run'), when='@3.0:') + depends_on('r-gsa', type=('build', 'run'), when='@3.0:') diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index 667f9dcf50c1c7..7dc5437fe38b64 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -7,7 +7,7 @@ class RSandwich(RPackage): - """Robust Covariance Matrix Estimators + """Robust Covariance Matrix Estimators. Object-oriented software for model-robust covariance matrix estimators. Starting out from the basic robust Eicker-Huber-White sandwich covariance @@ -23,15 +23,14 @@ class RSandwich(RPackage): , Zeileis (2004) and Zeileis (2006) .""" - homepage = "https://cloud.r-project.org/package=sandwich" - url = "https://cloud.r-project.org/src/contrib/sandwich_2.3-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sandwich" + cran = "sandwich" + version('3.0-1', sha256='f6584b7084f3223bbc0c4722f53280496be73849747819b0cb4e8f3910284a89') version('3.0-0', sha256='828fe53b5e09db5015efd529b2db4dcd40251bce110fea7b0b219fa9ac36d529') version('2.5-1', sha256='dbef6f4d12b83e166f9a2508b7c732b04493641685d6758d29f3609e564166d6') version('2.5-0', sha256='6cc144af20739eb23e5539010d3833d7c7fc53cbca2addb583ab933167c11399') version('2.3-4', sha256='2052f7e3d19a05c372f422c5480f1058a4107e420cd038a9bd7240c4f0746d4d') depends_on('r@2.10.0:', type=('build', 'run')) - depends_on('r@3.0.0:', when='@3.0-0:', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run'), when='@3.0-0:') depends_on('r-zoo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sass/package.py b/var/spack/repos/builtin/packages/r-sass/package.py new file mode 100644 index 00000000000000..86d61391718bd9 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-sass/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2022 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 import * + + +class RSass(RPackage): + """Syntactically Awesome Style Sheets ('Sass'). + + An 'SCSS' compiler, powered by the 'LibSass' library. With this, R + developers can use variables, inheritance, and functions to generate + dynamic style sheets. The package uses the 'Sass CSS' extension language, + which is stable, powerful, and CSS compatible.""" + + cran = "sass" + + version('0.4.0', sha256='7d06ca15239142a49e88bb3be494515abdd8c75f00f3f1b0ee7bccb55019bc2b') + + depends_on('r-fs', type=('build', 'run')) + 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')) + depends_on('r-rappdirs', type=('build', 'run')) + depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-satellite/package.py b/var/spack/repos/builtin/packages/r-satellite/package.py index 24fd26e258db93..86345fa6e1695d 100644 --- a/var/spack/repos/builtin/packages/r-satellite/package.py +++ b/var/spack/repos/builtin/packages/r-satellite/package.py @@ -7,7 +7,7 @@ class RSatellite(RPackage): - """Handling and Manipulating Remote Sensing Data + """Handling and Manipulating Remote Sensing Data. Herein, we provide a broad variety of functions which are useful for handling, manipulating, and visualizing satellite-based remote sensing @@ -21,11 +21,13 @@ class RSatellite(RPackage): (OLI/TIRS Combined), and additional compatibility is ensured for the Landsat Global Land Survey data set.""" - cran = "satellite" + cran = "satellite" + version('1.0.4', sha256='99e79577a70489930c32da46ac26453af53e21c2d3a99f51fbf1f55f2d80dc7c') version('1.0.2', sha256='6447476bd31216e5abe504221e465677954d07419b4174ab4f4e4f7a197969c5') depends_on('r@2.10:', type=('build', 'run')) depends_on('r-raster', type=('build', 'run')) depends_on('r-plyr', type=('build', 'run')) depends_on('r-rcpp@0.10.3:', type=('build', 'run')) + depends_on('r-terra', type=('build', 'run'), when='@1.0.4:') diff --git a/var/spack/repos/builtin/packages/r-scaledmatrix/package.py b/var/spack/repos/builtin/packages/r-scaledmatrix/package.py new file mode 100644 index 00000000000000..0d92fadf2d9c4a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-scaledmatrix/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2022 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 import * + + +class RScaledmatrix(RPackage): + """Creating a DelayedMatrix of Scaled and Centered Values. + + Provides delayed computation of a matrix of scaled and centered values. + The result is equivalent to using the scale() function but avoids explicit + realization of a dense matrix during block processing. This permits greater + efficiency in common operations, most notably matrix multiplication.""" + + bioc = "ScaledMatrix" + + version('1.2.0', commit='d0573e14ca537b40ade7dd1c9cf0cadae60d4349') + + depends_on('r-matrix', type=('build', 'run')) + depends_on('r-s4vectors', type=('build', 'run')) + depends_on('r-delayedarray', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index b09aa92b96375b..b91b8800518d01 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -7,14 +7,12 @@ class RScales(RPackage): - """Scale Functions for Visualization + """Scale Functions for Visualization. Graphical scales map data to aesthetics, and provide methods for automatically determining breaks and labels for axes and legends.""" - homepage = "https://github.com/hadley/scales" - url = "https://cloud.r-project.org/src/contrib/scales_0.5.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/scales" + cran = "scales" version('1.1.1', sha256='40b2b66522f1f314a20fd09426011b0cdc9d16b23ee2e765fe1930292dd03705') version('1.0.0', sha256='0c1f4a14edd336a404da34a3cc71a6a9d0ca2040ba19360c41a79f36e06ca30c') @@ -23,15 +21,16 @@ class RScales(RPackage): version('0.4.0', sha256='851ef6136339b361b3f843fb73ea89f9112279b9cc126bdb38acde8d24c1c6a7') depends_on('r@2.13:', type=('build', 'run')) - depends_on('r@3.1:', when='@1.0.0:', type=('build', 'run')) - depends_on('r@3.2:', when='@1.1.1:', type=('build', 'run')) - depends_on('r-farver@2.0.3:', when='@1.1.1:', 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-farver@2.0.3:', type=('build', 'run'), when='@1.1.1:') depends_on('r-labeling', type=('build', 'run')) - depends_on('r-lifecycle', when='@1.1.1:', type=('build', 'run')) + depends_on('r-lifecycle', type=('build', 'run'), when='@1.1.1:') depends_on('r-munsell@0.5:', type=('build', 'run')) depends_on('r-r6', type=('build', 'run')) depends_on('r-rcolorbrewer', type=('build', 'run')) depends_on('r-viridislite', type=('build', 'run')) - depends_on('r-dichromat', when='@:0.5.0', type=('build', 'run')) - depends_on('r-plyr', when='@:0.5.0', type=('build', 'run')) - depends_on('r-rcpp', when='@:1.0.0', type=('build', 'run')) + + depends_on('r-dichromat', type=('build', 'run'), when='@:0.5.0') + depends_on('r-plyr', type=('build', 'run'), when='@:0.5.0') + depends_on('r-rcpp', type=('build', 'run'), when='@:1.0.0') diff --git a/var/spack/repos/builtin/packages/r-scater/package.py b/var/spack/repos/builtin/packages/r-scater/package.py index cd1d966935e393..ac914eee6712a9 100644 --- a/var/spack/repos/builtin/packages/r-scater/package.py +++ b/var/spack/repos/builtin/packages/r-scater/package.py @@ -7,15 +7,15 @@ class RScater(RPackage): - """Single-Cell Analysis Toolkit for Gene Expression Data in R + """Single-Cell Analysis Toolkit for Gene Expression Data in R. A collection of tools for doing various analyses of single-cell RNA-seq gene expression data, with a focus on quality control and visualization.""" - homepage = "https://bioconductor.org/packages/scater" - git = "https://git.bioconductor.org/packages/scater.git" + bioc = "scater" + version('1.22.0', commit='ea2c95c53adb8c6fab558c1cb869e2eab36aa9f8') version('1.18.3', commit='a94e7f413bf0f5f527b41b0b34e7a8e5c947ae37') version('1.12.2', commit='1518dc27a87c79181c34107d639e95fe55e55092') version('1.10.1', commit='2e6694af2929092f263c2b0830d48b3f9632e70c') @@ -23,41 +23,45 @@ class RScater(RPackage): version('1.6.3', commit='964effb4e883102d7c8cae627dbac4ba5d216a75') version('1.4.0', commit='90a2eab66ff82ba6dd7fbb33e41cd0ded20fa218') - depends_on('r@3.3:', when='@1.4.0', type=('build', 'run')) - depends_on('r@3.4:', when='@1.6.3', type=('build', 'run')) - depends_on('r@3.5:', when='@1.8.4', type=('build', 'run')) - depends_on('r@3.6:', when='@1.12.2', type=('build', 'run')) - depends_on('r-singlecellexperiment', when='@1.6.3:', type=('build', 'run')) + depends_on('r@3.3:', type=('build', 'run'), when='@1.4.0') + depends_on('r@3.4:', type=('build', 'run'), when='@1.6.3') + depends_on('r@3.5:', type=('build', 'run'), when='@1.8.4') + depends_on('r@3.6:', type=('build', 'run'), when='@1.12.2') + depends_on('r-singlecellexperiment', type=('build', 'run'), when='@1.6.3:') + depends_on('r-scuttle', type=('build', 'run'), when='@1.18.3:') depends_on('r-ggplot2', type=('build', 'run')) - depends_on('r-gridextra', when='@1.18.3:', type=('build', 'run')) + depends_on('r-gridextra', type=('build', 'run'), when='@1.18.3:') depends_on('r-matrix', type=('build', 'run')) depends_on('r-biocgenerics', type=('build', 'run')) - depends_on('r-s4vectors', when='@1.6.3:', type=('build', 'run')) - depends_on('r-summarizedexperiment', when='@1.6.3:', type=('build', 'run')) - depends_on('r-delayedarray', when='@1.8.4:', type=('build', 'run')) - depends_on('r-delayedmatrixstats', when='@1.8.4:', type=('build', 'run')) - depends_on('r-biocneighbors', when='@1.12.2:', type=('build', 'run')) - depends_on('r-biocsingular', when='@1.12.2:', type=('build', 'run')) - depends_on('r-biocparallel', when='@1.10.1:', type=('build', 'run')) - depends_on('r-scuttle', when='@1.18.3:', type=('build', 'run')) - depends_on('r-rlang', when='@1.18.3:', type=('build', 'run')) + depends_on('r-s4vectors', type=('build', 'run'), when='@1.6.3:') + depends_on('r-summarizedexperiment', type=('build', 'run'), when='@1.6.3:') + depends_on('r-delayedarray', type=('build', 'run'), when='@1.8.4:') + depends_on('r-delayedmatrixstats', type=('build', 'run'), when='@1.8.4:') + depends_on('r-beachmat', type=('build', 'run'), when='@1.6.3:1.12.2,1.22.0:') + depends_on('r-biocneighbors', type=('build', 'run'), when='@1.12.2:') + depends_on('r-biocsingular', type=('build', 'run'), when='@1.12.2:') + depends_on('r-biocparallel', type=('build', 'run'), when='@1.10.1:') + depends_on('r-rlang', type=('build', 'run'), when='@1.18.3:') depends_on('r-ggbeeswarm', type=('build', 'run')) depends_on('r-viridis', type=('build', 'run')) - depends_on('r-biobase', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-biomart', when='@1.4.0:1.6.3', type=('build', 'run')) - depends_on('r-data-table', when='@1.4.0:1.6.3', type=('build', 'run')) - depends_on('r-dplyr', when='@1.4.0:1.12.2', type=('build', 'run')) - depends_on('r-edger', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-limma', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-matrixstats', when='@1.4.0:1.6.3', type=('build', 'run')) - depends_on('r-plyr', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-reshape2', when='@1.4.0:1.10.1', type=('build', 'run')) - depends_on('r-rhdf5', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-rjson', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-shiny', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-shinydashboard', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-tximport', when='@1.4.0:1.8.4', type=('build', 'run')) - depends_on('r-rcpp', when='@1.6.3:1.12.2', type=('build', 'run')) - depends_on('r-rcpp@0.12.14:', when='@1.8.4:1.12.2', type=('build', 'run')) - depends_on('r-rhdf5lib', when='@1.6.3:1.10.1', type=('build', 'run')) - depends_on('r-beachmat', when='@1.6.3:1.12.2', type=('build', 'run')) + depends_on('r-rtsne', type=('build', 'run'), when='@1.22.0:') + depends_on('r-rcolorbrewer', type=('build', 'run'), when='@1.22.0:') + depends_on('r-ggrepel', type=('build', 'run'), when='@1.22.0:') + + depends_on('r-biobase', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-biomart', type=('build', 'run'), when='@1.4.0:1.6.3') + depends_on('r-data-table', type=('build', 'run'), when='@1.4.0:1.6.3') + depends_on('r-dplyr', type=('build', 'run'), when='@1.4.0:1.12.2') + depends_on('r-edger', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-limma', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-matrixstats', type=('build', 'run'), when='@1.4.0:1.6.3') + depends_on('r-plyr', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-reshape2', type=('build', 'run'), when='@1.4.0:1.10.1') + depends_on('r-rhdf5', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-rjson', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-shiny', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-shinydashboard', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-tximport', type=('build', 'run'), when='@1.4.0:1.8.4') + depends_on('r-rcpp', type=('build', 'run'), when='@1.6.3:1.12.2') + depends_on('r-rcpp@0.12.14:', type=('build', 'run'), when='@1.8.4:1.12.2') + depends_on('r-rhdf5lib', type=('build', 'run'), when='@1.6.3:1.10.1') diff --git a/var/spack/repos/builtin/packages/r-scattermore/package.py b/var/spack/repos/builtin/packages/r-scattermore/package.py index 4c0f67adb404be..7b7b5078a6b04b 100644 --- a/var/spack/repos/builtin/packages/r-scattermore/package.py +++ b/var/spack/repos/builtin/packages/r-scattermore/package.py @@ -7,14 +7,12 @@ class RScattermore(RPackage): - """Scatterplots with More Points + """Scatterplots with More Points. C-based conversion of large scatterplot data to rasters. Speeds up plotting of data with millions of points.""" - homepage = "https://github.com/exaexa/scattermore" - url = "https://cloud.r-project.org/src/contrib/scattermore_0.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/scattermore" + cran = "scattermore" 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 84bf09eb9de595..3a7a8e6e280fc7 100644 --- a/var/spack/repos/builtin/packages/r-scatterpie/package.py +++ b/var/spack/repos/builtin/packages/r-scatterpie/package.py @@ -7,19 +7,20 @@ class RScatterpie(RPackage): - """Scatter Pie Plot + """Scatter Pie Plot. Creates scatterpie plots, especially useful for plotting pies on a map.""" - homepage = "https://cloud.r-project.org/package=scatterpie" - url = "https://cloud.r-project.org/src/contrib/scatterpie_0.1.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/scatterpie" + cran = "scatterpie" + version('0.1.7', sha256='3f7807519cfe135066ca79c8d8a09b59da9aa6d8aaee5e9aff40cca3d0bebade') version('0.1.5', sha256='e13237b7effc302acafc1c9b520b4904e55875f4a3b804f653eed2940ca08840') depends_on('r@3.4.0:', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-ggforce', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) - depends_on('r-rvcheck', type=('build', 'run')) + depends_on('r-ggfun', type=('build', 'run'), when='@0.1.7:') depends_on('r-tidyr', type=('build', 'run')) + + depends_on('r-rvcheck', type=('build', 'run'), when='@:0.1.5') diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py index 55d869125933b2..dea4ac6261e96f 100644 --- a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -7,11 +7,11 @@ class RScatterplot3d(RPackage): - """scatterplot3d: 3D Scatter Plot""" + """3D Scatter Plot. - homepage = "https://cloud.r-project.org/package=scatterplot3d" - url = "https://cloud.r-project.org/src/contrib/scatterplot3d_0.3-40.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/scatterplot3d" + Plots a three dimensional (3D) point cloud.""" + + cran = "scatterplot3d" version('0.3-41', sha256='4c8326b70a3b2d37126ca806771d71e5e9fe1201cfbe5b0d5a0a83c3d2c75d94') version('0.3-40', sha256='8249118aa29199017a6686d8245fed5343dabcf049b1588141a7cf83245b6a29') diff --git a/var/spack/repos/builtin/packages/r-scrime/package.py b/var/spack/repos/builtin/packages/r-scrime/package.py index 17c4bf07584895..1afaff714b4e47 100644 --- a/var/spack/repos/builtin/packages/r-scrime/package.py +++ b/var/spack/repos/builtin/packages/r-scrime/package.py @@ -7,11 +7,13 @@ class RScrime(RPackage): - """scrime: Analysis of High-Dimensional Categorical Data Such as SNP - Data""" + """Analysis of High-Dimensional Categorical Data Such as SNP Data. - homepage = "https://cloud.r-project.org/package=scrime" - url = "https://cloud.r-project.org/src/contrib/scrime_1.3.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/scrime" + Tools for the analysis of high-dimensional data developed/implemented at + the group "Statistical Complexity Reduction In Molecular Epidemiology" + (SCRIME). Main focus is on SNP data. But most of the functions can also be + applied to other types of categorical data.""" + + cran = "scrime" version('1.3.5', sha256='5d97d3e57d8eb30709340fe572746029fd139456d7a955421c4e3aa75d825578') diff --git a/var/spack/repos/builtin/packages/r-sctransform/package.py b/var/spack/repos/builtin/packages/r-sctransform/package.py index d612d75e2f7e04..184eacf740622e 100644 --- a/var/spack/repos/builtin/packages/r-sctransform/package.py +++ b/var/spack/repos/builtin/packages/r-sctransform/package.py @@ -7,7 +7,7 @@ class RSctransform(RPackage): - """Variance Stabilizing Transformations for Single Cell UMI Data + """Variance Stabilizing Transformations for Single Cell UMI Data. A normalization method for single-cell UMI count data using a variance stabilizing transformation. The transformation is based on a negative @@ -16,23 +16,27 @@ class RSctransform(RPackage): correction, and data correction. See Hafemeister and Satija 2019 for more details.""" - homepage = "https://github.com/ChristophH/sctransform" - url = "https://cloud.r-project.org/src/contrib/sctransform_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sctransform" + cran = "sctransform" + version('0.3.3', sha256='83af125c40f211e1ddae5098f88766aea1453c02ae98486081f3efadb3620b2b') version('0.3.2', sha256='5dbb0a045e514c19f51bbe11c2dba0b72dca1942d6eb044c36b0538b443475dc') version('0.2.0', sha256='d7f4c7958693823454f1426b23b0e1e9c207ad61a7a228602a1885a1318eb3e4') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.1.0:', when='@0.3.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-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')) depends_on('r-matrix', type=('build', 'run')) depends_on('r-future-apply', type=('build', 'run')) depends_on('r-future', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@0.3.3:') depends_on('r-gridextra', type=('build', 'run')) - depends_on('r-matrixstats', when='@0.3.2:', type=('build', 'run')) - depends_on('r-rcpparmadillo', when='@0.3.2:', type=('build', 'run')) + depends_on('r-matrixstats', type=('build', 'run'), when='@0.3.2:') + depends_on('r-rcpparmadillo', type=('build', 'run'), when='@0.3.2:') depends_on('r-rcpp@0.11.0:', type=('build', 'run')) - depends_on('r-rcppeigen', when='@:0.2.0', type=('build', 'run')) + + depends_on('r-rcppeigen', type=('build', 'run'), when='@:0.2.0') diff --git a/var/spack/repos/builtin/packages/r-scuttle/package.py b/var/spack/repos/builtin/packages/r-scuttle/package.py index 602b92d402a4a3..9cf8a474903e8b 100644 --- a/var/spack/repos/builtin/packages/r-scuttle/package.py +++ b/var/spack/repos/builtin/packages/r-scuttle/package.py @@ -7,16 +7,16 @@ class RScuttle(RPackage): - """Single-Cell RNA-Seq Analysis Utilities + """Single-Cell RNA-Seq Analysis Utilities. Provides basic utility functions for performing single-cell analyses, focusing on simple normalization, quality control and data transformations. Also provides some helper functions to assist development of other packages.""" - homepage = "https://bioconductor.org/packages/scuttle/" - git = "https://git.bioconductor.org/packages/scuttle" + bioc = "scuttle" + version('1.4.0', commit='b335263dd56bb859b5dd3ea27ee00dffa0215313') version('1.0.4', commit='a827e2759d80e6c3510e2f8fd4bd680274206d9f') depends_on('r-singlecellexperiment', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sdmtools/package.py b/var/spack/repos/builtin/packages/r-sdmtools/package.py index 9be23f06baa206..a61f467c3c8e0d 100644 --- a/var/spack/repos/builtin/packages/r-sdmtools/package.py +++ b/var/spack/repos/builtin/packages/r-sdmtools/package.py @@ -8,7 +8,7 @@ class RSdmtools(RPackage): """Species Distribution Modelling Tools: Tools for processing data - associated with species distribution modelling exercises + associated with species distribution modelling exercises. This packages provides a set of tools for post processing the outcomes of species distribution modeling exercises. It includes novel methods for @@ -19,9 +19,7 @@ class RSdmtools(RPackage): Australian Research Council & ARC Research Network for Earth System Science.""" - homepage = "https://cloud.r-project.org/package=SDMTools" - url = "https://cloud.r-project.org/src/contrib/SDMTools_1.1-221.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SDMTools" + cran = "SDMTools" # This package was removed from CRAN on 2020-01-12 # The spack recipe contains the latest version available from the archives diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py index 037100b7eb7b2c..bb62bae35ea14d 100644 --- a/var/spack/repos/builtin/packages/r-segmented/package.py +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -7,7 +7,7 @@ class RSegmented(RPackage): - """Regression Models with Break-Points / Change-Points Estimation + """Regression Models with Break-Points / Change-Points Estimation. Given a regression model, segmented 'updates' it by adding one or more segmented (i.e., piece-wise linear) relationships. Several variables with @@ -18,12 +18,14 @@ class RSegmented(RPackage): ), and interval estimation for the breakpoint is discussed in Muggeo (2017, ).""" - homepage = "https://cloud.r-project.org/package=segmented" - url = "https://cloud.r-project.org/src/contrib/segmented_0.5-1.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/segmented" + cran = "segmented" + version('1.4-0', sha256='306940d3fe38588d5f52a52a217b560620b9ec9f338b32f604dfd78ffd43c276') + version('1.3-4', sha256='8276bfbb3e5c1d7a9a61098f72ac9b2b0f52c89ae9f9b715f76b22303cc3902d') version('1.3-1', sha256='b9b6e82bf72f108c69cb8fa01bd02fb99946c73ca3c8c2f8ae0abb1f460c143d') version('1.0-0', sha256='eeadc89b4bb4744bbd1e4e6c3b6536ff96fc7ee09016228dfdc0a8ebdc74fac5') version('0.5-4.0', sha256='7ff63a19915cbd1e190d3a4875892b4c7bd97890b0dc2909126348a19aec4071') version('0.5-2.2', sha256='3aa7136370dd77911ba8e061b5215560d120bc71f355eeadc0856389dfecb2f1') version('0.5-1.4', sha256='b1dc5f79ccc076c2943b15fe4f339368afa241797b7e80c91b62132cfa66809c') + + depends_on('r-mass', type=('build', 'run'), when='@1.4-0:') diff --git a/var/spack/repos/builtin/packages/r-selectr/package.py b/var/spack/repos/builtin/packages/r-selectr/package.py index 873f2c45af6121..aab2f9311c8656 100644 --- a/var/spack/repos/builtin/packages/r-selectr/package.py +++ b/var/spack/repos/builtin/packages/r-selectr/package.py @@ -7,7 +7,7 @@ class RSelectr(RPackage): - """Translate CSS Selectors to XPath Expressions + """Translate CSS Selectors to XPath Expressions. Translates a CSS3 selector into an equivalent XPath expression. This allows us to use CSS selectors when working with the XML package as it can only @@ -15,9 +15,7 @@ class RSelectr(RPackage): for using CSS selectors on XML nodes. This package is a port of the Python package 'cssselect' ().""" - homepage = "https://sjp.co.nz/projects/selectr" - url = "https://cloud.r-project.org/src/contrib/selectr_0.3-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/selectr" + cran = "selectr" version('0.4-2', sha256='5588aed05f3f5ee63c0d29953ef53da5dac7afccfdd04b7b22ef24e1e3b0c127') version('0.4-1', sha256='8bd42f167629344e485e586f9b05fed342746132489079084d82133d7b3ee2ca') @@ -26,4 +24,4 @@ class RSelectr(RPackage): depends_on('r@3.0:', type=('build', 'run')) depends_on('r-stringr', type=('build', 'run')) - depends_on('r-r6', when='@0.4-0:', type=('build', 'run')) + depends_on('r-r6', type=('build', 'run'), when='@0.4-0:') diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py index 8fbf6488e8c1ff..45588c34b1e5d7 100644 --- a/var/spack/repos/builtin/packages/r-seqinr/package.py +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -7,17 +7,16 @@ class RSeqinr(RPackage): - """Biological Sequences Retrieval and Analysis + """Biological Sequences Retrieval and Analysis. Exploratory data analysis and data visualization for biological sequence (DNA and protein) data. Seqinr includes utilities for sequence data management under the ACNUC system described in Gouy, M. et al. (1984) Nucleic Acids Res. 12:121-127 .""" - homepage = "https://seqinr.r-forge.r-project.org" - url = "https://cloud.r-project.org/src/contrib/seqinr_3.3-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/seqinr" + cran = "seqinr" + version('4.2-8', sha256='584b34e9dec0320cef02096eb356a0f6115bbd24356cf62e67356963e9d5e9f7') version('4.2-5', sha256='de9860759c23af2ec2f2ef03b5dd1cea72c804438eadd369b7d9269bdf8d32fc') version('3.4-5', sha256='162a347495fd52cbb62e8187a4692e7c50b9fa62123c5ef98f2744c98a05fb9f') version('3.3-6', sha256='42a3ae01331db744d67cc9c5432ce9ae389bed465af826687b9c10216ac7a08d') diff --git a/var/spack/repos/builtin/packages/r-seqlogo/package.py b/var/spack/repos/builtin/packages/r-seqlogo/package.py index b092d9e958685c..4b6e04664ffef4 100644 --- a/var/spack/repos/builtin/packages/r-seqlogo/package.py +++ b/var/spack/repos/builtin/packages/r-seqlogo/package.py @@ -7,15 +7,15 @@ class RSeqlogo(RPackage): - """Sequence logos for DNA sequence alignments + """Sequence logos for DNA sequence alignments. seqLogo takes the position weight matrix of a DNA sequence motif and plots the corresponding sequence logo as introduced by Schneider and Stephens (1990).""" - homepage = "https://bioconductor.org/packages/seqLogo" - git = "https://git.bioconductor.org/packages/seqLogo.git" + bioc = "seqLogo" + version('1.60.0', commit='4115c8e1d01accb8c8cc1cf96f23359466827e16') version('1.56.0', commit='169260c43fc58dc75becb3b7842cac3d0038a8d5') version('1.50.0', commit='57986221c90c3920f9829756c4b3ee566dc1e14d') version('1.48.0', commit='dde85582e7fd0c08c5b8bc73f9aed8f23b727d9d') diff --git a/var/spack/repos/builtin/packages/r-servr/package.py b/var/spack/repos/builtin/packages/r-servr/package.py index cd1b73ce28abd4..b6b088dde3a071 100644 --- a/var/spack/repos/builtin/packages/r-servr/package.py +++ b/var/spack/repos/builtin/packages/r-servr/package.py @@ -7,16 +7,15 @@ class RServr(RPackage): - """A Simple HTTP Server to Serve Static Files or Dynamic Documents + """A Simple HTTP Server to Serve Static Files or Dynamic Documents. Start an HTTP server in R to serve static files, or dynamic documents that can be converted to HTML files (e.g., R Markdown) under a given directory.""" - homepage = "https://github.com/yihui/servr" - url = "https://cloud.r-project.org/src/contrib/servr_0.21.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/servr" + cran = "servr" + version('0.24', sha256='d94e1d31802ce6bbab7a5838ff94cbca8cd998237d834ff25fedf7514f41a087') version('0.21', sha256='3fc0da063dd04b796a49ce62bf8e69d5854679520da90cc92ee3fc0a0b2ad389') depends_on('r@3.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sessioninfo/package.py b/var/spack/repos/builtin/packages/r-sessioninfo/package.py index aa6fa53b3b0888..9b599679b95d07 100644 --- a/var/spack/repos/builtin/packages/r-sessioninfo/package.py +++ b/var/spack/repos/builtin/packages/r-sessioninfo/package.py @@ -7,15 +7,19 @@ class RSessioninfo(RPackage): - """Query and print information about the current R session. It is similar - to 'utils::sessionInfo()', but includes more information about packages, - and where they were installed from.""" + """R Session Information. - homepage = "https://github.com/r-lib/sessioninfo#readme" - url = "https://cloud.r-project.org/src/contrib/sessioninfo_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sessioninfo" + Query and print information about the current R session. It is similar to + 'utils::sessionInfo()', but includes more information about packages, and + where they were installed from.""" + cran = "sessioninfo" + + version('1.2.2', sha256='f56283857c53ac8691e3747ed48fe03e893d8ff348235bff7364658bcfb0c7cb') version('1.1.1', sha256='166b04678448a7decd50f24afabe5e2ad613e3c55b180ef6e8dd7a870a1dae48') + depends_on('r@2.10:', type=('build', 'run'), when='@1.2.2:') depends_on('r-cli', type=('build', 'run')) - depends_on('r-withr', type=('build', 'run')) + depends_on('r-cli@3.1.0:', type=('build', 'run'), when='@1.2.2:') + + depends_on('r-withr', type=('build', 'run'), when='@:1.1.1') diff --git a/var/spack/repos/builtin/packages/r-seurat/package.py b/var/spack/repos/builtin/packages/r-seurat/package.py index f0d9be1a8ae32e..fc54baab6a4d35 100644 --- a/var/spack/repos/builtin/packages/r-seurat/package.py +++ b/var/spack/repos/builtin/packages/r-seurat/package.py @@ -7,7 +7,7 @@ class RSeurat(RPackage): - """Tools for Single Cell Genomics + """Tools for Single Cell Genomics. A toolkit for quality control, analysis, and exploration of single cell RNA sequencing data. 'Seurat' aims to enable users to identify and interpret @@ -17,10 +17,9 @@ class RSeurat(RPackage): R, et al (2015) , and Stuart T, Butler A, et al (2019) for more details.""" - homepage = "https://satijalab.org/seurat/" - url = "https://cloud.r-project.org/src/contrib/Seurat_2.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/Seurat" + cran = "Seurat" + version('4.1.0', sha256='2505829a2763e449684dd1b107ee6982e019ee9fecb093adca7b283cad1b315d') version('3.2.3', sha256='83aa48f75c3756bee23e108a8b01028366e24f237fe990cb441f3525e0613f87') version('3.1.0', sha256='d8d3fad2950a8f791376e3d20c72ea07c68bf8d82d800661cab5ce696db39d45') version('3.0.2', sha256='16df5dec6b41d49320c5bf5ce30eb3b7dedeea69b054b55b77528f2f2b7bce04') @@ -28,83 +27,91 @@ class RSeurat(RPackage): version('2.1.0', sha256='7d20d231b979a4aa63cd7dae7e725405212e8975889f12b8d779c6c896c10ac3') version('2.0.1', sha256='6aa33aa3afb29a8be364ab083c7071cfbc56ad042a019bcf6f939e0c8c7744f0') - depends_on('r@3.2.0:', when='@:2.3.0', type=('build', 'run')) - depends_on('r@3.4.0:', when='@2.3.1:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@3.2.3:', type=('build', 'run')) - depends_on('r-cluster', when='@2.3.0:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@2.3.1:') + depends_on('r@3.6.0:', type=('build', 'run'), when='@3.2.3:') + 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-fitdistrplus', when='@2.3.0:', type=('build', 'run')) - depends_on('r-future', when='@3.0.0:', type=('build', 'run')) - depends_on('r-future-apply', when='@3.0.0:', type=('build', 'run')) + 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-ggplot2@3.0.0:', type=('build', 'run')) - depends_on('r-ggplot2@3.3.0:', when='@3.2.3:', type=('build', 'run')) - depends_on('r-ggrepel', when='@3.0.0:', type=('build', 'run')) - depends_on('r-ggridges', when='@2.2.0:', type=('build', 'run')) - depends_on('r-httr', when='@2.3.4:', 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:') + depends_on('r-ggridges', type=('build', 'run'), when='@2.2.0:') + depends_on('r-httr', type=('build', 'run'), when='@2.3.4:') depends_on('r-ica', type=('build', 'run')) depends_on('r-igraph', type=('build', 'run')) depends_on('r-irlba', type=('build', 'run')) - depends_on('r-jsonlite', when='@3.2.3:', type=('build', 'run')) - depends_on('r-kernsmooth', when='@3.0.0:', type=('build', 'run')) - depends_on('r-leiden@0.3.1:', when='@3.1.0:', type=('build', 'run')) - depends_on('r-lmtest', when='@2.3.0:', type=('build', 'run')) + 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-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')) - depends_on('r-matrixstats', when='@3.2.3:', type=('build', 'run')) - depends_on('r-miniui', when='@3.2.3:', type=('build', 'run')) - depends_on('r-patchwork', when='@3.2.3:', type=('build', 'run')) + depends_on('r-matrix@1.2-14:', type=('build', 'run')) + depends_on('r-matrixstats', type=('build', 'run'), when='@3.2.3:') + depends_on('r-miniui', type=('build', 'run'), when='@3.2.3:') + depends_on('r-patchwork', type=('build', 'run'), when='@3.2.3:') depends_on('r-pbapply', type=('build', 'run')) depends_on('r-plotly', type=('build', 'run')) - depends_on('r-plotly@4.9.0:', when='@3.2.3:', type=('build', 'run')) - depends_on('r-png', when='@2.3.0:', type=('build', 'run')) - depends_on('r-rann', when='@2.3.0:', type=('build', 'run')) + 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-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-rcppannoy', when='@3.1.0:', type=('build', 'run')) - depends_on('r-reticulate', when='@2.3.1:', type=('build', 'run')) - depends_on('r-rlang', when='@3.0.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-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-rsvd', when='@3.0.0:', type=('build', 'run')) depends_on('r-rtsne', type=('build', 'run')) - depends_on('r-scales', when='@3.0.0:', type=('build', 'run')) - depends_on('r-scattermore@0.7:', when='@3.2.3:', type=('build', 'run')) - depends_on('r-sctransform@0.2.0:', when='@3.0.0:', type=('build', 'run')) - depends_on('r-sctransform@0.3.1:', when='@3.2.3:', type=('build', 'run')) - depends_on('r-shiny', when='@3.2.3:', type=('build', 'run')) - depends_on('r-spatstat', when='@3.2.3:', type=('build', 'run')) - depends_on('r-tibble', when='@3.2.3:', type=('build', 'run')) - depends_on('r-uwot', when='@3.1.0:', type=('build', 'run')) - depends_on('r-uwot@0.1.9:', when='@3.2.3:', 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-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-seuratobject@4.0.4:', type=('build', 'run'), when='@4.1.0:') + depends_on('r-shiny', type=('build', 'run'), when='@3.2.3:') + depends_on('r-spatstat-core', type=('build', 'run'), when='@4.1.0:') + depends_on('r-spatstat-geom', type=('build', 'run'), when='@4.1.0:') + depends_on('r-tibble', type=('build', 'run'), when='@3.2.3:') + depends_on('r-uwot', type=('build', 'run'), when='@3.1.0:') + depends_on('r-uwot@0.1.9:', type=('build', 'run'), when='@3.2.3:') depends_on('r-rcppeigen', type=('build', 'run')) depends_on('r-rcppprogress', type=('build', 'run')) - depends_on('r-gplots', when='@:2.3.4', type=('build', 'run')) - depends_on('r-reshape2', when='@:2.3.4', type=('build', 'run')) - depends_on('r-ape', when='@:3.1.0', type=('build', 'run')) - depends_on('r-tidyr', when='@:2.3.4', type=('build', 'run')) - depends_on('r-caret', when='@:2.3.2', type=('build', 'run')) - depends_on('r-gdata', when='@:2.3.2', type=('build', 'run')) - depends_on('r-gridextra', when='@:2.3.0', type=('build', 'run')) - depends_on('r-hmisc', when='@:2.3.4', type=('build', 'run')) - depends_on('r-nmf', when='@:2.2.0', type=('build', 'run')) - depends_on('r-fpc', when='@:2.3.4', type=('build', 'run')) - depends_on('r-lars', when='@:2.3.4', type=('build', 'run')) - depends_on('r-dtw', when='@:2.3.4', type=('build', 'run')) - depends_on('r-mixtools', when='@:2.3.4', type=('build', 'run')) - depends_on('r-diffusionmap', when='@:2.3.3', type=('build', 'run')) - depends_on('r-tsne', when='@:3.1.0', type=('build', 'run')) - depends_on('r-ranger', when='@:2.3.2', type=('build', 'run')) - depends_on('r-ggjoy', when='@:2.1.0', type=('build', 'run')) - depends_on('r-sdmtools', when='@:3.1.0', type=('build', 'run')) - depends_on('r-tclust', when='@:2.3.2', type=('build', 'run')) - depends_on('r-fnn', when='@:2.3.2', type=('build', 'run')) - depends_on('r-vgam', when='@:2.3.2', type=('build', 'run')) - depends_on('r-e1071', when='@:2.0.1', type=('build', 'run')) - depends_on('r-compositions', when='@:2.0.1', type=('build', 'run')) - depends_on('r-nmof', when='@:2.0.1', type=('build', 'run')) - depends_on('r-metap', when='@2.2.1:3.1.0', type=('build', 'run')) - depends_on('r-stringr', when='@:2.3.2', type=('build', 'run')) - depends_on('r-dplyr', when='@:2.3.4', type=('build', 'run')) - depends_on('r-dosnow', when='@2.3.0:2.3.4', type=('build', 'run')) - depends_on('r-foreach', when='@2.3.0:2.3.4', type=('build', 'run')) - depends_on('r-hdf5r', when='@2.3.2:2.3.4', type=('build', 'run')) + + depends_on('r-gplots', type=('build', 'run'), when='@:2.3.4') + depends_on('r-reshape2', type=('build', 'run'), when='@:2.3.4') + depends_on('r-ape', type=('build', 'run'), when='@:3.1.0') + depends_on('r-tidyr', type=('build', 'run'), when='@:2.3.4') + depends_on('r-caret', type=('build', 'run'), when='@:2.3.2') + depends_on('r-gdata', type=('build', 'run'), when='@:2.3.2') + depends_on('r-gridextra', type=('build', 'run'), when='@:2.3.0') + depends_on('r-hmisc', type=('build', 'run'), when='@:2.3.4') + depends_on('r-nmf', type=('build', 'run'), when='@:2.2.0') + depends_on('r-fpc', type=('build', 'run'), when='@:2.3.4') + depends_on('r-lars', type=('build', 'run'), when='@:2.3.4') + depends_on('r-dtw', type=('build', 'run'), when='@:2.3.4') + depends_on('r-mixtools', type=('build', 'run'), when='@:2.3.4') + depends_on('r-diffusionmap', type=('build', 'run'), when='@:2.3.3') + depends_on('r-tsne', type=('build', 'run'), when='@:3.1.0') + depends_on('r-ranger', type=('build', 'run'), when='@:2.3.2') + depends_on('r-ggjoy', type=('build', 'run'), when='@:2.1.0') + depends_on('r-sdmtools', type=('build', 'run'), when='@:3.1.0') + depends_on('r-tclust', type=('build', 'run'), when='@:2.3.2') + depends_on('r-fnn', type=('build', 'run'), when='@:2.3.2') + depends_on('r-vgam', type=('build', 'run'), when='@:2.3.2') + depends_on('r-e1071', type=('build', 'run'), when='@:2.0.1') + depends_on('r-compositions', type=('build', 'run'), when='@:2.0.1') + depends_on('r-nmof', type=('build', 'run'), when='@:2.0.1') + depends_on('r-metap', type=('build', 'run'), when='@2.2.1:3.1.0') + depends_on('r-stringr', type=('build', 'run'), when='@:2.3.2') + depends_on('r-dplyr', type=('build', 'run'), when='@:2.3.4') + depends_on('r-dosnow', type=('build', 'run'), when='@2.3.0:2.3.4') + depends_on('r-foreach', type=('build', 'run'), when='@2.3.0:2.3.4') + depends_on('r-hdf5r', type=('build', 'run'), when='@2.3.2:2.3.4') + depends_on('r-rsvd', type=('build', 'run'), when='@3.0.0:3.2.3') + depends_on('r-spatstat@:1.64-1', type=('build', 'run'), when='@3.2.3') depends_on('java', when='@:2.3.0') diff --git a/var/spack/repos/builtin/packages/r-seuratobject/package.py b/var/spack/repos/builtin/packages/r-seuratobject/package.py new file mode 100644 index 00000000000000..f03c67fbf811a9 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-seuratobject/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2022 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 import * + + +class RSeuratobject(RPackage): + """Data Structures for Single Cell Data. + + Defines S4 classes for single-cell genomic data and associated information, + such as dimensionality reduction embeddings, nearest-neighbor graphs, and + spatially-resolved coordinates. Provides data access methods and R-native + hooks to ensure the Seurat object is familiar to other R users. See Satija + R, Farrell J, Gennert D, et al (2015) , Macosko E, + Basu A, Satija R, et al (2015) , and Stuart + T, Butler A, et al (2019) for more + details.""" + + cran = "SeuratObject" + + version('4.0.4', sha256='585261b7d2045193accf817a29e2e3356e731f57c554bed37d232fa49784088c') + + depends_on('r@4.0.0:', type=('build', 'run')) + depends_on('r-matrix@1.3-3:', type=('build', 'run')) + depends_on('r-rcpp@1.0.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 a5353210179dd4..3dd6d0b53e4f19 100644 --- a/var/spack/repos/builtin/packages/r-sf/package.py +++ b/var/spack/repos/builtin/packages/r-sf/package.py @@ -7,7 +7,7 @@ class RSf(RPackage): - """Simple Features for R + """Simple Features for R. Support for simple features, a standardized way to encode spatial vector data. Binds to 'GDAL' for reading and writing data, to 'GEOS' for @@ -15,10 +15,10 @@ class RSf(RPackage): transformations. Optionally uses the 's2' package for spherical geometry operations on geographic coordinates.""" - homepage = "https://github.com/r-spatial/sf/" - url = "https://cloud.r-project.org/src/contrib/sf_0.5-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sf" + cran = "sf" + version('1.0-7', sha256='d0731fab9438d73a55af7232f0474b36f4b2a4e6d66adaa141632f4a60265453') + version('1.0-5', sha256='290c28fa5ea777d555e70962c59079c134f02f7bdf60259a72eea79a064a1ac4') version('0.9-7', sha256='4acac2f78badf9d252da5bf377975f984927c14a56a72d9f83d285c0adadae9c') version('0.7-7', sha256='d1780cb46a285b30c7cc41cae30af523fbc883733344e53f7291e2d045e150a4') version('0.7-5', sha256='53ed0567f502216a116c4848f5a9262ca232810f82642df7b98e0541a2524868') @@ -26,13 +26,17 @@ class RSf(RPackage): depends_on('r@3.3.0:', type=('build', 'run')) depends_on('r-classint@0.2-1:', type=('build', 'run')) - depends_on('r-classint@0.4-1:', when='@0.9-7:', type=('build', 'run')) + depends_on('r-classint@0.4-1:', type=('build', 'run'), when='@0.9-7:') depends_on('r-dbi@0.8:', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-units@0.6-0:', type=('build', 'run')) depends_on('r-rcpp@0.12.18:', type=('build', 'run')) + depends_on('r-s2@1.0.7:', type=('build', 'run'), when='@1.0-5:') + depends_on('r-units@0.6-0:', type=('build', 'run'), when='@1.0-5:') depends_on('gdal@2.0.1:') depends_on('geos@3.4.0:') depends_on('proj@4.8.0:5', when='@:0.7-3') - depends_on('proj@4.8.0:6', when='@0.7-4:') + depends_on('proj@4.8.0:6', when='@0.7-4:0.7-7') + depends_on('proj@4.8.0:') depends_on('sqlite', when='@0.9-7') + + depends_on('r-units@0.6-0:', type=('build', 'run'), when='@:9.9-7') diff --git a/var/spack/repos/builtin/packages/r-sfheaders/package.py b/var/spack/repos/builtin/packages/r-sfheaders/package.py new file mode 100644 index 00000000000000..9092e191dfb6ea --- /dev/null +++ b/var/spack/repos/builtin/packages/r-sfheaders/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2022 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 import * + + +class RSfheaders(RPackage): + """Converts Between R Objects and Simple Feature Objects. + + Converts between R and Simple Feature 'sf' objects, without depending on + the Simple Feature library. Conversion functions are available at both the + R level, and through 'Rcpp'.""" + + cran = "sfheaders" + + version('0.4.0', sha256='86bcd61018a0491fc8a1e7fb0422c918296287b82be299a79ccee8fcb515e045') + + depends_on('r-geometries@0.2.0:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sfsmisc/package.py b/var/spack/repos/builtin/packages/r-sfsmisc/package.py index 48460540024cf5..d88e9de019c427 100644 --- a/var/spack/repos/builtin/packages/r-sfsmisc/package.py +++ b/var/spack/repos/builtin/packages/r-sfsmisc/package.py @@ -7,7 +7,7 @@ class RSfsmisc(RPackage): - """Utilities from 'Seminar fuer Statistik' ETH Zurich + """Utilities from 'Seminar fuer Statistik' ETH Zurich. Useful utilities ['goodies'] from Seminar fuer Statistik ETH Zurich, some of which were ported from S-plus in the 1990s.; For graphics, have pretty @@ -19,14 +19,14 @@ class RSfsmisc(RPackage): efficient prime numbers, integer codes, Duplicated(), toLatex.numeric() and is.whole().""" - homepage = "https://cloud.r-project.org/package=sfsmisc" - url = "https://cloud.r-project.org/src/contrib/sfsmisc_1.1-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sfsmisc" + cran = "sfsmisc" + version('1.1-12', sha256='9b12184a28fff87cacd0c3602d0cf63acb4d0f3049ad3a6ff16177f6df350782') version('1.1-8', sha256='b6556af5f807f0769489657a676422cb0734f3d6c918543d2989ef17febc1fa5') version('1.1-4', sha256='44b6a9c859922e86b7182e54eb781d3264f3819f310343518ebc66f54f305c7d') version('1.1-3', sha256='58eff7d4a9c79212321858efe98d2a6153630e263ff0218a31d5e104b8b545f8') version('1.1-0', sha256='7f430cf3ebb95bac806fbf093fb1e2112deba47416a93be8d5d1064b76bc0015') - depends_on('r@3.0.1:', when='@:1.1-1', type=('build', 'run')) - depends_on('r@3.2.0:', when='@1.1-2:', type=('build', 'run')) + depends_on('r@3.0.1:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@1.1-2:') + depends_on('r@3.3.0:', type=('build', 'run'), when='@1.1-12:') diff --git a/var/spack/repos/builtin/packages/r-shadowtext/package.py b/var/spack/repos/builtin/packages/r-shadowtext/package.py index 6e6c4f67c8a4fb..5bd0438474d5f3 100644 --- a/var/spack/repos/builtin/packages/r-shadowtext/package.py +++ b/var/spack/repos/builtin/packages/r-shadowtext/package.py @@ -7,15 +7,14 @@ class RShadowtext(RPackage): - """Shadow Text Grob and Layer + """Shadow Text Grob and Layer. Implement shadowtextGrob() for 'grid' and geom_shadowtext() layer for 'ggplot2'. These functions create/draw text grob with background shadow.""" - homepage = "https://github.com/GuangchuangYu/shadowtext/" - url = "https://cloud.r-project.org/src/contrib/shadowtext_0.0.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/shadowtext" + cran = "shadowtext" + version('0.1.1', sha256='eb06581d7ed06c963eee47548932688fd48eba70b3ebd2a7b41a6501d6e00006') version('0.0.7', sha256='6e32b1dfd3d4816803848b876666185258b888286ec3d3e8500499ec3eba31e8') depends_on('r@3.4.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-shape/package.py b/var/spack/repos/builtin/packages/r-shape/package.py index eb57d4d6fcdc33..02ba974545d3c7 100644 --- a/var/spack/repos/builtin/packages/r-shape/package.py +++ b/var/spack/repos/builtin/packages/r-shape/package.py @@ -7,15 +7,14 @@ class RShape(RPackage): - """Functions for Plotting Graphical Shapes, Colors + """Functions for Plotting Graphical Shapes, Colors. Functions for plotting graphical shapes such as ellipses, circles, cylinders, arrows, ...""" - homepage = "https://cloud.r-project.org/package=shape" - url = "https://cloud.r-project.org/src/contrib/shape_1.4.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/shape" + cran = "shape" + version('1.4.6', sha256='b9103e5ed05c223c8147dbe3b87a0d73184697343634a353a2ae722f7ace0b7b') version('1.4.5', sha256='094a79b8f42226189227fd7af71868e42106caa25a4d7f80a26977e8bc84189f') version('1.4.4', sha256='f4cb1b7d7c84cf08d2fa97f712ea7eb53ed5fa16e5c7293b820bceabea984d41') version('1.4.3', sha256='720f6ca9c70a39a3900af9d074bff864b18ac58013b21d48b779047481b93ded') diff --git a/var/spack/repos/builtin/packages/r-shiny/package.py b/var/spack/repos/builtin/packages/r-shiny/package.py index f8c86b3ce31d28..b43c68713bde2b 100644 --- a/var/spack/repos/builtin/packages/r-shiny/package.py +++ b/var/spack/repos/builtin/packages/r-shiny/package.py @@ -7,17 +7,16 @@ class RShiny(RPackage): - """Web Application Framework for R + """Web Application Framework for R. Makes it incredibly easy to build interactive web applications with R. Automatic "reactive" binding between inputs and outputs and extensive pre-built widgets make it possible to build beautiful, responsive, and powerful applications with minimal effort.""" - homepage = "https://shiny.rstudio.com/" - url = "https://cloud.r-project.org/src/contrib/shiny_1.0.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/shiny" + cran = "shiny" + version('1.7.1', sha256='c03b2056fb41430352c7c0e812bcc8632e6ec4caef077d2f7633512d91721d00') version('1.5.0', sha256='23cb8bfa448389c256efdab75e7e8d3ff90e5de66264c4ab02df322fb4298e9e') version('1.3.2', sha256='28b851ae6c196ca845f6e815c1379247595ac123a4faa10a16533d1a9ce0c24f') version('1.0.5', sha256='20e25f3f72f3608a2151663f7836f2e0c6da32683a555d7541063ae7a935fa42') @@ -25,23 +24,32 @@ class RShiny(RPackage): depends_on('r@3.0.2:', type=('build', 'run')) depends_on('r-httpuv@1.5.0:', type=('build', 'run')) - depends_on('r-httpuv@1.5.2:', when='@1.5.0:', type=('build', 'run')) + depends_on('r-httpuv@1.5.2:', type=('build', 'run'), when='@1.5.0:') depends_on('r-mime@0.3:', type=('build', 'run')) depends_on('r-jsonlite@0.9.16:', type=('build', 'run')) depends_on('r-xtable', type=('build', 'run')) - depends_on('r-digest', type=('build', 'run')) + depends_on('r-fontawesome@0.2.1:', type=('build', 'run'), when='@1.7.1:') depends_on('r-htmltools@0.3.6:', type=('build', 'run')) - depends_on('r-htmltools@0.4.0.9003:', when='@1.5.0:', type=('build', 'run')) + depends_on('r-htmltools@0.4.0.9003:', type=('build', 'run'), when='@1.5.0:') + depends_on('r-htmltools@0.5.2:', type=('build', 'run'), when='@1.7.1:') depends_on('r-r6@2.0:', type=('build', 'run')) depends_on('r-sourcetools', type=('build', 'run')) - depends_on('r-later@0.7.2:', when='@1.1.0:', type=('build', 'run')) - depends_on('r-later@1.0.0:', when='@1.5.0:', type=('build', 'run')) - depends_on('r-promises@1.0.1:', when='@1.1.0:', type=('build', 'run')) - depends_on('r-promises@1.1.0:', when='@1.5.0:', type=('build', 'run')) - depends_on('r-crayon', when='@1.1.0:', type=('build', 'run')) - depends_on('r-rlang', when='@1.1.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.0:', when='@1.5.0:', type=('build', 'run')) - depends_on('r-fastmap@1.0.0:', when='@1.5.0:', type=('build', 'run')) - depends_on('r-withr', when='@1.5.0:', type=('build', 'run')) - depends_on('r-commonmark@1.7:', when='@1.5.0:', type=('build', 'run')) - depends_on('r-glue@1.3.2:', when='@1.5.0:', type=('build', 'run')) + depends_on('r-later@0.7.2:', type=('build', 'run'), when='@1.1.0:') + depends_on('r-later@1.0.0:', type=('build', 'run'), when='@1.5.0:') + depends_on('r-promises@1.0.1:', type=('build', 'run'), when='@1.1.0:') + depends_on('r-promises@1.1.0:', type=('build', 'run'), when='@1.5.0:') + depends_on('r-crayon', type=('build', 'run'), when='@1.1.0:') + depends_on('r-rlang', type=('build', 'run'), when='@1.1.0:') + depends_on('r-rlang@0.4.0:', type=('build', 'run'), when='@1.5.0:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@1.7.1:') + depends_on('r-fastmap@1.0.0:', type=('build', 'run'), when='@1.5.0:') + depends_on('r-fastmap@1.1.0:', type=('build', 'run'), when='@1.7.1:') + depends_on('r-withr', type=('build', 'run'), when='@1.5.0:') + 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-cachem', type=('build', 'run'), when='@1.7.1:') + depends_on('r-ellipsis', type=('build', 'run'), when='@1.7.1:') + 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-shinydashboard/package.py b/var/spack/repos/builtin/packages/r-shinydashboard/package.py index 217cbf6468f9f5..2ef0b140440408 100644 --- a/var/spack/repos/builtin/packages/r-shinydashboard/package.py +++ b/var/spack/repos/builtin/packages/r-shinydashboard/package.py @@ -7,17 +7,19 @@ class RShinydashboard(RPackage): - """Create Dashboards with 'Shiny'""" + """Create Dashboards with 'Shiny'. - homepage = "https://cloud.r-project.org/package=shinydashboard" - url = "https://cloud.r-project.org/src/contrib/shinydashboard_0.7.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/shinydashboard" + Create dashboards with 'Shiny'. This package provides a theme on top of + 'Shiny', making it easy to create attractive dashboards.""" + cran = "shinydashboard" + + version('0.7.2', sha256='a56ee48572649830cd8d82f1caa2099411461e19e19223cbad36a375299f3843') version('0.7.1', sha256='51a49945c6b8a684111a2ba4b2a5964e3a50610286ce0378e37ae02316620a4e') version('0.7.0', sha256='0b7b102e9e5bea78ddc4da628d072a358270f2db9b63a6ebe4d8bdce3066d883') version('0.6.1', sha256='1ee38f257433d24455426bc9d85c36f588735a54fbf6143935fed9cccb3bf193') depends_on('r@3.0:', type=('build', 'run')) - depends_on('r-htmltools@0.2.6:', type=('build', 'run')) depends_on('r-shiny@1.0.0:', type=('build', 'run')) - depends_on('r-promises', when='@0.7.1:', type=('build', 'run')) + depends_on('r-htmltools@0.2.6:', type=('build', 'run')) + depends_on('r-promises', type=('build', 'run'), when='@0.7.1:') diff --git a/var/spack/repos/builtin/packages/r-shinyfiles/package.py b/var/spack/repos/builtin/packages/r-shinyfiles/package.py index bd6c0863ca900c..5fc37bbbbb0de1 100644 --- a/var/spack/repos/builtin/packages/r-shinyfiles/package.py +++ b/var/spack/repos/builtin/packages/r-shinyfiles/package.py @@ -7,18 +7,17 @@ class RShinyfiles(RPackage): - """A Server-Side File System Viewer for Shiny + """A Server-Side File System Viewer for Shiny. - Provides functionality for client-side navigation of the server side - file system in shiny apps. In case the app is running locally this gives - the user direct access to the file system without the need to "download" - files to a temporary location. Both file and folder selection as well as - file saving is available.""" + Provides functionality for client-side navigation of the server side file + system in shiny apps. In case the app is running locally this gives the + user direct access to the file system without the need to "download" files + to a temporary location. Both file and folder selection as well as file + saving is available.""" - homepage = "https://github.com/thomasp85/shinyFiles" - url = "https://cloud.r-project.org/src/contrib/shinyFiles_0.7.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/shinyFiles" + cran = "shinyFiles" + version('0.9.1', sha256='05694630ed5ae6ac15307ffcb211c83097fee0f38ca59340a7e68cac62730d39') version('0.9.0', sha256='51ad2aad61bcae22fb2c48a79d02bf6f86e36ffc49a3b64e26a76d133a955167') version('0.7.3', sha256='710c8a6191aaf336379bc748daff1160d0d2858e2aee0d98e2ad48e7121d5a05') diff --git a/var/spack/repos/builtin/packages/r-shinyjs/package.py b/var/spack/repos/builtin/packages/r-shinyjs/package.py index 6fb01c0730ef36..e9bd0fb05d643a 100644 --- a/var/spack/repos/builtin/packages/r-shinyjs/package.py +++ b/var/spack/repos/builtin/packages/r-shinyjs/package.py @@ -7,7 +7,7 @@ class RShinyjs(RPackage): - """Easily Improve the User Experience of Your Shiny Apps in Seconds + """Easily Improve the User Experience of Your Shiny Apps in Seconds. Perform common useful JavaScript operations in Shiny apps that will greatly improve your apps without having to know any JavaScript. Examples include: @@ -16,14 +16,15 @@ class RShinyjs(RPackage): useful functions for both the end user and the developer. 'shinyjs' can also be used to easily call your own custom JavaScript functions from R.""" - homepage = "https://deanattali.com/shinyjs/" - cran = "shinyjs" + cran = "shinyjs" + version('2.1.0', sha256='7ec20cbf1b1fd7a32d85a56dfc0df8b5f67c828d241da400a21d893cb37ea9c5') version('2.0.0', sha256='c2cdd9fab41f6b46bb41b288cd9b3fb3a7fe9627b664e3a58a0cb5dd4c19f8ff') depends_on('r@3.1.0:', type=('build', 'run')) depends_on('r-digest@0.6.8:', type=('build', 'run')) - depends_on('r-htmltools@0.2.9:', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-shiny@1.0.0:', type=('build', 'run')) - depends_on('pandoc', type='build') + + depends_on('r-htmltools@0.2.9:', type=('build', 'run'), when='@:2.0.0') + depends_on('pandoc', type='build', when='@:2.0.0') diff --git a/var/spack/repos/builtin/packages/r-shinystan/package.py b/var/spack/repos/builtin/packages/r-shinystan/package.py index b8b72b1d9e0a28..d7acec1f06b621 100644 --- a/var/spack/repos/builtin/packages/r-shinystan/package.py +++ b/var/spack/repos/builtin/packages/r-shinystan/package.py @@ -8,7 +8,7 @@ class RShinystan(RPackage): """Interactive Visual and Numerical Diagnostics and Posterior Analysis for - Bayesian Models: + Bayesian Models. A graphical user interface for interactive Markov chain Monte Carlo (MCMC) diagnostics and plots and tables helpful for analyzing a posterior sample. @@ -17,8 +17,7 @@ class RShinystan(RPackage): programming language (and has extended functionality for 'Stan' models fit using the 'rstan' and 'rstanarm' packages).""" - homepage = "https://mc-stan.org/" - cran = "shinystan" + cran = "shinystan" version('2.5.0', sha256='45f9c552a31035c5de8658bb9e5d72da7ec1f88fbddb520d15fe701c677154a1') diff --git a/var/spack/repos/builtin/packages/r-shinythemes/package.py b/var/spack/repos/builtin/packages/r-shinythemes/package.py index c1f7ee173eb058..bc3b7bb3ad2405 100644 --- a/var/spack/repos/builtin/packages/r-shinythemes/package.py +++ b/var/spack/repos/builtin/packages/r-shinythemes/package.py @@ -7,14 +7,13 @@ class RShinythemes(RPackage): - """Themes for Shiny: + """Themes for Shiny. Themes for use with Shiny. Includes several Bootstrap themes from , which are packaged for use with Shiny applications.""" - homepage = "https://rstudio.github.io/shinythemes/" - cran = "shinythemes" + cran = "shinythemes" version('1.2.0', sha256='37d68569ce838c7da9f0ea7e2b162ecf38fba2ae448a4888b6dd29c4bb5b2963') diff --git a/var/spack/repos/builtin/packages/r-shortread/package.py b/var/spack/repos/builtin/packages/r-shortread/package.py index 664de313c2566b..4e53af95b8ab34 100644 --- a/var/spack/repos/builtin/packages/r-shortread/package.py +++ b/var/spack/repos/builtin/packages/r-shortread/package.py @@ -7,7 +7,7 @@ class RShortread(RPackage): - """FASTQ input and manipulation + """FASTQ input and manipulation. This package implements sampling, iteration, and input of FASTQ files. The package includes functions for filtering and trimming reads, and for @@ -16,9 +16,9 @@ class RShortread(RPackage): purposes. The package also contains legacy support for early single-end, ungapped alignment formats.""" - homepage = "https://bioconductor.org/packages/ShortRead" - git = "https://git.bioconductor.org/packages/ShortRead.git" + bioc = "ShortRead" + version('1.52.0', commit='4d7304d7b5a0ca5c904c0b919d6c95599db72a39') version('1.48.0', commit='ba44cd2517bc0e6f46d2cfcfce393f86eec814d0') version('1.42.0', commit='daa2576a48278460caf87f42c022c796652f4908') version('1.40.0', commit='0cbe4b62b0be4c5f2e2670da17493423446e008f') @@ -27,26 +27,26 @@ class RShortread(RPackage): version('1.34.2', commit='25daac63b301df66a8ef6e98cc2977522c6786cd') depends_on('r-biocgenerics@0.22.1:', type=('build', 'run')) - depends_on('r-biocgenerics@0.23.3:', when='@1.36.1:', type=('build', 'run')) + depends_on('r-biocgenerics@0.23.3:', type=('build', 'run'), when='@1.36.1:') depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-biostrings@2.37.1:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.38.0:') depends_on('r-rsamtools@1.21.4:', type=('build', 'run')) - depends_on('r-rsamtools@1.31.2:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-rsamtools@1.31.2:', type=('build', 'run'), when='@1.38.0:') depends_on('r-genomicalignments@1.5.4:', type=('build', 'run')) - depends_on('r-genomicalignments@1.15.6:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-genomicalignments@1.15.6:', type=('build', 'run'), when='@1.38.0:') depends_on('r-biobase', type=('build', 'run')) depends_on('r-s4vectors@0.13.8:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@1.38.0:') depends_on('r-iranges@2.3.7:', type=('build', 'run')) - depends_on('r-iranges@2.13.12:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-iranges@2.13.12:', type=('build', 'run'), when='@1.38.0:') depends_on('r-genomeinfodb@1.1.19:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.15.2:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.15.2:', type=('build', 'run'), when='@1.38.0:') depends_on('r-genomicranges@1.21.6:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.8:', when='@1.38.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.31.8:', type=('build', 'run'), when='@1.38.0:') depends_on('r-hwriter', type=('build', 'run')) depends_on('r-zlibbioc', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-latticeextra', type=('build', 'run')) depends_on('r-xvector', type=('build', 'run')) - depends_on('r-rhtslib', when='@1.48.0:', type=('build', 'run')) + depends_on('r-rhtslib', type=('build', 'run'), when='@1.48.0:') diff --git a/var/spack/repos/builtin/packages/r-siggenes/package.py b/var/spack/repos/builtin/packages/r-siggenes/package.py index 7d3e136ac93630..838cb4cc5f297c 100644 --- a/var/spack/repos/builtin/packages/r-siggenes/package.py +++ b/var/spack/repos/builtin/packages/r-siggenes/package.py @@ -7,16 +7,16 @@ class RSiggenes(RPackage): - """Multiple Testing using SAM and Efron's Empirical Bayes Approaches + """Multiple Testing using SAM and Efron's Empirical Bayes Approaches. Identification of differentially expressed genes and estimation of the False Discovery Rate (FDR) using both the Significance Analysis of Microarrays (SAM) and the Empirical Bayes Analyses of Microarrays (EBAM).""" - homepage = "https://bioconductor.org/packages/siggenes" - git = "https://git.bioconductor.org/packages/siggenes.git" + bioc = "siggenes" + version('1.68.0', commit='a29bf02b19cc9003c8401608831232b7c2af26e7') version('1.64.0', commit='3b528d37c16fc41bbc5c98165f606394313aa050') version('1.58.0', commit='69500158d69942cf7c62f583830933cf8baf89a1') version('1.56.0', commit='3e929feaa76311be07ff51ad807e657b0b521f6f') @@ -26,4 +26,4 @@ class RSiggenes(RPackage): depends_on('r-biobase', type=('build', 'run')) depends_on('r-multtest', type=('build', 'run')) - depends_on('r-scrime@1.2.5:', when='@1.58.0:', type=('build', 'run')) + depends_on('r-scrime@1.2.5:', type=('build', 'run'), when='@1.58.0:') diff --git a/var/spack/repos/builtin/packages/r-simpleaffy/package.py b/var/spack/repos/builtin/packages/r-simpleaffy/package.py index 2484360eebb894..1b1282345b4b88 100644 --- a/var/spack/repos/builtin/packages/r-simpleaffy/package.py +++ b/var/spack/repos/builtin/packages/r-simpleaffy/package.py @@ -7,7 +7,7 @@ class RSimpleaffy(RPackage): - """Very simple high level analysis of Affymetrix data + """Very simple high level analysis of Affymetrix data. Provides high level functions for reading Affy .CEL files, phenotypic data, and then computing simple things with it, such as t-tests, fold @@ -15,8 +15,7 @@ class RSimpleaffy(RPackage): basic scatter plot functions and mechanisms for generating high resolution journal figures...""" - homepage = "https://bioconductor.org/packages/simpleaffy" - git = "https://git.bioconductor.org/packages/simpleaffy.git" + bioc = "simpleaffy" version('2.66.0', commit='902db69e4ea4b6d306f0c744d3be600f1418ebc9') version('2.60.0', commit='b32b5e7d5c65e43c10f98ab8684a1086a06d04f9') diff --git a/var/spack/repos/builtin/packages/r-singlecellexperiment/package.py b/var/spack/repos/builtin/packages/r-singlecellexperiment/package.py index 5fc11ec6b68dc7..24374acbec3a2b 100644 --- a/var/spack/repos/builtin/packages/r-singlecellexperiment/package.py +++ b/var/spack/repos/builtin/packages/r-singlecellexperiment/package.py @@ -7,16 +7,16 @@ class RSinglecellexperiment(RPackage): - """S4 Classes for Single Cell Data + """S4 Classes for Single Cell Data. Defines a S4 class for storing data from single-cell experiments. This includes specialized methods to store and retrieve spike-in information, dimensionality reduction coordinates and size factors for each cell, along with the usual metadata for genes and libraries.""" - homepage = "https://bioconductor.org/packages/SingleCellExperiment" - git = "https://git.bioconductor.org/packages/SingleCellExperiment.git" + bioc = "SingleCellExperiment" + version('1.16.0', commit='bb27609ba08052607fc08529ffbbbcf1eab265cb') version('1.12.0', commit='66063b74c8b0bd0fd1277c7ad425ad11823ab356') version('1.6.0', commit='baa51d77a8dacd2a22e7293095a8cffaaa3293b4') version('1.4.1', commit='b1efcb338e9176ae6829bb897957aa37e74d4870') @@ -24,7 +24,9 @@ class RSinglecellexperiment(RPackage): version('1.0.0', commit='545e974aa7ca7855e039bf9e3030290cd71d9031') depends_on('r@3.4:', type=('build', 'run')) - depends_on('r@3.5:', when='@1.2.0:1.6.0', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@1.2.0:1.6.0') depends_on('r-summarizedexperiment', type=('build', 'run')) depends_on('r-s4vectors', type=('build', 'run')) depends_on('r-biocgenerics', type=('build', 'run')) + depends_on('r-genomicranges', type=('build', 'run'), when='@1.16.0:') + depends_on('r-delayedarray', type=('build', 'run'), when='@1.16.0:') diff --git a/var/spack/repos/builtin/packages/r-sitmo/package.py b/var/spack/repos/builtin/packages/r-sitmo/package.py index e9f211e0ff9581..79be0fa870c318 100644 --- a/var/spack/repos/builtin/packages/r-sitmo/package.py +++ b/var/spack/repos/builtin/packages/r-sitmo/package.py @@ -7,8 +7,10 @@ class RSitmo(RPackage): - """Provided within are two high quality and fast PPRNGs that may be used in - an 'OpenMP' parallel environment. In addition, there is a generator for one + """Parallel Pseudo Random Number Generator (PPRNG) 'sitmo' Header Files. + + Provided within are two high quality and fast PPRNGs that may be used in an + 'OpenMP' parallel environment. In addition, there is a generator for one dimensional low-discrepancy sequence. The objective of this library to consolidate the distribution of the 'sitmo' (C++98 & C++11), 'threefry' and 'vandercorput' (C++11-only) engines on CRAN by enabling others to link to @@ -17,10 +19,9 @@ class RSitmo(RPackage): example implementations using the 'sitmo' package and three accompanying vignette that provide additional information.""" - homepage = "https://github.com/coatless/sitmo" - url = "https://cloud.r-project.org/src/contrib/sitmo_2.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sitmo" + cran = "sitmo" + version('2.0.2', sha256='448ef8d56e36783354011845daf33f1efb83ea3b9685eea75eaf5134e24fa8c2') version('2.0.1', sha256='0c90d357af334d5c99c8956739dc12623ddd87dda5efa59f4a43f7393c87ed2a') depends_on('r@3.2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sm/package.py b/var/spack/repos/builtin/packages/r-sm/package.py index 4045dc75fbe36d..cbb01fac8a4170 100644 --- a/var/spack/repos/builtin/packages/r-sm/package.py +++ b/var/spack/repos/builtin/packages/r-sm/package.py @@ -7,14 +7,15 @@ class RSm(RPackage): - """This is software linked to the book 'Applied Smoothing Techniques for - Data Analysis - The Kernel Approach with S-Plus Illustrations' - Oxford University Press.""" + """Smoothing Methods for Nonparametric Regression and Density Estimation. - homepage = "http://www.stats.gla.ac.uk/~adrian/sm" - url = "https://cloud.r-project.org/src/contrib/sm_2.2-5.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sm" + This is software linked to the book 'Applied Smoothing Techniques for Data + Analysis - The Kernel Approach with S-Plus Illustrations' Oxford University + Press.""" + cran = "sm" + + version('2.2-5.7', sha256='2607a2cafc68d7e99005daf99e36f4a66eaf569ebb6b7500e962642cf58be80f') version('2.2-5.6', sha256='b890cd7ebe8ed711ab4a3792c204c4ecbe9e6ca1fd5bbc3925eba5833a839c30') version('2.2-5.5', sha256='43e212a14c364b98b10018b56fe0a619ccffe4bde1294e6c45b3eafe7caf82e7') diff --git a/var/spack/repos/builtin/packages/r-smoof/package.py b/var/spack/repos/builtin/packages/r-smoof/package.py index dbbb357c809141..5657c7860ef9c3 100644 --- a/var/spack/repos/builtin/packages/r-smoof/package.py +++ b/var/spack/repos/builtin/packages/r-smoof/package.py @@ -7,7 +7,7 @@ class RSmoof(RPackage): - """Single and Multi-Objective Optimization Test Functions + """Single and Multi-Objective Optimization Test Functions. Provides generators for a high number of both single- and multi- objective test functions which are frequently used for the benchmarking of @@ -15,9 +15,7 @@ class RSmoof(RPackage): convenient functions to generate, plot and work with objective functions.""" - homepage = "https://github.com/jakobbossek/smoof" - url = "https://cloud.r-project.org/src/contrib/smoof_1.5.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/smoof" + cran = "smoof" version('1.6.0.2', sha256='d82dba9702eade00afb84c2c12167de6cec790be7d23ac227f8fe705bdcefc93') version('1.5.1', sha256='cfb6f6460e9593351428656b225b5ba3867a216d35a05f2babdb20db6ba35306') diff --git a/var/spack/repos/builtin/packages/r-sn/package.py b/var/spack/repos/builtin/packages/r-sn/package.py index c6b9e190700feb..7b0a6b83721448 100644 --- a/var/spack/repos/builtin/packages/r-sn/package.py +++ b/var/spack/repos/builtin/packages/r-sn/package.py @@ -7,17 +7,16 @@ class RSn(RPackage): - """The Skew-Normal and Related Distributions Such as the Skew-t + """The Skew-Normal and Related Distributions Such as the Skew-t. - Build and manipulate probability distributions of the skew-normal - family and some related ones, notably the skew-t family, and provide - related statistical methods for data fitting and diagnostics, in the - univariate and the multivariate case.""" + Build and manipulate probability distributions of the skew-normal family + and some related ones, notably the skew-t family, and provide related + statistical methods for data fitting and diagnostics, in the univariate and + the multivariate case.""" - homepage = "https://cloud.r-project.org/package=sn" - url = "https://cloud.r-project.org/src/contrib/sn_1.5-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sn" + cran = "sn" + version('2.0.1', sha256='86b3890087657a80fca7a0a756b07410612c34a44d7a1fd7a8f24584379fa8fc') version('1.6-2', sha256='2fd4730c315efc48958b47990ddb0cbc6ce075f7a27255944a292fb4fc593d9d') version('1.5-4', sha256='46677ebc109263a68f62b5cf53ec59916cda490e5bc5bbb08276757a677f8674') version('1.5-3', sha256='cc21b97ddd674c9b1296260f2a72ffb085cdcb877c8332f0bfa96ff028517183') @@ -28,6 +27,8 @@ class RSn(RPackage): version('1.2-3', sha256='1af8ced9ed33680d731ab5132be4674d170d76c64a3059ff56c33159d8396154') depends_on('r@2.15.3:', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run'), when='@2.0.1:') depends_on('r-mnormt@1.5-4:', type=('build', 'run')) + depends_on('r-mnormt@2.0.0:', type=('build', 'run'), when='@2.0.1:') depends_on('r-numderiv', type=('build', 'run')) - depends_on('r-quantreg', when='@1.6-2:', type=('build', 'run')) + depends_on('r-quantreg', type=('build', 'run'), when='@1.6-2:') diff --git a/var/spack/repos/builtin/packages/r-snakecase/package.py b/var/spack/repos/builtin/packages/r-snakecase/package.py index 6f404c2a6f4543..a7c59f1178ce5a 100644 --- a/var/spack/repos/builtin/packages/r-snakecase/package.py +++ b/var/spack/repos/builtin/packages/r-snakecase/package.py @@ -7,12 +7,12 @@ class RSnakecase(RPackage): - """A consistent, flexible and easy to use tool to parse and convert strings + """Convert Strings into any Case. + + A consistent, flexible and easy to use tool to parse and convert strings into cases like snake or camel among others.""" - homepage = "https://github.com/Tazinho/snakecase" - url = "https://cloud.r-project.org/src/contrib/snakecase_0.11.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/snakecase" + cran = "snakecase" version('0.11.0', sha256='998420a58391ac85785e60bcdf6fd6927c82758ad2859a9a73a0e57299e8c1cf') diff --git a/var/spack/repos/builtin/packages/r-snow/package.py b/var/spack/repos/builtin/packages/r-snow/package.py index 17a02046f6e689..00f52108f0a9b2 100644 --- a/var/spack/repos/builtin/packages/r-snow/package.py +++ b/var/spack/repos/builtin/packages/r-snow/package.py @@ -7,12 +7,13 @@ class RSnow(RPackage): - """Support for simple parallel computing in R.""" + """Simple Network of Workstations. - homepage = "https://cloud.r-project.org/package=snow" - url = "https://cloud.r-project.org/src/contrib/snow_0.4-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/snow" + Support for simple parallel computing in R.""" + cran = "snow" + + version('0.4-4', sha256='84587f46f222a96f3e2fde10ad6ec6ddbd878f4e917cd926d632f61a87db13c9') version('0.4-3', sha256='8512537daf334ea2b8074dbb80cf5e959a403a78d68bc1e97664e8a4f64576d8') version('0.4-2', sha256='ee070187aea3607c9ca6235399b3db3e181348692405d038e962e06aefccabd7') diff --git a/var/spack/repos/builtin/packages/r-snowfall/package.py b/var/spack/repos/builtin/packages/r-snowfall/package.py index ebc4a6331dd7db..4255cb2b7541ca 100644 --- a/var/spack/repos/builtin/packages/r-snowfall/package.py +++ b/var/spack/repos/builtin/packages/r-snowfall/package.py @@ -7,15 +7,15 @@ class RSnowfall(RPackage): - """Usability wrapper around snow for easier development of parallel R - programs. This package offers e.g. extended error checks, and additional - functions. All functions work in sequential mode, too, if no cluster is - present or wished. Package is also designed as connector to the cluster - management tool sfCluster, but can also used without it.""" + """Easier cluster computing (based on snow). - homepage = "https://cloud.r-project.org/package=snowfall" - url = "https://cloud.r-project.org/src/contrib/snowfall_1.84-6.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/snowfall" + Usability wrapper around snow for easier development of parallel R + programs. This package offers e.g. extended error checks, and additional + functions. All functions work in sequential mode, too, if no cluster is + present or wished. Package is also designed as connector to the cluster + management tool sfCluster, but can also used without it.""" + + cran = "snowfall" version('1.84-6.1', sha256='5c446df3a931e522a8b138cf1fb7ca5815cc82fcf486dbac964dcbc0690e248d') diff --git a/var/spack/repos/builtin/packages/r-snprelate/package.py b/var/spack/repos/builtin/packages/r-snprelate/package.py index a755119caf86a5..8d8ef691b61e15 100644 --- a/var/spack/repos/builtin/packages/r-snprelate/package.py +++ b/var/spack/repos/builtin/packages/r-snprelate/package.py @@ -8,7 +8,7 @@ class RSnprelate(RPackage): """Parallel Computing Toolset for Relatedness and Principal Component - Analysis of SNP Data + Analysis of SNP Data. Genome-wide association studies (GWAS) are widely used to investigate the genetic basis of diseases and traits, but they pose many @@ -27,9 +27,9 @@ class RSnprelate(RPackage): variations (SNVs), insertion/deletion polymorphism (indel) and structural variation calls.""" - homepage = "https://bioconductor.org/packages/SNPRelate" - git = "https://git.bioconductor.org/packages/SNPRelate.git" + bioc = "SNPRelate" + version('1.28.0', commit='8fcd837f4627a3bb77cb8d992b2baedd0589d123') version('1.24.0', commit='419b13b761ea39a8b1b9bc73097fb0359c59f1c2') version('1.18.1', commit='81c581bf76392efdc8ba237ca2e42ca1dba788ca') version('1.16.0', commit='0e38e8df4af87dff6c27a23af2867661998c0d85') diff --git a/var/spack/repos/builtin/packages/r-snpstats/package.py b/var/spack/repos/builtin/packages/r-snpstats/package.py index 30885401312b6b..78d5a47daf00df 100644 --- a/var/spack/repos/builtin/packages/r-snpstats/package.py +++ b/var/spack/repos/builtin/packages/r-snpstats/package.py @@ -7,15 +7,15 @@ class RSnpstats(RPackage): - """SnpMatrix and XSnpMatrix classes and methods + """SnpMatrix and XSnpMatrix classes and methods. Classes and statistical methods for large SNP association studies. This extends the earlier snpMatrix package, allowing for uncertainty in genotypes.""" - homepage = "https://bioconductor.org/packages/snpStats" - git = "https://git.bioconductor.org/packages/snpStats.git" + bioc = "snpStats" + version('1.44.0', commit='72392dab4e75de2da459b1e95f1d48947811597b') version('1.40.0', commit='5fcac6f3b4bb6f45c19dff8f3089b693b74a56ce') version('1.34.0', commit='e31cdfb18a9e12d70d6a3e8e6fbf7cf8faa3ea5b') version('1.32.0', commit='7c31158183b4e39da6dc30c7da275acc36b2e32f') diff --git a/var/spack/repos/builtin/packages/r-som/package.py b/var/spack/repos/builtin/packages/r-som/package.py index 7ff1e582325351..2b50810821de47 100644 --- a/var/spack/repos/builtin/packages/r-som/package.py +++ b/var/spack/repos/builtin/packages/r-som/package.py @@ -7,11 +7,11 @@ class RSom(RPackage): - """Self-Organizing Map (with application in gene clustering).""" + """Self-Organizing Map. - homepage = "https://cloud.r-project.org/package=som" - url = "https://cloud.r-project.org/src/contrib/som_0.3-5.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/som" + Self-Organizing Map (with application in gene clustering).""" + + cran = "som" version('0.3-5.1', sha256='a6f4c0e5b36656b7a8ea144b057e3d7642a8b71972da387a7133f3dd65507fb9') version('0.3-5', sha256='f7672afaaffcf41a8b2dd50e4c76b3a640ea2ad099f18b5dfcf00389abf6ba07') diff --git a/var/spack/repos/builtin/packages/r-somaticsignatures/package.py b/var/spack/repos/builtin/packages/r-somaticsignatures/package.py index d83e517bd98b3c..d4f2f781a3fd3c 100644 --- a/var/spack/repos/builtin/packages/r-somaticsignatures/package.py +++ b/var/spack/repos/builtin/packages/r-somaticsignatures/package.py @@ -7,16 +7,16 @@ class RSomaticsignatures(RPackage): - """Somatic Signatures + """Somatic Signatures. The SomaticSignatures package identifies mutational signatures of single nucleotide variants (SNVs). It provides a infrastructure related to the methodology described in Nik-Zainal (2012, Cell), with flexibility in the matrix decomposition algorithms.""" - homepage = "https://bioconductor.org/packages/SomaticSignatures" - git = "https://git.bioconductor.org/packages/SomaticSignatures.git" + bioc = "SomaticSignatures" + version('2.30.0', commit='03f7ad707f6530fa7f62093f808884b6e83b0526') version('2.26.0', commit='9d4bed6e118ac76755ffb7abd058b09bac58a9d7') version('2.20.0', commit='dbedc30d92b600b3a17de596ebe38d15982c70c6') version('2.18.0', commit='facccd67eee5202fcbe6ad32e667546546e7ccff') @@ -35,7 +35,7 @@ class RSomaticsignatures(RPackage): depends_on('r-ggplot2', type=('build', 'run')) depends_on('r-ggbio', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) - depends_on('r-nmf', when='@2.26.0:', type=('build', 'run')) + depends_on('r-nmf', type=('build', 'run'), when='@2.26.0:') depends_on('r-pcamethods', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) depends_on('r-proxy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sourcetools/package.py b/var/spack/repos/builtin/packages/r-sourcetools/package.py index 33584b9195ba7c..e2e4086c2169ba 100644 --- a/var/spack/repos/builtin/packages/r-sourcetools/package.py +++ b/var/spack/repos/builtin/packages/r-sourcetools/package.py @@ -7,11 +7,13 @@ class RSourcetools(RPackage): - """Tools for Reading, Tokenizing and Parsing R Code.""" + """Tools for Reading, Tokenizing and Parsing R Code. - homepage = "https://cloud.r-project.org/package=sourcetools" - url = "https://cloud.r-project.org/src/contrib/sourcetools_0.1.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sourcetools" + Tools for the reading and tokenization of R code. The 'sourcetools' package + provides both an R and C++ interface for the tokenization of R code, and + helpers for interacting with the tokenized representation of R code.""" + + cran = "sourcetools" version('0.1.7', sha256='47984406efb3b3face133979ccbae9fefb7360b9a6ca1a1c11473681418ed2ca') version('0.1.6', sha256='c9f48d2f0b7f7ed0e7fecdf8e730b0b80c4d567f0e1e880d118b0944b1330c51') diff --git a/var/spack/repos/builtin/packages/r-sp/package.py b/var/spack/repos/builtin/packages/r-sp/package.py index 7496bd506434a1..404121017fa272 100644 --- a/var/spack/repos/builtin/packages/r-sp/package.py +++ b/var/spack/repos/builtin/packages/r-sp/package.py @@ -7,17 +7,16 @@ class RSp(RPackage): - """Classes and Methods for Spatial Data + """Classes and Methods for Spatial Data. Classes and methods for spatial data; the classes document where the spatial location information resides, for 2D or 3D data. Utility functions are provided, e.g. for plotting data as maps, spatial selection, as well as methods for retrieving coordinates, for subsetting, print, summary, etc.""" - homepage = "https://github.com/edzer/sp/" - url = "https://cloud.r-project.org/src/contrib/sp_1.2-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sp" + cran = "sp" + version('1.4-6', sha256='9aebb3ef2140e8984a67eb93d72f686b8707d48d82445db0c54ae895576ba226') version('1.4-5', sha256='6beeb216d540475cdead5f2c72d6c7ee400fe2423c1882d72cf57f6df58f09da') version('1.3-1', sha256='57988b53ba8acc35f3912d62feba4b929a0f757c6b54080c623c5d805e0cb59f') version('1.2-7', sha256='6d60e03e1abd30a7d4afe547d157ce3dd7a8c166fc5e407fd6d62ae99ff30460') diff --git a/var/spack/repos/builtin/packages/r-spacetime/package.py b/var/spack/repos/builtin/packages/r-spacetime/package.py index 247bdecb7564e5..d3b9f269c4758e 100644 --- a/var/spack/repos/builtin/packages/r-spacetime/package.py +++ b/var/spack/repos/builtin/packages/r-spacetime/package.py @@ -7,7 +7,7 @@ class RSpacetime(RPackage): - """Classes and Methods for Spatio-Temporal Data + """Classes and Methods for Spatio-Temporal Data. Classes and methods for spatio-temporal data, including space-time regular lattices, sparse lattices, irregular data, and trajectories; utility @@ -16,10 +16,10 @@ class RSpacetime(RPackage): subsetting, as well as for spatial/temporal/spatio-temporal matching or aggregation, retrieving coordinates, print, summary, etc.""" - homepage = "https://github.com/edzer/spacetime" - url = "https://cloud.r-project.org/src/contrib/spacetime_1.2-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spacetime" + cran = "spacetime" + version('1.2-6', sha256='8fd46606ed9589ffce19368d40004890f96e8fe77f13b546e6a2f8b9ced0dd81') + version('1.2-5', sha256='8f2acc3886780a902fb0476d6ab271e6640be1a1af4c7f9a21d8a2882fb72746') version('1.2-3', sha256='ca7c0b962d5da0741f6dd85b271d693598756e0eeeb364ada828dbb6d1b9b25b') version('1.2-2', sha256='1e9d3f92e5c4614a69c82a58bf0b5c829b4ed262bf1250bef943ae286056ea2d') diff --git a/var/spack/repos/builtin/packages/r-spades-addins/package.py b/var/spack/repos/builtin/packages/r-spades-addins/package.py index 668cc4e32edac0..3a1bb8b03f9360 100644 --- a/var/spack/repos/builtin/packages/r-spades-addins/package.py +++ b/var/spack/repos/builtin/packages/r-spades-addins/package.py @@ -7,20 +7,20 @@ class RSpadesAddins(RPackage): - """Development Tools for 'SpaDES' and 'SpaDES' Modules + """Development Tools for 'SpaDES' and 'SpaDES' Modules. Provides 'RStudio' addins for 'SpaDES' packages and 'SpaDES' module development. See '?SpaDES.addins' for an overview of the tools provided.""" - homepage = "https://spades-addins.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/SpaDES.addins_0.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SpaDES.addins" + cran = "SpaDES.addins" maintainers = ['dorton21'] + version('0.1.3', sha256='b77aef21d1c725f855fe6f03456187d3c8b8070d56d80b7e6733979b644e162e') version('0.1.2', sha256='0a16bd9423797a4b4ed66a5e669cdd7f6984a3f30aa1aadc078678ee2622367c') depends_on('r@3.3.0:', type=('build', 'run')) + depends_on('r@3.6:', type=('build', 'run'), when='@0.1.3:') depends_on('r-devtools', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-miniui@0.1.1:', type=('build', 'run')) 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 08b37dd3c65f5a..037c38f54ae050 100644 --- a/var/spack/repos/builtin/packages/r-spades-core/package.py +++ b/var/spack/repos/builtin/packages/r-spades-core/package.py @@ -7,30 +7,34 @@ class RSpadesCore(RPackage): - """Utilities for Developing and Running Spatially Explicit Discrete Event Models + """Utilities for Developing and Running Spatially Explicit Discrete Event + Models. Provides the core framework for a discrete event system (DES) to implement acomplete data-to-decisions, reproducible workflow. The core DES components facilitate modularity, and easily enable the user to include additional - functionality by running user-built modules. Includes conditional scheduling, - restart after interruption, packaging of reusable modules, tools for - developing arbitrary automated workflows, automated interweaving of modules - of different temporal resolution, and tools for visualizing and understanding - the DES project.""" + functionality by running user-built modules. Includes conditional + scheduling, restart after interruption, packaging of reusable modules, + tools for developing arbitrary automated workflows, automated interweaving + of modules of different temporal resolution, and tools for visualizing and + understanding the DES project.""" - homepage = "https://spades-core.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/SpaDES.core_1.0.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SpaDES.core" + cran = "SpaDES.core" maintainers = ['dorton21'] + version('1.0.10', sha256='05e20f7d9aeef9ba68e50e993ef3027b8c85afc5e3f83f5ecaee9d1a7873e379') + version('1.0.9', sha256='1176a41a1af334388c1b16ff4ed9a6f30007bb5ed1fa14d798c59461042537dd') version('1.0.5', sha256='c8b18cb5f932ea57f3cb3c7f2a302cbe7e06c875da7cd3928300d6003602f0a6') depends_on('r@3.6:', type=('build', 'run')) + depends_on('r@4.0:', type=('build', 'run'), when='@1.0.10:') 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-crayon', type=('build', 'run')) 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-igraph@1.0.1:', type=('build', 'run')) depends_on('r-qs@0.21.1:', type=('build', 'run')) 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 b34cf46146794e..3b6066be594244 100644 --- a/var/spack/repos/builtin/packages/r-spades-tools/package.py +++ b/var/spack/repos/builtin/packages/r-spades-tools/package.py @@ -7,23 +7,23 @@ class RSpadesTools(RPackage): - """Tools for Spatially Explicit Discrete Event Simulation (SpaDES) Models + """Tools for Spatially Explicit Discrete Event Simulation (SpaDES) Models. - Provides GIS and map utilities, plus additional modeling tools for developing - cellular automata, dynamic raster models, and agent based models in 'SpaDES'. - Included are various methods for spatial spreading, spatial agents, GIS - operations, random map generation, and others. See '?SpaDES.tools' for an - categorized overview of these additional tools.""" + Provides GIS and map utilities, plus additional modeling tools for + developing cellular automata, dynamic raster models, and agent based models + in 'SpaDES'. Included are various methods for spatial spreading, spatial + agents, GIS operations, random map generation, and others. See + '?SpaDES.tools' for an categorized overview of these additional tools.""" - homepage = "https://spades-tools.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/SpaDES.tools_0.3.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SpaDES.tools" + cran = "SpaDES.tools" maintainers = ['dorton21'] + version('0.3.9', sha256='84dc47f55ded58746dcb943fde97fa4a4b852e1d2f45949ab1914cf8454e00f3') version('0.3.6', sha256='661f8ee792874e7447be78103775b63f18ec69e773a7b275dd977adb406dd3e5') depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r@3.6:', type=('build', 'run'), when='@0.3.9:') 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')) @@ -35,5 +35,6 @@ class RSpadesTools(RPackage): depends_on('r-raster@2.5-8:', type=('build', 'run')) depends_on('r-rcpp@0.12.12:', type=('build', 'run')) depends_on('r-reproducible@0.2.0:', type=('build', 'run')) + depends_on('r-reproducible@1.2.7:', type=('build', 'run'), when='@0.3.9:') depends_on('r-rgeos', type=('build', 'run')) depends_on('r-sp@1.2-4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-spades/package.py b/var/spack/repos/builtin/packages/r-spades/package.py index 1ac55dfd284a92..2d67db5d68001c 100644 --- a/var/spack/repos/builtin/packages/r-spades/package.py +++ b/var/spack/repos/builtin/packages/r-spades/package.py @@ -7,23 +7,32 @@ class RSpades(RPackage): - """Develop and Run Spatially Explicit Discrete Event Simulation Models - - Metapackage for implementing a variety of event-based models, with a - focus on spatially explicit models. These include raster-based, - event-based, and agent-based models.""" - - homepage = "https://spades.predictiveecology.org/" - url = "https://cloud.r-project.org/src/contrib/SpaDES_2.0.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SpaDES" + """Develop and Run Spatially Explicit Discrete Event Simulation Models. + + Metapackage for implementing a variety of event-based models, with a focus + on spatially explicit models. These include raster-based, event-based, and + agent-based models. The core simulation components (provided by + 'SpaDES.core') are built upon a discrete event simulation (DES; see Matloff + (2011) ch 7.8.3 ) framework that + facilitates modularity, and easily enables the user to include additional + functionality by running user-built simulation modules (see also + 'SpaDES.tools'). Included are numerous tools to visualize rasters and other + maps (via 'quickPlot'), and caching methods for reproducible simulations + (via 'reproducible'). Tools for running simulation experiments are provided + by 'SpaDES.experiment'. Additional functionality is provided by the + 'SpaDES.addins' and 'SpaDES.shiny' packages.""" + + cran = "SpaDES" maintainers = ['dorton21'] + version('2.0.7', sha256='5b62e9d701aa178be57f22369a5d043c9793a1bd3dcd4acac18c5a6b906ed8a0') version('2.0.6', sha256='0fa59d1737c67abeb04eae894939bc4700f92d6c2cc2ec3489b4650720ede5a3') depends_on('r@3.6:', type=('build', 'run')) depends_on('r-quickplot', type=('build', 'run')) depends_on('r-reproducible@1.2.1.9007:', type=('build', 'run')) - depends_on('r-spades-addins', type=('build', 'run')) depends_on('r-spades-core@1.0.4:', type=('build', 'run')) depends_on('r-spades-tools', type=('build', 'run')) + + 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 fe5f113f321fb2..1bad55a1e37618 100644 --- a/var/spack/repos/builtin/packages/r-spam/package.py +++ b/var/spack/repos/builtin/packages/r-spam/package.py @@ -7,7 +7,7 @@ class RSpam(RPackage): - """SPArse Matrix + """SPArse Matrix. Set of functions for sparse matrix algebra. Differences with other sparse matrix packages are: (1) we only support (essentially) one sparse matrix @@ -17,10 +17,9 @@ class RSpam(RPackage): vignettes included in this package, see also Furrer and Sain (2010) ; see 'citation("spam")' for details.""" - homepage = "https://www.math.uzh.ch/pages/spam/" - url = "https://cloud.r-project.org/src/contrib/spam_2.3-0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spam" + cran = "spam" + version('2.8-0', sha256='d98177435b028d1c706d0197ea8132bfaffae6052c3ce6064a7f64178512d6aa') version('2.6-0', sha256='638fdd658e94f7544b46f6b6568b20a9f390bcd703aff572a3a5249fef66be5c') version('2.3-0.2', sha256='848fa95c0a71ac82af6344539af7b1c33563c687f06ead42851a68b621fff533') diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index 3fbec2c583fa2d..b9c7010be40604 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -7,16 +7,15 @@ class RSparsem(RPackage): - """Sparse Linear Algebra + """Sparse Linear Algebra. Some basic linear algebra functionality for sparse matrices is provided: including Cholesky decomposition and backsolving as well as standard R subsetting and Kronecker products.""" - homepage = "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html" - url = "https://cloud.r-project.org/src/contrib/SparseM_1.74.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SparseM" + cran = "SparseM" + version('1.81', sha256='bd838f381ace680fa38508ff70b3d83cb9ffa28ac1ab568509249bca53c34b33') version('1.78', sha256='d6b79ec881a10c91cb03dc23e6e783080ded9db4f2cb723755aa0d7d29a8b432') version('1.77', sha256='a9329fef14ae4fc646df1f4f6e57efb0211811599d015f7bc04c04285495d45c') version('1.76', sha256='c2c8e44376936a5fe6f09a37f3668016e66cbc687519cc952aa346a658a2b69b') diff --git a/var/spack/repos/builtin/packages/r-sparsematrixstats/package.py b/var/spack/repos/builtin/packages/r-sparsematrixstats/package.py index 04562ed37c47a8..ab20069edbfbe3 100644 --- a/var/spack/repos/builtin/packages/r-sparsematrixstats/package.py +++ b/var/spack/repos/builtin/packages/r-sparsematrixstats/package.py @@ -7,7 +7,7 @@ class RSparsematrixstats(RPackage): - """Summary Statistics for Rows and Columns of Sparse Matrices + """Summary Statistics for Rows and Columns of Sparse Matrices. High performance functions for row and column operations on sparse matrices. For example: col / rowMeans2, col / rowMedians, col / rowVars @@ -15,12 +15,14 @@ class RSparsematrixstats(RPackage): format. This package is inspired by the matrixStats package by Henrik Bengtsson.""" - homepage = "https://bioconductor.org/packages/sparseMatrixStats/" - git = "https://git.bioconductor.org/packages/sparseMatrixStats" + bioc = "sparseMatrixStats" + version('1.6.0', commit='78627a842790af42b6634893087b2bb1f4ac0392') version('1.2.1', commit='9726f3d5e0f03b50c332d85d5e4c339c18b0494c') depends_on('r-matrixgenerics', type=('build', 'run')) + depends_on('r-matrixgenerics@1.5.3:', type=('build', 'run'), when='@1.6.0:') depends_on('r-rcpp', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) depends_on('r-matrixstats', type=('build', 'run')) + depends_on('r-matrixstats@0.60.0:', type=('build', 'run'), when='@1.6.0:') diff --git a/var/spack/repos/builtin/packages/r-spatial/package.py b/var/spack/repos/builtin/packages/r-spatial/package.py index d104a3f526319e..8d606714138088 100644 --- a/var/spack/repos/builtin/packages/r-spatial/package.py +++ b/var/spack/repos/builtin/packages/r-spatial/package.py @@ -7,16 +7,16 @@ class RSpatial(RPackage): - """Functions for Kriging and Point Pattern Analysis + """Functions for Kriging and Point Pattern Analysis. Functions for kriging and point pattern analysis.""" - homepage = "https://cloud.r-project.org/package=spatial" - url = "https://cloud.r-project.org/src/contrib/spatial_7.3-11.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spatial" + cran = "spatial" + version('7.3-15', sha256='e5613be94d6f5c1f54813dadc96e4a86b3417dea28106cc90cb24dfd6c3c8cef') version('7.3-12', sha256='7639039ee7407bd088e1b253376b2cb4fcdf4cc9124d6b48e4119d5cda872d63') version('7.3-11', sha256='624448d2ac22e1798097d09fc5dc4605908a33f490b8ec971fc6ea318a445c11') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r-mass', when='@:7.3-11', type=('build', 'run')) + + depends_on('r-mass', type=('build', 'run'), when='@:7.3-11') diff --git a/var/spack/repos/builtin/packages/r-spatialeco/package.py b/var/spack/repos/builtin/packages/r-spatialeco/package.py index 849bf5e7921999..89dd67eb615ca6 100644 --- a/var/spack/repos/builtin/packages/r-spatialeco/package.py +++ b/var/spack/repos/builtin/packages/r-spatialeco/package.py @@ -7,7 +7,7 @@ class RSpatialeco(RPackage): - """Spatial Analysis and Modelling Utilities + """Spatial Analysis and Modelling Utilities. Utilities to support spatial data manipulation, query, sampling and modelling. Functions include models for species population density, @@ -17,32 +17,35 @@ class RSpatialeco(RPackage): landscape metrics, auto-logistic model, sampling models, cluster optimization, statistical exploratory tools and raster-based metrics.""" - homepage = "https://cloud.r-project.org/package=spatialEco" - url = "https://cloud.r-project.org/src/contrib/spatialEco_1.3-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spatialEco" + cran = "spatialEco" + version('1.3-7', sha256='38688466d9a2a56675e2fe45cf69833a163133ad3afb6f95e9ac2e8eab221b7a') version('1.3-5', sha256='d4fb211124edf828333841c44a5af01165c53d89af460144214d81e3c13983c7') version('1.3-2', sha256='9dfa427ee8b112446b582f6739a1c40a6e3ad3d050f522082a28ce47c675e57a') version('1.3-1', sha256='ff12e26cc1bbf7934fbf712c99765d96ce6817e8055faa15a26d9ebade4bbf1c') version('1.3-0', sha256='cfa09673cb3bbed30b243082fc2d63ac09f48b9f072a18d32b95c2c29979d1d0') depends_on('r@3.6:', type=('build', 'run')) + depends_on('r@4.0:', type=('build', 'run'), when='@1.3-7:') depends_on('r-sp', type=('build', 'run')) depends_on('r-sf', type=('build', 'run')) depends_on('r-raster', type=('build', 'run')) - depends_on('r-spatstat', type=('build', 'run')) + depends_on('r-spatstat-geom', type=('build', 'run'), when='@1.3-7:') + depends_on('r-spatstat-core', type=('build', 'run'), when='@1.3-7:') depends_on('r-spdep', type=('build', 'run')) depends_on('r-rgeos', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) - depends_on('r-dplyr', when='@:1.3-2', type=('build', 'run')) - depends_on('r-exactextractr', when='@:1.3-2', type=('build', 'run')) - depends_on('r-rcurl', when='@:1.3-2', type=('build', 'run')) - depends_on('r-rms', when='@:1.3-2', type=('build', 'run')) - depends_on('r-yaimpute', when='@:1.3-2', type=('build', 'run')) - depends_on('r-spatialpack@0.3:', when='@:1.3-2', type=('build', 'run')) - depends_on('r-mgcv', when='@:1.3-2', type=('build', 'run')) - depends_on('r-envstats', when='@:1.3-2', type=('build', 'run')) - depends_on('r-cluster', when='@:1.3-2', type=('build', 'run')) - depends_on('r-readr', when='@:1.3-2', type=('build', 'run')) - depends_on('r-rann', when='@:1.3-2', type=('build', 'run')) - depends_on('r-maptools', when='@:1.3-2', type=('build', 'run')) + + 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-rcurl', type=('build', 'run'), when='@:1.3-2') + depends_on('r-rms', type=('build', 'run'), when='@:1.3-2') + depends_on('r-yaimpute', type=('build', 'run'), when='@:1.3-2') + depends_on('r-spatialpack@0.3:', type=('build', 'run'), when='@:1.3-2') + depends_on('r-mgcv', type=('build', 'run'), when='@:1.3-2') + depends_on('r-envstats', type=('build', 'run'), when='@:1.3-2') + depends_on('r-cluster', type=('build', 'run'), when='@:1.3-2') + depends_on('r-readr', type=('build', 'run'), when='@:1.3-2') + depends_on('r-rann', type=('build', 'run'), when='@:1.3-2') + depends_on('r-maptools', type=('build', 'run'), when='@:1.3-2') + depends_on('r-spatstat', type=('build', 'run'), when='@:1.3-5') diff --git a/var/spack/repos/builtin/packages/r-spatialpack/package.py b/var/spack/repos/builtin/packages/r-spatialpack/package.py index a6ff0d9247d530..1007dcbfa9f91c 100644 --- a/var/spack/repos/builtin/packages/r-spatialpack/package.py +++ b/var/spack/repos/builtin/packages/r-spatialpack/package.py @@ -7,7 +7,7 @@ class RSpatialpack(RPackage): - """Tools to assess the association between two spatial processes + """Tools to assess the association between two spatial processes. Tools to assess the association between two spatial processes. Currently, several methodologies are implemented: A modified t-test to perform @@ -17,14 +17,12 @@ class RSpatialpack(RPackage): and several others. Functions for image processing and computing the spatial association between images are also provided.""" - homepage = "https://cloud.r-project.org/package=SpatialPack" - url = "https://cloud.r-project.org/src/contrib/SpatialPack_0.3-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SpatialPack" + cran = "SpatialPack" version('0.3-8196', sha256='9027e1656db97b721a12f5eda46532c6a99b4a079299b8d12fb57d445b237b4d') version('0.3-8', sha256='a0e54b5dee3cd30a634e2d30380fe163942b672073fd909be888803332ed5151') version('0.3', sha256='4c80fc1c77bc97fc678e6e201ecf7f0f89dcf3417b3b497a28a3639e9b30bd8a') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@0.3-8196:', type=('build', 'run')) - depends_on('r-fastmatrix', when='@0.3-8196:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@0.3-8196:') + depends_on('r-fastmatrix', type=('build', 'run'), when='@0.3-8196:') diff --git a/var/spack/repos/builtin/packages/r-spatialreg/package.py b/var/spack/repos/builtin/packages/r-spatialreg/package.py index 2f926a99cfb37b..c4c3009386555a 100644 --- a/var/spack/repos/builtin/packages/r-spatialreg/package.py +++ b/var/spack/repos/builtin/packages/r-spatialreg/package.py @@ -7,7 +7,7 @@ class RSpatialreg(RPackage): - """Spatial Regression Analysis + """Spatial Regression Analysis. A collection of all the estimation functions for spatial cross-sectional models (on lattice/areal data using spatial weights matrices) contained up @@ -31,16 +31,16 @@ class RSpatialreg(RPackage): through to 'spatialreg', but will mask those in 'spatialreg'. From versions 1.2-*, the functions will be made defunct in 'spdep'.""" - homepage = "https://cloud.r-project.org/package=spatialreg" - url = "https://cloud.r-project.org/src/contrib/spatialreg_1.1-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spatialreg" + cran = "spatialreg" + version('1.2-1', sha256='4c40b6b331aa8818254633cfb80d4b9a03b2b6fac2c0104b3b99201d447ba081') version('1.1-5', sha256='ddbf0773bad2e99b306116ae99a57bf29eecf723d1735820935a6fb7f331b27d') version('1.1-3', sha256='7609cdfcdfe427d2643a0db6b5360be3f6d60ede8229436ab52092d1c9cf0480') depends_on('r@3.3.0:', type=('build', 'run')) depends_on('r-spdata', type=('build', 'run')) 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-coda', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-spatstat-core/package.py b/var/spack/repos/builtin/packages/r-spatstat-core/package.py new file mode 100644 index 00000000000000..e699eab73cfe09 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spatstat-core/package.py @@ -0,0 +1,57 @@ +# Copyright 2013-2022 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 import * + + +class RSpatstatCore(RPackage): + """Core Functionality of the 'spatstat' Family. + + Functionality for data analysis and modelling of spatial data, mainly + spatial point patterns, in the 'spatstat' family of packages. (Excludes + analysis of spatial data on a linear network, which is covered by the + separate package 'spatstat.linnet'.) Exploratory methods include quadrat + counts, K-functions and their simulation envelopes, nearest neighbour + distance and empty space statistics, Fry plots, pair correlation function, + kernel smoothed intensity, relative risk estimation with cross-validated + bandwidth selection, mark correlation functions, segregation indices, mark + dependence diagnostics, and kernel estimates of covariate effects. Formal + hypothesis tests of random pattern (chi-squared, Kolmogorov-Smirnov, Monte + Carlo, Diggle-Cressie-Loosmore-Ford, Dao-Genton, two-stage Monte Carlo) and + tests for covariate effects (Cox-Berman-Waller-Lawson, Kolmogorov-Smirnov, + ANOVA) are also supported. Parametric models can be fitted to point pattern + data using the functions ppm(), kppm(), slrm(), dppm() similar to glm(). + Types of models include Poisson, Gibbs and Cox point processes, + Neyman-Scott cluster processes, and determinantal point processes. Models + may involve dependence on covariates, inter-point interaction, cluster + formation and dependence on marks. Models are fitted by maximum likelihood, + logistic regression, minimum contrast, and composite likelihood methods. A + model can be fitted to a list of point patterns (replicated point pattern + data) using the function mppm(). The model can include random effects and + fixed effects depending on the experimental design, in addition to all the + features listed above. Fitted point process models can be simulated, + automatically. Formal hypothesis tests of a fitted model are supported + (likelihood ratio test, analysis of deviance, Monte Carlo tests) along with + basic tools for model selection (stepwise(), AIC()) and variable selection + (sdr). Tools for validating the fitted model include simulation envelopes, + residuals, residual plots and Q-Q plots, leverage and influence + diagnostics, partial residuals, and added variable plots.""" + + cran = "spatstat.core" + + version('2.3-2', sha256='7f4d6d997f9187eda71097a53917e7cbe03f8dcfb4e758d86a90fbe42c92f63c') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-spatstat-data@2.1-0:', type=('build', 'run')) + depends_on('r-spatstat-geom@2.3-0:', type=('build', 'run')) + depends_on('r-nlme', type=('build', 'run')) + depends_on('r-rpart', type=('build', 'run')) + depends_on('r-spatstat-utils@2.2-0:', type=('build', 'run')) + depends_on('r-spatstat-sparse@2.0-0:', type=('build', 'run')) + depends_on('r-mgcv', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run')) + depends_on('r-abind', type=('build', 'run')) + depends_on('r-tensor', type=('build', 'run')) + depends_on('r-goftest@1.2-2:', 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 44ba88d2132f89..b9ab00c448376d 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-data/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-data/package.py @@ -7,19 +7,19 @@ class RSpatstatData(RPackage): - """Datasets for 'spatstat' + """Datasets for 'spatstat' Family. - Contains all the datasets for the 'spatstat' package.""" + Contains all the datasets for the 'spatstat' family of packages.""" - homepage = "https://cloud.r-project.org/package=spatstat.data" - url = "https://cloud.r-project.org/src/contrib/spatstat.data_1.4-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spatstat.data" + cran = "spatstat.data" + version('2.1-2', sha256='bbd118a8e6cd2c41abc764b9f2e798514070862f11e3f2080c27f72268271ae5') version('1.7-0', sha256='bbc192d43f2b37b308566694cb48ecdbbc4f20ef44b6fc7636564a717a03c12f') version('1.4-3', sha256='8955b6ac40cc7d0d89e02334bb46f4c223ff0755e5818f132fee753e77918ea2') version('1.4-0', sha256='121e5bb92beb7ccac920f921e760f429fd71bcfe11cb9b07a7e7326c7a72ec8c') depends_on('r@3.3:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.7-0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.7-0:') depends_on('r-spatstat-utils', type=('build', 'run')) + depends_on('r-spatstat-utils@2.1-0:', type=('build', 'run'), when='@2.1-2:') depends_on('r-matrix', 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 new file mode 100644 index 00000000000000..5b540b6a16db94 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spatstat-geom/package.py @@ -0,0 +1,35 @@ +# Copyright 2013-2022 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 import * + + +class RSpatstatGeom(RPackage): + """Geometrical Functionality of the 'spatstat' Family. + + Defines spatial data types and supports geometrical operations on them. + Data types include point patterns, windows (domains), pixel images, line + segment patterns, tessellations and hyperframes. Capabilities include + creation and manipulation of data (using command line or graphical + interaction), plotting, geometrical operations (rotation, shift, rescale, + affine transformation), convex hull, discretisation and pixellation, + Dirichlet tessellation, Delaunay triangulation, pairwise distances, + nearest-neighbour distances, distance transform, morphological operations + (erosion, dilation, closing, opening), quadrat counting, geometrical + measurement, geometrical covariance, colour maps, calculus on spatial + domains, Gaussian blur, level sets of images, transects of images, + intersections between objects, minimum distance matching. (Excludes spatial + data on a network, which are supported by the package + 'spatstat.linnet'.)""" + + cran = "spatstat.geom" + + version('2.3-1', sha256='f23e58d05a6d6bfab1345951fa528a9865f2a744e162fe4456161e1b0b5172c0') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-spatstat-data@2.0-0:', type=('build', 'run')) + depends_on('r-spatstat-utils@2.2-0:', type=('build', 'run')) + 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 new file mode 100644 index 00000000000000..4a76a1e408a88e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py @@ -0,0 +1,50 @@ +# Copyright 2013-2022 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 import * + + +class RSpatstatLinnet(RPackage): + """Linear Networks Functionality of the 'spatstat' Family. + + Defines types of spatial data on a linear network and provides + functionality for geometrical operations, data analysis and modelling of + data on a linear network, in the 'spatstat' family of packages. Contains + definitions and support for linear networks, including creation of + networks, geometrical measurements, topological connectivity, geometrical + operations such as inserting and deleting vertices, intersecting a network + with another object, and interactive editing of networks. Data types + defined on a network include point patterns, pixel images, functions, and + tessellations. Exploratory methods include kernel estimation of intensity + on a network, K-functions and pair correlation functions on a network, + simulation envelopes, nearest neighbour distance and empty space distance, + relative risk estimation with cross-validated bandwidth selection. Formal + hypothesis tests of random pattern (chi-squared, Kolmogorov-Smirnov, Monte + Carlo, Diggle-Cressie-Loosmore-Ford, Dao-Genton, two-stage Monte Carlo) and + tests for covariate effects (Cox-Berman-Waller-Lawson, Kolmogorov-Smirnov, + ANOVA) are also supported. Parametric models can be fitted to point pattern + data using the function lppm() similar to glm(). Only Poisson models are + implemented so far. Models may involve dependence on covariates and + dependence on marks. Models are fitted by maximum likelihood. Fitted point + process models can be simulated, automatically. Formal hypothesis tests of + a fitted model are supported (likelihood ratio test, analysis of deviance, + Monte Carlo tests) along with basic tools for model selection (stepwise(), + AIC()) and variable selection (sdr). Tools for validating the fitted model + include simulation envelopes, residuals, residual plots and Q-Q plots, + leverage and influence diagnostics, partial residuals, and added variable + plots. Random point patterns on a network can be generated using a variety + of models.""" + + cran = "spatstat.linnet" + + version('2.3-1', sha256='119ba6e3da651aa9594f70a7a35349209534215aa640c2653aeddc6aa25038c3') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-spatstat-data@2.1-0:', type=('build', 'run')) + depends_on('r-spatstat-geom@2.3-0:', type=('build', 'run')) + depends_on('r-spatstat-core@2.3-0:', type=('build', 'run')) + depends_on('r-spatstat-utils@2.2-0:', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run')) + depends_on('r-spatstat-sparse@2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py b/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py new file mode 100644 index 00000000000000..1fd525ef3a1829 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2022 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 import * + + +class RSpatstatSparse(RPackage): + """Sparse Three-Dimensional Arrays and Linear Algebra Utilities. + + Defines sparse three-dimensional arrays and supports standard operations on + them. The package also includes utility functions for matrix calculations + that are common in statistics, such as quadratic forms.""" + + cran = "spatstat.sparse" + + version('2.1-0', sha256='0019214418668cba9f01ee5901ed7f4dba9cfee5ff62d5c7e1c914adfbea0e91') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run')) + depends_on('r-abind', type=('build', 'run')) + depends_on('r-tensor', type=('build', 'run')) + depends_on('r-spatstat-utils@2.1-0:', type=('build', 'run')) 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 c8042473c3085f..3e0ed0e1c7a8e4 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-utils/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-utils/package.py @@ -7,15 +7,14 @@ class RSpatstatUtils(RPackage): - """Utility Functions for 'spatstat' + """Utility Functions for 'spatstat'. Contains utility functions for the 'spatstat' package which may also be useful for other purposes.""" - homepage = "https://cloud.r-project.org/package=spatstat.utils" - url = "https://cloud.r-project.org/src/contrib/spatstat.utils_1.17-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spatstat.utils" + cran = "spatstat.utils" + version('2.3-0', sha256='5f096ce5a201482d61e6d6859be7d40a55705ba5c6ebadd4875367ef9cb0db1a') version('1.20-2', sha256='62c2413f989965a9fa6395742a605004b736a27c24304e6ffaebf2134019ce18') version('1.17-0', sha256='39cd683ed7f41d8adc9e28af073d91b244aa1cf5ad966dfbb396ee3ee79f0922') version('1.15-0', sha256='90e07d730b6939f47f93c939afae10874b2c82bd402960ede4133de67dca2a0c') diff --git a/var/spack/repos/builtin/packages/r-spatstat/package.py b/var/spack/repos/builtin/packages/r-spatstat/package.py index a636985163d995..eeb31eebf8bb04 100644 --- a/var/spack/repos/builtin/packages/r-spatstat/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat/package.py @@ -7,26 +7,67 @@ class RSpatstat(RPackage): - """Comprehensive open-source toolbox for - analysing Spatial Point Patterns. - """ + """Spatial Point Pattern Analysis, Model-Fitting, Simulation, Tests. - homepage = "https://cloud.r-project.org/package=spatstat" - url = "https://cloud.r-project.org/src/contrib/spatstat_1.64-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spatstat" + Comprehensive open-source toolbox for analysing Spatial Point Patterns. + Focused mainly on two-dimensional point patterns, including + multitype/marked points, in any spatial region. Also supports + three-dimensional point patterns, space-time point patterns in any number + of dimensions, point patterns on a linear network, and patterns of other + geometrical objects. Supports spatial covariate data such as pixel images. + Contains over 2000 functions for plotting spatial data, exploratory data + analysis, model-fitting, simulation, spatial sampling, model diagnostics, + and formal inference. Data types include point patterns, line segment + patterns, spatial windows, pixel images, tessellations, and linear + networks. Exploratory methods include quadrat counts, K-functions and their + simulation envelopes, nearest neighbour distance and empty space + statistics, Fry plots, pair correlation function, kernel smoothed + intensity, relative risk estimation with cross-validated bandwidth + selection, mark correlation functions, segregation indices, mark dependence + diagnostics, and kernel estimates of covariate effects. Formal hypothesis + tests of random pattern (chi-squared, Kolmogorov-Smirnov, Monte Carlo, + Diggle-Cressie-Loosmore-Ford, Dao-Genton, two-stage Monte Carlo) and tests + for covariate effects (Cox-Berman-Waller-Lawson, Kolmogorov-Smirnov, ANOVA) + are also supported. Parametric models can be fitted to point pattern data + using the functions ppm(), kppm(), slrm(), dppm() similar to glm(). Types + of models include Poisson, Gibbs and Cox point processes, Neyman-Scott + cluster processes, and determinantal point processes. Models may involve + dependence on covariates, inter-point interaction, cluster formation and + dependence on marks. Models are fitted by maximum likelihood, logistic + regression, minimum contrast, and composite likelihood methods. A model can + be fitted to a list of point patterns (replicated point pattern data) using + the function mppm(). The model can include random effects and fixed effects + depending on the experimental design, in addition to all the features + listed above. Fitted point process models can be simulated, automatically. + Formal hypothesis tests of a fitted model are supported (likelihood ratio + test, analysis of deviance, Monte Carlo tests) along with basic tools for + model selection (stepwise(), AIC()) and variable selection (sdr). Tools for + validating the fitted model include simulation envelopes, residuals, + residual plots and Q-Q plots, leverage and influence diagnostics, partial + residuals, and added variable plots.""" + cran = "spatstat" + + version('2.3-0', sha256='da02443722f2c7ef9d59a2799b7b8002c94cecf73f2b0d2b29280d39f49c4c06') version('1.64-1', sha256='ca3fc7d0d6b7a83fd045a7502bf03c6871fa1ab2cf411647c438fd99b4eb551a') version('1.63-3', sha256='07b4a1a1b37c91944f31779dd789598f4a5ad047a3de3e9ec2ca99b9e9565528') depends_on('r@3.3:', type=('build', 'run')) - depends_on('r-rpart', type=('build', 'run')) - depends_on('r-nlme', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.3-0:') 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-geom@2.3-0:', type=('build', 'run'), when='@2.3-0:') + depends_on('r-spatstat-core@2.3-0:', type=('build', 'run'), when='@2.3-0:') + depends_on('r-spatstat-linnet@2.3-0:', type=('build', 'run'), when='@2.3-0:') depends_on('r-spatstat-utils@1.17:', type=('build', 'run')) - depends_on('r-mgcv', type=('build', 'run')) - depends_on('r-matrix', type=('build', 'run')) - depends_on('r-deldir@0.0-21:', type=('build', 'run')) - depends_on('r-abind', type=('build', 'run')) - depends_on('r-tensor', type=('build', 'run')) - depends_on('r-polyclip@1.10:', type=('build', 'run')) - depends_on('r-goftest@1.2-2:', type=('build', 'run')) + depends_on('r-spatstat-utils@2.2-0:', type=('build', 'run'), when='@2.3-0:') + + depends_on('r-rpart', type=('build', 'run'), when='@:1.64-1') + depends_on('r-nlme', type=('build', 'run'), when='@:1.64-1') + depends_on('r-mgcv', type=('build', 'run'), when='@:1.64-1') + depends_on('r-matrix', type=('build', 'run'), when='@:1.64-1') + depends_on('r-deldir@0.0-21:', type=('build', 'run'), when='@:1.64-1') + depends_on('r-abind', type=('build', 'run'), when='@:1.64-1') + depends_on('r-tensor', type=('build', 'run'), when='@:1.64-1') + depends_on('r-polyclip@1.10:', type=('build', 'run'), when='@:1.64-1') + depends_on('r-goftest@1.2-2:', 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 179a28b1dd6bbd..cb12570d1ed252 100644 --- a/var/spack/repos/builtin/packages/r-spdata/package.py +++ b/var/spack/repos/builtin/packages/r-spdata/package.py @@ -7,7 +7,7 @@ class RSpdata(RPackage): - """Datasets for Spatial Analysis + """Datasets for Spatial Analysis. Diverse spatial datasets for demonstrating, benchmarking and teaching spatial data analysis. It includes R data of class sf (defined by the @@ -18,13 +18,12 @@ class RSpdata(RPackage): analysis techniques. cycle_hire() and cycle_hire_osm(), for example, is designed to illustrate point pattern analysis techniques.""" - homepage = "https://github.com/Nowosad/spData" - url = "https://cloud.r-project.org/src/contrib/spData_0.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/spData" + cran = "spData" + version('2.0.1', sha256='c635a3e2e5123b4cdb2e6877b9b09e3d50169e1512a53b2ba2db7fbe63b990fc') version('0.3.8', sha256='7a61268db4fdbfb004b77d36e953cbb3fdfdac7e8bb6c500628ec6c592c79ad6') version('0.3.0', sha256='de24ea659541a6c795cd26a1f6a213e15061af9c97a24cba1c24ce30c6c24c98') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r-sp', when='@0.3.8:', type=('build', 'run')) - depends_on('r-raster', when='@0.3.8:', type=('build', 'run')) + depends_on('r-sp', type=('build', 'run'), when='@0.3.8:') + depends_on('r-raster', type=('build', 'run'), when='@0.3.8:') diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py index 14e1373776776e..576e31422de255 100644 --- a/var/spack/repos/builtin/packages/r-spdep/package.py +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -7,7 +7,7 @@ class RSpdep(RPackage): - """Spatial Dependence: Weighting Schemes, Statistics + """Spatial Dependence: Weighting Schemes, Statistics. A collection of functions to create spatial weights matrix objects from polygon 'contiguities', from point patterns by distance and tessellations, @@ -19,26 +19,30 @@ class RSpdep(RPackage): statistic, Empirical Bayes estimates and 'Assuncao/Reis' (1999) .""" - homepage = "https://www.jhsph.edu/agingandhealth/People/Faculty_personal_pages/Varadhan.html" - url = "https://cloud.r-project.org/src/contrib/SQUAREM_2017.10-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SQUAREM" + cran = "SQUAREM" version('2021.1', sha256='66e5e18ca29903e4950750bbd810f0f9df85811ee4195ce0a86d939ba8183a58') version('2017.10-1', sha256='9b89905b436f1cf3faa9e3dabc585a76299e729e85ca659bfddb4b7cba11b283') diff --git a/var/spack/repos/builtin/packages/r-squash/package.py b/var/spack/repos/builtin/packages/r-squash/package.py index eba0ad5f09511d..311ae25cdf633a 100644 --- a/var/spack/repos/builtin/packages/r-squash/package.py +++ b/var/spack/repos/builtin/packages/r-squash/package.py @@ -7,7 +7,7 @@ class RSquash(RPackage): - """Color-Based Plots for Multivariate Visualization + """Color-Based Plots for Multivariate Visualization. Functions for color-based visualization of multivariate data, i.e. colorgrams or heatmaps. Lower-level functions map numeric values to colors, @@ -15,9 +15,7 @@ class RSquash(RPackage): plotting functions generate a bivariate histogram, a dendrogram aligned with a color-coded matrix, a triangular distance matrix, and more.""" - homepage = "https://cloud.r-project.org/package=squash" - url = "https://cloud.r-project.org/src/contrib/squash_1.0.8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/squash" + cran = "squash" version('1.0.9', sha256='ff381c85071e3407574e3db28d789657f64e7d3f9d74ac123539de22ab8ac6f4') version('1.0.8', sha256='e6932c0a461d5c85f7180a31d18a3eb4f28afd6769efe251075a4de12de039f4') diff --git a/var/spack/repos/builtin/packages/r-sseq/package.py b/var/spack/repos/builtin/packages/r-sseq/package.py index 72f98ba17ddb5c..d6e42020b39801 100644 --- a/var/spack/repos/builtin/packages/r-sseq/package.py +++ b/var/spack/repos/builtin/packages/r-sseq/package.py @@ -8,7 +8,7 @@ class RSseq(RPackage): """Shrinkage estimation of dispersion in Negative Binomial models for RNA- - seq experiments with small sample size + seq experiments with small sample size. The purpose of this package is to discover the genes that are differentially expressed between two conditions in RNA-seq experiments. @@ -21,9 +21,9 @@ class RSseq(RPackage): calculated, and used to test the hypothesis that the expected expression of a gene in two conditions identically follow a NB distribution.""" - homepage = "https://bioconductor.org/packages/sSeq" - git = "https://git.bioconductor.org/packages/sSeq.git" + bioc = "sSeq" + version('1.32.0', commit='c0d3c305755d888f64d334a4ab5fa54c623054cf') version('1.28.0', commit='401f6805628bdf6579cc0e643b7ed54319f024be') version('1.22.0', commit='fa3895c9578edddca17b5d13a2678ee5830b85cc') version('1.20.1', commit='91f31440323612cb04beb44404ab0a1bcb3ad87d') diff --git a/var/spack/repos/builtin/packages/r-stabledist/package.py b/var/spack/repos/builtin/packages/r-stabledist/package.py index c7a5e1c00467e3..07b03af3e74459 100644 --- a/var/spack/repos/builtin/packages/r-stabledist/package.py +++ b/var/spack/repos/builtin/packages/r-stabledist/package.py @@ -7,13 +7,12 @@ class RStabledist(RPackage): - """Density, Probability and Quantile functions, and random number - generation for (skew) stable distributions, using the parametrizations of - Nolan.""" + """Stable Distribution Functions. - homepage = "https://www.rmetrics.org/" - url = "https://cloud.r-project.org/src/contrib/stabledist_0.7-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/stabledist" + Density, Probability and Quantile functions, and random number generation + for (skew) stable distributions, using the parametrizations of Nolan.""" + + cran = "stabledist" version('0.7-1', sha256='06c5704d3a3c179fa389675c537c39a006867bc6e4f23dd7e406476ed2c88a69') diff --git a/var/spack/repos/builtin/packages/r-stanheaders/package.py b/var/spack/repos/builtin/packages/r-stanheaders/package.py index 4632832ad90913..9e0f09531b4af7 100644 --- a/var/spack/repos/builtin/packages/r-stanheaders/package.py +++ b/var/spack/repos/builtin/packages/r-stanheaders/package.py @@ -7,10 +7,10 @@ class RStanheaders(RPackage): - """C++ Header Files for Stan + """C++ Header Files for Stan. - The C++ header files of the Stan project are provided by this package, - but it contains no R code, vignettes, or function documentation. There is a + The C++ header files of the Stan project are provided by this package, but + it contains no R code, vignettes, or function documentation. There is a shared object containing part of the CVODES library, but it is not accessible from R. StanHeaders is only useful for developers who want to utilize the LinkingTo directive of their package's DESCRIPTION file to @@ -25,9 +25,7 @@ class RStanheaders(RPackage): 'rstan' package provides user-facing R functions to parse, compile, test, estimate, and analyze Stan models.""" - homepage = "https://mc-stan.org/" - url = "https://cloud.r-project.org/src/contrib/StanHeaders_2.10.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/StanHeaders" + cran = "StanHeaders" version('2.21.0-7', sha256='27546e064f0e907e031d9185ad55245d118d82fbe3074ecb1d76fae8b9f2336b') version('2.21.0-6', sha256='a0282a054d0e6ab310ec7edcffa953b77c7e4a858d9ac7028aab1b4fb4ce8cf3') @@ -37,7 +35,7 @@ class RStanheaders(RPackage): version('2.10.0-2', sha256='ce4e335172bc65da874699302f6ba5466cdbcf69458c11954c0f131fc78b59b7') depends_on('r+X', type=('build', 'run')) - depends_on('r@3.4.0:', when='@2.18.0:', type=('build', 'run')) - depends_on('r-rcppparallel@5.0.1:', when='@2.21.0:', type=('build', 'run')) - depends_on('r-rcppeigen', when='@2.21.0:', 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-rcppeigen', type=('build', 'run'), when='@2.21.0:') depends_on('pandoc', type='build') diff --git a/var/spack/repos/builtin/packages/r-stargazer/package.py b/var/spack/repos/builtin/packages/r-stargazer/package.py index 15e1ae1c533ea3..9806d460e25f57 100644 --- a/var/spack/repos/builtin/packages/r-stargazer/package.py +++ b/var/spack/repos/builtin/packages/r-stargazer/package.py @@ -7,10 +7,12 @@ class RStargazer(RPackage): - """stargazer: Well-Formatted Regression and Summary Statistics Tables""" + """Well-Formatted Regression and Summary Statistics Tables. - homepage = "https://cloud.r-project.org/package=stargazer" - url = "https://cloud.r-project.org/src/contrib/stargazer_5.2.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/stargazer" + Produces LaTeX code, HTML/CSS code and ASCII text for well-formatted tables + that hold regression analysis results from several models side-by-side, as + well as summary statistics.""" + + cran = "stargazer" version('5.2.2', sha256='70eb4a13a6ac1bfb35af07cb8a63d501ad38dfd9817fc3fba6724260b23932de') diff --git a/var/spack/repos/builtin/packages/r-statmod/package.py b/var/spack/repos/builtin/packages/r-statmod/package.py index d6f1e6711ea573..6f8bbd85c7f461 100644 --- a/var/spack/repos/builtin/packages/r-statmod/package.py +++ b/var/spack/repos/builtin/packages/r-statmod/package.py @@ -7,7 +7,7 @@ class RStatmod(RPackage): - """Statistical Modeling + """Statistical Modeling. A collection of algorithms and functions to aid statistical modeling. Includes limiting dilution analysis (aka ELDA), growth curve comparisons, @@ -17,10 +17,9 @@ class RStatmod(RPackage): model functions including Tweedie and Digamma distributional families and a secure convergence algorithm.""" - homepage = "https://cloud.r-project.org/package=statmod" - url = "https://cloud.r-project.org/src/contrib/statmod_1.4.30.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/statmod" + cran = "statmod" + version('1.4.36', sha256='14e897c83d426caca4d920d3d5bead7ae9a679276b3cb2e227f299ad189d7bc2') version('1.4.35', sha256='de5e428f81c306849af47b9ae583362855e166b1da62893734f1154cb5b3f8fe') version('1.4.32', sha256='2f67a1cfa66126e6345f8a40564a3077d08f1748f17cb8c8fb05c94ed0f57e20') version('1.4.30', sha256='9d2c1722a85f53623a9ee9f73d835119ae22ae2b8ec7b50d675401e314ea641f') 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 f77a79c26a849f..108a571c11185b 100644 --- a/var/spack/repos/builtin/packages/r-statnet-common/package.py +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -7,20 +7,20 @@ class RStatnetCommon(RPackage): - """Common R Scripts and Utilities Used by the Statnet Project Software + """Common R Scripts and Utilities Used by the Statnet Project Software. Non-statistical utilities used by the software developed by the Statnet Project. They may also be of use to others.""" - homepage = "https://www.statnet.org" - url = "https://cloud.r-project.org/src/contrib/statnet.common_3.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/statnet.common" + cran = "statnet.common" + version('4.5.0', sha256='3cdb23db86f3080462f15e29bcf3e941590bc17ea719993b301199b22d6f882f') version('4.4.1', sha256='4ecf2b84718d7fb60f196215b4cf6f52cd6b26cc9148a6da6981b26e885509fd') version('4.3.0', sha256='834a3359eac967df0420eee416ae4983e3b502a3de56bb24f494a7ca4104e959') version('4.2.0', sha256='1176c3303436ebe858d02979cf0a0c33e4e2d1f3637516b4761d573ccd132461') version('3.3.0', sha256='d714c4e7b0cbf71b7a628af443f5be530e74ad1e21f6b04f1b1087f6d7e40fa4') - depends_on('r@3.5:', when='@4.2.0:', type=('build', 'run')) - depends_on('r-coda', when='@4.1.2:', type=('build', 'run')) - depends_on('r-rle', when='@4.4.1:', type=('build', 'run')) + depends_on('r@3.5:', type=('build', 'run'), when='@4.2.0:') + depends_on('r-coda', type=('build', 'run'), when='@4.1.2:') + + depends_on('r-rle', type=('build', 'run'), when='@4.4.1') diff --git a/var/spack/repos/builtin/packages/r-stringfish/package.py b/var/spack/repos/builtin/packages/r-stringfish/package.py index 4b9f4dc41c1e00..df8f03e61a686f 100644 --- a/var/spack/repos/builtin/packages/r-stringfish/package.py +++ b/var/spack/repos/builtin/packages/r-stringfish/package.py @@ -7,20 +7,20 @@ class RStringfish(RPackage): - """Alt String Implementation + """Alt String Implementation. Provides an extendable, performant and multithreaded 'alt-string' implementation backed by 'C++' vectors and strings.""" - homepage = "https://github.com/traversc/stringfish" - url = "https://cloud.r-project.org/src/contrib/stringfish_0.14.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/stringfish" + cran = "stringfish" maintainers = ['dorton21'] + version('0.15.5', sha256='9df21146a7710e5a9ab4bb53ebc231a580c798b7e541b8d78df53207283f8129') version('0.14.2', sha256='9373cfc715cda1527fd20179435977b8e59e19d8c5ef82a31e519f93fb624ced') - depends_on('gmake', type='build') depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r@3.0.2:', type=('build', 'run'), when='@0.15.5:') depends_on('r-rcpp@0.12.18.3:', type=('build', 'run')) depends_on('r-rcppparallel', type=('build', 'run')) + depends_on('gmake', type='build') diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index 9435431aaeec8b..f8de74aa615dd5 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -7,7 +7,7 @@ class RStringi(RPackage): - """Character String Processing Facilities + """Character String Processing Facilities. A multitude of character string/text/natural language processing tools: pattern searching (e.g., with 'Java'-like regular expressions or the @@ -18,9 +18,9 @@ class RStringi(RPackage): (International Components for Unicode) library - portable across all locales and platforms.""" - homepage = "https://stringi.gagolewski.com/" - cran = "stringi" + cran = "stringi" + version('1.7.6', sha256='0ea3d5afec5701977ff53de9afbaceb53b00aa34f5fb641cadc1eeb7759119ec') version('1.6.2', sha256='3a151dd9b982696370ac8df3920afe462f8abbd4e41b479ff8b66cfd7b602dae') version('1.5.3', sha256='224f1e8dedc962a676bc2e1f53016f6a129a0a38aa0f35daf6dece62ff714010') version('1.4.3', sha256='13cecb396b700f81af38746e97b550a1d9fda377ca70c78f6cdfc770d33379ed') @@ -30,8 +30,8 @@ class RStringi(RPackage): version('1.1.2', sha256='e50b7162ceb7ebae403475f6f8a76a39532a2abc82112db88661f48aa4b9218e') version('1.1.1', sha256='243178a138fe68c86384feb85ead8eb605e8230113d638da5650bca01e24e165') - depends_on('r@2.14:', when='@:1.5.3', type=('build', 'run')) - depends_on('r@3.1:', when='@1.6.1:', type=('build', 'run')) + depends_on('r@2.14:', type=('build', 'run')) + depends_on('r@3.1:', type=('build', 'run'), when='@1.6.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 de692e153a7571..84c116b4f16cc0 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -7,15 +7,15 @@ class RStringr(RPackage): - """A consistent, simple and easy to use set of wrappers around the - fantastic 'stringi' package. All function and argument names (and - positions) are consistent, all functions deal with "NA"'s and zero length - vectors in the same way, and the output from one function is easy to feed - into the input of another.""" + """Simple, Consistent Wrappers for Common String Operations. - homepage = "https://cloud.r-project.org/package=stringr" - url = "https://cloud.r-project.org/src/contrib/stringr_1.1.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/stringr" + A consistent, simple and easy to use set of wrappers around the fantastic + 'stringi' package. All function and argument names (and positions) are + consistent, all functions deal with "NA"'s and zero length vectors in the + same way, and the output from one function is easy to feed into the input + of another.""" + + cran = "stringr" version('1.4.0', sha256='87604d2d3a9ad8fd68444ce0865b59e2ffbdb548a38d6634796bbd83eeb931dd') version('1.3.1', sha256='7a8b8ea038e45978bd797419b16793f44f10c5355ad4c64b74d15276fef20343') @@ -26,4 +26,4 @@ class RStringr(RPackage): depends_on('r@3.1:', type=('build', 'run')) depends_on('r-stringi@1.1.7:', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-glue@1.2.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-glue@1.2.0:', type=('build', 'run'), when='@1.3.0:') diff --git a/var/spack/repos/builtin/packages/r-strucchange/package.py b/var/spack/repos/builtin/packages/r-strucchange/package.py index cac957af57e989..cb3962901cc962 100644 --- a/var/spack/repos/builtin/packages/r-strucchange/package.py +++ b/var/spack/repos/builtin/packages/r-strucchange/package.py @@ -7,7 +7,7 @@ class RStrucchange(RPackage): - """Testing, Monitoring, and Dating Structural Changes + """Testing, Monitoring, and Dating Structural Changes. Testing, monitoring and dating structural changes in (linear) regression models. strucchange features tests/methods from the generalized fluctuation @@ -19,9 +19,7 @@ class RStrucchange(RPackage): be estimated together with confidence intervals. Emphasis is always given to methods for visualizing the data.""" - homepage = "https://cloud.r-project.org/package=strucchange" - url = "https://cloud.r-project.org/src/contrib/strucchange_1.5-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/strucchange" + cran = "strucchange" version('1.5-2', sha256='7d247c5ae6f5a63c80e478799d009c57fb8803943aa4286d05f71235cc1002f8') version('1.5-1', sha256='740e2e20477b9fceeef767ae1002adc5ec397cb0f7daba5289a2c23b0dddaf31') diff --git a/var/spack/repos/builtin/packages/r-strucchangercpp/package.py b/var/spack/repos/builtin/packages/r-strucchangercpp/package.py new file mode 100644 index 00000000000000..b66777a8c0a9c4 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-strucchangercpp/package.py @@ -0,0 +1,31 @@ +# Copyright 2013-2022 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 import * + + +class RStrucchangercpp(RPackage): + """Testing, Monitoring, and Dating Structural Changes: C++ Version. + + A fast implementation with additional experimental features for testing, + monitoring and dating structural changes in (linear) regression models. + 'strucchangeRcpp' features tests/methods from the generalized fluctuation test + framework as well as from the F test (Chow test) framework. This includes + methods to fit, plot and test fluctuation processes (e.g. cumulative/moving + sum, recursive/moving estimates) and F statistics, respectively. These methods + are described in Zeileis et al. (2002) . Finally, + the breakpoints in regression models with structural changes can be estimated + together with confidence intervals, and their magnitude as well as the model + fit can be evaluated using a variety of statistical measures.""" + + cran = "strucchangeRcpp" + + version('1.5-3-1.0.4', sha256='f506fcb593ce4bacf1892de25154257d0fe02260ef956a75438c6330195cd86d') + + depends_on('r@2.10.0:', type=('build', 'run')) + depends_on('r-zoo', type=('build', 'run')) + depends_on('r-sandwich', type=('build', 'run')) + depends_on('r-rcpp@0.12.7:', type=('build', 'run')) + depends_on('r-rcpparmadillo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-styler/package.py b/var/spack/repos/builtin/packages/r-styler/package.py index 30db161bb16635..60f6bf58c1ffdf 100644 --- a/var/spack/repos/builtin/packages/r-styler/package.py +++ b/var/spack/repos/builtin/packages/r-styler/package.py @@ -7,19 +7,23 @@ class RStyler(RPackage): - """styler: Non-Invasive Pretty Printing of R Code""" + """Non-Invasive Pretty Printing of R Code. - homepage = "https://cloud.r-project.org/package=styler" - url = "https://cloud.r-project.org/src/contrib/styler_1.3.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/styler" + Pretty-prints R code without changing the user's formatting intent.""" + cran = "styler" + + version('1.6.2', sha256='a62fcc76aac851069f33874f9eaabdd580973b619cfc625d6ec910476015f75c') version('1.3.2', sha256='3fcf574382c607c2147479bad4f9fa8b823f54fb1462d19ec4a330e135a44ff1') depends_on('r-backports@1.1.0:', type=('build', 'run')) depends_on('r-cli@1.1.0:', type=('build', 'run')) + depends_on('r-glue', type=('build', 'run'), when='@1.6.2:') depends_on('r-magrittr@1.0.1:', type=('build', 'run')) + depends_on('r-magrittr@2.0.0:', type=('build', 'run'), when='@1.6.2:') depends_on('r-purrr@0.2.3:', type=('build', 'run')) 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-rematch2@2.0.1:', type=('build', 'run')) depends_on('r-rlang@0.1.1:', type=('build', 'run')) depends_on('r-rprojroot@1.1:', 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 7733c71587d692..5954badca07176 100644 --- a/var/spack/repos/builtin/packages/r-subplex/package.py +++ b/var/spack/repos/builtin/packages/r-subplex/package.py @@ -7,15 +7,14 @@ class RSubplex(RPackage): - """Unconstrained Optimization using the Subplex Algorithm + """Unconstrained Optimization using the Subplex Algorithm. The subplex algorithm for unconstrained optimization, developed by Tom Rowan .""" - homepage = "https://cloud.r-project.org/package=subplex" - url = "https://cloud.r-project.org/src/contrib/subplex_1.4-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/subplex" + cran = "subplex" + version('1.7', sha256='d5ecf4a484936d71cb294f08c3968ef5a8dcbdc861bfc0e97e3b1ab99afff887') version('1.6', sha256='0d05da1622fffcd20a01cc929fc6c2b7df40a8246e7018f7f1f3c175b774cbf9') version('1.5-4', sha256='ff94cf6b1560f78c31712c05bc2bc1b703339e09c7fc777ee94abf15fa7a8b81') version('1.5-2', sha256='6f8c3ccadf1ccd7f11f3eae28cec16eed3695f14e351b864d807dbaba6cd3ded') diff --git a/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py b/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py index 815a57a611bfaf..9477845f76b1bf 100644 --- a/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py +++ b/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py @@ -7,16 +7,16 @@ class RSummarizedexperiment(RPackage): - """SummarizedExperiment container + """SummarizedExperiment container. The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples.""" - homepage = "https://bioconductor.org/packages/SummarizedExperiment" - git = "https://git.bioconductor.org/packages/SummarizedExperiment.git" + bioc = "SummarizedExperiment" + version('1.24.0', commit='d37f19383d03c107a8a41c0df2326e28efe46b28') version('1.20.0', commit='874aa87a481e4076a0ec3369f55c9c0a1ab8025e') version('1.18.2', commit='e22fafe') version('1.14.1', commit='2c68d99e11c7345e5ed388370822ea48395c64a4') @@ -26,24 +26,26 @@ class RSummarizedexperiment(RPackage): version('1.6.5', commit='ec69cd5cfbccaef148a9f6abdfb3e22e888695d0') depends_on('r@3.2:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.24.0:') depends_on('r-matrixgenerics@1.1.3:', type=('build', 'run')) depends_on('r-genomicranges@1.27.22:', type=('build', 'run')) - depends_on('r-genomicranges@1.29.14:', when='@1.8.1:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.17:', when='@1.10.1:', type=('build', 'run')) - depends_on('r-genomicranges@1.33.6:', when='@1.12.0:', type=('build', 'run')) - depends_on('r-genomicranges@1.41.5:', when='@1.20.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.29.14:', type=('build', 'run'), when='@1.8.1:') + depends_on('r-genomicranges@1.31.17:', type=('build', 'run'), when='@1.10.1:') + depends_on('r-genomicranges@1.33.6:', type=('build', 'run'), when='@1.12.0:') + depends_on('r-genomicranges@1.41.5:', type=('build', 'run'), when='@1.20.0:') depends_on('r-biobase', type=('build', 'run')) depends_on('r-matrix', type=('build', 'run')) depends_on('r-biocgenerics@0.15.3:', type=('build', 'run')) + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@1.24.0:') depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.25:', when='@1.10.1:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@1.20.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.25:', type=('build', 'run'), when='@1.10.1:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@1.20.0:') depends_on('r-iranges@2.7.2:', type=('build', 'run')) - depends_on('r-iranges@2.11.17:', when='@1.8.1:', type=('build', 'run')) - depends_on('r-iranges@2.13.16:', when='@1.10.1:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@1.20.0:', type=('build', 'run')) + depends_on('r-iranges@2.11.17:', type=('build', 'run'), when='@1.8.1:') + depends_on('r-iranges@2.13.16:', type=('build', 'run'), when='@1.10.1:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@1.20.0:') depends_on('r-genomeinfodb@1.11.4:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.13.1:', when='@1.8.1:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.13.1:', type=('build', 'run'), when='@1.8.1:') depends_on('r-delayedarray@0.1.9:', type=('build', 'run')) - depends_on('r-delayedarray@0.3.20:', when='@1.8.1:', type=('build', 'run')) - depends_on('r-delayedarray@0.15.10:', when='@1.20.0:', type=('build', 'run')) + depends_on('r-delayedarray@0.3.20:', type=('build', 'run'), when='@1.8.1:') + depends_on('r-delayedarray@0.15.10:', type=('build', 'run'), when='@1.20.0:') diff --git a/var/spack/repos/builtin/packages/r-suppdists/package.py b/var/spack/repos/builtin/packages/r-suppdists/package.py index 1ff3dd4bd4a78d..7812fb7f2ad657 100644 --- a/var/spack/repos/builtin/packages/r-suppdists/package.py +++ b/var/spack/repos/builtin/packages/r-suppdists/package.py @@ -7,16 +7,17 @@ class RSuppdists(RPackage): - """Ten distributions supplementing those built into R. Inverse Gauss, + """Supplementary Distributions. + + Ten distributions supplementing those built into R. Inverse Gauss, Kruskal-Wallis, Kendall's Tau, Friedman's chi squared, Spearman's rho, maximum F ratio, the Pearson product moment correlation coefficient, Johnson distributions, normal scores and generalized hypergeometric distributions.""" - homepage = "https://cloud.r-project.org/package=SuppDists" - url = "https://cloud.r-project.org/src/contrib/SuppDists_1.1-9.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/SuppDists" + cran = "SuppDists" + version('1.1-9.7', sha256='6b5527e2635c0ff762eb7af8154704c85e66d7f79a9524089a5c98dfa94dab08') version('1.1-9.5', sha256='680b67145c07d44e200275e08e48602fe19cd99fb106c05422b3f4a244c071c4') depends_on('r@3.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-survey/package.py b/var/spack/repos/builtin/packages/r-survey/package.py index 810ddb96f0e08e..12ddda333ebf84 100644 --- a/var/spack/repos/builtin/packages/r-survey/package.py +++ b/var/spack/repos/builtin/packages/r-survey/package.py @@ -7,7 +7,7 @@ class RSurvey(RPackage): - """Analysis of Complex Survey Samples + """Analysis of Complex Survey Samples. Summary statistics, two-sample tests, rank tests, generalised linear models, cumulative link models, Cox models, loglinear models, and general @@ -17,21 +17,21 @@ class RSurvey(RPackage): calibration, and raking. Two-phase subsampling designs. Graphics. PPS sampling without replacement. Principal components, factor analysis.""" - homepage = "https://r-survey.r-forge.r-project.org/survey/" - url = "https://cloud.r-project.org/src/contrib/survey_3.30-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/survey" + cran = "survey" + version('4.1-1', sha256='05e89a1678a39e32bfb41af8a31d643b04fc4d2660a96e701825e6bffcd75a52') version('4.0', sha256='b053f40f4cfa90507ca524f72d3b3a4b4869def52f11f907a14f1c6d90063de1') version('3.36', sha256='90f32e9d2b52eacf881e6717a4b5edfc5a3beb5da516f8372293549589d79475') version('3.35-1', sha256='11e5ddde9c8c21dfaed0b1247036e068ad32782c76ff71f7937eb7585dd364db') version('3.30-3', sha256='be45d00b22d857e66905789031f2db1037505f80ce15d4b0ea84dabb03bc9e6d') depends_on('r@2.14.0:', type=('build', 'run')) - depends_on('r@2.16.0:', when='@3.32:3.34', type=('build', 'run')) - depends_on('r@3.1.0:', when='@3.35:', type=('build', 'run')) - depends_on('r-matrix', when='@3.31:', type=('build', 'run')) - depends_on('r-survival', when='@3.31:', type=('build', 'run')) - depends_on('r-lattice', when='@3.31:', type=('build', 'run')) - depends_on('r-minqa', when='@3.34:', type=('build', 'run')) - depends_on('r-numderiv', when='@3.34:', type=('build', 'run')) - depends_on('r-mitools@2.4:', when='@3.36:', type=('build', 'run')) + 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-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:') diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 7d82a5b22c2747..1f567e128199bf 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -7,16 +7,15 @@ class RSurvival(RPackage): - """Survival Analysis + """Survival Analysis. - Contains the core survival analysis routines, including definition of - Surv objects, Kaplan-Meier and Aalen-Johansen (multi-state) curves, Cox - models, and parametric accelerated failure time models.""" + Contains the core survival analysis routines, including definition of Surv + objects, Kaplan-Meier and Aalen-Johansen (multi-state) curves, Cox models, + and parametric accelerated failure time models.""" - homepage = "https://cloud.r-project.org/package=survival" - url = "https://cloud.r-project.org/src/contrib/survival_2.41-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/survival" + cran = "survival" + version('3.2-13', sha256='3fab9c0ba2c4e2b6a475207e2629a7f06a104c70093dfb768f50a7caac9a317f') version('3.2-7', sha256='5356cd73da7ecfda4042e8a8ae00d3531b106f7b39ca31a1843eadf288418a46') version('3.1-12', sha256='b62ed66eb646f3df13f7e9bf6571e3bfecae128c66491e174c8833cbef1bf21f') version('2.44-1.1', sha256='55b151e15fcd24ccb3acf60331c9a7ad82bc10f3841ab3be9bc2a37e9ee751b9') @@ -26,5 +25,6 @@ class RSurvival(RPackage): version('2.39-5', sha256='607170ebe36080d102e884cf13c3b29df01d6bb3b593258afffa67fee2a0ada7') depends_on('r@2.13.0:', type=('build', 'run')) - depends_on('r@3.4:', when='@3.1-12:', type=('build', 'run')) + depends_on('r@3.4:', type=('build', 'run'), when='@3.1-12:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@3.2-13:') depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sva/package.py b/var/spack/repos/builtin/packages/r-sva/package.py index 472f9bdd18f236..59ad4aeac5e38b 100644 --- a/var/spack/repos/builtin/packages/r-sva/package.py +++ b/var/spack/repos/builtin/packages/r-sva/package.py @@ -7,7 +7,7 @@ class RSva(RPackage): - """Surrogate Variable Analysis + """Surrogate Variable Analysis. The sva package contains functions for removing batch effects and other unwanted variation in high-throughput experiment. Specifically, the sva @@ -28,9 +28,9 @@ class RSva(RPackage): 2007 PLoS Genetics, 2008 PNAS or Leek et al. 2011 Nat. Reviews Genetics).""" - homepage = "https://bioconductor.org/packages/sva" - git = "https://git.bioconductor.org/packages/sva.git" + bioc = "sva" + version('3.42.0', commit='54c843cc46437be233ecb43b6aa868e968d71138') version('3.38.0', commit='5ded8ba649200ec4829051f86a59e1a2548a7ab8') version('3.32.1', commit='1b8286734d00533b49d9f1456b6523cc778bb744') version('3.30.1', commit='fdb98bc2299dc5213c62d83cb7c0b1c1b4912f0c') @@ -44,4 +44,4 @@ class RSva(RPackage): depends_on('r-biocparallel', type=('build', 'run')) depends_on('r-matrixstats', type=('build', 'run')) depends_on('r-limma', type=('build', 'run')) - depends_on('r-edger', when='@3.38.0:', type=('build', 'run')) + depends_on('r-edger', type=('build', 'run'), when='@3.38.0:') diff --git a/var/spack/repos/builtin/packages/r-svglite/package.py b/var/spack/repos/builtin/packages/r-svglite/package.py index 262ab0b37af7d7..62bfbd74b6e3fc 100644 --- a/var/spack/repos/builtin/packages/r-svglite/package.py +++ b/var/spack/repos/builtin/packages/r-svglite/package.py @@ -7,13 +7,12 @@ class RSvglite(RPackage): - """An 'SVG' Graphics Device + """An 'SVG' Graphics Device. A graphics device for R that produces 'Scalable Vector Graphics'. 'svglite' is a fork of the older 'RSvgDevice' package.""" - homepage = "https://svglite.r-lib.org/" - cran = "svglite" + cran = "svglite" version('2.0.0', sha256='76e625fe172a5b7ce99a67b6d631b037b3f7f0021cfe15f2e15e8851b89defa5') diff --git a/var/spack/repos/builtin/packages/r-sys/package.py b/var/spack/repos/builtin/packages/r-sys/package.py index 4348819ff46922..7cf54874536cda 100644 --- a/var/spack/repos/builtin/packages/r-sys/package.py +++ b/var/spack/repos/builtin/packages/r-sys/package.py @@ -7,17 +7,15 @@ class RSys(RPackage): - """Powerful and Reliable Tools for Running System Commands in R + """Powerful and Reliable Tools for Running System Commands in R. - Drop-in replacements for the base system2() function with fine control - and consistent behavior across platforms. Supports clean interruption, - timeout, background tasks, and streaming STDIN / STDOUT / STDERR over - binary or text connections. Arguments on Windows automatically get encoded - and quoted to work on different locales.""" + Drop-in replacements for the base system2() function with fine control and + consistent behavior across platforms. Supports clean interruption, timeout, + background tasks, and streaming STDIN / STDOUT / STDERR over binary or text + connections. Arguments on Windows automatically get encoded and quoted to + work on different locales.""" - homepage = "https://github.com/jeroen/sys#readme" - url = "https://cloud.r-project.org/src/contrib/sys_3.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/sys" + cran = "sys" 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 3fc84c1fef5942..fe28f554a5262a 100644 --- a/var/spack/repos/builtin/packages/r-systemfonts/package.py +++ b/var/spack/repos/builtin/packages/r-systemfonts/package.py @@ -7,7 +7,7 @@ class RSystemfonts(RPackage): - """System Native Font Finding + """System Native Font Finding. Provides system native access to the font catalogue. As font handling varies between systems it is difficult to correctly locate installed fonts @@ -17,9 +17,9 @@ class RSystemfonts(RPackage): use is intended to be from compiled code but 'systemfonts' also provides access from R.""" - homepage = "https://github.com/r-lib/systemfonts" - cran = "systemfonts" + cran = "systemfonts" + version('1.0.3', sha256='647c99d5ea6f90a49768ea7b10b39816af6be85168475273369fd973a20dbbba') version('1.0.1', sha256='401db4d9e78e3a5e00b7a0b4fbad7fbb1c584734469b65fe5b7ebe1851c7a797') depends_on('r@3.2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-tarifx/package.py b/var/spack/repos/builtin/packages/r-tarifx/package.py index 607db87f1614b9..b00219845b7a72 100644 --- a/var/spack/repos/builtin/packages/r-tarifx/package.py +++ b/var/spack/repos/builtin/packages/r-tarifx/package.py @@ -7,13 +7,11 @@ class RTarifx(RPackage): - """Collection of Utility and Convenience Functions + """Collection of Utility and Convenience Functions. A collection of various utility and convenience functions.""" - homepage = "https://cloud.r-project.org/package=taRifx" - url = "https://cloud.r-project.org/src/contrib/taRifx_1.0.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/taRifx" + cran = "taRifx" version('1.0.6.2', sha256='89d031db00a94ae57c7ace0d9aa39ba2f960f96fd48d2d1e4c7ebb62a2969b15') version('1.0.6.1', sha256='d4c832b26d476a395ddf8349c42613270023c8bbf52a274d280be6284c11d7e2') diff --git a/var/spack/repos/builtin/packages/r-taxizedb/package.py b/var/spack/repos/builtin/packages/r-taxizedb/package.py index 984793a6e59c97..ca40cd557da2f7 100644 --- a/var/spack/repos/builtin/packages/r-taxizedb/package.py +++ b/var/spack/repos/builtin/packages/r-taxizedb/package.py @@ -7,16 +7,14 @@ class RTaxizedb(RPackage): - """Tools for Working with 'Taxonomic' Databases + """Tools for Working with 'Taxonomic' Databases. Tools for working with 'taxonomic' databases, including utilities for downloading databases, loading them into various 'SQL' databases, cleaning up files, and providing a 'SQL' connection that can be used to do 'SQL' queries directly or used in 'dplyr'.""" - homepage = "https://cloud.r-project.org/package=taxizedb" - url = "https://cloud.r-project.org/src/contrib/taxizedb_0.1.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/taxizedb/" + cran = "taxizedb" version('0.3.0', sha256='5f28338a233f0021097147e74c5f83107e5847de3413eceb308208e39af9fcb4') version('0.1.4', sha256='5a40569a2b5abe56201f112a10220150353412df39b7e8d21ea8698f424cf295') @@ -25,11 +23,12 @@ class RTaxizedb(RPackage): depends_on('r-dbi@0.6-1:', type=('build', 'run')) depends_on('r-rsqlite@1.1.2:', type=('build', 'run')) depends_on('r-dplyr@0.7.0:', type=('build', 'run')) - depends_on('r-tibble', when='@0.3.0:', type=('build', 'run')) - depends_on('r-rlang', when='@0.3.0:', type=('build', 'run')) - depends_on('r-readr@1.1.1:', when='@0.3.0:', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run'), when='@0.3.0:') + depends_on('r-rlang', type=('build', 'run'), when='@0.3.0:') + depends_on('r-readr@1.1.1:', type=('build', 'run'), when='@0.3.0:') depends_on('r-dbplyr@1.0.0:', type=('build', 'run')) depends_on('r-magrittr@1.5:', type=('build', 'run')) depends_on('r-hoardr@0.1.0:', type=('build', 'run')) - depends_on('r-rpostgresql@0.4.1:', when='@:0.1.4', type=('build', 'run')) - depends_on('r-rmysql@0.10.11:', when='@:0.1.4', type=('build', 'run')) + + depends_on('r-rpostgresql@0.4.1:', type=('build', 'run'), when='@:0.1.4') + depends_on('r-rmysql@0.10.11:', type=('build', 'run'), when='@:0.1.4') diff --git a/var/spack/repos/builtin/packages/r-tclust/package.py b/var/spack/repos/builtin/packages/r-tclust/package.py index 1e864a9a182d62..ec7828d2ea7835 100644 --- a/var/spack/repos/builtin/packages/r-tclust/package.py +++ b/var/spack/repos/builtin/packages/r-tclust/package.py @@ -7,16 +7,14 @@ class RTclust(RPackage): - """Robust Trimmed Clustering + """Robust Trimmed Clustering. Provides functions for robust trimmed clustering. The methods are described in Garcia-Escudero (2008) , Fritz et al. (2012) , Garcia-Escudero et al. (2011) and others.""" - homepage = "https://cloud.r-project.org/package=tclust" - url = "https://cloud.r-project.org/src/contrib/tclust_1.3-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tclust" + cran = "tclust" version('1.4-2', sha256='95dcd07dbd16383f07f5cea8561e7f3bf314e4a7483879841103b149fc8c65d9') version('1.4-1', sha256='4b0be612c8ecd7b4eb19a44ab6ac8f5d40515600ae1144c55989b6b41335ad9e') diff --git a/var/spack/repos/builtin/packages/r-teachingdemos/package.py b/var/spack/repos/builtin/packages/r-teachingdemos/package.py index 3782db8e6c5051..8a79786df96818 100644 --- a/var/spack/repos/builtin/packages/r-teachingdemos/package.py +++ b/var/spack/repos/builtin/packages/r-teachingdemos/package.py @@ -13,9 +13,7 @@ class RTeachingdemos(RPackage): statistical concepts, or on your own to better understand the concepts or the programming.""" - homepage = "https://cloud.r-project.org/package=TeachingDemos" - url = "https://cloud.r-project.org/src/contrib/TeachingDemos_2.10.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/TeachingDemos" + cran = "TeachingDemos" version('2.12', sha256='3e75405ce1affa406d6df85e06f96381412bc7a2810b25d8c81bfe64c4698644') version('2.10', sha256='2ef4c2e36ba13e32f66000e84281a3616584c86b255bca8643ff3fe4f78ed704') diff --git a/var/spack/repos/builtin/packages/r-tensor/package.py b/var/spack/repos/builtin/packages/r-tensor/package.py index eaa465151d41a9..5523077dceefa2 100644 --- a/var/spack/repos/builtin/packages/r-tensor/package.py +++ b/var/spack/repos/builtin/packages/r-tensor/package.py @@ -7,14 +7,13 @@ class RTensor(RPackage): - """The tensor product of two arrays is notionally an outer product of - the arrays collapsed in specific extents by summing along the - appropriate diagonals. - """ + """Tensor product of arrays. - homepage = "https://cloud.r-project.org/package=tensor" - url = "https://cloud.r-project.org/src/contrib/tensor_1.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tensor" + The tensor product of two arrays is notionally an outer product of the + arrays collapsed in specific extents by summing along the appropriate + diagonals.""" + + cran = "tensor" version('1.5', sha256='e1dec23e3913a82e2c79e76313911db9050fb82711a0da227f94fc6df2d3aea6') version('1.4', sha256='6f1643da018d58a0aaa27260df6fdf687fc36f4cd1964931b3180b7df8c0e642') diff --git a/var/spack/repos/builtin/packages/r-tensora/package.py b/var/spack/repos/builtin/packages/r-tensora/package.py index 46a07886422b14..1fee14b0ce7984 100644 --- a/var/spack/repos/builtin/packages/r-tensora/package.py +++ b/var/spack/repos/builtin/packages/r-tensora/package.py @@ -7,16 +7,14 @@ class RTensora(RPackage): - """Advanced Tensor Arithmetic with Named Indices + """Advanced Tensor Arithmetic with Named Indices. Provides convenience functions for advanced linear algebra with tensors and computation with data sets of tensors on a higher level abstraction. It includes Einstein and Riemann summing conventions, dragging, co- and contravariate indices, parallel computations on sequences of tensors.""" - homepage = "https://cloud.r-project.org/package=tensorA" - url = "https://cloud.r-project.org/src/contrib/tensorA_0.36.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tensorA" + cran = "tensorA" version('0.36.2', sha256='8e8947566bd3b65a54de4269df1abaa3d49cf5bfd2a963c3274a524c8a819ca7') version('0.36.1', sha256='c7ffe12b99867675b5e9c9f31798f9521f14305c9d9f9485b171bcbd8697d09c') diff --git a/var/spack/repos/builtin/packages/r-terra/package.py b/var/spack/repos/builtin/packages/r-terra/package.py new file mode 100644 index 00000000000000..bb8908eda8608e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-terra/package.py @@ -0,0 +1,34 @@ +# Copyright 2013-2022 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 import * + + +class RTerra(RPackage): + """Spatial Data Analysis. + + Methods for spatial data analysis with raster and vector data. Raster + methods allow for low-level data manipulation as well as high-level global, + local, zonal, and focal computation. The predict and interpolate methods + facilitate the use of regression type (interpolation, machine learning) + models for spatial prediction, including with satellite remote sensing + data. Processing of very large files is supported. See the manual and + tutorials on to get started. 'terra' is very + similar to the 'raster' package; but 'terra' can do more, is easier to use, + and it is faster.""" + + cran = "terra" + + version('1.5-21', sha256='091ee928ccaa6561aa9f8ee6c1c99f139dc89f1653c2a76a035cca14d404f43f') + version('1.5-17', sha256='e7ac57d1712d280616a4b5a85cd915b2b3e24fe08ee044b740588d884e6be6e7') + version('1.5-12', sha256='865cc14ee8c3239037c08170df4011eed27cf638ac1d05f0b7cd704abf97cc19') + version('1.4-22', sha256='b8eccfa36764577248d7b390e24af6db65fb8824c07f9b782bd6b83c4d2b3976') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + depends_on('gdal@2.2.3:') + depends_on('geos@3.4.0:') + depends_on('proj@4.9.3:') + depends_on('sqlite') diff --git a/var/spack/repos/builtin/packages/r-tester/package.py b/var/spack/repos/builtin/packages/r-tester/package.py index 7971044c6e0858..3522bf212fadf7 100644 --- a/var/spack/repos/builtin/packages/r-tester/package.py +++ b/var/spack/repos/builtin/packages/r-tester/package.py @@ -7,11 +7,11 @@ class RTester(RPackage): - """tester allows you to test characteristics of common R objects.""" + """Tests and checks characteristics of R objects. - homepage = "https://github.com/gastonstat/tester" - url = "https://cloud.r-project.org/src/contrib/tester_0.1.7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tester" + tester allows you to test characteristics of common R objects.""" + + cran = "tester" version('0.1.7', sha256='b9c645119c21c69450f3d366c911ed92ac7c14ef61652fd676a38fb9d420b5f4') diff --git a/var/spack/repos/builtin/packages/r-testit/package.py b/var/spack/repos/builtin/packages/r-testit/package.py index 1ab1b9741035ff..8f623a6acff5ee 100644 --- a/var/spack/repos/builtin/packages/r-testit/package.py +++ b/var/spack/repos/builtin/packages/r-testit/package.py @@ -8,15 +8,14 @@ class RTestit(RPackage): - """A Simple Package for Testing R Packages + """A Simple Package for Testing R Packages. Provides two convenience functions assert() and test_pkg() to facilitate testing R packages.""" - homepage = "https://cloud.r-project.org/package=testit" - url = "https://cloud.r-project.org/src/contrib/testit_0.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/testit" + cran = "testit" + version('0.13', sha256='90d47168ab6bdbd1274b600b457626ac07697ce09792c92b2043be5f5b678d80') version('0.12', sha256='9acdf912f0e7a68a5b6a7946d5ebb0c2007b3d6cd2e39075eddae2b586354e89') version('0.9', sha256='9cf6b3df9b2c700e4e7dcbd5b8cb64fabefe674e1f40346ccaf39fe7feda5e55') version('0.8', sha256='08a9c19c962eae60f4ab58885a23e0bc239efc39da682290be436c066f8d97f7') diff --git a/var/spack/repos/builtin/packages/r-testthat/package.py b/var/spack/repos/builtin/packages/r-testthat/package.py index 47325edcebdec1..2f43aabf210327 100644 --- a/var/spack/repos/builtin/packages/r-testthat/package.py +++ b/var/spack/repos/builtin/packages/r-testthat/package.py @@ -7,16 +7,16 @@ class RTestthat(RPackage): - """Unit Testing for R + """Unit Testing for R. Software testing is important, but, in part because it is frustrating and boring, many of us avoid it. 'testthat' is a testing framework for R that is easy to learn and use, and integrates with your existing 'workflow'.""" - homepage = "https://github.com/hadley/testthat" - url = "https://cloud.r-project.org/src/contrib/testthat_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/testthat" + cran = "testthat" + version('3.1.2', sha256='ed41a6168ca22869b6aebe1e5865bb2f5338a7c35ca0a13cf69ac2f5c6aeb659') + version('3.1.1', sha256='e6755fb4f5388751af952edfd555533bb55d6252606f6fcef07bdb6268c8cf80') version('3.0.1', sha256='297fc45c719684f11ddf9dc9088f5528fdf9b44625165543384eaf579f243ad0') version('2.3.2', sha256='1a268d8df07f7cd8d282d03bb96ac2d96a24a95c9aa52f4cca5138a09dd8e06c') version('2.2.1', sha256='67ee0512bb312695c81fd74338bb8ce9e2e58763681ddbcdfdf35f52dfdb0b78') @@ -24,27 +24,29 @@ class RTestthat(RPackage): version('1.0.2', sha256='0ef7df0ace1fddf821d329f9d9a5d42296085350ae0d94af62c45bd203c8415e') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r-brio', when='@3.0.1:', type=('build', 'run')) - depends_on('r-callr@3.5.1:', when='@3.0.1:', type=('build', 'run')) - depends_on('r-cli', when='@2.0.0:', type=('build', 'run')) - depends_on('r-cli@2.2.0:', when='@3.0.1:', type=('build', 'run')) + depends_on('r-brio', type=('build', 'run'), when='@3.0.1:') + depends_on('r-callr@3.5.1:', type=('build', 'run'), when='@3.0.1:') + 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-crayon@1.3.4:', type=('build', 'run')) - depends_on('r-desc', when='@3.0.1:', type=('build', 'run')) + depends_on('r-desc', type=('build', 'run'), when='@3.0.1:') depends_on('r-digest', type=('build', 'run')) - depends_on('r-ellipsis', when='@2.3.2:', type=('build', 'run')) - depends_on('r-ellipsis@0.2.0:', when='@3.0.1:', type=('build', 'run')) - depends_on('r-evaluate', when='@2.2.0:', type=('build', 'run')) - depends_on('r-jsonlite', when='@3.0.1:', type=('build', 'run')) - depends_on('r-lifecycle', when='@3.0.1:', 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-evaluate', type=('build', 'run'), when='@2.2.0:') + depends_on('r-jsonlite', type=('build', 'run'), when='@3.0.1:') + depends_on('r-lifecycle', type=('build', 'run'), when='@3.0.1:') depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-pkgload', when='@2.3.2:', type=('build', 'run')) + depends_on('r-pkgload', type=('build', 'run'), when='@2.3.2:') depends_on('r-praise', type=('build', 'run')) - depends_on('r-processx', when='@3.0.1:', type=('build', 'run')) - depends_on('r-ps@1.3.4:', when='@3.0.1:', type=('build', 'run')) + depends_on('r-processx', type=('build', 'run'), when='@3.0.1:') + depends_on('r-ps@1.3.4:', type=('build', 'run'), when='@3.0.1:') depends_on('r-r6@2.2.0:', type=('build', 'run')) - depends_on('r-rlang@0.3.0:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.1:', when='@2.3.2:', type=('build', 'run')) - depends_on('r-rlang@0.4.9:', when='@3.0.1:', type=('build', 'run')) - depends_on('r-waldo@0.2.1:', when='@3.0.1:', type=('build', 'run')) - depends_on('r-withr@2.0.0:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-withr@2.3.0:', when='@3.0.1:', type=('build', 'run')) + 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-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-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:') diff --git a/var/spack/repos/builtin/packages/r-tfbstools/package.py b/var/spack/repos/builtin/packages/r-tfbstools/package.py index 1912180b7fd9bf..2a59c6cbb8ab3b 100644 --- a/var/spack/repos/builtin/packages/r-tfbstools/package.py +++ b/var/spack/repos/builtin/packages/r-tfbstools/package.py @@ -7,7 +7,7 @@ class RTfbstools(RPackage): - """Software Package for Transcription Factor Binding Site (TFBS) Analysis + """Software Package for Transcription Factor Binding Site (TFBS) Analysis. TFBSTools is a package for the analysis and manipulation of transcription factor binding sites. It includes matrices conversion @@ -16,9 +16,9 @@ class RTfbstools(RPackage): from sequence/alignment, query JASPAR database and provides a wrapper of de novo motif discovery software.""" - homepage = "https://bioconductor.org/packages/TFBSTools" - git = "https://git.bioconductor.org/packages/TFBSTools.git" + bioc = "TFBSTools" + version('1.32.0', commit='235505626b910de29156a07e1f990daa3b5d57d9') version('1.28.0', commit='15e7cf76f39ee3280a27284d58f7adef1c33f193') version('1.22.0', commit='613d3567fd662b65269bd200c5aa5f87ac6a4612') version('1.20.0', commit='74035fc6beb1af82f171c11ef2b0a8817714c5bc') diff --git a/var/spack/repos/builtin/packages/r-tfisher/package.py b/var/spack/repos/builtin/packages/r-tfisher/package.py index dbffb8dbb77b00..5d9211725c3536 100644 --- a/var/spack/repos/builtin/packages/r-tfisher/package.py +++ b/var/spack/repos/builtin/packages/r-tfisher/package.py @@ -7,7 +7,7 @@ class RTfisher(RPackage): - """Optimal Thresholding Fisher's P-Value Combination Method + """Optimal Thresholding Fisher's P-Value Combination Method. We provide the cumulative distribution function (CDF), quantile, and statistical power calculator for a collection of thresholding Fisher's @@ -19,9 +19,7 @@ class RTfisher(RPackage): Wu. "TFisher Tests: Optimal and Adaptive Thresholding for Combining p-Values", submitted.""" - homepage = "https://cloud.r-project.org/package=TFisher" - url = "https://cloud.r-project.org/src/contrib/TFisher_0.2.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/TFisher" + cran = "TFisher" version('0.2.0', sha256='bd9b7484d6fba0165841596275b446f85ba446d40e92f3b9cb37381a3827e76f') diff --git a/var/spack/repos/builtin/packages/r-tfmpvalue/package.py b/var/spack/repos/builtin/packages/r-tfmpvalue/package.py index e9ff9e92d09239..53b9021c06d50a 100644 --- a/var/spack/repos/builtin/packages/r-tfmpvalue/package.py +++ b/var/spack/repos/builtin/packages/r-tfmpvalue/package.py @@ -7,17 +7,16 @@ class RTfmpvalue(RPackage): - """In putative Transcription Factor Binding Sites (TFBSs) identification - from sequence/alignments, we are interested in the significance of - certain match score. TFMPvalue provides the accurate calculation of - P-value with score threshold for Position Weight Matrices, or the score - with given P-value. This package is an interface to code originally - made available by Helene Touzet and Jean-Stephane Varre, 2007, - Algorithms Mol Biol:2, 15.""" + """Efficient and Accurate P-Value Computation for Position Weight Matrices. - homepage = "https://github.com/ge11232002/TFMPvalue" - url = "https://cloud.r-project.org/src/contrib/TFMPvalue_0.0.6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/TFMPvalue" + In putative Transcription Factor Binding Sites (TFBSs) identification from + sequence/alignments, we are interested in the significance of certain match + score. TFMPvalue provides the accurate calculation of P-value with score + threshold for Position Weight Matrices, or the score with given P-value. + This package is an interface to code originally made available by Helene + Touzet and Jean-Stephane Varre, 2007, Algorithms Mol Biol:2, 15.""" + + cran = "TFMPvalue" version('0.0.8', sha256='6d052529f7b59d0384edc097f724f70468013777b6adf4c63e61a359029d3841') version('0.0.6', sha256='cee3aa2d4e22856865d820f695e29a5f23486e5e08cd42cb95a0728f5f9522a1') diff --git a/var/spack/repos/builtin/packages/r-th-data/package.py b/var/spack/repos/builtin/packages/r-th-data/package.py index 5ee8c717533fef..c42ef33359ece1 100644 --- a/var/spack/repos/builtin/packages/r-th-data/package.py +++ b/var/spack/repos/builtin/packages/r-th-data/package.py @@ -7,17 +7,19 @@ class RThData(RPackage): - """Contains data sets used in other packages Torsten Hothorn maintains.""" + """TH's Data Archive. - homepage = "https://cloud.r-project.org/package=TH.data" - url = "https://cloud.r-project.org/src/contrib/TH.data_1.0-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/TH.data" + Contains data sets used in other packages Torsten Hothorn maintains.""" + cran = "TH.data" + + version('1.1-0', sha256='21b37e251da5635ae91668f64b4c6f6a7ccedbe1f01af769d30fb532af83113e') version('1.0-10', sha256='618a1c67a30536d54b1e48ba3af46a6edcd6c2abef17935b5d4ba526a43aff55') version('1.0-9', sha256='d8318a172ce2b9f7f284dc297c8a8d5093de8eccbb566c8e7580e70938dfae0f') version('1.0-8', sha256='478f109fcc1226500ead8e3bd6e047cecde2294fde4df8ec216d38313db79a9d') version('1.0-7', sha256='29e126344daccbebc7df68924730ae4159a0faad77f86302070920684ba6070e') depends_on('r@2.10.0:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.1-0:') depends_on('r-survival', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-threejs/package.py b/var/spack/repos/builtin/packages/r-threejs/package.py index 444e447e749b80..1bcaaf3d4ebf40 100644 --- a/var/spack/repos/builtin/packages/r-threejs/package.py +++ b/var/spack/repos/builtin/packages/r-threejs/package.py @@ -7,23 +7,22 @@ class RThreejs(RPackage): - """Interactive 3D Scatter Plots, Networks and Globes + """Interactive 3D Scatter Plots, Networks and Globes. Create interactive 3D scatter plots, network plots, and globes using the 'three.js' visualization library ("https://threejs.org/").""" - homepage = "https://bwlewis.github.io/rthreejs" - url = "https://cloud.r-project.org/src/contrib/threejs_0.2.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/threejs" + cran = "threejs" version('0.3.3', sha256='76c759c8b20fb34f4f7a01cbd1b961296e1f19f4df6dded69aae7f1bca80219c') version('0.3.1', sha256='71750b741672a435ecf749b69c72f0681aa8bb795e317f4e3056d5e33f6d79e8') version('0.2.2', sha256='41fe949490fbe0f71e39b0a144791da427bd7361d027579cb4a002ed53520cc5') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r-igraph@1.0.0:', when='@0.3.1:', type=('build', 'run')) + depends_on('r-igraph@1.0.0:', type=('build', 'run'), when='@0.3.1:') depends_on('r-htmlwidgets@0.3.2:', type=('build', 'run')) depends_on('r-base64enc', type=('build', 'run')) - depends_on('r-crosstalk', when='@0.3.1:', type=('build', 'run')) - depends_on('r-matrix', when='@0.2.2', type=('build', 'run')) - depends_on('r-jsonlite', when='@0.2.2', type=('build', 'run')) + depends_on('r-crosstalk', type=('build', 'run'), when='@0.3.1:') + + depends_on('r-matrix', type=('build', 'run'), when='@0.2.2') + depends_on('r-jsonlite', type=('build', 'run'), when='@0.2.2') diff --git a/var/spack/repos/builtin/packages/r-tibble/package.py b/var/spack/repos/builtin/packages/r-tibble/package.py index 475af937b1869a..1bc847cf83120c 100644 --- a/var/spack/repos/builtin/packages/r-tibble/package.py +++ b/var/spack/repos/builtin/packages/r-tibble/package.py @@ -7,14 +7,14 @@ class RTibble(RPackage): - """Simple Data Frames + """Simple Data Frames. Provides a 'tbl_df' class (the 'tibble') that provides stricter checking and better formatting than the traditional data frame.""" - homepage = "https://github.com/tidyverse/tibble" cran = "tibble" + version('3.1.6', sha256='5b33d909f146ebad38e262f6a57cb91ab70bfe240c2af01004beec11b3898292') version('3.1.5', sha256='da6387ba683a67cd7fc2a111f6b62468e480a8078bc1867d433a40c5460edbe7') version('3.0.5', sha256='1cc92d7bf5ecf8291718682fb7fcb96f6f87751f1ed101a7441cad5120195190') version('2.1.3', sha256='9a8cea9e6b5d24a7e9bf5f67ab38c40b2b6489eddb0d0edb8a48a21ba3574e1a') @@ -26,26 +26,26 @@ class RTibble(RPackage): version('1.2', sha256='ed8a8bd0591223f742be80fd1cd8c4a9618d0f04011ec95c272b61ea45193104') version('1.1', sha256='10ea18890e5514faa4c2c05fa231a6e2bbb7689f3800850cead214306414c88e') - depends_on('r@3.1.2:', when='@:1.2', type=('build', 'run')) - depends_on('r@3.1.0:', when='@1.3.0:', type=('build', 'run')) - depends_on('r-ellipsis@0.2.0:', when='@3.0.5:', type=('build', 'run')) - depends_on('r-ellipsis@0.3.2:', when='@3.1.2:', type=('build', 'run')) - depends_on('r-fansi@0.4.0:', when='@2.0.0:', type=('build', 'run')) - depends_on('r-lifecycle@0.2.0:', when='@3.0.5:', type=('build', 'run')) - depends_on('r-lifecycle@1.0.0:', when='@3.1.5:', type=('build', 'run')) - depends_on('r-magrittr', when='@3.0.5:', type=('build', 'run')) - depends_on('r-pillar@1.3.1:', when='@1.4.1:', type=('build', 'run')) - depends_on('r-pillar@1.4.3:', when='@3.0.5:', type=('build', 'run')) - depends_on('r-pillar@1.6.0:', when='@3.1:', type=('build', 'run')) - depends_on('r-pillar@1.6.2:', when='@3.1.4:', type=('build', 'run')) - depends_on('r-pkgconfig', when='@2.0.0:', type=('build', 'run')) - depends_on('r-rlang@0.3.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-rlang@0.4.3:', when='@3.0.5:', type=('build', 'run')) - depends_on('r-vctrs@0.3.2:', when='@3.0.5:', type=('build', 'run')) - depends_on('r-vctrs@0.3.8:', when='@3.1.2:', type=('build', 'run')) - - depends_on('r-cli', when='@1.4.2:3.0', type=('build', 'run')) - depends_on('r-crayon@1.3.4:', when='@1.4.1:3.0', type=('build', 'run')) - depends_on('r-assertthat', when='@:1.3.1', type=('build', 'run')) - depends_on('r-lazyeval@0.1.10:', when='@:1.3.0', type=('build', 'run')) - depends_on('r-rcpp@0.12.3:', when='@:1.3.4', type=('build', 'run')) + depends_on('r@3.1.2:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-ellipsis@0.2.0:', type=('build', 'run'), when='@3.0.5:') + depends_on('r-ellipsis@0.3.2:', type=('build', 'run'), when='@3.1.2:') + depends_on('r-fansi@0.4.0:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-lifecycle@0.2.0:', type=('build', 'run'), when='@3.0.5:') + depends_on('r-lifecycle@1.0.0:', type=('build', 'run'), when='@3.1.5:') + depends_on('r-magrittr', type=('build', 'run'), when='@3.0.5:') + depends_on('r-pillar@1.3.1:', type=('build', 'run'), when='@1.4.1:') + depends_on('r-pillar@1.4.3:', type=('build', 'run'), when='@3.0.5:') + depends_on('r-pillar@1.6.0:', type=('build', 'run'), when='@3.1.0:') + depends_on('r-pillar@1.6.2:', type=('build', 'run'), when='@3.1.4:') + depends_on('r-pkgconfig', type=('build', 'run'), when='@2.0.0:') + depends_on('r-rlang@0.3.0:', type=('build', 'run'), when='@1.3.1:') + depends_on('r-rlang@0.4.3:', type=('build', 'run'), when='@3.0.5:') + depends_on('r-vctrs@0.3.2:', type=('build', 'run'), when='@3.0.5:') + depends_on('r-vctrs@0.3.8:', type=('build', 'run'), when='@3.1.2:') + + depends_on('r-cli', type=('build', 'run'), when='@1.4.2:3.0') + depends_on('r-crayon@1.3.4:', type=('build', 'run'), when='@1.4.1:3.0') + depends_on('r-assertthat', type=('build', 'run'), when='@:1.3.1') + depends_on('r-lazyeval@0.1.10:', type=('build', 'run'), when='@:1.3.0') + depends_on('r-rcpp@0.12.3:', type=('build', 'run'), when='@:1.3.4') diff --git a/var/spack/repos/builtin/packages/r-tictoc/package.py b/var/spack/repos/builtin/packages/r-tictoc/package.py index 3b5bca13fdcaea..0b34c25f31030f 100644 --- a/var/spack/repos/builtin/packages/r-tictoc/package.py +++ b/var/spack/repos/builtin/packages/r-tictoc/package.py @@ -10,16 +10,14 @@ class RTictoc(RPackage): """Functions for timing R scripts, as well as implementations of Stack and List structures. - This package provides the timing functions 'tic' and 'toc' - that can be nested. One can record all timings while a - complex script is running, and examine the values later. It - is also possible to instrument the timing calls with custom - callbacks. In addition, this package provides class - 'Stack', implemented as a vector, and class 'List', - implemented as a list, both of which support operations - 'push', 'pop', 'first', 'last' and 'clear'.""" + This package provides the timing functions 'tic' and 'toc' that can be + nested. One can record all timings while a complex script is running, and + examine the values later. It is also possible to instrument the timing + calls with custom callbacks. In addition, this package provides class + 'Stack', implemented as a vector, and class 'List', implemented as a list, + both of which support operations 'push', 'pop', 'first', 'last' and + 'clear'.""" - homepage = "https://collectivemedia.github.io/tictoc/" cran = "tictoc" 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 0276e63d728211..216a50d811db14 100644 --- a/var/spack/repos/builtin/packages/r-tidycensus/package.py +++ b/var/spack/repos/builtin/packages/r-tidycensus/package.py @@ -7,18 +7,18 @@ class RTidycensus(RPackage): - """Load US Census Boundary and Attribute Data as 'tidyverse' and 'sf'-Ready Data Frames + """Load US Census Boundary and Attribute Data as 'tidyverse' and 'sf'-Ready + Data Frames. An integrated R interface to the decennial US Census and American Community Survey APIs and the US Census Bureau's geographic boundary files. Allows R users to return Census and ACS data as tidyverse-ready data frames, and optionally returns a list-column with feature geometry for all Census - geographies. """ + geographies.""" - homepage = "https://cloud.r-project.org/package=tidycensus" - url = "https://cloud.r-project.org/src/contrib/tidycensus_0.3.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tidycensus" + cran = "tidycensus" + version('1.1', sha256='8914fdec64a86896f1faa3a92272d1cd008a194af4cd86eba2d69df5707062c0') version('0.11', sha256='da2fba4cd987615dedd22f64d9f38804f4e2161af31bacf1f3b5a013d71fdd43') version('0.9.2', sha256='2454525301caff9eaaf6ebe14f58706ece1fbace6187ce8bf3fff04c842b9536') version('0.3.1', sha256='d03cbee7abbf87bb4ce2e649726bdd143d47b549f30b5a11aaaa6c4aff78e778') @@ -27,16 +27,18 @@ class RTidycensus(RPackage): depends_on('r-httr', type=('build', 'run')) depends_on('r-sf', type=('build', 'run')) depends_on('r-dplyr@0.7.0:', type=('build', 'run')) - depends_on('r-dplyr@0.8.0:', when='@0.11:', type=('build', 'run')) + depends_on('r-dplyr@0.8.0:', type=('build', 'run'), when='@0.11:') + depends_on('r-dplyr@1.0.0:', type=('build', 'run'), when='@1.1:') depends_on('r-tigris', type=('build', 'run')) depends_on('r-stringr', type=('build', 'run')) depends_on('r-jsonlite@1.5.0:', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) depends_on('r-rvest', type=('build', 'run')) depends_on('r-tidyr@0.7.0:', type=('build', 'run')) - depends_on('r-tidyr@1.0.0:', when='@0.11:', type=('build', 'run')) + depends_on('r-tidyr@1.0.0:', type=('build', 'run'), when='@0.11:') depends_on('r-rappdirs', type=('build', 'run')) depends_on('r-readr', type=('build', 'run')) depends_on('r-xml2', type=('build', 'run')) depends_on('r-units', type=('build', 'run')) - depends_on('r-rlang', when='@0.11:', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run'), when='@0.11:') + depends_on('r-crayon', type=('build', 'run'), when='@1.1:') diff --git a/var/spack/repos/builtin/packages/r-tidygraph/package.py b/var/spack/repos/builtin/packages/r-tidygraph/package.py index 894cb81bc1567b..2d96e015cc4ba6 100644 --- a/var/spack/repos/builtin/packages/r-tidygraph/package.py +++ b/var/spack/repos/builtin/packages/r-tidygraph/package.py @@ -15,16 +15,14 @@ class RTidygraph(RPackage): in the 'dplyr' package, as well as provides tidy interfaces to a lot of common graph algorithms.""" - homepage = "https://github.com/thomasp85/tidygraph" - url = "https://cloud.r-project.org/src/contrib/tidygraph_1.1.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tidygraph" + cran = "tidygraph" version('1.2.0', sha256='057d6c42fc0144109f3ace7f5058cca7b2fe493c761daa991448b23f86b6129f') version('1.1.2', sha256='5642001d4cccb122d66481b7c61a06c724c02007cbd356ee61cb29726a56fafe') depends_on('r-tibble', type=('build', 'run')) depends_on('r-dplyr@0.8:', type=('build', 'run')) - depends_on('r-dplyr@0.8.5:', when='@1.2.0:', type=('build', 'run')) + depends_on('r-dplyr@0.8.5:', type=('build', 'run'), when='@1.2.0:') depends_on('r-igraph', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-rlang', 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 2a101d14020965..361059eb2e6fd2 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -7,7 +7,7 @@ class RTidyr(RPackage): - """Tidy Messy Data + """Tidy Messy Data. Tools to help to create tidy data, where each column is a variable, each row is an observation, and each cell contains a single value. 'tidyr' @@ -17,7 +17,6 @@ class RTidyr(RPackage): It also includes tools for working with missing values (both implicit and explicit).""" - homepage = "https://github.com/hadley/tidyr" cran = "tidyr" version('1.1.4', sha256='0b0c98be98a433e15a2550f60330b31a58529a9c58bc2abd7bff6462ab761241') @@ -29,21 +28,21 @@ class RTidyr(RPackage): depends_on('r@3.1:', type=('build', 'run')) depends_on('r-dplyr@0.7.0:', type=('build', 'run')) - depends_on('r-dplyr@0.8.2:', when='@1.1.2:', type=('build', 'run')) - depends_on('r-ellipsis@0.1.0:', when='@1.1.2:', type=('build', 'run')) + depends_on('r-dplyr@0.8.2:', type=('build', 'run'), when='@1.1.2:') + depends_on('r-ellipsis@0.1.0:', type=('build', 'run'), when='@1.1.2:') depends_on('r-glue', type=('build', 'run')) - depends_on('r-lifecycle', when='@1.1.2:', type=('build', 'run')) + depends_on('r-lifecycle', type=('build', 'run'), when='@1.1.2:') depends_on('r-magrittr', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) depends_on('r-tibble', type=('build', 'run')) - depends_on('r-tibble@2.1.1:', when='@1.1.2:', 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')) - depends_on('r-tidyselect@1.1.0:', when='@1.1.2:', type=('build', 'run')) - depends_on('r-vctrs@0.3.0:', when='@1.1.2:', type=('build', 'run')) - depends_on('r-vctrs@0.3.6:', when='@1.1.3:', type=('build', 'run')) - depends_on('r-cpp11@0.2.1:', when='@1.1.2:', type=('build', 'run')) - depends_on('r-cpp11@0.2.6:', when='@1.1.3:', type=('build', 'run')) - - depends_on('r-stringi', when='@:0.8.3', type=('build', 'run')) - depends_on('r-rcpp', when='@:0.8.3', type=('build', 'run')) + depends_on('r-tidyselect@1.1.0:', type=('build', 'run'), when='@1.1.2:') + depends_on('r-vctrs@0.3.0:', type=('build', 'run'), when='@1.1.2:') + depends_on('r-vctrs@0.3.6:', type=('build', 'run'), when='@1.1.3:') + depends_on('r-cpp11@0.2.1:', type=('build', 'run'), when='@1.1.2:') + depends_on('r-cpp11@0.2.6:', type=('build', 'run'), when='@1.1.3:') + + depends_on('r-stringi', type=('build', 'run'), when='@:0.8.3') + depends_on('r-rcpp', type=('build', 'run'), when='@:0.8.3') diff --git a/var/spack/repos/builtin/packages/r-tidyselect/package.py b/var/spack/repos/builtin/packages/r-tidyselect/package.py index 1da9bb9d76451c..c5ad825fc9bb3e 100644 --- a/var/spack/repos/builtin/packages/r-tidyselect/package.py +++ b/var/spack/repos/builtin/packages/r-tidyselect/package.py @@ -7,13 +7,12 @@ class RTidyselect(RPackage): - """Select from a Set of Strings + """Select from a Set of Strings. A backend for the selecting functions of the 'tidyverse'. It makes it easy to implement select-like functions in your own packages in a way that is consistent with other 'tidyverse' interfaces for selection.""" - homepage = "https://cloud.r-project.org/package=tidyselect" cran = "tidyselect" version('1.1.1', sha256='18eb6a6746196a81ce19ee6cbf1db0c33f494177b97e2419312ef25a00ae486b') @@ -23,14 +22,14 @@ class RTidyselect(RPackage): version('0.2.3', sha256='0c193abc8251a60e1d2a32a99c77651c336bc185e3c2a72e5f8781813d181c2c') depends_on('r@3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@1.1.0:', type=('build', 'run')) - depends_on('r-ellipsis', when='@1.1.0:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@1.1.0:') + depends_on('r-ellipsis', type=('build', 'run'), when='@1.1.0:') depends_on('r-glue@1.3.0:', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) - depends_on('r-purrr@0.3.2:', when='@1.1.0:', type=('build', 'run')) + depends_on('r-purrr@0.3.2:', type=('build', 'run'), when='@1.1.0:') depends_on('r-rlang@0.2.2:', type=('build', 'run')) - depends_on('r-rlang@0.4.6:', when='@1.1.0:', type=('build', 'run')) - depends_on('r-vctrs@0.2.2:', when='@1.1.0:', type=('build', 'run')) - depends_on('r-vctrs@0.3.0:', when='@1.1.1:', type=('build', 'run')) + depends_on('r-rlang@0.4.6:', type=('build', 'run'), when='@1.1.0:') + 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-rcpp@0.12.0:', when='@:0.2.5', type=('build', 'run')) + depends_on('r-rcpp@0.12.0:', type=('build', 'run'), when='@:0.2.5') diff --git a/var/spack/repos/builtin/packages/r-tidytree/package.py b/var/spack/repos/builtin/packages/r-tidytree/package.py new file mode 100644 index 00000000000000..b7146155447ec1 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-tidytree/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2022 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 import * + + +class RTidytree(RPackage): + """A Tidy Tool for Phylogenetic Tree Data Manipulation. + + Phylogenetic tree generally contains multiple components including node, + edge, branch and associated data. 'tidytree' provides an approach to + convert tree object to tidy data frame as well as provides tidy interfaces + to manipulate tree data.""" + + cran = "tidytree" + + version('0.3.7', sha256='7816f2d48ec94ca0c1bef15ec3d536adf44a969ea3c3cfc203ceebe16808e4f2') + + depends_on('r@3.4.0:', type=('build', 'run')) + depends_on('r-ape', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run')) + depends_on('r-lazyeval', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run')) + depends_on('r-tidyr', type=('build', 'run')) + depends_on('r-tidyselect', type=('build', 'run')) + depends_on('r-yulab-utils@0.0.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-tidyverse/package.py b/var/spack/repos/builtin/packages/r-tidyverse/package.py index 4408e10186a700..5313a918903d95 100644 --- a/var/spack/repos/builtin/packages/r-tidyverse/package.py +++ b/var/spack/repos/builtin/packages/r-tidyverse/package.py @@ -7,7 +7,7 @@ class RTidyverse(RPackage): - """Easily Install and Load the 'Tidyverse' + """Easily Install and Load the 'Tidyverse'. The 'tidyverse' is a set of packages that work in harmony because they share common data representations and 'API' design. This package is @@ -15,90 +15,88 @@ class RTidyverse(RPackage): in a single step. Learn more about the 'tidyverse' at .""" - homepage = "https://tidyverse.tidyverse.org/" cran = "tidyverse" version('1.3.1', sha256='83cf95109d4606236274f5a8ec2693855bf75d3a1b3bc1ab4426dcc275ed6632') version('1.3.0', sha256='6d8acb81e994f9bef5e4dcf908bcea3786d108adcf982628235b6c8c80f6fe09') version('1.2.1', sha256='ad67a27bb4e89417a15338fe1a40251a7b5dedba60e9b72637963d3de574c37b') - depends_on('r@3.3:', when='@1.3.1:', type=('build', 'run')) - depends_on('r@3.2:', when='@1.3.0:', type=('build', 'run')) depends_on('r+X', type=('build', 'run')) - - depends_on('r-broom@0.7.6:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-broom@0.5.2:', when='@1.3.0:', type=('build', 'run')) + depends_on('r@3.2:', type=('build', 'run'), when='@1.3.0:') + depends_on('r@3.3:', type=('build', 'run'), when='@1.3.1:') depends_on('r-broom@0.4.2:', type=('build', 'run')) - depends_on('r-cli@2.4.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-cli@1.1.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-broom@0.5.2:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-broom@0.7.6:', type=('build', 'run'), when='@1.3.1:') depends_on('r-cli@1.0.0:', type=('build', 'run')) - depends_on('r-crayon@1.4.1:', when='@1.3.1:', type=('build', 'run')) + depends_on('r-cli@1.1.0:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-cli@2.4.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-crayon@1.3.4:', type=('build', 'run')) - depends_on('r-dbplyr@2.1.1:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-dbplyr@1.4.2:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-crayon@1.4.1:', type=('build', 'run'), when='@1.3.1:') depends_on('r-dbplyr@1.1.0:', type=('build', 'run')) - depends_on('r-dplyr@1.0.5:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-dplyr@0.8.3:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-dbplyr@1.4.2:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-dbplyr@2.1.1:', type=('build', 'run'), when='@1.3.1:') depends_on('r-dplyr@0.7.4:', type=('build', 'run')) - depends_on('r-dtplyr@1.1.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-forcats@0.5.1:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-forcats@0.4.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-dplyr@0.8.3:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-dplyr@1.0.5:', type=('build', 'run'), when='@1.3.1:') + depends_on('r-dtplyr@1.1.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-forcats@0.2.0:', type=('build', 'run')) - depends_on('r-googledrive@1.0.1:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-googlesheets4@0.3.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-ggplot2@3.3.3:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-ggplot2@3.2.1:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-forcats@0.4.0:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-forcats@0.5.1:', type=('build', 'run'), when='@1.3.1:') + depends_on('r-googledrive@1.0.1:', type=('build', 'run'), when='@1.3.1:') + depends_on('r-googlesheets4@0.3.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-ggplot2@2.2.1:', type=('build', 'run')) - depends_on('r-haven@2.3.1:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-haven@2.2.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-ggplot2@3.2.1:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-ggplot2@3.3.3:', type=('build', 'run'), when='@1.3.1:') depends_on('r-haven@1.1.0:', type=('build', 'run')) - depends_on('r-hms@1.0.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-hms@0.5.2:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-haven@2.2.0:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-haven@2.3.1:', type=('build', 'run'), when='@1.3.1:') depends_on('r-hms@0.3:', type=('build', 'run')) - depends_on('r-httr@1.4.2:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-httr@1.4.1:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-hms@0.5.2:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-hms@1.0.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-httr@1.3.1:', type=('build', 'run')) - depends_on('r-jsonlite@1.7.2:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-jsonlite@1.6:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-httr@1.4.1:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-httr@1.4.2:', type=('build', 'run'), when='@1.3.1:') depends_on('r-jsonlite@1.5:', type=('build', 'run')) - depends_on('r-lubridate@1.7.10:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-lubridate@1.7.4:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-jsonlite@1.6:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-jsonlite@1.7.2:', type=('build', 'run'), when='@1.3.1:') depends_on('r-lubridate@1.7.1:', type=('build', 'run')) - depends_on('r-magrittr@2.0.1:', when='@1.3.1:', type=('build', 'run')) + depends_on('r-lubridate@1.7.4:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-lubridate@1.7.10:', type=('build', 'run'), when='@1.3.1:') depends_on('r-magrittr@1.5:', type=('build', 'run')) - depends_on('r-modelr@0.1.8:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-modelr@0.1.5:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-magrittr@2.0.1:', type=('build', 'run'), when='@1.3.1:') depends_on('r-modelr@0.1.1:', type=('build', 'run')) - depends_on('r-pillar@1.6.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-pillar@1.4.2:', when='@1.3.0:', type=('build', 'run')) - depends_on('r-purrr@0.3.4:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-purrr@0.3.3:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-modelr@0.1.5:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-modelr@0.1.8:', type=('build', 'run'), when='@1.3.1:') + depends_on('r-pillar@1.4.2:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-pillar@1.6.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-purrr@0.2.4:', type=('build', 'run')) - depends_on('r-readr@1.4.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-readr@1.3.1:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-purrr@0.3.3:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-purrr@0.3.4:', type=('build', 'run'), when='@1.3.1:') depends_on('r-readr@1.1.1:', type=('build', 'run')) - depends_on('r-readxl@1.3.1:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-readr@1.3.1:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-readr@1.4.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-readxl@1.0.0:', type=('build', 'run')) - depends_on('r-reprex@2.0.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-reprex@0.3.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-readxl@1.3.1:', type=('build', 'run'), when='@1.3.0:') depends_on('r-reprex@0.1.1:', type=('build', 'run')) - depends_on('r-rlang@0.4.10:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-rlang@0.4.1:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-reprex@0.3.0:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-reprex@2.0.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-rlang@0.1.4:', type=('build', 'run')) - depends_on('r-rstudioapi@0.13:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-rstudioapi@0.10:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-rlang@0.4.1:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@1.3.1:') depends_on('r-rstudioapi@0.7:', type=('build', 'run')) - depends_on('r-rvest@1.0.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-rvest@0.3.5:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-rstudioapi@0.10:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-rstudioapi@0.13:', type=('build', 'run'), when='@1.3.1:') depends_on('r-rvest@0.3.2:', type=('build', 'run')) - depends_on('r-stringr@1.4.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-rvest@0.3.5:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-rvest@1.0.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-stringr@1.2.0:', type=('build', 'run')) - depends_on('r-tibble@3.1.0:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-tibble@2.1.3:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-stringr@1.4.0:', type=('build', 'run'), when='@1.3.0:') depends_on('r-tibble@1.3.4:', type=('build', 'run')) - depends_on('r-tidyr@1.1.3:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-tidyr@1.0.0:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-tibble@2.1.3:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-tibble@3.1.0:', type=('build', 'run'), when='@1.3.1:') depends_on('r-tidyr@0.7.2:', type=('build', 'run')) - depends_on('r-xml2@1.3.2:', when='@1.3.1:', type=('build', 'run')) - depends_on('r-xml2@1.2.2:', when='@1.3.0:', type=('build', 'run')) + depends_on('r-tidyr@1.0.0:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-tidyr@1.1.3:', type=('build', 'run'), when='@1.3.1:') depends_on('r-xml2@1.1.1:', type=('build', 'run')) + depends_on('r-xml2@1.2.2:', type=('build', 'run'), when='@1.3.0:') + depends_on('r-xml2@1.3.2:', type=('build', 'run'), when='@1.3.1:') diff --git a/var/spack/repos/builtin/packages/r-tiff/package.py b/var/spack/repos/builtin/packages/r-tiff/package.py index 9645ea7f5b9da0..6cf31a978332a2 100644 --- a/var/spack/repos/builtin/packages/r-tiff/package.py +++ b/var/spack/repos/builtin/packages/r-tiff/package.py @@ -7,16 +7,16 @@ class RTiff(RPackage): - """Read and write TIFF images + """Read and write TIFF images. This package provides an easy and simple way to read, write and display bitmap images stored in the TIFF format. It can read and write both files and in-memory raw vectors.""" - homepage = "https://www.rforge.net/tiff/" - url = "https://cloud.r-project.org/src/contrib/tiff_0.1-5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tiff" + cran = "tiff" + version('0.1-11', sha256='b8c3ea15114d972f8140541c7b01f5ce2e5322af1f63c1a083aaf766fd3eec75') + version('0.1-10', sha256='535154e89e85e14fe697469d2c59826a44c7937e7eca2eaca1aee6b0fe320afe') version('0.1-6', sha256='623bd9c16a426df7e6056738c5d91da86ea9b49df375eea6b5127e4e458dc4fb') version('0.1-5', sha256='9514e6a9926fcddc29ce1dd12b1072ad8265900373f738de687ef4a1f9124e2b') diff --git a/var/spack/repos/builtin/packages/r-tigris/package.py b/var/spack/repos/builtin/packages/r-tigris/package.py index f5a93aa5917dee..c1c17027d73214 100644 --- a/var/spack/repos/builtin/packages/r-tigris/package.py +++ b/var/spack/repos/builtin/packages/r-tigris/package.py @@ -7,21 +7,20 @@ class RTigris(RPackage): - """Load Census TIGER/Line Shapefiles + """Load Census TIGER/Line Shapefiles. - Download TIGER/Line shapefiles from the United States Census Bureau - and load into R as 'SpatialDataFrame' or 'sf' objects.""" + Download TIGER/Line shapefiles from the United States Census Bureau and + load into R as 'SpatialDataFrame' or 'sf' objects.""" - homepage = "https://cloud.r-project.org/package=tigris" - url = "https://cloud.r-project.org/src/contrib/tigris_0.5.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tigris" + cran = "tigris" + version('1.5', sha256='5ef71ca83817ad6b97ee86d1e560e8e86ee21bdcb1807ce40c945b3213c04472') version('1.0', sha256='97c76568c7cf0615abcbf923a0b4387f6b8c1915b9eb42d0c34cb0f707654403') version('0.8.2', sha256='ed8d6ab25332c2cc800858d58324bd8264772d8a916a3f0a8d489250a7e7140e') version('0.5.3', sha256='6ecf76f82216798465cd9704acb432caea47469ffc4953f1aaefa4d642a28445') - depends_on('r@3.0.0:', when='@:0.5.3', type=('build', 'run')) - depends_on('r@3.3.0:', when='@0.6.1:', type=('build', 'run')) + depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.6.1:') depends_on('r-stringr', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) depends_on('r-rgdal', type=('build', 'run')) @@ -32,4 +31,5 @@ class RTigris(RPackage): depends_on('r-uuid', type=('build', 'run')) depends_on('r-sf', type=('build', 'run')) depends_on('r-dplyr', type=('build', 'run')) - depends_on('r-rgeos', when='@:0.5.3', type=('build', 'run')) + + depends_on('r-rgeos', type=('build', 'run'), when='@:0.5.3') diff --git a/var/spack/repos/builtin/packages/r-timedate/package.py b/var/spack/repos/builtin/packages/r-timedate/package.py index 719c1afbd6b76a..4054af3febe355 100644 --- a/var/spack/repos/builtin/packages/r-timedate/package.py +++ b/var/spack/repos/builtin/packages/r-timedate/package.py @@ -7,12 +7,19 @@ class RTimedate(RPackage): - """Environment for teaching "Financial Engineering and Computational - Finance". Managing chronological and calendar objects.""" + """Rmetrics - Chronological and Calendar Objects. - homepage = "https://cloud.r-project.org/package=timeDate" - url = "https://cloud.r-project.org/src/contrib/timeDate_3012.100.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/timeDate" + The 'timeDate' class fulfils the conventions of the ISO 8601 standard as + well as of the ANSI C and POSIX standards. Beyond these standards it + provides the "Financial Center" concept which allows to handle data records + collected in different time zones and mix them up to have always the proper + time stamps with respect to your personal financial center, or + alternatively to the GMT reference time. It can thus also handle time + stamps from historical data records from the same time zone, even if the + financial centers changed day light saving times at different calendar + dates.""" + + cran = "timeDate" version('3043.102', sha256='377cba03cddab8c6992e31d0683c1db3a73afa9834eee3e95b3b0723f02d7473') version('3042.101', sha256='6c8d4c7689b31c6a43555d9c7258516556ba03b132e5643691e3e317b89a8c6d') diff --git a/var/spack/repos/builtin/packages/r-tinytex/package.py b/var/spack/repos/builtin/packages/r-tinytex/package.py index 7ae85a03944ae7..11f44a5971e7e2 100644 --- a/var/spack/repos/builtin/packages/r-tinytex/package.py +++ b/var/spack/repos/builtin/packages/r-tinytex/package.py @@ -7,7 +7,8 @@ class RTinytex(RPackage): - """Helper Functions to Install and Maintain TeX Live, and Compile LaTeX Documents + """Helper Functions to Install and Maintain TeX Live, and Compile LaTeX + Documents. Helper functions to install and maintain the 'LaTeX' distribution named 'TinyTeX' (), a lightweight, cross-platform, @@ -15,13 +16,15 @@ class RTinytex(RPackage): contains helper functions to compile 'LaTeX' documents, and install missing 'LaTeX' packages automatically.""" - homepage = "https://github.com/yihui/tinytex" - cran = "tinytex" + cran = "tinytex" + version('0.37', sha256='2f4f330711fd6cd96927c18f2f649487b8a83a06ed04b5928a0067163e7948d9') + version('0.36', sha256='65e6c1b981686573dd406e97b9639224cc2640d55a59d6381360449f10763b78') version('0.32', sha256='70fa28195ae6c8b8d43790205b49745c5a062aab78e64cec39bfbe5ed604c29f') version('0.28', sha256='76a0650aeab04eb252dc9cfa9ba855d88b09dfc2207c4a8ea2ea04fa0e0eea86') version('0.15', sha256='5d0988d3b7f763dfa65c722f177452a21344e428415a4b31aeb51478f0abad90') depends_on('r-xfun@0.5:', type=('build', 'run')) - depends_on('r-xfun@0.19:', when='@0.28:', type=('build', 'run')) - depends_on('r-xfun@0.23:', when='@0.32:', type=('build', 'run')) + depends_on('r-xfun@0.19:', type=('build', 'run'), when='@0.28:') + depends_on('r-xfun@0.23:', type=('build', 'run'), when='@0.32:') + depends_on('r-xfun@0.29:', type=('build', 'run'), when='@0.36:') diff --git a/var/spack/repos/builtin/packages/r-tmixclust/package.py b/var/spack/repos/builtin/packages/r-tmixclust/package.py index a48e1432a3f30a..865b5cd14b27cd 100644 --- a/var/spack/repos/builtin/packages/r-tmixclust/package.py +++ b/var/spack/repos/builtin/packages/r-tmixclust/package.py @@ -8,7 +8,7 @@ class RTmixclust(RPackage): """Time Series Clustering of Gene Expression with Gaussian Mixed-Effects - Models and Smoothing Splines + Models and Smoothing Splines. Implementation of a clustering method for time series gene expression data based on mixed-effects models with Gaussian variables and non- @@ -16,9 +16,9 @@ class RTmixclust(RPackage): the high levels of noise present in typical gene expression time series datasets.""" - homepage = "https://bioconductor.org/packages/TMixClust" - git = "https://git.bioconductor.org/packages/TMixClust.git" + bioc = "TMixClust" + version('1.16.0', commit='e525cfd9c729a73a1964c243e5c34c37343f7bfa') version('1.12.0', commit='982b31bd7e22a3dc638bbda0336546220444f0c2') version('1.6.0', commit='9f5f78e52538d15f402c8f6e4c60f7212c7bc548') version('1.4.0', commit='a52fcae6e7a5dd41e7afbe128f35397e8bc8cb12') diff --git a/var/spack/repos/builtin/packages/r-tmvnsim/package.py b/var/spack/repos/builtin/packages/r-tmvnsim/package.py index b1030ee8056764..7dc28e50ff096a 100644 --- a/var/spack/repos/builtin/packages/r-tmvnsim/package.py +++ b/var/spack/repos/builtin/packages/r-tmvnsim/package.py @@ -7,7 +7,7 @@ class RTmvnsim(RPackage): - """Truncated Multivariate Normal Simulation + """Truncated Multivariate Normal Simulation. Importance sampling from the truncated multivariate normal using the GHK (Geweke-Hajivassiliou-Keane) simulator. Unlike Gibbs sampling which can get @@ -19,8 +19,6 @@ class RTmvnsim(RPackage): returned along with sampling weights, based on which, one can calculate integrals over truncated regions for multivariate normals.""" - homepage = "https://cloud.r-project.org/package=tmvnsim" - url = "https://cloud.r-project.org/src/contrib/tmvnsim_1.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tmvnsim" + cran = "tmvnsim" version('1.0-2', sha256='97f63d0bab3b240cc7bdbe6e6e74e90ad25a4382a345ee51a26fe3959edeba0f') diff --git a/var/spack/repos/builtin/packages/r-topgo/package.py b/var/spack/repos/builtin/packages/r-topgo/package.py index f927372ecc693a..3f9a8cc89a3f7c 100644 --- a/var/spack/repos/builtin/packages/r-topgo/package.py +++ b/var/spack/repos/builtin/packages/r-topgo/package.py @@ -7,16 +7,16 @@ class RTopgo(RPackage): - """Enrichment Analysis for Gene Ontology + """Enrichment Analysis for Gene Ontology. topGO package provides tools for testing GO terms while accounting for the topology of the GO graph. Different test statistics and different methods for eliminating local similarities and dependencies between GO terms can be implemented and applied.""" - homepage = "https://bioconductor.org/packages/topGO" - git = "https://git.bioconductor.org/packages/topGO.git" + bioc = "topGO" + version('2.46.0', commit='2bfa9dff41fff261aa6188f8368aebd6e8250b18') version('2.42.0', commit='3a33cf53883de45bda506953303e1809ab982adc') version('2.36.0', commit='c2f6c187b41c4aa44cc92ac781fdd878491a4019') version('2.34.0', commit='44cb5eaba515b365b7b2a8c22df0a45883db6b4d') diff --git a/var/spack/repos/builtin/packages/r-treeio/package.py b/var/spack/repos/builtin/packages/r-treeio/package.py new file mode 100644 index 00000000000000..9e792f3cf9037d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-treeio/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2022 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 import * + + +class RTreeio(RPackage): + """Base Classes and Functions for Phylogenetic Tree Input and Output. + + 'treeio' is an R package to make it easier to import and store phylogenetic + tree with associated data; and to link external data from different sources + to phylogeny. It also supports exporting phylogenetic tree with + heterogeneous associated data to a single tree file and can be served as a + platform for merging tree with associated data and converting file + formats.""" + + bioc = "treeio" + + version('1.18.1', commit='a06b6b3d2a64f1b22c6c8c5f97c08f5863349c83') + + depends_on('r@3.6.0:', type=('build', 'run')) + depends_on('r-ape', type=('build', 'run')) + depends_on('r-dplyr', type=('build', 'run')) + depends_on('r-jsonlite', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run')) + depends_on('r-rlang', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run')) + depends_on('r-tidytree@0.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-triebeard/package.py b/var/spack/repos/builtin/packages/r-triebeard/package.py index 71f8c569dfb728..9d60082a396938 100644 --- a/var/spack/repos/builtin/packages/r-triebeard/package.py +++ b/var/spack/repos/builtin/packages/r-triebeard/package.py @@ -7,11 +7,14 @@ class RTriebeard(RPackage): - """triebeard: 'Radix' Trees in 'Rcpp'""" + """'Radix' Trees in 'Rcpp'. - homepage = "https://github.com/Ironholds/triebeard/" - url = "https://cloud.r-project.org/src/contrib/triebeard_0.3.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/triebeard" + 'Radix trees', or 'tries', are key-value data structures optimised for + efficient lookups, similar in purpose to hash tables. 'triebeard' provides + an implementation of 'radix trees' for use in R programming and in + developing packages with 'Rcpp'.""" + + cran = "triebeard" version('0.3.0', sha256='bf1dd6209cea1aab24e21a85375ca473ad11c2eff400d65c6202c0fb4ef91ec3') diff --git a/var/spack/repos/builtin/packages/r-trimcluster/package.py b/var/spack/repos/builtin/packages/r-trimcluster/package.py index 67fd5a53069ad3..87bf0a43737672 100644 --- a/var/spack/repos/builtin/packages/r-trimcluster/package.py +++ b/var/spack/repos/builtin/packages/r-trimcluster/package.py @@ -7,14 +7,12 @@ class RTrimcluster(RPackage): - """Cluster analysis with trimming + """Cluster analysis with trimming. Trimmed k-means clustering. The method is described in Cuesta-Albertos et al. (1997) .""" - homepage = "https://www.homepages.ucl.ac.uk/~ucakche" - url = "https://cloud.r-project.org/src/contrib/trimcluster_0.1-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/trimcluster" + cran = "trimcluster" version('0.1-5', sha256='9239f20e4a06ac2fa89e5d5d89b23a45c8c534a7264d89bede8a35d43dda518b') version('0.1-2.1', sha256='b64a872a6c2ad677dfeecc776c9fe5aff3e8bab6bc6a8c86957b5683fd5d2300') diff --git a/var/spack/repos/builtin/packages/r-truncdist/package.py b/var/spack/repos/builtin/packages/r-truncdist/package.py index 1745566c88cc53..09db765886fd83 100644 --- a/var/spack/repos/builtin/packages/r-truncdist/package.py +++ b/var/spack/repos/builtin/packages/r-truncdist/package.py @@ -7,11 +7,17 @@ class RTruncdist(RPackage): - """truncdist: Truncated Random Variables""" + """Truncated Random Variables. - homepage = "https://cloud.r-project.org/package=truncdist" - url = "https://cloud.r-project.org/src/contrib/truncdist_1.0-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/truncdist" + A collection of tools to evaluate probability density functions, cumulative + distribution functions, quantile functions and random numbers for truncated + random variables. These functions are provided to also compute the expected + value and variance. Nadarajah and Kotz (2006) developed most of the + functions. QQ plots can be produced. All the probability functions in the + stats, stats4 and evd packages are automatically available for + truncation.""" + + cran = "truncdist" version('1.0-2', sha256='b848b68bdd983bd496fa7327632ffa8add8d2231229b8af5c8bc29d823e1300a') diff --git a/var/spack/repos/builtin/packages/r-truncnorm/package.py b/var/spack/repos/builtin/packages/r-truncnorm/package.py index 0d541c4181b1c8..e4010cf532206d 100644 --- a/var/spack/repos/builtin/packages/r-truncnorm/package.py +++ b/var/spack/repos/builtin/packages/r-truncnorm/package.py @@ -7,12 +7,12 @@ class RTruncnorm(RPackage): - """Density, probability, quantile and random number generation functions - for the truncated normal distribution.""" + """Truncated Normal Distribution. - homepage = "https://cloud.r-project.org/package=truncnorm" - url = "https://cloud.r-project.org/src/contrib/truncnorm_1.0-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/truncnorm" + Density, probability, quantile and random number generation functions for + the truncated normal distribution.""" + + cran = "truncnorm" version('1.0-8', sha256='49564e8d87063cf9610201fbc833859ed01935cc0581b9e21c42a0d21a47c87e') diff --git a/var/spack/repos/builtin/packages/r-trust/package.py b/var/spack/repos/builtin/packages/r-trust/package.py index f8689e065f532e..8a4e72faed71c7 100644 --- a/var/spack/repos/builtin/packages/r-trust/package.py +++ b/var/spack/repos/builtin/packages/r-trust/package.py @@ -7,14 +7,12 @@ class RTrust(RPackage): - """Trust Region Optimization + """Trust Region Optimization. Does local optimization using two derivatives and trust regions. Guaranteed to converge to local minimum of objective function.""" - homepage = "https://www.stat.umn.edu/geyer/trust" - url = "https://cloud.r-project.org/src/contrib/trust_0.1-7.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/trust" + cran = "trust" version('0.1-8', sha256='952e348b62aec35988b103fd152329662cb6a451538f184549252fbf49d7dcac') version('0.1-7', sha256='e3d15aa84a71becd2824253d4a8156bdf1ab9ac3b72ced0cd53f3bb370ac6f04') diff --git a/var/spack/repos/builtin/packages/r-tseries/package.py b/var/spack/repos/builtin/packages/r-tseries/package.py index 8ae8ffe6b4fa23..4ff59ca01243de 100644 --- a/var/spack/repos/builtin/packages/r-tseries/package.py +++ b/var/spack/repos/builtin/packages/r-tseries/package.py @@ -7,14 +7,11 @@ class RTseries(RPackage): - """Time series analysis and computational finance + """Time series analysis and computational finance.""" - Time series analysis and computational finance.""" - - homepage = "https://cloud.r-project.org/package=tseries" - url = "https://cloud.r-project.org/src/contrib/tseries_0.10-42.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tseries" + cran = "tseries" + version('0.10-49', sha256='45bf26d8f41f12a72954bbe5fb6f4da6cc4ef29ee075c49fe7cc8456926c14ba') version('0.10-48', sha256='53bd22708c936205c5f839a10f2e302524d2cc54dc309e7d885ebd081ccb4471') version('0.10-47', sha256='202377df56806fe611c2e12c4d9732c71b71220726e2defa7e568d2b5b62fb7b') version('0.10-46', sha256='12940afd1d466401160e46f993ed4baf28a42cef98d3757b66ee15e916e07222') diff --git a/var/spack/repos/builtin/packages/r-tsne/package.py b/var/spack/repos/builtin/packages/r-tsne/package.py index 826f19b95a78e8..bb65555bf5b17c 100644 --- a/var/spack/repos/builtin/packages/r-tsne/package.py +++ b/var/spack/repos/builtin/packages/r-tsne/package.py @@ -7,11 +7,11 @@ class RTsne(RPackage): - """A "pure R" implementation of the t-SNE algorithm.""" + """T-Distributed Stochastic Neighbor Embedding for R (t-SNE). - homepage = "https://cloud.r-project.org/package=tsne" - url = "https://cloud.r-project.org/src/contrib/tsne_0.1-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tnse" + A "pure R" implementation of the t-SNE algorithm.""" + + cran = "tsne" version('0.1-3', sha256='66fdf5d73e69594af529a9c4f261d972872b9b7bffd19f85c1adcd66afd80c69') version('0.1-2', sha256='c6c3455e0f0f5dcac14299b3dfeb1a5f1bfe5623cdaf602afc892491d3d1058b') diff --git a/var/spack/repos/builtin/packages/r-ttr/package.py b/var/spack/repos/builtin/packages/r-ttr/package.py index 28aa3a1f2d7117..60271d22ceeb71 100644 --- a/var/spack/repos/builtin/packages/r-ttr/package.py +++ b/var/spack/repos/builtin/packages/r-ttr/package.py @@ -7,16 +7,15 @@ class RTtr(RPackage): - """Technical Trading Rules + """Technical Trading Rules. A collection of over 50 technical indicators for creating technical trading rules. The package also provides fast implementations of common rolling-window functions, and several volatility calculations.""" - homepage = "https://github.com/joshuaulrich/TTR" - url = "https://cloud.r-project.org/src/contrib/TTR_0.23-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/TTR" + cran = "TTR" + version('0.24.3', sha256='4d9aef32647664be5cf965b05f21ed62cde9425fa87c21530852e05ef7aaba87') version('0.24.2', sha256='2587b988d9199474a19470b9b999b99133d0d8aa45410813e05c5f0ed763711b') version('0.23-4', sha256='eb17604da986213b3b924f0af65c3d089502a658a253ee34f6b8f6caccf6bfa2') version('0.23-3', sha256='2136032c7a2cd2a82518a4412fc655ecb16597b123dbdebe5684caef9f15261f') @@ -24,4 +23,4 @@ class RTtr(RPackage): depends_on('r-xts@0.10-0:', type=('build', 'run')) depends_on('r-zoo', type=('build', 'run')) - depends_on('r-curl', when='@0.23-4:', type=('build', 'run')) + depends_on('r-curl', type=('build', 'run'), when='@0.23-4:') diff --git a/var/spack/repos/builtin/packages/r-tweenr/package.py b/var/spack/repos/builtin/packages/r-tweenr/package.py index a1315a83c4e591..04ceec1cb083ba 100644 --- a/var/spack/repos/builtin/packages/r-tweenr/package.py +++ b/var/spack/repos/builtin/packages/r-tweenr/package.py @@ -7,16 +7,21 @@ class RTweenr(RPackage): - """tweenr: Interpolate Data for Smooth Animations""" + """Interpolate Data for Smooth Animations. - homepage = "https://github.com/thomasp85/tweenr" - url = "https://cloud.r-project.org/src/contrib/tweenr_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/tweenr" + In order to create smooth animation between states of data, tweening is + necessary. This package provides a range of functions for creating tweened + data that can be used as basis for animation. Furthermore it adds a number + of vectorized interpolaters for common R data types such as numeric, date + and colour.""" + cran = "tweenr" + + version('1.0.2', sha256='1805f575da6705ca4e5ec1c4605222fc826ba806d9ff9af41770294fe08ff69f') version('1.0.1', sha256='efd68162cd6d5a4f6d833dbf785a2bbce1cb7b9f90ba3fb060931a4bd705096b') depends_on('r@3.2.0:', type=('build', 'run')) + depends_on('r-rcpp@0.12.3:', type=('build', 'run')) depends_on('r-farver', type=('build', 'run')) depends_on('r-magrittr', type=('build', 'run')) - depends_on('r-rcpp@0.12.3:', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py b/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py index d0aa846bb05871..dab13e788881ba 100644 --- a/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py +++ b/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg18-knowngene/package.py @@ -7,14 +7,14 @@ class RTxdbHsapiensUcscHg18Knowngene(RPackage): - """Annotation package for TxDb object(s) + """Annotation package for TxDb object(s). Exposes an annotation databases generated from UCSC by exposing these as TxDb objects""" # This is a bioconductor package but ther is no available git repo - homepage = "https://bioconductor.org/packages/release/data/annotation/html/TxDb.Hsapiens.UCSC.hg18.knownGene.html" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/TxDb.Hsapiens.UCSC.hg18.knownGene_3.2.2.tar.gz" + bioc = "TxDb.Hsapiens.UCSC.hg18.knownGene" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/TxDb.Hsapiens.UCSC.hg18.knownGene_3.2.2.tar.gz" version('3.2.2', sha256='bc9ca40b4eab87f5ca64a4b876d42502b9b8e9f5983d745bfe0ee349d97b69fa') diff --git a/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg19-knowngene/package.py b/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg19-knowngene/package.py index e1a0dddbcc2d19..0e47f7a35ac04d 100644 --- a/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg19-knowngene/package.py +++ b/var/spack/repos/builtin/packages/r-txdb-hsapiens-ucsc-hg19-knowngene/package.py @@ -7,14 +7,14 @@ class RTxdbHsapiensUcscHg19Knowngene(RPackage): - """Annotation package for TxDb object(s) + """Annotation package for TxDb object(s). Exposes an annotation databases generated from UCSC by exposing these as TxDb objects.""" # This is a bioconductor package but there is no available git repo. - homepage = "https://bioconductor.org/packages/release/data/annotation/html/TxDb.Hsapiens.UCSC.hg19.knownGene.html" - url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2.tar.gz" + bioc = "TxDb.Hsapiens.UCSC.hg19.knownGene" + url = "https://bioconductor.org/packages/release/data/annotation/src/contrib/TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2.tar.gz" version('3.2.2', sha256='063de2b1174782a0b2b8ab7f04a0bdf3c43252cb67c685a9f8ef2b8e318352e9') diff --git a/var/spack/repos/builtin/packages/r-tximport/package.py b/var/spack/repos/builtin/packages/r-tximport/package.py index 1ac89a6969dac8..b3cf968d7a383b 100644 --- a/var/spack/repos/builtin/packages/r-tximport/package.py +++ b/var/spack/repos/builtin/packages/r-tximport/package.py @@ -8,7 +8,7 @@ class RTximport(RPackage): """Import and summarize transcript-level estimates for transcript- and - gene-level analysis + gene-level analysis. Imports transcript-level abundance, estimated counts and transcript lengths, and summarizes into matrices for use with downstream gene-level @@ -17,9 +17,9 @@ class RTximport(RPackage): can be used as an offset for different expression of gene-level counts.""" - homepage = "https://bioconductor.org/packages/tximport" - git = "https://git.bioconductor.org/packages/tximport.git" + bioc = "tximport" + version('1.22.0', commit='335213baee3492fbf6baaa8b4e067ac0ef384684') version('1.18.0', commit='58b20cbc566648586b6990b30ebc70bef308cb05') version('1.12.3', commit='acbdead961471c3b910d720f73bd0af1b7a07c57') version('1.10.1', commit='cd8f81cf7140f61d4a4f25f89451fb49e2cd4bd3') diff --git a/var/spack/repos/builtin/packages/r-tximportdata/package.py b/var/spack/repos/builtin/packages/r-tximportdata/package.py index 18a419f7342890..34e92e2b30695a 100644 --- a/var/spack/repos/builtin/packages/r-tximportdata/package.py +++ b/var/spack/repos/builtin/packages/r-tximportdata/package.py @@ -8,7 +8,7 @@ class RTximportdata(RPackage): """Import and summarize transcript-level estimates for transcript- and - gene-level analysis + gene-level analysis. Imports transcript-level abundance, estimated counts and transcript lengths, and summarizes into matrices for use with downstream gene-level @@ -16,7 +16,7 @@ class RTximportdata(RPackage): transcript abundance estimates, is provided as a matrix which can be used as an offset for different expression of gene-level counts.""" - homepage = "https://github.com/mikelove/tximport" - git = "https://git.bioconductor.org/packages/tximportData" + bioc = "tximportData" + version('1.22.0', commit='c576b18e43985baf8beab327cbc54afe8324659c') version('1.18.0', commit='24945f8dd1e4e441ad5145fb7a37a1630912f929') diff --git a/var/spack/repos/builtin/packages/r-tzdb/package.py b/var/spack/repos/builtin/packages/r-tzdb/package.py index 17168f2179e9e1..ea2b2509ccaa3e 100644 --- a/var/spack/repos/builtin/packages/r-tzdb/package.py +++ b/var/spack/repos/builtin/packages/r-tzdb/package.py @@ -19,8 +19,7 @@ class RTzdb(RPackage): are provided for calendar specific calculations, along with a limited interface for time zone manipulations.""" - homepage = "https://github.com/r-lib/tzdb" - cran = "tzdb" + cran = "tzdb" version('0.2.0', sha256='c335905d452b400af7ed54b916b5246cb3f47ede0602911a2bcb25a1cf56d5a9') diff --git a/var/spack/repos/builtin/packages/r-ucminf/package.py b/var/spack/repos/builtin/packages/r-ucminf/package.py index 65c214cf811c23..e3e7764934492c 100644 --- a/var/spack/repos/builtin/packages/r-ucminf/package.py +++ b/var/spack/repos/builtin/packages/r-ucminf/package.py @@ -7,14 +7,14 @@ class RUcminf(RPackage): - """An algorithm for general-purpose unconstrained non-linear optimization. + """General-Purpose Unconstrained Non-Linear Optimization. + + An algorithm for general-purpose unconstrained non-linear optimization. The algorithm is of quasi-Newton type with BFGS updating of the inverse Hessian and soft line search with a trust region type monitoring of the input to the line search algorithm. The interface of 'ucminf' is designed for easy interchange with 'optim'.""" - homepage = "https://cloud.r-project.org/package=ucminf" - url = "https://cloud.r-project.org/src/contrib/ucminf_1.1-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/ucminf" + cran = "ucminf" version('1.1-4', sha256='a2eb382f9b24e949d982e311578518710f8242070b3aa3314a331c1e1e7f6f07') diff --git a/var/spack/repos/builtin/packages/r-udunits2/package.py b/var/spack/repos/builtin/packages/r-udunits2/package.py index 904d9ef6ef7790..448dc9acb719db 100644 --- a/var/spack/repos/builtin/packages/r-udunits2/package.py +++ b/var/spack/repos/builtin/packages/r-udunits2/package.py @@ -7,12 +7,13 @@ class RUdunits2(RPackage): - """Provides simple bindings to Unidata's udunits library.""" + """Udunits-2 Bindings for R. - homepage = "https://github.com/pacificclimate/Rudunits2" - url = "https://cloud.r-project.org/src/contrib/udunits2_0.13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/udunits2" + Provides simple bindings to Unidata's udunits library.""" + cran = "udunits2" + + version('0.13.2', sha256='ee00898801b3282717cba40a9ef930515506386aa82a050356d1a9c80a9f5969') version('0.13', sha256='d155d3c07f6202b65dec4075ffd1e1c3f4f35f5fdece8cfb319d39256a3e5b79') depends_on('r@2.10.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 54e778bdbccaea..b424903aa947be 100644 --- a/var/spack/repos/builtin/packages/r-units/package.py +++ b/var/spack/repos/builtin/packages/r-units/package.py @@ -7,7 +7,7 @@ class RUnits(RPackage): - """Measurement Units for R Vectors + """Measurement Units for R Vectors. Support for measurement units in R vectors, matrices and arrays: automatic propagation, conversion, derivation and simplification of units; raising @@ -18,10 +18,10 @@ class RUnits(RPackage): ), included in this package as a vignette; see 'citation("units")' for details.""" - homepage = "https://github.com/edzer/units/" - url = "https://cloud.r-project.org/src/contrib/units_0.4-6.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/units" + cran = "units" + version('0.8-0', sha256='9c46fe138e8c1c3d3a51268776412f02d09673656516148cccb71b1071beb21a') + version('0.7-2', sha256='b90be023431100632b3081747af9e743e615452b4ad38810991f7b024b7040eb') version('0.6-7', sha256='3f73a62bafdbe0f93bbf00ac4b1adb8f919dd04649ff8f1d007f2986e35cb7e5') version('0.6-3', sha256='03de88d9dcfe80d22dd3813413f33657c576aed24a8091dbfc7f68602020a64f') version('0.6-2', sha256='5e286775d0712c8e15b6ae3a533d4c4349b0f6410c2d9d897ca519c3d0e5f170') @@ -29,5 +29,6 @@ class RUnits(RPackage): depends_on('r@3.0.2:', type=('build', 'run')) depends_on('r-rcpp@0.12.10:', type=('build', 'run')) - depends_on('r-udunits2@0.13:', when='@:0.5-1', type=('build', 'run')) depends_on('udunits', when='@0.6-0:') + + depends_on('r-udunits2@0.13:', type=('build', 'run'), when='@:0.5-1') diff --git a/var/spack/repos/builtin/packages/r-upsetr/package.py b/var/spack/repos/builtin/packages/r-upsetr/package.py index 244e0894b16212..eccbdcb0c21310 100644 --- a/var/spack/repos/builtin/packages/r-upsetr/package.py +++ b/var/spack/repos/builtin/packages/r-upsetr/package.py @@ -7,12 +7,14 @@ class RUpsetr(RPackage): - """UpSetR: A More Scalable Alternative to Venn and Euler Diagrams - forVisualizing Intersecting Sets""" + """A More Scalable Alternative to Venn and Euler Diagrams for Visualizing + Intersecting Sets. - homepage = "https://github.com/hms-dbmi/UpSetR" - url = "https://cloud.r-project.org/src/contrib/UpSetR_1.4.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/UpSetR" + Creates visualizations of intersecting sets using a novel matrix design, + along with visualizations of several common set, element and attribute + related tasks (Conway 2017) .""" + + cran = "UpSetR" version('1.4.0', sha256='351e5fee64204cf77fd378cf2a2c0456cc19d4d98a2fd5f3dac74b69a505f100') diff --git a/var/spack/repos/builtin/packages/r-urca/package.py b/var/spack/repos/builtin/packages/r-urca/package.py index 0a024f1aae7a62..5f773d8b7e4cd0 100644 --- a/var/spack/repos/builtin/packages/r-urca/package.py +++ b/var/spack/repos/builtin/packages/r-urca/package.py @@ -7,12 +7,12 @@ class RUrca(RPackage): - """Unit root and cointegration tests encountered in applied econometric + """Unit Root and Cointegration Tests for Time Series Data. + + Unit root and cointegration tests encountered in applied econometric analysis are implemented.""" - homepage = "https://cloud.r-project.org/package=urca" - url = "https://cloud.r-project.org/src/contrib/urca_1.3-0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/urca" + cran = "urca" version('1.3-0', sha256='621cc82398e25b58b4a16edf000ed0a1484d9a0bc458f734e97b6f371cc76aaa') diff --git a/var/spack/repos/builtin/packages/r-urltools/package.py b/var/spack/repos/builtin/packages/r-urltools/package.py index f1098c391663b1..eb6355eb98e423 100644 --- a/var/spack/repos/builtin/packages/r-urltools/package.py +++ b/var/spack/repos/builtin/packages/r-urltools/package.py @@ -7,11 +7,16 @@ class RUrltools(RPackage): - """urltools: Vectorised Tools for URL Handling and Parsing""" + """Vectorised Tools for URL Handling and Parsing. - homepage = "https://github.com/Ironholds/urltools/" - url = "https://cloud.r-project.org/src/contrib/urltools_1.7.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/urltools" + A toolkit for all URL-handling needs, including encoding and decoding, + parsing, parameter extraction and modification. All functions are designed + to be both fast and entirely vectorised. It is intended to be useful for + people dealing with web-related datasets, such as server-side logs, + although may be useful for other situations involving large sets of + URLs.""" + + cran = "urltools" version('1.7.3', sha256='6020355c1b16a9e3956674e5dea9ac5c035c8eb3eb6bbdd841a2b5528cafa313') diff --git a/var/spack/repos/builtin/packages/r-usethis/package.py b/var/spack/repos/builtin/packages/r-usethis/package.py index 48229a97e187ce..cda4f1c1430ca1 100644 --- a/var/spack/repos/builtin/packages/r-usethis/package.py +++ b/var/spack/repos/builtin/packages/r-usethis/package.py @@ -7,45 +7,52 @@ class RUsethis(RPackage): - """Automate Package and Project Setup + """Automate Package and Project Setup. Automate package and project setup tasks that are otherwise performed manually. This includes setting up unit testing, test coverage, continuous integration, Git, 'GitHub', licenses, 'Rcpp', 'RStudio' projects, and more.""" - homepage = "https://usethis.r-lib.org/" - url = "https://cloud.r-project.org/src/contrib/usethis_1.5.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/usethis" + cran = "usethis" + version('2.1.5', sha256='7d539e16ecdc1cd45ba1a215d42d8b9c16bc38280ddd27048003dbb37b16f052') version('2.0.0', sha256='22aa2b59f36a8701a4648554c7b0e010253bf917a0f431f06efac7d8a6b59854') version('1.6.1', sha256='60339059a97ed07dea7f8908b828b5bb42e0fd0b471165c061bc9660b0d59d6f') version('1.5.1', sha256='9e3920a04b0df82adf59eef2c1b2b4d835c4a757a51b3c163b8fc619172f561d') depends_on('r@3.2:', type=('build', 'run')) - depends_on('r-cli', when='@1.6.1:', type=('build', 'run')) + depends_on('r@3.4:', type=('build', 'run'), when='@2.1.5:') + 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')) depends_on('r-crayon', type=('build', 'run')) 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-fs@1.3.0:', type=('build', 'run')) - depends_on('r-gert@1.0.2:', when='@2.0.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:') depends_on('r-gh', type=('build', 'run')) - depends_on('r-gh@1.1.0:', when='@1.6.1:', type=('build', 'run')) - depends_on('r-gh@1.2.0:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-gh@1.1.0:', type=('build', 'run'), when='@1.6.1:') + depends_on('r-gh@1.2.0:', type=('build', 'run'), when='@2.0.0:') + depends_on('r-gh@1.2.1:', type=('build', 'run'), when='@2.1.5:') depends_on('r-glue@1.3.0:', type=('build', 'run')) - depends_on('r-jsonlite', when='@2.0.0:', type=('build', 'run')) - depends_on('r-lifecycle', when='@2.0.0:', type=('build', 'run')) + depends_on('r-jsonlite', type=('build', 'run'), when='@2.0.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.5:') depends_on('r-purrr', type=('build', 'run')) - depends_on('r-rappdirs', when='@2.0.0:', type=('build', 'run')) + depends_on('r-rappdirs', type=('build', 'run'), when='@2.0.0:') depends_on('r-rlang', type=('build', 'run')) - depends_on('r-rlang@0.4.3:', when='@1.6.1:', type=('build', 'run')) + 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-rprojroot@1.2:', type=('build', 'run')) depends_on('r-rstudioapi', type=('build', 'run')) depends_on('r-whisker', type=('build', 'run')) depends_on('r-withr', type=('build', 'run')) - depends_on('r-withr@2.3.0:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-withr@2.3.0:', type=('build', 'run'), when='@2.0.0:') depends_on('r-yaml', type=('build', 'run')) - depends_on('r-clisymbols', when='@:1.5', type=('build', 'run')) - depends_on('r-git2r@0.23:', when='@:1.6.1', type=('build', 'run')) - depends_on('r-rematch2', when='@1.6.1', type=('build', 'run')) + + depends_on('r-clisymbols', type=('build', 'run'), when='@:1.5') + depends_on('r-git2r@0.23:', type=('build', 'run'), when='@:1.6.1') + depends_on('r-rematch2', type=('build', 'run'), when='@1.6.1') diff --git a/var/spack/repos/builtin/packages/r-utf8/package.py b/var/spack/repos/builtin/packages/r-utf8/package.py index 383a7b8d5b3f2d..8441eaaeebbd8e 100644 --- a/var/spack/repos/builtin/packages/r-utf8/package.py +++ b/var/spack/repos/builtin/packages/r-utf8/package.py @@ -7,13 +7,14 @@ class RUtf8(RPackage): - """Process and print 'UTF-8' encoded international text - (Unicode). Input, validate, normalize, encode, format, and display.""" + """Unicode Text Processing. - homepage = "https://cloud.r-project.org/package=utf8" - url = "https://cloud.r-project.org/src/contrib/utf8_1.1.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/utf8" + Process and print 'UTF-8' encoded international text (Unicode). Input, + validate, normalize, encode, format, and display.""" + cran = "utf8" + + version('1.2.2', sha256='a71aee87d43a9bcf29249c7a5a2e9ca1d2a836e8d5ee3a264d3062f25378d8f4') version('1.1.4', sha256='f6da9cadfc683057d45f54b43312a359cf96ec2731c0dda18a8eae31d1e31e54') version('1.1.3', sha256='43b394c3274ba0f66719d28dc4a7babeb87187e766de8d8ca716e0548091440f') version('1.1.2', sha256='148517aadb75d82aba61f63afe2a30d254abebbdc7e32dd0830e12ff443915b9') diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index 3bb287e94741d9..875f199d32c885 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -8,15 +8,14 @@ class RUuid(RPackage): - """Tools for Generating and Handling of UUIDs + """Tools for Generating and Handling of UUIDs. Tools for generating and handling of UUIDs (Universally Unique Identifiers).""" - homepage = "https://www.rforge.net/uuid" - url = "https://cloud.r-project.org/src/contrib/uuid_0.1-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/uuid" + cran = "uuid" + version('1.0-3', sha256='456e4633659f20242fd7cd585ad005a3e07265f1d1db383fca6794c8ac2c8346') version('0.1-4', sha256='98e0249dda17434bfa209c2058e9911e576963d4599be9f7ea946e664f8ca93e') version('0.1-2', sha256='dd71704dc336b0857981b92a75ed9877d4ca47780b1682def28839304cd3b1be') diff --git a/var/spack/repos/builtin/packages/r-uwot/package.py b/var/spack/repos/builtin/packages/r-uwot/package.py index 32a0288a4ce195..e7bb652c0715e0 100644 --- a/var/spack/repos/builtin/packages/r-uwot/package.py +++ b/var/spack/repos/builtin/packages/r-uwot/package.py @@ -7,7 +7,8 @@ class RUwot(RPackage): - """The Uniform Manifold Approximation and Projection (UMAP) Method for Dimensionality Reduction + """The Uniform Manifold Approximation and Projection (UMAP) Method for + Dimensionality Reduction. An implementation of the Uniform Manifold Approximation and Projection dimensionality reduction by McInnes et al. (2018) . It @@ -19,10 +20,9 @@ class RUwot(RPackage): () for more documentation and examples.""" - homepage = "https://github.com/jlmelville/uwot" - url = "https://cloud.r-project.org/src/contrib/uwot_0.1.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/uwot" + cran = "uwot" + version('0.1.11', sha256='4fcf90f1369a2a1f01db9e05a2365b155b2ada8e51e1f7f3ba5122d86affd41b') version('0.1.10', sha256='6ee1b6027bce679cd5a35f647f516a5b327632234bcf323c7f3d5b5e10807d23') version('0.1.3', sha256='4936e6922444cae8a71735e945b6bb0828a1012232eb94568054f78451c406d7') @@ -31,9 +31,10 @@ class RUwot(RPackage): depends_on('r-fnn', type=('build', 'run')) depends_on('r-rspectra', type=('build', 'run')) depends_on('r-rcppannoy@0.0.11:', type=('build', 'run')) - depends_on('r-rcppannoy@0.0.17:', when='@0.1.10:', type=('build', 'run')) + 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-dqrng', type=('build', 'run')) - depends_on('r-rcppparallel', when='@:0.1.3', type=('build', 'run')) - depends_on('gmake', when='@:0.1.3', type='build') + + depends_on('r-rcppparallel', type=('build', 'run'), when='@:0.1.3') + depends_on('gmake', type='build', 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 1609e9b9bb732a..a054b9a04c8759 100644 --- a/var/spack/repos/builtin/packages/r-v8/package.py +++ b/var/spack/repos/builtin/packages/r-v8/package.py @@ -7,11 +7,15 @@ class RV8(RPackage): - """V8: Embedded JavaScript and WebAssembly Engine for R""" + """Embedded JavaScript and WebAssembly Engine for R. + + An R interface to V8: Google's open source JavaScript and WebAssembly + engine. This package can be compiled either with V8 version 6 and up or + NodeJS when built as a shared library.""" - homepage = "https://github.com/jeroen/v8" cran = "V8" + version('4.0.0', sha256='146a4cb671264f865ac2f2e35bfdfb37e2df70e4f6784354fb6e8a80a19dbbc8') version('3.6.0', sha256='a3969898bf4a7c13d3130fae0d385cd048d46372ff4a412917b914b159261377') version('3.4.0', sha256='f5c8a2a03cc1be9f504f47711a0fcd1b962745139c9fb2a10fbd79c4ae103fbd', deprecated=True) diff --git a/var/spack/repos/builtin/packages/r-variantannotation/package.py b/var/spack/repos/builtin/packages/r-variantannotation/package.py index c4d61c5a854086..6dec776a644351 100644 --- a/var/spack/repos/builtin/packages/r-variantannotation/package.py +++ b/var/spack/repos/builtin/packages/r-variantannotation/package.py @@ -7,14 +7,14 @@ class RVariantannotation(RPackage): - """Annotation of Genetic Variants + """Annotation of Genetic Variants. Annotate variants, compute amino acid coding changes, predict coding outcomes.""" - homepage = "https://bioconductor.org/packages/VariantAnnotation" - git = "https://git.bioconductor.org/packages/VariantAnnotation.git" + bioc = "VariantAnnotation" + version('1.40.0', commit='50ead7cb60cedf3c053853fab92d9f104f9f85bd') version('1.36.0', commit='9918bd19a2e6f89e5edc5fe03c8812f500bb3e19') version('1.30.1', commit='fb1ab00872570afb280522c4663e347dafc07a9e') version('1.28.13', commit='0393347b8ce2d5edf1a61589be93e6a93eda3419') @@ -23,42 +23,44 @@ class RVariantannotation(RPackage): version('1.22.3', commit='3a91b6d4297aa416d5f056dec6f8925eb1a8eaee') depends_on('r@2.8.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@1.40.0:') depends_on('r-biocgenerics@0.15.3:', type=('build', 'run')) - depends_on('r-matrixgenerics', when='@1.36.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@1.40.0:') + depends_on('r-matrixgenerics', type=('build', 'run'), when='@1.36.0:') depends_on('r-genomeinfodb@1.11.4:', type=('build', 'run')) - depends_on('r-genomeinfodb@1.15.2:', when='@1.26.1:', type=('build', 'run')) + depends_on('r-genomeinfodb@1.15.2:', type=('build', 'run'), when='@1.26.1:') depends_on('r-genomicranges@1.27.6:', type=('build', 'run')) - depends_on('r-genomicranges@1.31.8:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-genomicranges@1.41.5:', when='@1.36.0:', type=('build', 'run')) + depends_on('r-genomicranges@1.31.8:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-genomicranges@1.41.5:', type=('build', 'run'), when='@1.36.0:') depends_on('r-summarizedexperiment@1.5.3:', type=('build', 'run')) - depends_on('r-summarizedexperiment@1.19.5:', when='@1.36.0:', type=('build', 'run')) + depends_on('r-summarizedexperiment@1.19.5:', type=('build', 'run'), when='@1.36.0:') depends_on('r-rsamtools@1.23.10:', type=('build', 'run')) - depends_on('r-rsamtools@1.31.2:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-rsamtools@1.33.6:', when='@1.28.13:', type=('build', 'run')) - depends_on('r-rsamtools@1.99.0:', when='@1.30.1:', type=('build', 'run')) + depends_on('r-rsamtools@1.31.2:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-rsamtools@1.33.6:', type=('build', 'run'), when='@1.28.13:') + depends_on('r-rsamtools@1.99.0:', type=('build', 'run'), when='@1.30.1:') depends_on('r-dbi', type=('build', 'run')) depends_on('r-zlibbioc', type=('build', 'run')) depends_on('r-biobase', type=('build', 'run')) depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.24:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@1.36.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.17.24:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@1.36.0:') depends_on('r-iranges@2.3.25:', type=('build', 'run')) - depends_on('r-iranges@2.13.13:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@1.36.0:', type=('build', 'run')) + depends_on('r-iranges@2.13.13:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@1.36.0:') depends_on('r-xvector@0.5.6:', type=('build', 'run')) - depends_on('r-xvector@0.19.7:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-xvector@0.29.2:', when='@1.36.0:', type=('build', 'run')) + depends_on('r-xvector@0.19.7:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-xvector@0.29.2:', type=('build', 'run'), when='@1.36.0:') depends_on('r-biostrings@2.33.5:', type=('build', 'run')) - depends_on('r-biostrings@2.47.6:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-biostrings@2.57.2:', when='@1.36.0:', type=('build', 'run')) + depends_on('r-biostrings@2.47.6:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-biostrings@2.57.2:', type=('build', 'run'), when='@1.36.0:') depends_on('r-annotationdbi@1.27.9:', type=('build', 'run')) depends_on('r-rtracklayer@1.25.16:', type=('build', 'run')) - depends_on('r-rtracklayer@1.39.7:', when='@1.26.1:', type=('build', 'run')) + depends_on('r-rtracklayer@1.39.7:', type=('build', 'run'), when='@1.26.1:') depends_on('r-bsgenome@1.37.6:', type=('build', 'run')) - depends_on('r-bsgenome@1.47.3:', when='@1.26.1:', type=('build', 'run')) + depends_on('r-bsgenome@1.47.3:', type=('build', 'run'), when='@1.26.1:') depends_on('r-genomicfeatures@1.27.4:', type=('build', 'run')) - depends_on('r-genomicfeatures@1.31.3:', when='@1.26.1:', type=('build', 'run')) - depends_on('r-rhtslib', when='@1.30.1:', type=('build', 'run')) + depends_on('r-genomicfeatures@1.31.3:', type=('build', 'run'), when='@1.26.1:') + depends_on('r-rhtslib', type=('build', 'run'), when='@1.30.1:') depends_on('gmake', type='build') # Not listed but needed diff --git a/var/spack/repos/builtin/packages/r-varselrf/package.py b/var/spack/repos/builtin/packages/r-varselrf/package.py index 8365d3b3fdd1da..030ec89edf56b4 100644 --- a/var/spack/repos/builtin/packages/r-varselrf/package.py +++ b/var/spack/repos/builtin/packages/r-varselrf/package.py @@ -7,16 +7,16 @@ class RVarselrf(RPackage): - """Variable selection from random forests using both backwards variable + """Variable Selection using Random Forests. + + Variable selection from random forests using both backwards variable elimination (for the selection of small sets of non-redundant variables) and selection based on the importance spectrum (somewhat similar to scree - plots; for the selection of large, potentially highly-correlated variables) - . Main applications in high-dimensional data (e.g., microarray data, - and other genomics and proteomics applications).""" + plots; for the selection of large, potentially highly-correlated + variables). Main applications in high-dimensional data (e.g., microarray + data, and other genomics and proteomics applications).""" - homepage = "https://ligarto.org/rdiaz/Software/Software.html" - url = "https://cloud.r-project.org/src/contrib/varSelRF_0.7-8.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/varSelRF" + cran = "varSelRF" version('0.7-8', sha256='719487fb560cb4733816bafe4cbc958a132674825e3b9d4f82ce8f2003cd8940') diff --git a/var/spack/repos/builtin/packages/r-vcd/package.py b/var/spack/repos/builtin/packages/r-vcd/package.py index 0cf94b091cb79a..aa2d4d3104f2a4 100644 --- a/var/spack/repos/builtin/packages/r-vcd/package.py +++ b/var/spack/repos/builtin/packages/r-vcd/package.py @@ -7,19 +7,18 @@ class RVcd(RPackage): - """Visualizing Categorical Data + """Visualizing Categorical Data. - Visualization techniques, data sets, summary and inference procedures - aimed particularly at categorical data. Special emphasis is given to highly + Visualization techniques, data sets, summary and inference procedures aimed + particularly at categorical data. Special emphasis is given to highly extensible grid graphics. The package was package was originally inspired by the book "Visualizing Categorical Data" by Michael Friendly and is now the main support package for a new book, "Discrete Data Analysis with R" by Michael Friendly and David Meyer (2015).""" - homepage = "https://cloud.r-project.org/package=vcd" - url = "https://cloud.r-project.org/src/contrib/vcd_1.4-1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/vcd" + cran = "vcd" + version('1.4-9', sha256='a5b420ad5ff1a27fa92f98099a8b43f2dded7e5f60297b3e4d947ad6f039568f') version('1.4-8', sha256='236fcb183152f6e9d131eeb3931d5a064a5ff79be91e4533df9148fd2ff41e0c') version('1.4-4', sha256='a561adf120b5ce41b66e0c0c321542fcddc772eb12b3d7020d86e9cd014ce9d2') version('1.4-3', sha256='17ce89927421d9cd01285b6093eeaaecb1e7252388007f66d3b9222e58cc5f15') diff --git a/var/spack/repos/builtin/packages/r-vcfr/package.py b/var/spack/repos/builtin/packages/r-vcfr/package.py index 412e982a4b098d..3622914b1d40cc 100644 --- a/var/spack/repos/builtin/packages/r-vcfr/package.py +++ b/var/spack/repos/builtin/packages/r-vcfr/package.py @@ -7,7 +7,7 @@ class RVcfr(RPackage): - """Manipulate and Visualize VCF Data + """Manipulate and Visualize VCF Data. Facilitates easy manipulation of variant call format (VCF) data. Functions are provided to rapidly read from and write to VCF files. Once VCF data is @@ -18,8 +18,7 @@ class RVcfr(RPackage): converted into other popular R objects (e.g., genlight, DNAbin). VcfR provides a link between VCF data and familiar R software.""" - homepage = "https://github.com/knausb/vcfR" - cran = "vcfR" + cran = "vcfR" maintainers = ['dorton21'] diff --git a/var/spack/repos/builtin/packages/r-vctrs/package.py b/var/spack/repos/builtin/packages/r-vctrs/package.py index 4bcbdbe5153d67..2a65475e9b2b58 100644 --- a/var/spack/repos/builtin/packages/r-vctrs/package.py +++ b/var/spack/repos/builtin/packages/r-vctrs/package.py @@ -7,14 +7,13 @@ class RVctrs(RPackage): - """Vector Helpers + """Vector Helpers. Defines new notions of prototype and size that are used to provide tools for consistent and well-founded type-coercion and size-recycling, and are in turn connected to ideas of type- and size-stability useful for analyzing function interfaces.""" - homepage = "https://github.com/r-lib/vctrs" cran = "vctrs" version('0.3.8', sha256='7f4e8b75eda115e69dddf714f0643eb889ad61017cdc13af24389aab2a2d1bb1') @@ -23,11 +22,12 @@ class RVctrs(RPackage): version('0.2.0', sha256='5bce8f228182ecaa51230d00ad8a018de9cf2579703e82244e0931fe31f20016') depends_on('r@3.2:', type=('build', 'run')) - depends_on('r@3.3:', when='@0.3.5:', type=('build', 'run')) + depends_on('r@3.3:', type=('build', 'run'), when='@0.3.5:') depends_on('r-ellipsis@0.2.0:', type=('build', 'run')) depends_on('r-glue', type=('build', 'run')) depends_on('r-rlang@0.4.0:', type=('build', 'run')) - depends_on('r-rlang@0.4.7:', when='@0.3.5:', type=('build', 'run')) - depends_on('r-rlang@0.4.10:', when='@0.3.7:', type=('build', 'run')) - depends_on('r-digest', when='@:0.3.6', type=('build', 'run')) - depends_on('r-zeallot', when='@:0.2.0', type=('build', 'run')) + depends_on('r-rlang@0.4.7:', type=('build', 'run'), when='@0.3.5:') + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@0.3.7:') + + depends_on('r-digest', type=('build', 'run'), when='@:0.3.6') + depends_on('r-zeallot', type=('build', 'run'), when='@:0.2.0') diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py index a2fa09668aec25..688db4af048756 100644 --- a/var/spack/repos/builtin/packages/r-vegan/package.py +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -7,14 +7,12 @@ class RVegan(RPackage): - """Community Ecology Package + """Community Ecology Package. - Ordination methods, diversity analysis and other functions for - community and vegetation ecologists.""" + Ordination methods, diversity analysis and other functions for community + and vegetation ecologists.""" - homepage = "https://github.com/vegandevs/vegan" - url = "https://cloud.r-project.org/src/contrib/vegan_2.4-3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/vegan" + cran = "vegan" version('2.5-7', sha256='e63b586951ea7d8b0118811f329c700212892ec1db3b93951603ce1d68aa462a') version('2.5-5', sha256='876b5266f29f3034fed881020d16f476e62d145a00cb450a1a213e019e056971') @@ -22,9 +20,9 @@ class RVegan(RPackage): version('2.4-3', sha256='2556b1281a62e53f32bb57539bc600c00a599d0699867912220535d1a3ebec97') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.1.0:', when='@2.5-1', type=('build', 'run')) - depends_on('r@3.2.0:', when='@2.5-2:2.5-4', type=('build', 'run')) - depends_on('r@3.4.0:', when='@2.5-5:', type=('build', 'run')) + 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-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-vfs/package.py b/var/spack/repos/builtin/packages/r-vfs/package.py index fbcfc609ec812c..ef72634d0a19d0 100644 --- a/var/spack/repos/builtin/packages/r-vfs/package.py +++ b/var/spack/repos/builtin/packages/r-vfs/package.py @@ -7,11 +7,16 @@ class RVfs(RPackage): - """VFS: Vegetated Filter Strip and Erosion Model""" + """Vegetated Filter Strip and Erosion Model. - homepage = "https://cloud.r-project.org/package=VFS" - url = "https://cloud.r-project.org/src/contrib/VFS_1.0.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/VFS" + Empirical models for runoff, erosion, and phosphorus loss across a + vegetated filter strip, given slope, soils, climate, and vegetation (Gall + et al., 2018) . It also includes functions + for deriving climate parameters from measured daily weather data, and for + simulating rainfall. Models implemented include MUSLE (Williams, 1975) and + APLE (Vadas et al., 2009 ).""" + + cran = "VFS" version('1.0.2', sha256='8ff7e7e13919ff21f10c7c693ef596a2c7b57c7ca37d79278e443ed122a21aad') diff --git a/var/spack/repos/builtin/packages/r-vgam/package.py b/var/spack/repos/builtin/packages/r-vgam/package.py index 9c01f66037fc7d..26644803a6f772 100644 --- a/var/spack/repos/builtin/packages/r-vgam/package.py +++ b/var/spack/repos/builtin/packages/r-vgam/package.py @@ -7,7 +7,7 @@ class RVgam(RPackage): - """Vector Generalized Linear and Additive Models + """Vector Generalized Linear and Additive Models. An implementation of about 6 major classes of statistical regression models. The central algorithm is Fisher scoring and iterative reweighted @@ -26,9 +26,7 @@ class RVgam(RPackage): effect detection is implemented. Note that these functions are subject to change; see the NEWS and ChangeLog files for latest changes.""" - homepage = "https://cloud.r-project.org/package=VGAM" - url = "https://cloud.r-project.org/src/contrib/VGAM_1.0-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/VGAM" + cran = "VGAM" version('1.1-5', sha256='30190b150f3e5478137d288a45f575b2654ad7c29254b0a1fe5c954ee010a1bb') version('1.1-1', sha256='de192bd65a7e8818728008de8e60e6dd3b61a13616c887a43e0ccc8147c7da52') @@ -40,6 +38,6 @@ class RVgam(RPackage): version('1.0-0', sha256='6acdd7db49c0987c565870afe593160ceba72a6ca4a84e6da3cf6f74d1fa02e1') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.1.0:', when='@1.0-2:1.0-3', type=('build', 'run')) - depends_on('r@3.4.0:', when='@1.0-4:', type=('build', 'run')) - depends_on('r@3.5.0:', when='@1.1-5:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@1.0-2:') + depends_on('r@3.4.0:', type=('build', 'run'), when='@1.0-4:') + depends_on('r@3.5.0:', type=('build', 'run'), when='@1.1-5:') diff --git a/var/spack/repos/builtin/packages/r-vioplot/package.py b/var/spack/repos/builtin/packages/r-vioplot/package.py index ae32159601157e..bf5a43851a70f8 100644 --- a/var/spack/repos/builtin/packages/r-vioplot/package.py +++ b/var/spack/repos/builtin/packages/r-vioplot/package.py @@ -7,15 +7,14 @@ class RVioplot(RPackage): - """Violin Plot + """Violin Plot. A violin plot is a combination of a box plot and a kernel density plot. This package allows extensive customisation of violin plots. """ - homepage = "https://cloud.r-project.org/package=vioplot" - url = "https://cloud.r-project.org/src/contrib/vioplot_0.3.2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/vioplot" + cran = "vioplot" + version('0.3.7', sha256='06475d9a47644245ec91598e9aaef7db1c393802d9fc314420ac5139ae56adb6') version('0.3.5', sha256='1b64833c1bd6851036cf1c400c7d0036a047e71def94a399c897263b4b303e2a') version('0.3.2', sha256='7b51d0876903a3c315744cb051ac61920eeaa1f0694814959edfae43ce956e8e') diff --git a/var/spack/repos/builtin/packages/r-vipor/package.py b/var/spack/repos/builtin/packages/r-vipor/package.py index 293e5603b84f69..401ae6addef694 100644 --- a/var/spack/repos/builtin/packages/r-vipor/package.py +++ b/var/spack/repos/builtin/packages/r-vipor/package.py @@ -7,11 +7,13 @@ class RVipor(RPackage): - """Plot Categorical Data Using Quasirandom Noise and Density Estimates""" + """Plot Categorical Data Using Quasirandom Noise and Density Estimates. - homepage = "https://cloud.r-project.org/package=vipor" - url = "https://cloud.r-project.org/src/contrib/vipor_0.4.5.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/vipor" + Generate a violin point plot, a combination of a violin/histogram plot and + a scatter plot by offsetting points within a category based on their + density using quasirandom noise.""" + + cran = "vipor" version('0.4.5', sha256='7d19251ac37639d6a0fed2d30f1af4e578785677df5e53dcdb2a22771a604f84') version('0.4.4', sha256='5abfd7869dae42ae2e4f52206c23433a43b485b1220685e445877ee5864a3f5c') diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py index 02ed68cbdbedfa..36bf29e579dfac 100644 --- a/var/spack/repos/builtin/packages/r-viridis/package.py +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -7,17 +7,25 @@ class RViridis(RPackage): - """viridis: Default Color Maps from 'matplotlib'""" + """Colorblind-Friendly Color Maps for R. - homepage = "https://github.com/sjmgarnier/viridis" - url = "https://cloud.r-project.org/src/contrib/viridis_0.4.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/viridis" + Color maps designed to improve graph readability for readers with common + forms of color blindness and/or color vision deficiency. The color maps are + also perceptually-uniform, both in regular form and also when converted to + black-and-white for printing. This package also contains 'ggplot2' bindings + for discrete and continuous color and fill scales. A lean version of the + package called 'viridisLite' that does not include the 'ggplot2' bindings + can be found at .""" + cran = "viridis" + + version('0.6.2', sha256='69b58cd1d992710a08b0b227fd0a9590430eea3ed4858099412f910617e41311') version('0.5.1', sha256='ddf267515838c6eb092938133035cee62ab6a78760413bfc28b8256165701918') version('0.5.0', sha256='fea477172c1e11be40554545260b36d6ddff3fe6bc3bbed87813ffb77c5546cd') version('0.4.0', sha256='93d2ded68ed7cec5633c260dbc47051416147aae074f29ebe135cc329250b00e') depends_on('r@2.10:', type=('build', 'run')) depends_on('r-viridislite@0.3.0:', type=('build', 'run')) + depends_on('r-viridislite@0.4.0:', type=('build', 'run'), when='@0.6.2:') depends_on('r-ggplot2@1.0.1:', type=('build', 'run')) depends_on('r-gridextra', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py index dfbb0737da7ad6..50eda98d39f05b 100644 --- a/var/spack/repos/builtin/packages/r-viridislite/package.py +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -7,9 +7,16 @@ class RViridislite(RPackage): - """viridisLite: Default Color Maps from 'matplotlib' (Lite Version)""" + """Colorblind-Friendly Color Maps (Lite Version). + + Color maps designed to improve graph readability for readers with common + forms of color blindness and/or color vision deficiency. The color maps are + also perceptually-uniform, both in regular form and also when converted to + black-and-white for printing. This is the 'lite' version of the 'viridis' + package that also contains 'ggplot2' bindings for discrete and continuous + color and fill scales and can be found at + .""" - homepage = "https://github.com/sjmgarnier/viridisLite" cran = "viridisLite" version('0.4.0', sha256='849955dc8ad9bc52bdc50ed4867fd92a510696fc8294e6971efa018437c83c6a') diff --git a/var/spack/repos/builtin/packages/r-visnetwork/package.py b/var/spack/repos/builtin/packages/r-visnetwork/package.py index d0606e4c76121d..12c8264a2fd646 100644 --- a/var/spack/repos/builtin/packages/r-visnetwork/package.py +++ b/var/spack/repos/builtin/packages/r-visnetwork/package.py @@ -7,15 +7,14 @@ class RVisnetwork(RPackage): - """Network Visualization using 'vis.js' Library + """Network Visualization using 'vis.js' Library. Provides an R interface to the 'vis.js' JavaScript charting library. It allows an interactive visualization of networks.""" - homepage = "https://github.com/datastorm-open/visNetwork" - url = "https://cloud.r-project.org/src/contrib/visNetwork_1.0.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/visNetwork" + cran = "visNetwork" + version('2.1.0', sha256='a2b91e7fbbd9d08a9929a5b2c891d9c0bca5977ad772fa37510d96656af1152f') version('2.0.9', sha256='5e0b3dc3a91e66e0a359433f03cc856d04b981b0f9ad228d8fa9c96b7fcaa420') version('2.0.7', sha256='15ad01636a3a19e1901be6743052805a5b6a9ac1240fb3dab765252b1e865128') version('2.0.6', sha256='ec2478e6a2af446569ef2d5210a2bc6b2600bcb7fd9908cef8f8c80b01e9c8aa') diff --git a/var/spack/repos/builtin/packages/r-vroom/package.py b/var/spack/repos/builtin/packages/r-vroom/package.py index b9535cdc7795b7..2697380da26a2e 100644 --- a/var/spack/repos/builtin/packages/r-vroom/package.py +++ b/var/spack/repos/builtin/packages/r-vroom/package.py @@ -15,8 +15,7 @@ class RVroom(RPackage): read. The writer formats the data in parallel and writes to disk asynchronously from formatting.""" - homepage = "https://github.com/r-lib/vroom" - cran = "vroom" + cran = "vroom" version('1.5.7', sha256='d087cb148f71c222fc89199d03df2502689149873414a6d89c2f006d3a109fde') version('1.5.5', sha256='1d45688c08f162a3300eda532d9e87d144f4bc686769a521bf9a12e3d3b465fe') diff --git a/var/spack/repos/builtin/packages/r-vsn/package.py b/var/spack/repos/builtin/packages/r-vsn/package.py index f05b46f0f997f6..e37198624fcc7f 100644 --- a/var/spack/repos/builtin/packages/r-vsn/package.py +++ b/var/spack/repos/builtin/packages/r-vsn/package.py @@ -7,7 +7,7 @@ class RVsn(RPackage): - """Variance stabilization and calibration for microarray data + """Variance stabilization and calibration for microarray data. The package implements a method for normalising microarray intensities, and works for single- and multiple-color arrays. It can also be used for @@ -22,9 +22,9 @@ class RVsn(RPackage): they are usually more sensitive and specific in detecting differential transcription.""" - homepage = "https://bioconductor.org/packages/vsn" - git = "https://git.bioconductor.org/packages/vsn.git" + bioc = "vsn" + version('3.62.0', commit='6ae7f4e07ec1a5a9482cab892d98175983bfcd50') version('3.58.0', commit='a451e6ae989623750feacf26d99683a7955adf85') version('3.52.0', commit='e80642d850ae93bc141654200a8970b561a94fbe') version('3.50.0', commit='ad49fcc288c6065d0f04040acd688e7f0d7d927e') @@ -33,10 +33,12 @@ class RVsn(RPackage): version('3.44.0', commit='e54513fcdd07ccfb8094359e93cef145450f0ee0') depends_on('r@3.0.0:', type=('build', 'run')) - depends_on('r@3.4.0:', when='@3.46.0:', type=('build', 'run')) + depends_on('r@3.4.0:', type=('build', 'run'), when='@3.46.0:') + depends_on('r@4.0.0:', type=('build', 'run'), when='@3.62.0:') depends_on('r-biobase', type=('build', 'run')) depends_on('r-affy', type=('build', 'run')) depends_on('r-limma', type=('build', 'run')) depends_on('r-lattice', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) - depends_on('r-hexbin', when='@3.44.0:3.52.0', type=('build', 'run')) + + depends_on('r-hexbin', type=('build', 'run'), when='@3.44.0:3.52.0') diff --git a/var/spack/repos/builtin/packages/r-waldo/package.py b/var/spack/repos/builtin/packages/r-waldo/package.py index d41a3957ea749d..9c99dfb46dfc57 100644 --- a/var/spack/repos/builtin/packages/r-waldo/package.py +++ b/var/spack/repos/builtin/packages/r-waldo/package.py @@ -7,22 +7,23 @@ class RWaldo(RPackage): - """Find Differences Between R Objects + """Find Differences Between R Objects. Compare complex R objects and reveal the key differences. Designed particularly for use in testing packages where being able to quickly isolate key differences makes understanding test failures much easier.""" - homepage = "https://github.com/r-lib/waldo" - url = "https://cloud.r-project.org/src/contrib/waldo_0.2.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/waldo" + cran = "waldo" + version('0.3.1', sha256='ec2c8c1afbc413f8db8b6b0c6970194a875f616ad18e1e72a004bc4497ec019b') version('0.2.3', sha256='1fbab22fe9be6ca8caa3df7306c763d7025d81ab6f17b85daaf8bdc8c9455c53') 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:') depends_on('r-fansi', type=('build', 'run')) depends_on('r-glue', type=('build', 'run')) depends_on('r-rematch2', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) + depends_on('r-rlang@0.4.10:', type=('build', 'run'), when='@0.3.1:') depends_on('r-tibble', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-watermelon/package.py b/var/spack/repos/builtin/packages/r-watermelon/package.py index 4b058d4194e0da..a4edcffb89f203 100644 --- a/var/spack/repos/builtin/packages/r-watermelon/package.py +++ b/var/spack/repos/builtin/packages/r-watermelon/package.py @@ -7,18 +7,19 @@ class RWatermelon(RPackage): - """Illumina 450 methylation array normalization and metrics + """Illumina 450 methylation array normalization and metrics. 15 flavours of betas and three performance metrics, with methods for objects produced by methylumi and minfi packages.""" - homepage = "https://bioconductor.org/packages/release/bioc/html/wateRmelon.html" - git = "https://git.bioconductor.org/packages/wateRmelon" + bioc = "wateRmelon" + version('2.0.0', commit='f6a331bdf50e0e5c94009fb67be873d996348ade') version('1.34.0', commit='3fa2745535c22068a438747b41b9d793196098d4') version('1.30.0', commit='66d7579fe49206d965832288df7937c3d43ed578') depends_on('r@2.10:', type=('build', 'run')) + depends_on('r@3.5.0:', type=('build', 'run'), when='@2.0.0:') depends_on('r-biobase', type=('build', 'run')) depends_on('r-limma', type=('build', 'run')) depends_on('r-matrixstats', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-webshot/package.py b/var/spack/repos/builtin/packages/r-webshot/package.py index 6138fba7ebf911..f9d77934097633 100644 --- a/var/spack/repos/builtin/packages/r-webshot/package.py +++ b/var/spack/repos/builtin/packages/r-webshot/package.py @@ -7,14 +7,12 @@ class RWebshot(RPackage): - """Take Screenshots of Web Pages + """Take Screenshots of Web Pages. Takes screenshots of web pages, including Shiny applications and R Markdown documents.""" - homepage = "https://github.com/wch/webshot/" - url = "https://cloud.r-project.org/src/contrib/webshot_0.5.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/webshot/" + cran = "webshot" version('0.5.2', sha256='f183dc970157075b51ac543550a7a48fa3428b9c6838abb72fe987c21982043f') version('0.5.1', sha256='b9750d206c6fa0f1f16cc212b0a34f4f4bfa916962d2c877f0ee9a33620f4b23') diff --git a/var/spack/repos/builtin/packages/r-wgcna/package.py b/var/spack/repos/builtin/packages/r-wgcna/package.py index 92fdd797b1bb1f..e7fad2b3c928c7 100644 --- a/var/spack/repos/builtin/packages/r-wgcna/package.py +++ b/var/spack/repos/builtin/packages/r-wgcna/package.py @@ -7,7 +7,7 @@ class RWgcna(RPackage): - """Weighted Correlation Network Analysis + """Weighted Correlation Network Analysis. Functions necessary to perform Weighted Correlation Network Analysis on high-dimensional data as originally described in Horvath and Zhang (2005) @@ -18,10 +18,9 @@ class RWgcna(RPackage): includes a number of utility functions for data manipulation and visualization.""" - homepage = "https://cloud.r-project.org/package=WGCNA" - url = "https://cloud.r-project.org/src/contrib/WGCNA_1.68.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/WGCNA/" + cran = "WGCNA" + version('1.70-3', sha256='b9843b839728183af6b746f239e9519d438b294613362b556002acdb8522cbd4') version('1.69', sha256='2ea152d45b2d4f0e40b4b9f7b5ea8a96e230f7744ece8be27bdba96cf39d5008') version('1.68', sha256='0a04f15a20817f9260ae1896eda3be83a7f4855a27a348df85c7f4d376f1efe8') version('1.67', sha256='c9cc9989763b2c80835489eabd38d9ee35b204305044d115ca7c775a103f6824') @@ -40,4 +39,5 @@ class RWgcna(RPackage): depends_on('r-go-db', type=('build', 'run')) depends_on('r-annotationdbi', type=('build', 'run')) depends_on('r-rcpp@0.11.0:', type=('build', 'run')) - depends_on('r-robust', when='@:1.68', type=('build', 'run')) + + depends_on('r-robust', type=('build', 'run'), when='@:1.68') diff --git a/var/spack/repos/builtin/packages/r-whisker/package.py b/var/spack/repos/builtin/packages/r-whisker/package.py index 088a9a5db9cb90..7cc5fee45922b8 100644 --- a/var/spack/repos/builtin/packages/r-whisker/package.py +++ b/var/spack/repos/builtin/packages/r-whisker/package.py @@ -7,13 +7,11 @@ class RWhisker(RPackage): - """{{mustache}} for R, Logicless Templating + """{{mustache}} for R, Logicless Templating. Implements 'Mustache' logicless templating.""" - homepage = "https://github.com/edwindj/whisker" - url = "https://cloud.r-project.org/src/contrib/whisker_0.3-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/whisker" + cran = "whisker" version('0.4', sha256='7a86595be4f1029ec5d7152472d11b16175737e2777134e296ae97341bf8fba8') version('0.3-2', sha256='484836510fcf123a66ddd13cdc8f32eb98e814cad82ed30c0294f55742b08c7c') diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index c5fdc0f39bb541..63ea6b745b595f 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -7,16 +7,16 @@ class RWithr(RPackage): - """Run Code 'With' Temporarily Modified Global State + """Run Code 'With' Temporarily Modified Global State. A set of functions to run code 'with' safely and temporarily modified global state. Many of these functions were originally a part of the 'devtools' package, this provides a simple package with limited dependencies to provide access to these functions.""" - homepage = "https://github.com/jimhester/withr" cran = "withr" + version('2.4.3', sha256='9bdac7459ccc6c2d599ecfd132a7f0aa68d958942d9fe7dbb0442c9eda129d4c') version('2.4.2', sha256='48f96a4cb780cf6fd5fbbea1f1eb04ea3102d7a4a644cae1ed1e91139dcbbac8') version('2.4.0', sha256='ede4cdc7e4d17e0ad24afc9fb940cba46fac4421d3a39281e9918377d73714f8') version('2.2.0', sha256='4c21e51cf48f8c281ddd5f5ec358ac446df3c982104fd00bfe62d9259d73b582') @@ -25,4 +25,4 @@ class RWithr(RPackage): version('1.0.1', sha256='7e245fdd17d290ff9e7c237159804dd06e1c6a3efe7855ed641eb0765a1e727d') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r@3.2:', when='@2.2:', type=('build', 'run')) + depends_on('r@3.2.0:', type=('build', 'run'), when='@2.2:') diff --git a/var/spack/repos/builtin/packages/r-wk/package.py b/var/spack/repos/builtin/packages/r-wk/package.py index fc105fdd62054b..92e38c61d9ff3c 100644 --- a/var/spack/repos/builtin/packages/r-wk/package.py +++ b/var/spack/repos/builtin/packages/r-wk/package.py @@ -7,7 +7,7 @@ class RWk(RPackage): - """Lightweight Well-Known Geometry Parsing + """Lightweight Well-Known Geometry Parsing. Provides a minimal R and C++ API for parsing well-known binary and well-known text representation of geometries to and from R-native formats. @@ -16,9 +16,9 @@ class RWk(RPackage): useful in R if the information they contain can be accessed in R, for which high-performance functions are provided here.""" - homepage = "https://paleolimbot.github.io/wk/" - cran = "wk" + cran = "wk" + version('0.6.0', sha256='af2c2837056a6dcc9f64d5ace29601d6d668c95769f855ca0329648d7326eaf5') version('0.4.1', sha256='daa7351af0bd657740972016906c686f335b8fa922ba10250e5000ddc2bb8950') depends_on('r-cpp11', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-xde/package.py b/var/spack/repos/builtin/packages/r-xde/package.py index 02e64f8eff0d30..6e24162c009529 100644 --- a/var/spack/repos/builtin/packages/r-xde/package.py +++ b/var/spack/repos/builtin/packages/r-xde/package.py @@ -7,15 +7,15 @@ class RXde(RPackage): - """XDE: a Bayesian hierarchical model for cross-study analysis of - differential gene expression + """a Bayesian hierarchical model for cross-study analysis of + differential gene expression. Multi-level model for cross-study detection of differential gene expression.""" - homepage = "https://bioconductor.org/packages/XDE" - git = "https://git.bioconductor.org/packages/XDE.git" + bioc = "XDE" + version('2.40.0', commit='bfc3c54787aec97b70bef7b99a6adc75d2cf5ed2') version('2.36.0', commit='0277f9dffbd7d1880be77cb8581fc614501b3293') version('2.30.0', commit='058af6f1e431522778f970bf61f834620d3d7dd7') version('2.28.0', commit='b8cc7d0840ce1324644e8b4a750fbb964884498b') @@ -29,7 +29,8 @@ class RXde(RPackage): depends_on('r-genefilter', type=('build', 'run')) depends_on('r-gtools', type=('build', 'run')) depends_on('r-mvtnorm', type=('build', 'run')) - depends_on('r-rcolorbrewer', when='@2.24.0:', type=('build', 'run')) - depends_on('r-genemeta', when='@2.24.0:', type=('build', 'run')) - depends_on('r-siggenes', when='@2.24.0:', type=('build', 'run')) - depends_on('r-mergemaid', when='@:2.30.0', type=('build', 'run')) + depends_on('r-rcolorbrewer', type=('build', 'run'), when='@2.24.0:') + depends_on('r-genemeta', type=('build', 'run'), when='@2.24.0:') + depends_on('r-siggenes', type=('build', 'run'), when='@2.24.0:') + + depends_on('r-mergemaid', type=('build', 'run'), when='@:2.30.0') diff --git a/var/spack/repos/builtin/packages/r-xfun/package.py b/var/spack/repos/builtin/packages/r-xfun/package.py index 1f7a34fe6cee42..b43e0c8f1ba8ed 100644 --- a/var/spack/repos/builtin/packages/r-xfun/package.py +++ b/var/spack/repos/builtin/packages/r-xfun/package.py @@ -7,12 +7,14 @@ class RXfun(RPackage): - """Miscellaneous functions commonly used in other packages maintained by + """Supporting Functions for Packages Maintained by 'Yihui Xie'. + + Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.""" - homepage = "https://github.com/yihui/xfun" - cran = "xfun" + cran = "xfun" + version('0.29', sha256='bf85bb7b4653d03e0730682ffe1d6d3544ac0b36989f9196b2054d356c224ef4') version('0.24', sha256='e3e39a95202f6db4f6de3a8b9a344074a4944a3a8a522d44971390c905e2b583') version('0.20', sha256='284239d12a3d5ea7d1ef8b1382fb0a7a4661af54c85510501279681871da7c10') version('0.8', sha256='c2f8ecf8b57ddec02f9be7f417d9e22fc1ae2c7db8d70aa703fc62bf4a5c5416') diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index 74bdbbdb99d219..44c7849c10180c 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -8,21 +8,20 @@ class RXgboost(RPackage): - """Extreme Gradient Boosting + """Extreme Gradient Boosting. - Extreme Gradient Boosting, which is an efficient implementation of - gradient boosting framework. This package is its R interface. The package - includes efficient linear model solver and tree learning algorithms. The - package can automatically do parallel computation on a single machine which - could be more than 10 times faster than existing gradient boosting - packages. It supports various objective functions, including regression, - classification and ranking. The package is made to be extensible, so that - users are also allowed to define their own objectives easily.""" + Extreme Gradient Boosting, which is an efficient implementation of gradient + boosting framework. This package is its R interface. The package includes + efficient linear model solver and tree learning algorithms. The package can + automatically do parallel computation on a single machine which could be + more than 10 times faster than existing gradient boosting packages. It + supports various objective functions, including regression, classification + and ranking. The package is made to be extensible, so that users are also + allowed to define their own objectives easily.""" - homepage = "https://github.com/dmlc/xgboost" - url = "https://cloud.r-project.org/src/contrib/xgboost_0.6-4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/xgboost" + cran = "xgboost" + version('1.5.0.2', sha256='4750b9a289d8cb685291939eed7c493bb42c5cc154ef98e13100abb1727eab13') version('1.3.2.1', sha256='2ff462b81ad51a4810bd7860cb014b9b88831a8b1d45774249a808547147f884') version('0.90.0.2', sha256='240584c1b4d54a95b4fef9074480752fae9a5b096e8f84747457d641decfc9bf') version('0.81.0.1', sha256='3e7ada32e66881ea5c90aeafdab948927014c76cfff60a8e3d7f9e1f8a9ed7ce') @@ -30,14 +29,16 @@ class RXgboost(RPackage): version('0.4-4', sha256='b955fc3352fcdc4894178c82fd62fbaf5e099c9d794f1e9daa2dd7b3494b61ff') depends_on('r@2.10:', type=('build', 'run')) - depends_on('r@2.15.1:', when='@0.6-0:0.6-2', type=('build', 'run')) - depends_on('r@3.3.0:', when='@0.6-3:', type=('build', 'run')) + depends_on('r@2.15.1:', type=('build', 'run'), when='@0.6-0:') + depends_on('r@3.3.0:', type=('build', 'run'), when='@0.6-3:') depends_on('r-matrix@1.1-0:', type=('build', 'run')) depends_on('r-data-table@1.9.6:', type=('build', 'run')) - depends_on('r-magrittr@1.5:', type=('build', 'run')) - depends_on('r-stringi@0.5.2:', when='@:0.90.0.2', type=('build', 'run')) + 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-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 57c4facd764e76..87fe53a430cb06 100644 --- a/var/spack/repos/builtin/packages/r-xlconnect/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnect/package.py @@ -7,15 +7,14 @@ class RXlconnect(RPackage): - """Excel Connector for R + """Excel Connector for R. Provides comprehensive functionality to read, write and format Excel data.""" - homepage = "https://miraisolutions.wordpress.com/" - url = "https://cloud.r-project.org/src/contrib/XLConnect_0.2-11.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/XLConnect" + cran = "XLConnect" + version('1.0.5', sha256='975c2ef57f28ccfac79ae5d285b7e82e60791fb121052616c10bc52e2bca16ad') version('1.0.1', sha256='927aa34a3c81c12bf156e55edca9e2f5186c31435cce23feda4b906d049d6e39') version('0.2-15', sha256='26e1d8db65974719adbc25f1327c584003eb562dc1bb2121bffc2550cf3178b3') version('0.2-14', sha256='d1013ed26947572bad97d62a3d66346f74993cf96c6408d21d5b6ee567468819') @@ -24,9 +23,11 @@ class RXlconnect(RPackage): depends_on('r@2.10.0:', type=('build', 'run')) depends_on('r-rjava', type=('build', 'run')) - depends_on('r-xlconnectjars@0.2-9', when='@0.2-11', type=('build', 'run')) - depends_on('r-xlconnectjars@0.2-12', when='@0.2-12', type=('build', 'run')) - depends_on('r-xlconnectjars@0.2-14', when='@0.2-14', type=('build', 'run')) - depends_on('r-xlconnectjars@0.2-15', when='@0.2-15', type=('build', 'run')) depends_on('java@6:') depends_on('java@8:11', when='@1.0.1:') + depends_on('java@8:17', when='@1.0.5:') + + depends_on('r-xlconnectjars@0.2-9', type=('build', 'run'), when='@0.2-11') + depends_on('r-xlconnectjars@0.2-12', type=('build', 'run'), when='@0.2-12') + depends_on('r-xlconnectjars@0.2-14', type=('build', 'run'), when='@0.2-14') + depends_on('r-xlconnectjars@0.2-15', type=('build', 'run'), when='@0.2-15') diff --git a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py index 753ca02aebc33b..30c7205b7f7225 100644 --- a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py @@ -7,11 +7,11 @@ class RXlconnectjars(RPackage): - """Provides external JAR dependencies for the XLConnect package.""" + """JAR Dependencies for the XLConnect Package. - homepage = "https://miraisolutions.wordpress.com/" - url = "https://cloud.r-project.org/src/contrib/XLConnectJars_0.2-9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/XLConnectJars" + Provides external JAR dependencies for the XLConnect package.""" + + cran = "XLConnectJars" version('0.2-15', sha256='bd6f48a72c3a02b7a5e9373bcfc671614bc793f41d7bb8f4f34115a89ff4f8c6') version('0.2-14', sha256='c675f0ccff0c3e56b2b1cc00d4d28bf8fdfa508266ac0ffab5c0641151dd7332') diff --git a/var/spack/repos/builtin/packages/r-xlsx/package.py b/var/spack/repos/builtin/packages/r-xlsx/package.py index 5490dc5a1aeb08..7ae42cc9fe61b4 100644 --- a/var/spack/repos/builtin/packages/r-xlsx/package.py +++ b/var/spack/repos/builtin/packages/r-xlsx/package.py @@ -7,14 +7,12 @@ class RXlsx(RPackage): - """Read, Write, Format Excel 2007 and Excel 97/2000/XP/2003 Files + """Read, Write, Format Excel 2007 and Excel 97/2000/XP/2003 Files. Provide R functions to read/write/format Excel 2007 and Excel 97/2000/XP/2003 file formats.""" - homepage = "https://github.com/colearendt/xlsx" - url = "https://cloud.r-project.org/src/contrib/xlsx_0.6.1.tar.gz" - listurl = "https://cloud.r-project.org/src/contrib/Archive/xlsx" + cran = "xlsx" version('0.6.5', sha256='378c5ed475a3d7631ea1ea13e0a69d619c1a52260922abda42818752dbb32107') version('0.6.1', sha256='a580bd16b5477c1c185bf681c12c1ffff4088089f97b6a37997913d93ec5a8b4') diff --git a/var/spack/repos/builtin/packages/r-xlsxjars/package.py b/var/spack/repos/builtin/packages/r-xlsxjars/package.py index eac4277b27cec2..a685f257ad252d 100644 --- a/var/spack/repos/builtin/packages/r-xlsxjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlsxjars/package.py @@ -7,12 +7,12 @@ class RXlsxjars(RPackage): - """The xlsxjars package collects all the external jars required for the - xlxs package. This release corresponds to POI 3.10.1.""" + """Package required POI jars for the xlsx package. - homepage = "https://cloud.r-project.org/package=xlsxjars" - url = "https://cloud.r-project.org/src/contrib/xlsxjars_0.6.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/xlsxjars" + The xlsxjars package collects all the external jars required for the xlxs + package. This release corresponds to POI 3.10.1.""" + + cran = "xlsxjars" version('0.6.1', sha256='37c1517f95f8bca6e3514429394d2457b9e62383305eba288416fb53ab2e6ae6') diff --git a/var/spack/repos/builtin/packages/r-xmapbridge/package.py b/var/spack/repos/builtin/packages/r-xmapbridge/package.py index cda8c6fe25ff20..94c2117effe74f 100644 --- a/var/spack/repos/builtin/packages/r-xmapbridge/package.py +++ b/var/spack/repos/builtin/packages/r-xmapbridge/package.py @@ -7,14 +7,14 @@ class RXmapbridge(RPackage): - """Export plotting files to the xmapBridge for visualisation in X:Map + """Export plotting files to the xmapBridge for visualisation in X:Map. xmapBridge can plot graphs in the X:Map genome browser. This package exports plotting files in a suitable format.""" - homepage = "https://bioconductor.org/packages/xmapbridge" - git = "https://git.bioconductor.org/packages/xmapbridge.git" + bioc = "xmapbridge" + version('1.52.0', commit='fe32fcd2a83432c721eb948cb3af73dd187065f6') version('1.48.0', commit='1cefe6b56c6dcb1f18028b3b7d6a67d490bc9730') version('1.42.0', commit='d79c80dfc1a0ed3fd6d3e7a7c3a4aff778537ca9') version('1.40.0', commit='00a2993863f28711e237bc937fa0ba2d05f81684') diff --git a/var/spack/repos/builtin/packages/r-xml/package.py b/var/spack/repos/builtin/packages/r-xml/package.py index c9825987dcdee9..5fd7c108f9c0b8 100644 --- a/var/spack/repos/builtin/packages/r-xml/package.py +++ b/var/spack/repos/builtin/packages/r-xml/package.py @@ -7,16 +7,15 @@ class RXml(RPackage): - """Tools for Parsing and Generating XML Within R and S-Plus + """Tools for Parsing and Generating XML Within R and S-Plus. Many approaches for both reading and creating XML (and HTML) documents (including DTDs), both local and accessible via HTTP or FTP. Also offers access to an 'XPath' "interpreter".""" - homepage = "https://cloud.r-project.org/package=XML" - url = "https://cloud.r-project.org/src/contrib/XML_3.98-1.9.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/XML" + cran = "XML" + version('3.99-0.8', sha256='081f691c2ee8ad39c7c95281e7d9153ec04cee79ca2d41f5d82c2ec2f1d36b50') version('3.99-0.5', sha256='60529b7360f162eba07da455eeb9b94a732b2dd623c49e0f04328a2e97bd53a6') version('3.98-1.20', sha256='46af86376ea9a0fb1b440cf0acdf9b89178686a05c4b77728fcff1f023aa4858') version('3.98-1.19', sha256='81b1c4a2df24c5747fa8b8ec2d76b4e9c3649b56ca94f6c93fbd106c8a72beab') @@ -25,5 +24,5 @@ class RXml(RPackage): version('3.98-1.4', sha256='9c0abc75312f66aac564266b6b79222259c678aedee9fc347462978354f11126') depends_on('r@2.13.0:', type=('build', 'run')) - depends_on('r@4.0.0:', when='@3.99-0.5:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@3.99-0.5:') depends_on('libxml2@2.6.3:') diff --git a/var/spack/repos/builtin/packages/r-xml2/package.py b/var/spack/repos/builtin/packages/r-xml2/package.py index 32880f4af71273..4db0d342eae1ee 100644 --- a/var/spack/repos/builtin/packages/r-xml2/package.py +++ b/var/spack/repos/builtin/packages/r-xml2/package.py @@ -7,19 +7,21 @@ class RXml2(RPackage): - """Work with XML files using a simple, consistent interface. Built on top - of the 'libxml2' C library.""" + """Package required POI jars for the xlsx package. - homepage = "https://cloud.r-project.org/package=xml2" - url = "https://cloud.r-project.org/src/contrib/xml2_1.1.1.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/xml2" + Work with XML files using a simple, consistent interface. Built on top of + the 'libxml2' C library.""" + cran = "xml2" + + version('1.3.3', sha256='cb4e9c0d31618ed67d2bfa4c7b5e52680e11612ed356a8164b541d44163c1c8d') version('1.3.2', sha256='df22f9e7e3189d8c9b8804eaf0105324fdac983cffe743552f6d76613600a4cf') version('1.2.2', sha256='3050f147c4335be2925a576557bbda36bd52a5bba3110d47b740a2dd811a78f4') version('1.2.1', sha256='5615bbc94607efc3bc192551992b349091df802ae34b855cfa817733f2690605') version('1.1.1', sha256='00f3e3b66b76760c19da5f6dddc98e6f30de36a96b211e59e1a3f4ff58763116') depends_on('r@3.1.0:', type=('build', 'run')) - depends_on('r-rcpp@0.12.12:', when='@:1.2', type=('build', 'run')) - depends_on('r-bh', when='@:1.1.1', type=('build', 'run')) 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') diff --git a/var/spack/repos/builtin/packages/r-xnomial/package.py b/var/spack/repos/builtin/packages/r-xnomial/package.py index cdc26cbfd6dad1..fa5fbc75c50c95 100644 --- a/var/spack/repos/builtin/packages/r-xnomial/package.py +++ b/var/spack/repos/builtin/packages/r-xnomial/package.py @@ -8,12 +8,21 @@ class RXnomial(RPackage): - """XNomial: Exact Goodness-of-Fit Test for Multinomial Data with Fixed - Probabilities""" + """Exact Goodness-of-Fit Test for Multinomial Data with Fixed + Probabilities. - homepage = "https://cloud.r-project.org/package=XNomial" - url = "https://cloud.r-project.org/src/contrib/XNomial_1.0.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/XNomial/" + Tests whether a set of counts fit a given expected ratio. For example, a + genetic cross might be expected to produce four types in the relative + frequencies of 9:3:3:1. To see whether a set of observed counts fits this + expectation, one can examine all possible outcomes with xmulti() or a + random sample of them with xmonte() and find the probability of an + observation deviating from the expectation by at least as much as the + observed. As a measure of deviation from the expected, one can use the + log-likelihood ratio, the multinomial probability, or the classic + chi-square statistic. A histogram of the test statistic can also be plotted + and compared with the asymptotic curve.""" + + cran = "XNomial" version('1.0.4', sha256='e6237f79d96f02bb30af1cf055ae9f70541abba34ce045a9d4359b5304189dd7') diff --git a/var/spack/repos/builtin/packages/r-xopen/package.py b/var/spack/repos/builtin/packages/r-xopen/package.py index 667be1d0dec0e2..59ca0454073760 100644 --- a/var/spack/repos/builtin/packages/r-xopen/package.py +++ b/var/spack/repos/builtin/packages/r-xopen/package.py @@ -7,12 +7,12 @@ class RXopen(RPackage): - """Cross platform solution to open files, directories or 'URLs' with their + """Open System Files, 'URLs', Anything. + + Cross platform solution to open files, directories or 'URLs' with their associated programs.""" - homepage = "https://github.com/r-lib/xopen#readme" - url = "https://cloud.r-project.org/src/contrib/xopen_1.0.0.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/xopen" + cran = "xopen" version('1.0.0', sha256='e207603844d69c226142be95281ba2f4a056b9d8cbfae7791ba60535637b3bef') diff --git a/var/spack/repos/builtin/packages/r-xtable/package.py b/var/spack/repos/builtin/packages/r-xtable/package.py index 33bf45795e8f5c..6ab845bbf6315a 100644 --- a/var/spack/repos/builtin/packages/r-xtable/package.py +++ b/var/spack/repos/builtin/packages/r-xtable/package.py @@ -7,11 +7,11 @@ class RXtable(RPackage): - """Coerce data to LaTeX and HTML tables.""" + """Export Tables to LaTeX or HTML. - homepage = "https://xtable.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/xtable_1.8-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/xtable" + Coerce data to LaTeX and HTML tables.""" + + cran = "xtable" version('1.8-4', sha256='5abec0e8c27865ef0880f1d19c9f9ca7cc0fd24eadaa72bcd270c3fb4075fd1c') version('1.8-3', sha256='53b2b0fff8d7a8bba434063c2a01b867f510a4389ded2691fbedbc845f08c325') diff --git a/var/spack/repos/builtin/packages/r-xts/package.py b/var/spack/repos/builtin/packages/r-xts/package.py index 22b560dd2ff261..b600bce1ce939e 100644 --- a/var/spack/repos/builtin/packages/r-xts/package.py +++ b/var/spack/repos/builtin/packages/r-xts/package.py @@ -7,16 +7,14 @@ class RXts(RPackage): - """eXtensible Time Series + """eXtensible Time Series. Provide for uniform handling of R's different time-based data classes by extending zoo, maximizing native format information preservation and allowing for user level customization and extension, while simplifying cross-class interoperability.""" - homepage = "https://r-forge.r-project.org/projects/xts/" - url = "https://cloud.r-project.org/src/contrib/xts_0.11-2.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/xts" + cran = "xts" version('0.12.1', sha256='d680584af946fc30be0b2046e838cff7b3a65e00df1eadba325ca5e96f3dca2c') version('0.11-2', sha256='12772f6a66aab5b84b0665c470f11a3d8d8a992955c027261cfe8e6077ee13b8') diff --git a/var/spack/repos/builtin/packages/r-xvector/package.py b/var/spack/repos/builtin/packages/r-xvector/package.py index e24937328628d0..390d527b4b2c7b 100644 --- a/var/spack/repos/builtin/packages/r-xvector/package.py +++ b/var/spack/repos/builtin/packages/r-xvector/package.py @@ -8,14 +8,14 @@ class RXvector(RPackage): """Foundation of external vector representation and manipulation in - Bioconductor + Bioconductor. Provides memory efficient S4 classes for storing sequences "externally" (e.g. behind an R external pointer, or on disk).""" - homepage = "https://bioconductor.org/packages/XVector" - git = "https://git.bioconductor.org/packages/XVector.git" + bioc = "XVector" + version('0.34.0', commit='06adb25ac51c707b90fb8e0637fa06df237a863c') version('0.30.0', commit='985e963e0b1c3ff004dd0b07ad7c9ff7ed853ec0') version('0.24.0', commit='e5109cb2687724b9fddddf296c07a82bae4c551d') version('0.22.0', commit='b5e107a5fd719e18374eb836eb498b529afa4473') @@ -24,16 +24,18 @@ class RXvector(RPackage): version('0.16.0', commit='54615888e1a559da4a81de33e934fc0f1c3ad99f') depends_on('r@2.8.0:', type=('build', 'run')) + depends_on('r@4.0.0:', type=('build', 'run'), when='@0.34.0:') depends_on('r-biocgenerics@0.19.2:', type=('build', 'run')) + depends_on('r-biocgenerics@0.37.0:', type=('build', 'run'), when='@0.34.0:') depends_on('r-s4vectors@0.13.13:', type=('build', 'run')) - depends_on('r-s4vectors@0.15.14:', when='@0.18.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.17.24:', when='@0.20.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.19.15:', when='@0.22.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.21.13:', when='@0.24.0:', type=('build', 'run')) - depends_on('r-s4vectors@0.27.12:', when='@0.30.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.15.14:', type=('build', 'run'), when='@0.18.0:') + depends_on('r-s4vectors@0.17.24:', type=('build', 'run'), when='@0.20.0:') + depends_on('r-s4vectors@0.19.15:', type=('build', 'run'), when='@0.22.0:') + depends_on('r-s4vectors@0.21.13:', type=('build', 'run'), when='@0.24.0:') + depends_on('r-s4vectors@0.27.12:', type=('build', 'run'), when='@0.30.0:') depends_on('r-iranges@2.9.18:', type=('build', 'run')) - depends_on('r-iranges@2.13.16:', when='@0.20.0:', type=('build', 'run')) - depends_on('r-iranges@2.15.12:', when='@0.22.0:', type=('build', 'run')) - depends_on('r-iranges@2.23.9:', when='@0.30.0:', type=('build', 'run')) + depends_on('r-iranges@2.13.16:', type=('build', 'run'), when='@0.20.0:') + depends_on('r-iranges@2.15.12:', type=('build', 'run'), when='@0.22.0:') + depends_on('r-iranges@2.23.9:', type=('build', 'run'), when='@0.30.0:') depends_on('r-zlibbioc', type=('build', 'run')) depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/r-yaimpute/package.py b/var/spack/repos/builtin/packages/r-yaimpute/package.py index d223ead2fd1523..d5dd494e4d6593 100644 --- a/var/spack/repos/builtin/packages/r-yaimpute/package.py +++ b/var/spack/repos/builtin/packages/r-yaimpute/package.py @@ -7,13 +7,20 @@ class RYaimpute(RPackage): - """Performs nearest neighbor-based imputation using one or more - alternative approaches to processing multivariate data - """ + """Nearest Neighbor Observation Imputation and Evaluation Tools. - homepage = "https://cloud.r-project.org/package=yaImpute" - url = "https://cloud.r-project.org/src/contrib/yaImpute_1.0-32.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/yaImpute" + Performs nearest neighbor-based imputation using one or more alternative + approaches to processing multivariate data. These include methods based on + canonical correlation analysis, canonical correspondence analysis, and a + multivariate adaptation of the random forest classification and regression + techniques of Leo Breiman and Adele Cutler. Additional methods are also + offered. The package includes functions for comparing the results from + running alternative techniques, detecting imputation targets that are + notably distant from reference observations, detecting and correcting for + bias, bootstrapping and building ensemble imputations, and mapping + results.""" + + cran = "yaImpute" 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 f66c4d2bd5d874..3dc0061501ea55 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -7,15 +7,15 @@ class RYaml(RPackage): - """Methods to Convert R Data to YAML and Back + """Methods to Convert R Data to YAML and Back. Implements the 'libyaml' 'YAML' 1.1 parser and emitter () for R.""" - homepage = "https://cloud.r-project.org/package=yaml" - url = "https://cloud.r-project.org/src/contrib/yaml_2.1.13.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/yaml" + cran = "yaml" + version('2.3.5', sha256='3edf6c0554a0e184a25e8bec5721a2e66b4ab0dceb3737428e22705e52eb5140') + version('2.2.2', sha256='a5dc6aba2719eb4422bdd7d3a7b2223bbb00e4470fa234d8c5b3a6835d99f730') version('2.2.1', sha256='1115b7bc2a397fa724956eec916df5160c600c99a3be186d21558dd38d782783') version('2.2.0', sha256='55bcac87eca360ab5904914fcff473a6981a1f5e6d2215d2634344d0ac30c546') version('2.1.19', sha256='e5db035693ac765e4b5fe1fc2e9711f8ca73e398e3f2bf27cc60def59ccd7f11') diff --git a/var/spack/repos/builtin/packages/r-yapsa/package.py b/var/spack/repos/builtin/packages/r-yapsa/package.py index 9982a655c6c99e..1ee33769fdde69 100644 --- a/var/spack/repos/builtin/packages/r-yapsa/package.py +++ b/var/spack/repos/builtin/packages/r-yapsa/package.py @@ -7,7 +7,7 @@ class RYapsa(RPackage): - """Yet Another Package for Signature Analysis + """Yet Another Package for Signature Analysis. This package provides functions and routines useful in the analysis of somatic signatures (cf. L. Alexandrov et al., Nature 2013). In @@ -16,9 +16,9 @@ class RYapsa(RPackage): analysis on stratified mutational catalogue (SMC = stratify mutational catalogue) are provided.""" - homepage = "https://bioconductor.org/packages/YAPSA" - git = "https://git.bioconductor.org/packages/YAPSA.git" + bioc = "YAPSA" + version('1.20.1', commit='6c3f437911859df6f6e4a9af5571c3a5aafbffb2') version('1.16.0', commit='f344cdb81bb886c633f9325f811912fb59d58eb1') version('1.10.0', commit='06af18e424868eb0f0be6c80e90cbab1eabf3d73') version('1.8.0', commit='402f3f7774fdf8afc7883579ad651c26df0f8fdb') @@ -27,10 +27,10 @@ class RYapsa(RPackage): version('1.2.0', commit='320809b69e470e30a777a383f8341f93064ec24d') depends_on('r@3.3.0:', type=('build', 'run')) - depends_on('r@3.6.0:', when='@1.16.0:', type=('build', 'run')) + depends_on('r@3.6.0:', type=('build', 'run'), when='@1.16.0:') depends_on('r-genomicranges', type=('build', 'run')) depends_on('r-ggplot2', type=('build', 'run')) - depends_on('r-limsolve', when='@1.16.0:', type=('build', 'run')) + depends_on('r-limsolve', type=('build', 'run'), when='@1.16.0:') depends_on('r-somaticsignatures', type=('build', 'run')) depends_on('r-variantannotation', type=('build', 'run')) depends_on('r-genomeinfodb', type=('build', 'run')) @@ -41,14 +41,16 @@ class RYapsa(RPackage): depends_on('r-getoptlong', type=('build', 'run')) depends_on('r-circlize', type=('build', 'run')) depends_on('r-gtrellis', type=('build', 'run')) - depends_on('r-doparallel', when='@1.16.0:', type=('build', 'run')) - depends_on('r-pmcmr', type=('build', 'run')) - depends_on('r-ggbeeswarm', when='@1.16.0:', type=('build', 'run')) + depends_on('r-doparallel', type=('build', 'run'), when='@1.16.0:') + depends_on('r-pmcmrplus', type=('build', 'run'), when='@1.20.1:') + depends_on('r-ggbeeswarm', type=('build', 'run'), when='@1.16.0:') depends_on('r-complexheatmap', type=('build', 'run')) depends_on('r-keggrest', type=('build', 'run')) - depends_on('r-biostrings', when='@1.16.0:', type=('build', 'run')) - depends_on('r-bsgenome-hsapiens-ucsc-hg19', when='@1.16.0:', type=('build', 'run')) - depends_on('r-magrittr', when='@1.16.0:', type=('build', 'run')) - depends_on('r-pracma', when='@1.16.0:', type=('build', 'run')) - depends_on('r-dplyr', when='@1.16.0:', type=('build', 'run')) - depends_on('r-lsei', when='@:1.10.0', type=('build', 'run')) + depends_on('r-biostrings', type=('build', 'run'), when='@1.16.0:') + depends_on('r-bsgenome-hsapiens-ucsc-hg19', type=('build', 'run'), when='@1.16.0:') + depends_on('r-magrittr', type=('build', 'run'), when='@1.16.0:') + depends_on('r-pracma', type=('build', 'run'), when='@1.16.0:') + depends_on('r-dplyr', type=('build', 'run'), when='@1.16.0:') + + depends_on('r-lsei', type=('build', 'run'), when='@:1.10.0') + depends_on('r-pmcmr', type=('build', 'run'), when='@:1.16.0') diff --git a/var/spack/repos/builtin/packages/r-yaqcaffy/package.py b/var/spack/repos/builtin/packages/r-yaqcaffy/package.py index 61bc60d04a5b8c..cdaef69fb85651 100644 --- a/var/spack/repos/builtin/packages/r-yaqcaffy/package.py +++ b/var/spack/repos/builtin/packages/r-yaqcaffy/package.py @@ -7,14 +7,13 @@ class RYaqcaffy(RPackage): - """Affymetrix expression data quality control and reproducibility analysis + """Affymetrix expression data quality control and reproducibility analysis. Quality control of Affymetrix GeneChip expression data and reproducibility analysis of human whole genome chips with the MAQC reference datasets.""" - homepage = "https://bioconductor.org/packages/yaqcaffy" - git = "https://git.bioconductor.org/packages/yaqcaffy.git" + bioc = "yaqcaffy" version('1.50.0', commit='b32e6b947ca9c4ab7163cfddc084a1bc0a34780e') version('1.44.0', commit='00898f3ec9ac0beadbcf57bda3d3c1c99fb0c3c0') diff --git a/var/spack/repos/builtin/packages/r-yarn/package.py b/var/spack/repos/builtin/packages/r-yarn/package.py index b6753c8e279163..ef790997e69068 100644 --- a/var/spack/repos/builtin/packages/r-yarn/package.py +++ b/var/spack/repos/builtin/packages/r-yarn/package.py @@ -7,7 +7,7 @@ class RYarn(RPackage): - """YARN: Robust Multi-Condition RNA-Seq Preprocessing and Normalization + """Robust Multi-Condition RNA-Seq Preprocessing and Normalization. Expedite large RNA-Seq analyses using a combination of previously developed tools. YARN is meant to make it easier for the user in @@ -16,9 +16,9 @@ class RYarn(RPackage): and statistical techniques to account for the large heterogeneity and sparsity found in very large RNA-seq experiments.""" - homepage = "https://bioconductor.org/packages/yarn" - git = "https://git.bioconductor.org/packages/yarn.git" + bioc = "yarn" + version('1.20.0', commit='b41e4ef14f980518af2fc59f202ad8ec148e8b47') version('1.16.0', commit='ff5a18cb946ffec3cb773fe32af401c8a72d674a') version('1.10.0', commit='36ffe84148eb871e93bc8f9e697475319b5ea472') version('1.8.1', commit='ee0723d4dbf082b4469ca9c22cce4f1a2ac81c04') diff --git a/var/spack/repos/builtin/packages/r-yulab-utils/package.py b/var/spack/repos/builtin/packages/r-yulab-utils/package.py new file mode 100644 index 00000000000000..27b5cff90a373c --- /dev/null +++ b/var/spack/repos/builtin/packages/r-yulab-utils/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2022 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 import * + + +class RYulabUtils(RPackage): + """Supporting Functions for Packages Maintained by 'YuLab-SMU'. + + Miscellaneous functions commonly used by 'YuLab-SMU'.""" + + cran = "yulab.utils" + + version('0.0.4', sha256='38850663de53a9166b8e85deb85be1ccf1a5b310bbe4355f3b8bc823ed1b49ae') diff --git a/var/spack/repos/builtin/packages/r-zcompositions/package.py b/var/spack/repos/builtin/packages/r-zcompositions/package.py index a422d01f9fefba..de6929d0d622bf 100644 --- a/var/spack/repos/builtin/packages/r-zcompositions/package.py +++ b/var/spack/repos/builtin/packages/r-zcompositions/package.py @@ -8,16 +8,15 @@ class RZcompositions(RPackage): """Treatment of Zeros, Left-Censored and Missing Values in Compositional - Data Sets + Data Sets. Principled methods for the imputation of zeros, left-censored and missing data in compositional data sets (Palarea-Albaladejo and Martin-Fernandez (2015) ).""" - homepage = "https://cloud.r-project.org/package=zCompositions" - url = "https://cloud.r-project.org/src/contrib/zCompositions_1.3.4.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/zCompositions" + cran = "zCompositions" + version('1.4.0', sha256='a00d7d0ba861988b1836e947fd521d58137a4def04a5d7aa73a099314b7e530c') version('1.3.4', sha256='ae22c86fe92368a26265933f42eecc518b9b69e7d9b698bc31bfaabfc3c48e95') depends_on('r@2.14.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-zeallot/package.py b/var/spack/repos/builtin/packages/r-zeallot/package.py index e4e8ec9d580833..48108c08d716c7 100644 --- a/var/spack/repos/builtin/packages/r-zeallot/package.py +++ b/var/spack/repos/builtin/packages/r-zeallot/package.py @@ -7,13 +7,13 @@ class RZeallot(RPackage): - """Provides a %<-% operator to perform multiple, unpacking, and - destructuring assignment in R. The operator unpacks the right-hand side of - an assignment into multiple values and assigns these values to variables on - the left-hand side of the assignment.""" + """Multiple, Unpacking, and Destructuring Assignment. - homepage = "https://github.com/nteetor/zeallot" - url = "https://cloud.r-project.org/src/contrib/zeallot_0.1.0.tar.gz" - listurl = "https://cloud.r-project.org/src/contrib/Archive/zeallot" + Provides a %<-% operator to perform multiple, unpacking, and destructuring + assignment in R. The operator unpacks the right-hand side of an assignment + into multiple values and assigns these values to variables on the left-hand + side of the assignment.""" + + cran = "zeallot" version('0.1.0', sha256='439f1213c97c8ddef9a1e1499bdf81c2940859f78b76bc86ba476cebd88ba1e9') diff --git a/var/spack/repos/builtin/packages/r-zip/package.py b/var/spack/repos/builtin/packages/r-zip/package.py index e877b5d07c7f54..7f4074f6a97779 100644 --- a/var/spack/repos/builtin/packages/r-zip/package.py +++ b/var/spack/repos/builtin/packages/r-zip/package.py @@ -7,15 +7,14 @@ class RZip(RPackage): - """Cross-Platform 'zip' Compression + """Cross-Platform 'zip' Compression. Cross-Platform 'zip' Compression Library. A replacement for the 'zip' function, that does not require any additional external tools on any platform.""" - homepage = "https://github.com/r-lib/zip#readme" - url = "https://cloud.r-project.org/src/contrib/zip_2.0.3.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/zip" + cran = "zip" + version('2.2.0', sha256='9f95987c964039834f770ecda2d5f7e3d3a9de553c89db2a5926c4219bf4b9d8') version('2.1.1', sha256='11dd417932296d3a25c53aa8d3b908973c4945a496cc473dd321825dfaaa7c2c') version('2.0.3', sha256='4a8cb8e41eb630bbf448a0fd56bcaeb752b8484fef98c6419334edf46401317e') diff --git a/var/spack/repos/builtin/packages/r-zlibbioc/package.py b/var/spack/repos/builtin/packages/r-zlibbioc/package.py index 76fd05f1d90949..9714100b5e2bc1 100644 --- a/var/spack/repos/builtin/packages/r-zlibbioc/package.py +++ b/var/spack/repos/builtin/packages/r-zlibbioc/package.py @@ -7,16 +7,16 @@ class RZlibbioc(RPackage): - """An R packaged zlib-1.2.5 + """An R packaged zlib-1.2.5. This package uses the source code of zlib-1.2.5 to create libraries for systems that do not have these available via other means (most Linux and Mac users should have system-level access to zlib, and no direct need for this package). See the vignette for instructions on use.""" - homepage = "https://bioconductor.org/packages/zlibbioc" - git = "https://git.bioconductor.org/packages/zlibbioc.git" + bioc = "zlibbioc" + version('1.40.0', commit='3f116b39d104c1ea8288f6b8f0ef94bb95f41f69') version('1.36.0', commit='62e888cd7fb482d512c6c31961b657e0b924e357') version('1.30.0', commit='99eae5b05968bf6abc9b54b9031afd93517381e0') version('1.28.0', commit='b825b042742ba45455fc284b988ff4cd2a33222c') diff --git a/var/spack/repos/builtin/packages/r-zoo/package.py b/var/spack/repos/builtin/packages/r-zoo/package.py index 71cf383b3596e7..2b14511cf04715 100644 --- a/var/spack/repos/builtin/packages/r-zoo/package.py +++ b/var/spack/repos/builtin/packages/r-zoo/package.py @@ -7,7 +7,8 @@ class RZoo(RPackage): - """S3 Infrastructure for Regular and Irregular Time Series (Z's Ordered Observations) + """S3 Infrastructure for Regular and Irregular Time Series (Z's Ordered + Observations). An S3 class with methods for totally ordered indexed observations. It is particularly aimed at irregular time series of numeric vectors/matrices and @@ -15,10 +16,9 @@ class RZoo(RPackage): index/date/time class and consistency with ts and base R by providing methods to extend standard generics.""" - homepage = "https://zoo.r-forge.r-project.org/" - url = "https://cloud.r-project.org/src/contrib/zoo_1.7-14.tar.gz" - list_url = "https://cloud.r-project.org/src/contrib/Archive/zoo" + cran = "zoo" + version('1.8-9', sha256='b7be259067a8b9d4a8f5d387e0946a5ba1eb43474baa67ccf4f8bf4b15f772a3') version('1.8-8', sha256='4e8cc4065047ba12e103b9664f3b607c770673096e9c2b694fad2b2ec3203ce7') version('1.8-6', sha256='2217a4f362f2201443b5fdbfd9a77d9a6caeecb05f02d703ee8b3b9bf2af37cc') version('1.8-5', sha256='8773969973d28d7d1a48f74b73be1dbd97acb3b22a4668a102e8bb585a7de826') @@ -26,5 +26,5 @@ class RZoo(RPackage): version('1.7-13', sha256='0ca5264d6077c785963705e462aec3e57e0d0651379f9bf4ee32e4f3b25dc754') depends_on('r@2.10.0:', type=('build', 'run')) - depends_on('r@3.1.0:', when='@1.8-2:', type=('build', 'run')) + depends_on('r@3.1.0:', type=('build', 'run'), when='@1.8-2:') depends_on('r-lattice@0.20-27:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 029379888dcb6b..3a49c8ad1e7b34 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -23,6 +23,7 @@ class R(AutotoolsPackage): maintainers = ['glennpj'] + version('4.1.3', sha256='15ff5b333c61094060b2a52e9c1d8ec55cc42dd029e39ca22abdaa909526fed6') version('4.1.2', sha256='2036225e9f7207d4ce097e54972aecdaa8b40d7d9911cd26491fac5a0fab38af') version('4.1.1', sha256='515e03265752257d0b7036f380f82e42b46ed8473f54f25c7b67ed25bbbdd364') version('4.1.0', sha256='e8e68959d7282ca147360fc9644ada9bd161bab781bab14d33b8999a95182781') diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 91e5fcf3e1d9fe..a839eaee92e5d5 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -38,8 +38,8 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): version('0.4.0', tag='v0.4.0', submodules="True") # export targets when building pre-2.4.0 release with BLT 0.4.0+ - patch('https://github.com/LLNL/RAJA/commit/eca1124ee4af380d6613adc6012c307d1fd4176b.patch', - sha256='57dd531a50ac791b4bb214d34a4bf3fca1349354927c72915b7ccd20524701a9', + patch('https://github.com/LLNL/RAJA/commit/eca1124ee4af380d6613adc6012c307d1fd4176b.patch?full_index=1', + sha256='12bb78c00b6683ad3e7fd4e3f87f9776bae074b722431b79696bc862816735ef', when='@:0.13.0 ^blt@0.4:') variant('openmp', default=True, description='Build OpenMP backend') @@ -51,7 +51,8 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): variant('tests', default=False, description='Build tests') depends_on('blt') - depends_on('blt@0.4.1:', type='build', when='@0.14.0:') + depends_on('blt@0.5.0:', type='build', when='@0.14.1:') + depends_on('blt@0.4.1', type='build', when='@0.14.0') depends_on('blt@0.4.0:', type='build', when='@0.13.0') depends_on('blt@0.3.6:', type='build', when='@:0.12.0') diff --git a/var/spack/repos/builtin/packages/range-v3/package.py b/var/spack/repos/builtin/packages/range-v3/package.py index e5367c576c3451..99021a1d976cf5 100644 --- a/var/spack/repos/builtin/packages/range-v3/package.py +++ b/var/spack/repos/builtin/packages/range-v3/package.py @@ -7,6 +7,7 @@ import shutil from spack import * +from spack.pkg.builtin.boost import Boost class RangeV3(CMakePackage): @@ -74,6 +75,11 @@ class RangeV3(CMakePackage): depends_on('boost@1.59.0: cxxstd=17', type='build', when='+examples cxxstd=17') + # 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, type='build') + # Fix reported upstream issue # https://github.com/ericniebler/range-v3/issues/1196 per PR # https://github.com/ericniebler/range-v3/pull/1202. diff --git a/var/spack/repos/builtin/packages/rapidjson/package.py b/var/spack/repos/builtin/packages/rapidjson/package.py index 22bcb1c92fd496..53cef264157533 100644 --- a/var/spack/repos/builtin/packages/rapidjson/package.py +++ b/var/spack/repos/builtin/packages/rapidjson/package.py @@ -42,3 +42,13 @@ class Rapidjson(CMakePackage): # Not correspond to define '-march=native' with Fujitsu compiler. patch("remove_march.patch", when="%fj") + + variant('doc', default=False, + description='Build and install documentation') + + depends_on('doxygen+graphviz', when='+doc') + + def cmake_args(self): + args = [] + args.append(self.define_from_variant('RAPIDJSON_BUILD_DOC', 'doc')) + return args diff --git a/var/spack/repos/builtin/packages/rccl/package.py b/var/spack/repos/builtin/packages/rccl/package.py index 90fe62e8df8a4f..51c23b81433543 100644 --- a/var/spack/repos/builtin/packages/rccl/package.py +++ b/var/spack/repos/builtin/packages/rccl/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack import * @@ -14,10 +16,13 @@ class Rccl(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rccl" git = "https://github.com/ROCmSoftwarePlatform/rccl.git" - url = "https://github.com/ROCmSoftwarePlatform/rccl/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rccl/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librccl.so'] + version('5.0.2', sha256='a2377ad2332b93d3443a8ee74f4dd9f965ae8cbbfad473f8f57ca17905389a39') + version('5.0.0', sha256='80eb70243f11b80e215458a67c278cd5a655f6e486289962b92ba3504e50af5c') version('4.5.2', sha256='36de0d3f3ffad491758d89c208ef72c5be5e0db766053a9c766e9c5c6a33a487') version('4.5.0', sha256='f806f9f65c490abddc562cb4812e12701582bbb449e41cc4797d00e0dedf084e') version('4.3.1', sha256='c5db71423dc654e8d2c3111e142e65c89436bc636827d95d41a09a87f44fe246') @@ -38,18 +43,31 @@ class Rccl(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('comgr@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) for ver in ['3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('numactl@2:', when='@' + ver) - for ver in ['4.5.0', '4.5.2']: + for ver in ['4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocm-smi-lib@' + ver, when='@' + ver) + @classmethod + def determine_version(cls, lib): + match = re.search(r'lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)', + lib) + if match: + ver = '{0}.{1}.{2}'.format(int(match.group(1)), + int(match.group(2)), + int(match.group(3))) + else: + ver = None + return ver + def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) diff --git a/var/spack/repos/builtin/packages/rdc/package.py b/var/spack/repos/builtin/packages/rdc/package.py index d557b1dc6418df..cc1e387c7df27c 100644 --- a/var/spack/repos/builtin/packages/rdc/package.py +++ b/var/spack/repos/builtin/packages/rdc/package.py @@ -22,6 +22,8 @@ def url_for_version(self, version): url = "https://github.com/RadeonOpenCompute/rdc/archive/rocm-{0}.tar.gz" return url.format(version) + version('5.0.2', sha256='9e21fe7e9dd02b69425dab6be22a85469fee072bcebd2d2957633dfad8b45574') + version('5.0.0', sha256='68d45a319dc4222d94e1fb1ce10df5f3464de0b745d0d2e9aebbf273493adcc5') version('4.5.2', sha256='1b467e2a473374488292ca1680562ec4e798f43847ea6464453f8f8297f12d8d') version('4.5.0', sha256='e9bc53d068e9a4fdccff587e34c7fe0880f003a18652cd48c29faf031dd2c98f') version('4.3.1', sha256='aae028aae61eb0f4dd30708c4bbb8c5c57a426f10dae9b967b81500fb106d981') @@ -35,15 +37,19 @@ def url_for_version(self, version): variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') - depends_on('cmake@3.15:3.19.7', type='build') + depends_on('cmake@3.15:3.19.7', type='build', when='@:4.3.1') + depends_on('cmake@3.15:', type='build', when='@4.5.0:') depends_on('grpc@1.28.1+shared', type='build') depends_on('protobuf', type=('build', 'link')) depends_on('libcap', type=('build', 'link')) for ver in ['3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocm-smi-lib@' + ver, type=('build', 'link'), when='@' + ver) + for ver in ['5.0.0', '5.0.2']: + depends_on('hsa-rocr-dev@' + ver, when='@' + ver) + def patch(self): filter_file( r'\${ROCM_DIR}/rocm_smi', '${ROCM_SMI_DIR}', 'CMakeLists.txt') diff --git a/var/spack/repos/builtin/packages/rdkit/package.py b/var/spack/repos/builtin/packages/rdkit/package.py index 404c8b2dd0cbe9..6bc316c2a71d9d 100644 --- a/var/spack/repos/builtin/packages/rdkit/package.py +++ b/var/spack/repos/builtin/packages/rdkit/package.py @@ -16,6 +16,15 @@ class Rdkit(CMakePackage): maintainers = ['bvanessen'] + version('2021_09_5', sha256='f720b3f6292c4cd0a412a073d848ffac01a43960082e33ee54b68798de0cbfa1') + version('2021_09_4', sha256='ce192e85bbdc1dcf24d327197229099c8625ee20ef022fcbd980791fdbfc7203') + version('2021_09_3', sha256='3d9d47e9ea3f7563ca83bf24fc6d3419c3892ea77d831e1cf68d81f602ad1afc') + version('2021_09_2', sha256='1a6b41e4c5e2f1a98acfc9c0aa46aa32a97323f0531457d69fcdc70c4a964140') + version('2021_09_1b1', sha256='114935d980c4c52a1113aae26cd752dac6f24559b3098482663855f1b8c3e2a3') + version('2021_09_1', sha256='4d8d38adebdb0da51171ba67c6664555cb33d3fb5c62e35c8562d799dd812761') + version('2021_03_5', sha256='ee7ed4189ab03cf805ab9db59121ab3ebcba4c799389d053046d7cab4dd8401e') + version('2021_03_4', sha256='bed309df7f1e2ea25736a986cf951325681142ee49468b1c62d020a109d2ef52') + version('2021_03_3', sha256='e95f07adaee9280df077cb147210ee75e16957d81687ab0836d62ebf1f6f715f') version('2021_03_2', sha256='9907a745405cc915c65504046e446199f8ad03d870714de57c27d3738f330fe4') version('2021_03_1b1', sha256='2cd0673b289ba756c76a1bf57cf19e147ac4a9f6ecf9e79cc3dd86c8d39be414') version('2021_03_1', sha256='9495f797a54ac70b3b6e12776de7d82acd7f7b5d5f0cc1f168c763215545610b') diff --git a/var/spack/repos/builtin/packages/rdma-core/package.py b/var/spack/repos/builtin/packages/rdma-core/package.py index 2390dc5ab57b25..b6846edd33af96 100644 --- a/var/spack/repos/builtin/packages/rdma-core/package.py +++ b/var/spack/repos/builtin/packages/rdma-core/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack import * @@ -11,7 +13,9 @@ class RdmaCore(CMakePackage): homepage = "https://github.com/linux-rdma/rdma-core" url = "https://github.com/linux-rdma/rdma-core/releases/download/v17.1/rdma-core-17.1.tar.gz" + libraries = ['librdmacm.so'] + version('39.0', sha256='f6eaf0de9fe386e234e00a18a553f591143f50e03342c9fdd703fa8747bf2378') version('34.0', sha256='3d9ccf66468cf78f4c39bebb8bd0c5eb39150ded75f4a88a3455c4f625408be8') version('33.1', sha256='d179b102bec551ce62265ed463d1095fb2ae9baff604261ad63327fcd20650e5') version('32.0', sha256='8197e20a59990b9b06a2e4c83f4a96802fc080ec1669392b643b59b6023931fc') @@ -33,6 +37,12 @@ class RdmaCore(CMakePackage): conflicts('platform=darwin', msg='rdma-core requires FreeBSD or Linux') conflicts('%intel', msg='rdma-core cannot be built with intel (use gcc instead)') + @classmethod + def determine_version(cls, lib): + match = re.search(r'lib\S*\.so\.\d+\.\d+\.(\d+\.\d+)', + lib) + return match.group(1) if match else None + # NOTE: specify CMAKE_INSTALL_RUNDIR explicitly to prevent rdma-core from # using the spack staging build dir (which may be a very long file # system path) as a component in compile-time static strings such as diff --git a/var/spack/repos/builtin/packages/relax/package.py b/var/spack/repos/builtin/packages/relax/package.py index f774c72756657a..f727017762f298 100644 --- a/var/spack/repos/builtin/packages/relax/package.py +++ b/var/spack/repos/builtin/packages/relax/package.py @@ -15,9 +15,7 @@ class Relax(CMakePackage): tags = ['hep'] - # The RELAX project stopped using a fixed release model since it moved to - # ROOT 6, so any package checksum is a lie... - version('root6') + version('root6', sha256='1d24b1a0884bbe99d60f7d02fea45d59695c158ab5e53516ac3fb780eb460bb4') depends_on('clhep') depends_on('gsl') diff --git a/var/spack/repos/builtin/packages/relion/package.py b/var/spack/repos/builtin/packages/relion/package.py index aa644eb8bb7b7d..7bb6e92d6a0587 100644 --- a/var/spack/repos/builtin/packages/relion/package.py +++ b/var/spack/repos/builtin/packages/relion/package.py @@ -14,9 +14,12 @@ class Relion(CMakePackage, CudaPackage): homepage = "http://www2.mrc-lmb.cam.ac.uk/relion" git = "https://github.com/3dem/relion.git" - url = "https://github.com/3dem/relion/archive/3.1.0.zip" + url = "https://github.com/3dem/relion/archive/3.1.3.zip" - version('3.1.3', sha256='e67277200b54d1814045cfe02c678a58d88eb8f988091573453c8568bfde90fc') + # New 4.0-beta + version('4.0-beta', commit='e3537c82cf7a816df805f4e54c0bc12475803524') + + version('3.1.3', sha256='e67277200b54d1814045cfe02c678a58d88eb8f988091573453c8568bfde90fc', preferred=True) version('3.1.2', sha256='dcdf6f214f79a03d29f0fed2de58054efa35a9d8401543bdc52bfb177987931f') version('3.1.1', sha256='63e9b77e1ba9ec239375020ad6ff631424d1a5803cba5c608c09fd44d20b1618') version('3.1.0', sha256='8a7e751fa6ebcdf9f36046499b3d88e170c4da86d5ff9ad1914b5f3d178867a8') @@ -49,6 +52,7 @@ class Relion(CMakePackage, CudaPackage): depends_on('fftw precision=float,double', when='~mklfft') depends_on('fltk', when='+gui') depends_on('libtiff') + depends_on('libpng', when='@4:') depends_on('cuda', when='+cuda') depends_on('cuda@9:', when='@3: +cuda') diff --git a/var/spack/repos/builtin/packages/revbayes/package.py b/var/spack/repos/builtin/packages/revbayes/package.py index af59d2259522fb..77fe158e642064 100644 --- a/var/spack/repos/builtin/packages/revbayes/package.py +++ b/var/spack/repos/builtin/packages/revbayes/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Revbayes(CMakePackage): @@ -24,7 +25,10 @@ class Revbayes(CMakePackage): variant('mpi', default=True, description='Enable MPI parallel support') - depends_on('boost') + # 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('mpi', when='+mpi') conflicts('%gcc@7.1.0:', when='@:1.0.12') diff --git a/var/spack/repos/builtin/packages/rhash/package.py b/var/spack/repos/builtin/packages/rhash/package.py index 94462d13703a7a..6567454e45cf52 100644 --- a/var/spack/repos/builtin/packages/rhash/package.py +++ b/var/spack/repos/builtin/packages/rhash/package.py @@ -23,6 +23,10 @@ class Rhash(MakefilePackage): patch('https://github.com/rhash/RHash/commit/4dc506066cf1727b021e6352535a8bb315c3f8dc.patch?full_index=1', when='@1.4.2', sha256='3fbfe4603d2ec5228fd198fc87ff3ee281e1f68d252c1afceaa15cba76e9b6b4') + # Intel 20xx.yy.z works just fine. Un-block it from the configure script + # https://github.com/rhash/RHash/pull/197 + patch('rhash-intel20.patch') + # For macOS build instructions, see: # https://github.com/Homebrew/homebrew-core/blob/master/Formula/rhash.rb diff --git a/var/spack/repos/builtin/packages/rhash/rhash-intel20.patch b/var/spack/repos/builtin/packages/rhash/rhash-intel20.patch new file mode 100644 index 00000000000000..7a9eefb1c2491f --- /dev/null +++ b/var/spack/repos/builtin/packages/rhash/rhash-intel20.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 59d432b..cadbffe 100755 +--- a/configure ++++ b/configure +@@ -500,7 +500,7 @@ if test "$(basename $CC)" = "icc" || test "$(basename $CC)" = "ecc"; then + cc_version="v. ?.??, bad" + cc_fail=yes + ;; +- 10.1|11.1|12.*|13.*) ++ 10.1|11.1|12.*|13.*|20*) + cc_version="$cc_version, ok" + ;; + *) diff --git a/var/spack/repos/builtin/packages/rivet/package.py b/var/spack/repos/builtin/packages/rivet/package.py index 5751b391b0ae8c..207a31a22bc9d4 100644 --- a/var/spack/repos/builtin/packages/rivet/package.py +++ b/var/spack/repos/builtin/packages/rivet/package.py @@ -6,6 +6,7 @@ import os from spack import * +from spack.pkg.builtin.boost import Boost class Rivet(AutotoolsPackage): @@ -106,16 +107,20 @@ class Rivet(AutotoolsPackage): depends_on('yoda@1.7.0:1.7', when='@2.6.0,2.7.0,2.7.1,3.0.0,3.0.2') depends_on('yoda@1.5.0:1.5', when='@2.4.1') - depends_on('hepmc', type=('build', 'link', 'run'), when='hepmc=2') - depends_on('hepmc3', type=('build', 'link', 'run'), when='hepmc=3') - depends_on('boost', when='@:2.5.0', type=('build', 'run')) - depends_on('fastjet', type=('build', 'run')) - depends_on('fjcontrib', type=('build', 'run'), when='@3.0.0:') - depends_on('gsl', type=('build', 'run'), when='@:2.6.0,2.6.2:2') + depends_on('hepmc', when='hepmc=2') + depends_on('hepmc3', when='hepmc=3') + depends_on('boost', when='@:2.5.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, when='@:2.5.0') + depends_on('fastjet') + depends_on('fjcontrib', when='@3.0.0:') + depends_on('gsl', when='@:2.6.0,2.6.2:2') depends_on('python', type=('build', 'run')) depends_on('py-cython@0.24.0:', type='build') - depends_on('swig', type=('build', 'run')) - depends_on('yaml-cpp', when='@2.0.0:2.1.2', type=('build', 'run')) + depends_on('swig', type='build') + depends_on('yaml-cpp', when='@2.0.0:2.1.2') depends_on('autoconf', type='build') depends_on('automake', type='build') @@ -154,8 +159,6 @@ def force_autoreconf(self): def setup_build_environment(self, env): # this avoids an "import site" error in the build env.unset('PYTHONHOME') - fjcontrib_home = self.spec['fjcontrib'].prefix - env.prepend_path('LD_LIBRARY_PATH', fjcontrib_home.lib) def flag_handler(self, name, flags): if self.spec.satisfies('@3.1.2:') and name == 'cxxflags': diff --git a/var/spack/repos/builtin/packages/rkt-base/package.py b/var/spack/repos/builtin/packages/rkt-base/package.py new file mode 100644 index 00000000000000..36d7987a97bfbf --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-base/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2021 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 import * + + +class RktBase(RacketPackage): + """Stub package for packages which are currently part of core + racket installation (but which may change in the future).""" + + git = "ssh://git@github.com/racket/racket.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='cab83438422bfea0e4bd74bc3e8305e6517cf25f') # tag='v8.3' + depends_on('racket@8.3', type=('build', 'run'), when='@8.3') + + name = 'base' + pkgs = True + subdirectory = "pkgs/{0}".format(name) diff --git a/var/spack/repos/builtin/packages/rkt-cext-lib/package.py b/var/spack/repos/builtin/packages/rkt-cext-lib/package.py new file mode 100644 index 00000000000000..ed49ab34065254 --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-cext-lib/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2021 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 import * + + +class RktCextLib(RacketPackage): + """Racket library for running a C compiler/linker.""" + + git = "ssh://git@github.com/racket/cext-lib.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='cc22e2456df881a9008240d70dd9012ef37395f5') # tag = 'v8.3' + + depends_on('rkt-base@8.3', type=('build', 'run'), when='@8.3') + depends_on('rkt-compiler-lib@8.3', type=('build', 'run'), when='@8.3') + depends_on('rkt-dynext-lib@8.3', type=('build', 'run'), when='@8.3') + depends_on('rkt-scheme-lib@8.3', type=('build', 'run'), when='@8.3') + + name = 'cext-lib' + pkgs = True + subdirectory = name diff --git a/var/spack/repos/builtin/packages/rkt-compiler-lib/package.py b/var/spack/repos/builtin/packages/rkt-compiler-lib/package.py new file mode 100644 index 00000000000000..c7c333e4cdef2f --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-compiler-lib/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2021 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 import * + + +class RktCompilerLib(RacketPackage): + """Stub package for packages which are currently part of core + Racket installation (but which may change in the future).""" + + git = "ssh://git@github.com/racket/racket.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='cab83438422bfea0e4bd74bc3e8305e6517cf25f') # tag='v8.3' + depends_on('rkt-base@8.3', type=('build', 'run'), when='@8.3') + depends_on('rkt-scheme-lib@8.3', type=('build', 'run'), when='@8.3') + depends_on('rkt-rackunit-lib@8.3', type=('build', 'run'), when='@8.3') + depends_on('rkt-zo-lib@1.3', type=('build', 'run'), when='@8.3') + + name = 'compiler-lib' + pkgs = True + subdirectory = "pkgs/{0}".format(name) diff --git a/var/spack/repos/builtin/packages/rkt-dynext-lib/package.py b/var/spack/repos/builtin/packages/rkt-dynext-lib/package.py new file mode 100644 index 00000000000000..cc57851776230b --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-dynext-lib/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2021 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 import * + + +class RktDynextLib(RacketPackage): + """Racket library for running a C compiler/linker.""" + + git = "ssh://git@github.com/racket/cext-lib.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='cc22e2456df881a9008240d70dd9012ef37395f5') # tag = 'v8.3' + depends_on('rkt-base@8.3', type=('build', 'run'), when='@8.3') + + name = 'dynext-lib' + pkgs = True + subdirectory = name diff --git a/var/spack/repos/builtin/packages/rkt-rackunit-lib/package.py b/var/spack/repos/builtin/packages/rkt-rackunit-lib/package.py new file mode 100644 index 00000000000000..c1d7aa7444b4bd --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-rackunit-lib/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2021 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 import * + + +class RktRackunitLib(RacketPackage): + """RackUnit testing framework.""" + + git = "ssh://git@github.com/racket/rackunit.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='683237bee2a979c7b1541092922fb51a75ea8ca9') # tag='v8.3' + depends_on('rkt-base@8.3:', type=('build', 'run'), when='@8.3') + depends_on('rkt-testing-util-lib@8.3', type=('build', 'run'), when='@8.3') + + name = 'rackunit-lib' + pkgs = True + subdirectory = name diff --git a/var/spack/repos/builtin/packages/rkt-scheme-lib/package.py b/var/spack/repos/builtin/packages/rkt-scheme-lib/package.py new file mode 100644 index 00000000000000..e98c6d33f70658 --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-scheme-lib/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2021 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 import * + + +class RktSchemeLib(RacketPackage): + """Legacy Scheme Library.""" + + git = "ssh://git@github.com/racket/scheme-lib.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='a36e729680818712820ee5269f5208c3c0715a6a') # tag='v8.3' + depends_on('rkt-base@8.3', type=('build', 'run'), when='@8.3') + + name = 'scheme-lib' + pkgs = True diff --git a/var/spack/repos/builtin/packages/rkt-testing-util-lib/package.py b/var/spack/repos/builtin/packages/rkt-testing-util-lib/package.py new file mode 100644 index 00000000000000..a9d6e973ffcc26 --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-testing-util-lib/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2021 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 import * + + +class RktTestingUtilLib(RacketPackage): + """Utilities for interoperating between different testing libraries.""" + + git = "ssh://git@github.com/racket/rackunit.git" + + maintainers = ['elfprince13'] + + version('8.3', commit='683237bee2a979c7b1541092922fb51a75ea8ca9') # tag='v8.3' + depends_on('rkt-base@8.3:', type=('build', 'run'), when='@8.3') + + name = 'testing-util-lib' + pkgs = True + subdirectory = name diff --git a/var/spack/repos/builtin/packages/rkt-zo-lib/package.py b/var/spack/repos/builtin/packages/rkt-zo-lib/package.py new file mode 100644 index 00000000000000..10042fc6bd652c --- /dev/null +++ b/var/spack/repos/builtin/packages/rkt-zo-lib/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2021 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 import * + + +class RktZoLib(RacketPackage): + """Libraries for handling zo files.""" + + git = "ssh://git@github.com/racket/racket.git" + + maintainers = ['elfprince13'] + + version('1.3', commit='cab83438422bfea0e4bd74bc3e8305e6517cf25f') # tag='v1.3' + depends_on('rkt-base@8.3:', type=('build', 'run'), when='@1.3') + + name = 'zo-lib' + pkgs = True + subdirectory = "pkgs/{0}".format(name) diff --git a/var/spack/repos/builtin/packages/rocalution/package.py b/var/spack/repos/builtin/packages/rocalution/package.py index 4bf466b2423cab..9e92c8d938fb42 100644 --- a/var/spack/repos/builtin/packages/rocalution/package.py +++ b/var/spack/repos/builtin/packages/rocalution/package.py @@ -17,10 +17,12 @@ class Rocalution(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocALUTION" git = "https://github.com/ROCmSoftwarePlatform/rocALUTION.git" - url = "https://github.com/ROCmSoftwarePlatform/rocALUTION/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocALUTION/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='b01adaf858b9c3683523b087a55fafb655864f5db8e2a1acdbf588f53d6972e2') + version('5.0.0', sha256='df9e7eacb8cc1bd5c7c4071b20356a885ee8ae13e6ab5afdabf88a272ab32c7e') version('4.5.2', sha256='8be38922320cd9d4fc465a30f0322843849f62c0c7dad2bdbe52290a1b69d2a0') version('4.5.0', sha256='191629fef002fd1a0793a6b4fe5a6b8c43ac49d3cd173ba64a91359f54659e5b') version('4.3.1', sha256='d3a7b9290f99bdc7382d1d5259c3f5e0e66a43aef4d05b7c2cd78b0e4a5c59bc') @@ -38,7 +40,8 @@ class Rocalution(CMakePackage): depends_on('cmake@3.5:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocblas@' + ver, when='@' + ver) depends_on('rocprim@' + ver, when='@' + ver) @@ -48,7 +51,8 @@ class Rocalution(CMakePackage): depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) for ver in ['3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocrand@' + ver, when='@' + ver) def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/rocblas/0002-Fix-rocblas-clients-blas.patch b/var/spack/repos/builtin/packages/rocblas/0002-Fix-rocblas-clients-blas.patch new file mode 100644 index 00000000000000..5ac534d6d0f193 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocblas/0002-Fix-rocblas-clients-blas.patch @@ -0,0 +1,24 @@ +diff -r -u a/clients/benchmarks/CMakeLists.txt b/clients/benchmarks/CMakeLists.txt +--- a/clients/benchmarks/CMakeLists.txt 2021-11-12 12:22:24.359556397 -0700 ++++ b/clients/benchmarks/CMakeLists.txt 2021-11-12 14:21:31.246604351 -0700 +@@ -52,6 +52,8 @@ + target_link_libraries( rocblas-bench PRIVATE rocblas_fortran_client roc::rocblas lapack cblas ) + if(LINK_BLIS) + target_link_libraries( rocblas-bench PRIVATE ${BLIS_LIBRARY} ) ++else() ++ target_link_libraries( rocblas-bench PRIVATE blas ) + endif() + + if( CUDA_FOUND ) +diff -r -u a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt +--- a/clients/gtest/CMakeLists.txt 2021-11-12 12:22:24.359556397 -0700 ++++ b/clients/gtest/CMakeLists.txt 2021-11-12 14:20:59.057676192 -0700 +@@ -132,6 +132,8 @@ + target_link_libraries( rocblas-test PRIVATE rocblas_fortran_client roc::rocblas lapack cblas ${GTEST_LIBRARIES} ) + if(LINK_BLIS) + target_link_libraries( rocblas-test PRIVATE ${BLIS_LIBRARY} ) ++else() ++ target_link_libraries( rocblas-test PRIVATE blas ) + endif() + + diff --git a/var/spack/repos/builtin/packages/rocblas/0003-Fix-rocblas-gentest.patch b/var/spack/repos/builtin/packages/rocblas/0003-Fix-rocblas-gentest.patch new file mode 100644 index 00000000000000..4bc1631fec73e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocblas/0003-Fix-rocblas-gentest.patch @@ -0,0 +1,9 @@ +diff -r -u a/clients/common/rocblas_gentest.py b/clients/common/rocblas_gentest.py +--- a/clients/common/rocblas_gentest.py 2021-11-12 12:22:24.359556397 -0700 ++++ b/clients/common/rocblas_gentest.py 2021-11-12 12:22:41.464044040 -0700 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/usr/bin/env python3 + """Copyright 2018-2020 Advanced Micro Devices, Inc. + Expand rocBLAS YAML test data file into binary Arguments records""" + diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index b4d4068a8f0a6a..2da655dc8fa5b4 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -12,10 +12,12 @@ class Rocblas(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocBLAS/" git = "https://github.com/ROCmSoftwarePlatform/rocBLAS.git" - url = "https://github.com/ROCmSoftwarePlatform/rocBLAS/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocBLAS/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + version('5.0.2', sha256='358a0902fc279bfc80205659a90e96269cb7d83a80386b121e4e3dfe221fec23') + version('5.0.0', sha256='4b01fba937ada774f09c7ccb5e9fdc66e1a5d46c130be833e3706e6b5841b1da') version('4.5.2', sha256='15d725e38f91d1ff7772c4204b97c1515af58fa7b8ec2a2014b99b6d337909c4') version('4.5.0', sha256='22d15a1389a10f1324f5e0ceac1a6ec0758a2801a18419a55e37e2bc63793eaf') version('4.3.1', sha256='ad3c09573cb2bcfdb12bfb5a05e85f9c95073993fd610981df24dda792727b4b') @@ -51,10 +53,20 @@ class Rocblas(CMakePackage): conflicts('tensile_architecture=gfx1012', when='@:4.2.1') conflicts('tensile_architecture=gfx1030', when='@:4.2.1') - depends_on('cmake@3:', type='build') + depends_on('cmake@3.16.8:', type='build', when='@4.2.0:') + depends_on('cmake@3.8:', type='build', when='@3.9.0:') + depends_on('cmake@3.5:', type='build') + + depends_on('googletest@1.10.0:', type='test') + depends_on('netlib-lapack@3.7.1:', type='test') + + def check(self): + if '@4.2.0:' in self.spec: + exe = join_path(self.build_directory, 'clients', 'staging', 'rocblas-test') + self.run_test(exe, options=['--gtest_filter=*quick*-*known_bug*']) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('llvm-amdgpu@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) @@ -63,13 +75,14 @@ class Rocblas(CMakePackage): for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0']: depends_on('rocm-smi@' + ver, type='build', when='@' + ver) - for ver in ['4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + for ver in ['4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', + '5.0.0', '5.0.2']: depends_on('rocm-smi-lib@' + ver, type='build', when='@' + ver) # This is the default library format since 3.7.0 depends_on('msgpack-c@3:', when='@3.7:') - depends_on('python', type='build') + depends_on('python@3.6:', type='build') depends_on('py-virtualenv', type='build') depends_on('perl-file-which', type='build') depends_on('py-pyyaml', type='build') @@ -89,7 +102,9 @@ class Rocblas(CMakePackage): ('@4.3.0', '9cbabb07f81e932b9c98bf5ae48fbd7fcef615cf'), ('@4.3.1', '9cbabb07f81e932b9c98bf5ae48fbd7fcef615cf'), ('@4.5.0', '0f6a6d1557868d6d563cb1edf167c32c2e34fda0'), - ('@4.5.2', '0f6a6d1557868d6d563cb1edf167c32c2e34fda0') + ('@4.5.2', '0f6a6d1557868d6d563cb1edf167c32c2e34fda0'), + ('@5.0.0', '75b9aefe5981d85d1df32ddcebf32dab52bfdabd'), + ('@5.0.2', '75b9aefe5981d85d1df32ddcebf32dab52bfdabd') ]: resource(name='Tensile', git='https://github.com/ROCmSoftwarePlatform/Tensile.git', @@ -99,6 +114,8 @@ class Rocblas(CMakePackage): # Status: https://github.com/ROCmSoftwarePlatform/Tensile/commit/a488f7dadba34f84b9658ba92ce9ec5a0615a087 # Not yet landed in 3.7.0, nor 3.8.0. patch('0001-Fix-compilation-error-with-StringRef-to-basic-string.patch', when='@:3.8') + patch('0002-Fix-rocblas-clients-blas.patch', when='@4.2.0:4.3.1') + patch('0003-Fix-rocblas-gentest.patch', when='@4.2.0:') def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) @@ -117,7 +134,8 @@ def get_gpulist_for_tensile_support(self): def cmake_args(self): tensile = join_path(self.stage.source_path, 'Tensile') args = [ - self.define('BUILD_CLIENTS_TESTS', 'OFF'), + self.define('BUILD_CLIENTS_TESTS', + self.run_tests and '@4.2.0:' in self.spec), self.define('BUILD_CLIENTS_BENCHMARKS', 'OFF'), self.define('BUILD_CLIENTS_SAMPLES', 'OFF'), self.define('RUN_HEADER_TESTING', 'OFF'), @@ -126,11 +144,10 @@ def cmake_args(self): self.define('Tensile_COMPILER', 'hipcc'), self.define('Tensile_LOGIC', 'asm_full'), self.define('Tensile_CODE_OBJECT_VERSION', 'V3'), - self.define( - 'BUILD_WITH_TENSILE_HOST', - 'ON' if '@3.7.0:' in self.spec else 'OFF' - ) + self.define('BUILD_WITH_TENSILE_HOST', '@3.7.0:' in self.spec) ] + if self.run_tests: + args.append(self.define('LINK_BLIS', 'OFF')) if '@3.7.0:' in self.spec: args.append(self.define('Tensile_LIBRARY_FORMAT', 'msgpack')) diff --git a/var/spack/repos/builtin/packages/rocfft/0001-Improve-compilation-by-using-sqlite-recipe-for-rocfft.patch b/var/spack/repos/builtin/packages/rocfft/0001-Improve-compilation-by-using-sqlite-recipe-for-rocfft.patch new file mode 100644 index 00000000000000..85fb71a8430720 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocfft/0001-Improve-compilation-by-using-sqlite-recipe-for-rocfft.patch @@ -0,0 +1,76 @@ +diff --git a/library/src/CMakeLists.txt b/library/src/CMakeLists.txt +index 0fed2d2..c426b94 100644 +--- a/library/src/CMakeLists.txt ++++ b/library/src/CMakeLists.txt +@@ -138,27 +138,42 @@ set( rocfft_source + # for cache serialization. We also want to use a static SQLite, + # and distro static libraries aren't typically built + # position-independent. +-include( FetchContent ) + +-# embed SQLite +-FetchContent_Declare(sqlite_local +- URL https://sqlite.org/2021/sqlite-amalgamation-3360000.zip +- URL_HASH SHA256=999826fe4c871f18919fdb8ed7ec9dd8217180854dd1fe21eea96aed36186729 +-) +-FetchContent_MakeAvailable(sqlite_local) +-add_library( sqlite3 STATIC ${sqlite_local_SOURCE_DIR}/sqlite3.c ) +-set_target_properties( sqlite3 PROPERTIES +- C_VISIBILITY_PRESET "hidden" +- VISIBILITY_INLINES_HIDDEN ON +- POSITION_INDEPENDENT_CODE ON ++option( SQLITE_USE_SYSTEM_PACKAGE "Use SQLite3 from find_package" OFF ) ++if( SQLITE_USE_SYSTEM_PACKAGE ) ++ find_package(SQLite3 3.36 REQUIRED) ++ set(ROCFFT_SQLITE_LIB SQLite::SQLite3) ++else() ++ include( FetchContent ) ++ if(DEFINED ENV{SQLITE_SRC_URL}) ++ set(SQLITE_SRC_URL_INIT $ENV{SQLITE_SRC_URL}) ++ else() ++ set(SQLITE_SRC_URL_INIT https://sqlite.org/2021/sqlite-amalgamation-3360000.zip) ++ endif() ++ set(SQLITE_SRC_URL ${SQLITE_SRC_URL_INIT} CACHE STRING "Location of SQLite source code") ++ set(SQLITE_SRC_SHA256 999826fe4c871f18919fdb8ed7ec9dd8217180854dd1fe21eea96aed36186729 CACHE STRING "SHA256 hash of SQLite source code") ++ ++ # embed SQLite ++ FetchContent_Declare(sqlite_local ++ URL ${SQLITE_SRC_URL} ++ URL_HASH SHA256=${SQLITE_SRC_SHA256} + ) +- +-# we don't need extensions, and omitting them from SQLite removes the +-# need for dlopen/dlclose from within rocFFT +-target_compile_options( +- sqlite3 +- PRIVATE -DSQLITE_OMIT_LOAD_EXTENSION +-) ++ FetchContent_MakeAvailable(sqlite_local) ++ add_library( sqlite3 OBJECT ${sqlite_local_SOURCE_DIR}/sqlite3.c ) ++ set_target_properties( sqlite3 PROPERTIES ++ C_VISIBILITY_PRESET "hidden" ++ VISIBILITY_INLINES_HIDDEN ON ++ POSITION_INDEPENDENT_CODE ON ++ ) ++ ++ # we don't need extensions, and omitting them from SQLite removes the ++ # need for dlopen/dlclose from within rocFFT ++ target_compile_options( ++ sqlite3 ++ PRIVATE -DSQLITE_OMIT_LOAD_EXTENSION ++ ) ++ set(ROCFFT_SQLITE_LIB sqlite3) ++endif() + + set_property( + SOURCE rtc.cpp +@@ -169,8 +184,8 @@ prepend_path( ".." rocfft_headers_public relative_rocfft_headers_public ) + + add_library( rocfft ${rocfft_source} ${relative_rocfft_headers_public} ) + add_library( roc::rocfft ALIAS rocfft ) ++target_link_libraries( rocfft PRIVATE ${ROCFFT_SQLITE_LIB} ) + +-target_link_libraries( rocfft PRIVATE stockham_gen sqlite3 ) + if( NOT WIN32 ) + target_link_libraries( rocfft PRIVATE -lstdc++fs ) + endif() diff --git a/var/spack/repos/builtin/packages/rocfft/package.py b/var/spack/repos/builtin/packages/rocfft/package.py index 16f084724cd257..75fcc683876905 100644 --- a/var/spack/repos/builtin/packages/rocfft/package.py +++ b/var/spack/repos/builtin/packages/rocfft/package.py @@ -12,10 +12,12 @@ class Rocfft(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocFFT/" git = "https://github.com/ROCmSoftwarePlatform/rocFFT.git" - url = "https://github.com/ROCmSoftwarePlatform/rocfft/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocfft/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + version('5.0.2', sha256='30d4bd5fa85185ddafc69fa6d284edd8033c9d77d1e351fa328267242995eb0a') + version('5.0.0', sha256='c16374dac2f85fbaf145511653e93f6db3151425ce39b282187745c716b67405') version('4.5.2', sha256='2724118ca00b9e97ac9578fe0b7e64a82d86c4fb0246d0da88d8ddd9c608b1e1') version('4.5.0', sha256='045c1cf1737db6e7ee332c274dacdb565f99c976ed4cc5626a116878dc80a48c') version('4.3.1', sha256='fcdc4d12b93d967b6f992b4045da98433eabf2ee0ba84fc6b6f81e380584fbc9') @@ -40,18 +42,22 @@ class Rocfft(CMakePackage): variant('amdgpu_target_sram_ecc', default='none', multi=True, values=amdgpu_targets) depends_on('cmake@3:', type='build') + depends_on('python@3:', type='build', when='@5.0.0:') + depends_on('sqlite@3.36:', type='build', when='@5.0.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) + patch('0001-Improve-compilation-by-using-sqlite-recipe-for-rocfft.patch', when='@5.0.0:5.0.2') + def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) def cmake_args(self): args = [] - tgt = self.spec.variants['amdgpu_target'].value if tgt[0] != 'none': @@ -71,4 +77,7 @@ def cmake_args(self): if self.spec.satisfies('^cmake@3.21.0:3.21.2'): args.append(self.define('__skip_rocmclang', 'ON')) + if self.spec.satisfies('@5.0.0:'): + args.append(self.define('SQLITE_USE_SYSTEM_PACKAGE', 'ON')) + return args diff --git a/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py b/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py index 2bb8e3a8ca0a4d..6cb363650b7f30 100644 --- a/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py +++ b/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py @@ -12,11 +12,13 @@ class RocmBandwidthTest(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/rocm_bandwidth_test" git = "https://github.com/RadeonOpenCompute/rocm_bandwidth_test.git" - url = "https://github.com/RadeonOpenCompute/rocm_bandwidth_test/archive/rocm-4.3.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/rocm_bandwidth_test/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='master') + version('5.0.2', sha256='c93f7dbb37233aa32d81057fa8b3fa88d7c7be9b7916430b5ffc701600a5ff45') + version('5.0.0', sha256='b33c6a12ad8de1d7ea9b8b380b8fa5db6b601ed426c3d3940134863f7d10740f') version('4.5.2', sha256='559ca7ef582d81047c5dd5a908f3989cb2694e89577f7f556214e324ba65e75e') version('4.5.0', sha256='4d20a6017ca6975df98f3ca61ba95fa0c7c62fbf63cd6abae3396c30a423933f') version('4.3.1', sha256='a4804c28586457c231594b4e7689872eaf91972119d892325468f3fe8fdbe5ef') @@ -35,7 +37,8 @@ class RocmBandwidthTest(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('hsa-rocr-dev@' + ver, when='@' + ver) depends_on('hsakmt-roct@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py b/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py index 17bc636d400a60..9f81f18280a8e7 100644 --- a/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py +++ b/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py @@ -16,6 +16,8 @@ class RocmClangOcl(CMakePackage): maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='master') + version('5.0.2', sha256='5e8f39200227388817024ee7ce46a996e43e433ed308f8d5e8e4c03629d8a5e7') + version('5.0.0', sha256='0dff230754b790a417eb3d6be6f50c3727f944e0157686100354eba1e47d30f3') version('4.5.2', sha256='8cc7b8658e81ef378c16bbb00fc6b29140c850da70adc4e520ecec9b4517beb8') version('4.5.0', sha256='b9ab42629c8697f8ffdae99ffd25f939161fa8a7a1c49a9ce19d8b207bedbbae') version('4.3.1', sha256='12461d4fd4f3f40710d2c041cfee37da83ccda9d2761d7708335349e7ec5ad87') @@ -34,7 +36,8 @@ class RocmClangOcl(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('llvm-amdgpu@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-cmake/package.py b/var/spack/repos/builtin/packages/rocm-cmake/package.py index 66c650bc427a18..44d4ed3abe66f6 100644 --- a/var/spack/repos/builtin/packages/rocm-cmake/package.py +++ b/var/spack/repos/builtin/packages/rocm-cmake/package.py @@ -8,17 +8,19 @@ class RocmCmake(CMakePackage): - """ROCM cmake modules provides cmake modules for common build tasks - needed for the ROCM software stack""" + """rocm-cmake provides CMake modules for common build tasks + in the ROCm software stack""" homepage = "https://github.com/RadeonOpenCompute/rocm-cmake" git = "https://github.com/RadeonOpenCompute/rocm-cmake.git" - url = "https://github.com/RadeonOpenCompute/rocm-cmake/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/rocm-cmake/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='master') + version('5.0.2', sha256='86a4ae0f84dcf5be95a252295eb732d6a7a271297eed37800a9d492c16474d0c') + version('5.0.0', sha256='45eb958fac33aafea86fb498127ebf8f567646ce9d7288d46afbd087500553a1') version('4.5.2', sha256='85f2ef51327e4b09d81a221b4ad31c97923dabc1bc8ff127dd6c570742185751') version('4.5.0', sha256='c77b71454010adbeea5357773aa98dd0725f655f51a411815807cabf29258395') version('4.3.1', sha256='acf2a58e2cd486f473194bf01247c52dbf20bd5f6465810fb221470298f2557f') @@ -33,11 +35,6 @@ class RocmCmake(CMakePackage): version('3.5.0', sha256='5fc09e168879823160f5fdf4fd1ace2702d36545bf733e8005ed4ca18c3e910f', deprecated=True) variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') - variant('ldconfig', default=True, description='ROCm ldconfig') depends_on('cmake@3:', type='build') - - def cmake_args(self): - return [ - self.define_from_variant('ROCM_DISABLE_LDCONFIG', 'ldconfig') - ] + depends_on('cmake@3.6:', type='build', when='@4.1.0:') diff --git a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py index 58eb947f90b3b4..461e9f3434fef5 100644 --- a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py +++ b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py @@ -15,11 +15,13 @@ class RocmDbgapi(CMakePackage): homepage = "https://github.com/ROCm-Developer-Tools/ROCdbgapi" git = "https://github.com/ROCm-Developer-Tools/ROCdbgapi.git" - url = "https://github.com/ROCm-Developer-Tools/ROCdbgapi/archive/rocm-4.3.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/ROCdbgapi/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='amd-master') + version('5.0.2', sha256='b7554dfe96bda6c2ee762ad6e3e5f91f0f52b5a525e3fb29d5e1fe6f003652b5') + version('5.0.0', sha256='cff72d7fe43ff791c4117fe87d57314cbebdbcb70002a0411b8a44761012a495') version('4.5.2', sha256='9fa574e8389ef69d116caf714af2f938777e0aeeaadd7fad451cf5d2e6699c6e') version('4.5.0', sha256='583bbf18df593f376c4cc70f25b68c191bd38fde20a336c0f5c8e5d85fda2fcf') version('4.3.1', sha256='dddf2549ad6bb806f7e5d5a5336f5a00fe87a124f2a778be18ec4dc41f891912') @@ -38,7 +40,8 @@ class RocmDbgapi(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2', 'master']: depends_on('hsa-rocr-dev@' + ver, type='build', when='@' + ver) depends_on('comgr@' + ver, type=('build', 'link'), when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py index 0a38c026fe2b00..aa1f7d5c58f35d 100644 --- a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py +++ b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py @@ -12,9 +12,12 @@ class RocmDebugAgent(CMakePackage): homepage = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent" git = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent.git" - url = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent/archive/rocm-4.5.2.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('5.0.2', sha256='4ec3cdedc4ba774d05c3dc972186b3181b3aa823af08f3843238961d5ef90e57') + version('5.0.0', sha256='fb8ebe136bfa815116453bdcb4afb9617ab488f54501434c72eed9706857be3f') version('4.5.2', sha256='85c7f19485defd9a58716fffdd1a0e065ed7f779c3f124467fca18755bc634a6') version('4.5.0', sha256='6486b1a8515da4711d3c85f8e41886f8fe6ba37ca2c63664f00c811f6296ac20') version('4.3.1', sha256='7bee6be6c29883f03f47a8944c0d50b7cf43a6b5eeed734602f521c3c40a18d0') @@ -43,12 +46,12 @@ def url_for_version(self, version): depends_on('elfutils@:0.168', type='link') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hsa-rocr-dev@' + ver, when='@' + ver) depends_on('hsakmt-roct@' + ver, when='@' + ver) for ver in ['3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', - '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocm-dbgapi@' + ver, when='@' + ver) depends_on('hip@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-device-libs/package.py b/var/spack/repos/builtin/packages/rocm-device-libs/package.py index 0bcfb9d5c1dbbc..18d26ca5a15431 100644 --- a/var/spack/repos/builtin/packages/rocm-device-libs/package.py +++ b/var/spack/repos/builtin/packages/rocm-device-libs/package.py @@ -12,12 +12,14 @@ class RocmDeviceLibs(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs" git = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs.git" - url = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] version('master', branch='amd-stg-open') + version('5.0.2', sha256='49cfa8f8fc276ba27feef40546788a2aabe259a924a97af8bef24e295d19aa5e') + version('5.0.0', sha256='83ed7aa1c9322b4fc1f57c48a63fc7718eb4195ee6fde433009b4bc78cb363f0') version('4.5.2', sha256='50e9e87ecd6b561cad0d471295d29f7220e195528e567fcabe2ec73838979f61') version('4.5.0', sha256='78412fb10ceb215952b5cc722ed08fa82501b5848d599dc00744ae1bdc196f77') version('4.3.1', sha256='a7291813168e500bfa8aaa5d1dccf5250764ddfe27535def01b51eb5021d4592') @@ -42,7 +44,8 @@ class RocmDeviceLibs(CMakePackage): depends_on('llvm-amdgpu ~rocm-device-libs') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('llvm-amdgpu@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-gdb/package.py b/var/spack/repos/builtin/packages/rocm-gdb/package.py index a44b4c9022af97..247377cd3dcd3a 100644 --- a/var/spack/repos/builtin/packages/rocm-gdb/package.py +++ b/var/spack/repos/builtin/packages/rocm-gdb/package.py @@ -12,9 +12,12 @@ class RocmGdb(AutotoolsPackage): based on GDB, the GNU source-level debugger.""" homepage = "https://github.com/ROCm-Developer-Tools/ROCgdb/" - url = "https://github.com/ROCm-Developer-Tools/ROCgdb/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/ROCgdb/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('5.0.2', sha256='0eced8cd5a2996cb4bcf254f2bd9defe24112d21c2f750e98f784ecdf94ba5c9') + version('5.0.0', sha256='aa311fb557bd95e35c6e4dfd245188f35c294a93bacb77fe4d3b178b1d0097e8') version('4.5.2', sha256='e278abf50f1758ce396b26a6719d0af09a6053c195516a44ec9b2be925d79203') version('4.5.0', sha256='dd37c8b1ea6bb41b1263183637575d7bf4746cabc573dbff888e23b0379877b0') version('4.3.1', sha256='995756a24b1e1510647dac1476a3a9a8e3af8e9fd9f4af1d00dd2db28e7a4ef2') @@ -40,7 +43,7 @@ class RocmGdb(AutotoolsPackage): depends_on('gmp', type=('build', 'link'), when='@4.5.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocm-dbgapi@' + ver, type='link', when='@' + ver) depends_on('comgr@' + ver, type='link', when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-opencl/package.py b/var/spack/repos/builtin/packages/rocm-opencl/package.py index 93bab94feb96a5..eec8bf4f61e3f7 100644 --- a/var/spack/repos/builtin/packages/rocm-opencl/package.py +++ b/var/spack/repos/builtin/packages/rocm-opencl/package.py @@ -20,8 +20,10 @@ def url_for_version(self, version): url = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-{0}.tar.gz" return url.format(version) - version('master', branch='main') + version('master', branch='main') + version('5.0.2', sha256='3edb1992ba28b4a7f82dd66fbd121f62bd859c1afb7ceb47fa856bd68feedc95') + version('5.0.0', sha256='2aa3a628b336461f83866c4e76225ef5338359e31f802987699d6308515ae1be') version('4.5.2', sha256='96b43f314899707810db92149caf518bdb7cf39f7c0ad86e98ad687ffb0d396d') version('4.5.0', sha256='3a163aed24619b3faf5e8ba17325bdcedd1667a904ea20914ac6bdd33fcdbca8') version('4.3.1', sha256='7f98f7d4707b4392f8aa7017aaca9e27cb20263428a1a81fb7ec7c552e60c4ca') @@ -38,10 +40,12 @@ def url_for_version(self, version): variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') depends_on('cmake@3:', type='build') - depends_on('mesa18~llvm@18.3:', type='link') + depends_on('gl@4.5:', type='link') depends_on('numactl', type='link', when='@3.7.0:') for d_version, d_shasum in [ + ('5.0.2', '34decd84652268dde865f38e66f8fb4750a08c2457fea52ad962bced82a03e5e'), + ('5.0.0', '6b72faf8819628a5c109b2ade515ab9009606d10f11316f0d7e4c4c998d7f724'), ('4.5.2', '6581916a3303a31f76454f12f86e020fb5e5c019f3dbb0780436a8f73792c4d1'), ('4.5.0', 'ca8d6305ff0e620d9cb69ff7ac3898917db9e9b6996a7320244b48ab6511dd8e') ]: @@ -59,7 +63,8 @@ def url_for_version(self, version): '4.2.0', '4.3.0', '4.3.1', 'master']: depends_on('hip-rocclr@' + ver, type='build', when='@' + ver) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('comgr@' + ver, type='build', when='@' + ver) depends_on('hsa-rocr-dev@' + ver, type='link', when='@' + ver) 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 865c9199004bea..0bdefffc158a72 100644 --- a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py +++ b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py @@ -22,7 +22,8 @@ "c368d39ba9c1bc8b0edbe66edaa3f2a4ff5649c2bd16f499ac19dfd1591dec5a", "c2b1a61a15fdf8d50c7c7a1ad75512f059c53a7bd5afe85f69e984f1174aa74a", "2092fd210160986127c302c2d636bf5f58ba3a946d27a8474593fa7f87603950", - "27a5794b5885c61dc6f63cec36673b37deb029754d3b2fd3e1b21239efffa96a" + "27a5794b5885c61dc6f63cec36673b37deb029754d3b2fd3e1b21239efffa96a", + "ce90b9560205f58f50e72615cd937f02041f4eb2ff66ab445ce3b9faf4f4fa4c" ] devlib = [ @@ -33,7 +34,8 @@ "34a2ac39b9bb7cfa8175cbab05d30e7f3c06aaffce99eed5f79c616d0f910f5f", "055a67e63da6491c84cd45865500043553fb33c44d538313dd87040a6f3826f2", "a7291813168e500bfa8aaa5d1dccf5250764ddfe27535def01b51eb5021d4592", - "78412fb10ceb215952b5cc722ed08fa82501b5848d599dc00744ae1bdc196f77" + "78412fb10ceb215952b5cc722ed08fa82501b5848d599dc00744ae1bdc196f77", + "50e9e87ecd6b561cad0d471295d29f7220e195528e567fcabe2ec73838979f61" ] llvm = [ @@ -44,7 +46,8 @@ "751eca1d18595b565cfafa01c3cb43efb9107874865a60c80d6760ba83edb661", "1567d349cd3bcd2c217b3ecec2f70abccd5e9248bd2c3c9f21d4cdb44897fc87", "b53c6b13be7d77dc93a7c62e4adbb414701e4e601e1af2d1e98da4ee07c9837f", - "e33d08c8ae42a3ba394dceb8938263cd14ba45e9603b18f3502c3344814ca296" + "b71451bf26650ba06c0c5c4c7df70f13975151eaa673ef0cc77c1ab0000ccc97", + "36a4f7dd961cf373b743fc679bdf622089d2a905de2cfd6fd6c9e7ff8d8ad61f" ] flang = [ @@ -55,7 +58,8 @@ "d6c3f3aaa289251a433d99d1cffe432812093089ae876a6863295a15066c1eaf", "13d3525078fd1c569f7c8ea7fce439b04f6b03814bbe88600c08f95c788e7802", "13d3525078fd1c569f7c8ea7fce439b04f6b03814bbe88600c08f95c788e7802", - "3d7277fd658e51e7e43272c4b319e733c18f5a6d11f739aaec0df758a720809e" + "3d7277fd658e51e7e43272c4b319e733c18f5a6d11f739aaec0df758a720809e", + "54bc3e668577fc30ef77f0c95436e9f9327f256ac8c43eee35eb90000883c6d3" ] extras = [ @@ -66,10 +70,12 @@ "31bbe70b51c259a54370d021ae63528a1740b5477a22412685afd14150fff6f4", "ec6cc4a9c24f098496de3206714dafe9a714f06afacfe21d53a4e6344f9cb4c9", "ec6cc4a9c24f098496de3206714dafe9a714f06afacfe21d53a4e6344f9cb4c9", - "a9c32fb7659c0aabba5b1e76ec05037dda485bf893cef4144279b42ef8fae416" + "a9c32fb7659c0aabba5b1e76ec05037dda485bf893cef4144279b42ef8fae416", + "2b7ae80dda7ffee63210855bc2746c8a13063777c9b855a562eedca4e7ab6254" ] -versions = ['3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0'] +versions = ['3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', + '4.5.2'] versions_dict = dict() components = ['aomp', 'devlib', 'llvm', 'flang', 'extras'] component_hashes = [aomp, devlib, llvm, flang, extras] @@ -88,6 +94,7 @@ class RocmOpenmpExtras(Package): url = tools_url + "/aomp/archive/rocm-4.5.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'estewart08'] + version('4.5.2', sha256=versions_dict['4.5.2']['aomp']) version('4.5.0', sha256=versions_dict['4.5.0']['aomp']) version('4.3.1', sha256=versions_dict['4.3.1']['aomp']) version('4.3.0', sha256=versions_dict['4.3.0']['aomp']) @@ -98,7 +105,7 @@ class RocmOpenmpExtras(Package): version('3.9.0', sha256=versions_dict['3.9.0']['aomp']) depends_on('cmake@3:', type='build') - depends_on('mesa18~llvm@18.3:', type=('build', 'link')) + depends_on('gl@4.5:', type=('build', 'link')) depends_on('py-setuptools', type='build') depends_on('python@3:', type='build') depends_on('perl-data-dumper', type='build') @@ -107,7 +114,7 @@ class RocmOpenmpExtras(Package): depends_on('libffi', type=('build', 'link')) for ver in ['3.9.0', '3.10.0', '4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', - '4.5.0']: + '4.5.0', '4.5.2']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('comgr@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocm-smi-lib/disable_pdf_generation_with_doxygen_and_latex.patch b/var/spack/repos/builtin/packages/rocm-smi-lib/disable_pdf_generation_with_doxygen_and_latex.patch new file mode 100644 index 00000000000000..d3811be8a27116 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-smi-lib/disable_pdf_generation_with_doxygen_and_latex.patch @@ -0,0 +1,15 @@ +diff --git a/rocm_smi/CMakeLists.txt b/rocm_smi/CMakeLists.txt +index 90cad13..02ea897 100755 +--- a/rocm_smi/CMakeLists.txt ++++ b/rocm_smi/CMakeLists.txt +@@ -140,8 +140,8 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bindings_link + + + # Generate Doxygen documentation +-find_package(Doxygen) +-find_package(LATEX COMPONENTS PDFLATEX) ++#find_package(Doxygen) ++#find_package(LATEX COMPONENTS PDFLATEX) + + if (DOXYGEN_FOUND AND LATEX_FOUND) + set (RSMI_MANUAL_NAME "ROCm_SMI_Manual") diff --git a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py index f371fc3ae79596..852b5379b9b2bc 100644 --- a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py +++ b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py @@ -16,11 +16,13 @@ class RocmSmiLib(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/rocm_smi_lib" git = "https://github.com/RadeonOpenCompute/rocm_smi_lib.git" - url = "https://github.com/RadeonOpenCompute/rocm_smi_lib/archive/rocm-4.3.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/rocm_smi_lib/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] version('master', branch='master') + version('5.0.2', sha256='a169129e4ecd1cca134039dc1bf91e1b3721768781abfae4ae61fad60a633472') + version('5.0.0', sha256='9d0e560072f815b441528a5d6124e901570a5a04e9cff1f21329861609b37203') version('4.5.2', sha256='d4a34db26852defb62817aa44f08ef96d678c63a6f33425bc9d48c18e5e37b7a') version('4.5.0', sha256='43a2cc2ec548cc28698ca4fa01a947a4414febd433936a8d9770bf6f6ed55e4f') version('4.3.1', sha256='ea2f9d8a9999e4aac1cb969e6bf2a9f0b6d02f29d0c319b36cce26412ab8a8b0') @@ -40,6 +42,8 @@ class RocmSmiLib(CMakePackage): depends_on('cmake@3:', type='build') depends_on('python@3:', type=('build', 'run'), when='@3.9.0:') + patch('disable_pdf_generation_with_doxygen_and_latex.patch', when='@4.5.2:') + def cmake_args(self): return [ self.define_from_variant('BUILD_SHARED_LIBS', 'shared') diff --git a/var/spack/repos/builtin/packages/rocm-smi/package.py b/var/spack/repos/builtin/packages/rocm-smi/package.py index a6ae89bf0e4ee6..fba7cff0215e4a 100644 --- a/var/spack/repos/builtin/packages/rocm-smi/package.py +++ b/var/spack/repos/builtin/packages/rocm-smi/package.py @@ -11,20 +11,24 @@ class RocmSmi(MakefilePackage): """This tool exposes functionality for clock and temperature - management of your ROCm enabled system""" + management of your ROCm enabled system + + Note: After ROCm 3.9, this project moved to + https://github.com/RadeonOpenCompute/rocm_smi_lib/tree/master/python_smi_tools + The spack package is called: rocm-smi-lib""" homepage = "https://github.com/RadeonOpenCompute/ROC-smi" url = "https://github.com/RadeonOpenCompute/ROC-smi/archive/rocm-4.1.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] - version('4.1.0', sha256='5f9f551f93f673f4b508f47a7f24bce903288ffb08fa9e4c8e0956a4a57865c2') - version('4.0.0', sha256='bf8738ae81c0a02d83eb9437b93dc153fb63f659f3b04d454024e30678b43575') - version('3.10.0', sha256='b1c7e529e8fcc53fb6b40a4126651da0ab07bcb91faac99519ba9660412ea4ed') - version('3.9.0', sha256='af3cc6d5e2296f47b1873339faad2d27cf2f24725771bf34c7f644d20cc6ef3b') - version('3.8.0', sha256='248d9bddc3353c74defd57f203df0648278a4613f2af7fb838d92a4bc8de575d') - version('3.7.0', sha256='4e34b3b4e409bb89677882f47d9988d56bc2d9bb9893f0712c22a4b73789e06a') - version('3.5.0', sha256='4f46e947c415a4ac12b9f6989f15a42afe32551706b4f48476fba3abf92e8e7c') + version('4.1.0', sha256='5f9f551f93f673f4b508f47a7f24bce903288ffb08fa9e4c8e0956a4a57865c2', deprecated=True) + version('4.0.0', sha256='bf8738ae81c0a02d83eb9437b93dc153fb63f659f3b04d454024e30678b43575', deprecated=True) + version('3.10.0', sha256='b1c7e529e8fcc53fb6b40a4126651da0ab07bcb91faac99519ba9660412ea4ed', deprecated=True) + version('3.9.0', sha256='af3cc6d5e2296f47b1873339faad2d27cf2f24725771bf34c7f644d20cc6ef3b', deprecated=True) + version('3.8.0', sha256='248d9bddc3353c74defd57f203df0648278a4613f2af7fb838d92a4bc8de575d', deprecated=True) + version('3.7.0', sha256='4e34b3b4e409bb89677882f47d9988d56bc2d9bb9893f0712c22a4b73789e06a', deprecated=True) + version('3.5.0', sha256='4f46e947c415a4ac12b9f6989f15a42afe32551706b4f48476fba3abf92e8e7c', deprecated=True) depends_on('python@3:', type='run') diff --git a/var/spack/repos/builtin/packages/rocm-tensile/package.py b/var/spack/repos/builtin/packages/rocm-tensile/package.py index 98b8bc6112ee1b..9829b47f3b42ce 100644 --- a/var/spack/repos/builtin/packages/rocm-tensile/package.py +++ b/var/spack/repos/builtin/packages/rocm-tensile/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class RocmTensile(CMakePackage): @@ -16,6 +17,8 @@ class RocmTensile(CMakePackage): maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + version('5.0.2', sha256='c6130de3b02f4f10635d18f913b3b88ea754fce2842c680e9caf5a6781da8f37') + version('5.0.0', sha256='2a814ee8576ff1f06cc5ac4556300c8e7cbf77ef8c87b56992f3e66d8862f213') version('4.5.2', sha256='da20256224749c0a8b44aaede25fbcd66cfeac483081af5d22f1d1fcf49dffc1') version('4.5.0', sha256='26a27659c864b5372ca4407671c6e8d4be3bbc05c64fc18762ad570cd3b3af1f') version('4.3.1', sha256='6fce0ac22051a454fe984283766eb473dc50752cd30bad05acb3dbde6ef4f8b1') @@ -42,9 +45,11 @@ class RocmTensile(CMakePackage): # This is the default library format since 3.7.0 depends_on('msgpack-c@3:', when='@3.7:') depends_on('boost', type=('build', 'link')) + depends_on(Boost.with_default_variants) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('hip@' + ver, when='@' + ver) depends_on('comgr@' + ver, when='@' + ver) @@ -55,7 +60,8 @@ class RocmTensile(CMakePackage): for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0']: depends_on('rocm-smi@' + ver, type='build', when='@' + ver) - for ver in ['4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + for ver in ['4.0.0', '4.1.0', '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('rocm-smi-lib@' + ver, type='build', when='@' + ver) root_cmakelists_dir = 'Tensile/Source' 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 bf05c47d347da8..1715c1ae7f10ae 100644 --- a/var/spack/repos/builtin/packages/rocm-validation-suite/package.py +++ b/var/spack/repos/builtin/packages/rocm-validation-suite/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os from spack import * @@ -19,6 +20,8 @@ class RocmValidationSuite(CMakePackage): maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='f249fe700a5a96c6dabf12130a3e366ae6025fe1442a5d11d08801d6c0265af4') + version('5.0.0', sha256='d4ad31db0377096117714c9f4648cb37d6808ce618cd0bb5e4cc89cc9b4e37fd') version('4.5.2', sha256='e2a128395367a60a17d4d0f62daee7d34358c75332ed582243b18da409589ab8') version('4.5.0', sha256='54181dd5a132a7f4a34a9316d8c00d78343ec45c069c586134ce4e61e68747f5') version('4.3.1', sha256='779a3b0afb53277e41cf863185e87f95d9b2bbb748fcb062cbb428d0b510fb69') @@ -51,7 +54,8 @@ def setup_build_environment(self, build_env): build_env.set("HIPCC_PATH", spec['hip'].prefix) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('hip-rocclr@' + ver, when='@' + ver) depends_on('rocminfo@' + ver, when='@' + ver) @@ -68,5 +72,8 @@ def cmake_args(self): ] if self.spec.satisfies('@4.5.0:'): args.append(self.define('UT_INC', self.spec['googletest'].prefix.include)) - args.append(self.define('UT_LIB', self.spec['googletest'].prefix.lib64)) + libloc = self.spec['googletest'].prefix.lib64 + if not os.path.isdir(libloc): + libloc = self.spec['googletest'].prefix.lib + args.append(self.define('UT_LIB', libloc)) return args diff --git a/var/spack/repos/builtin/packages/rocminfo/package.py b/var/spack/repos/builtin/packages/rocminfo/package.py index f9524ca3e0c22f..2a9b35dc6d33a8 100644 --- a/var/spack/repos/builtin/packages/rocminfo/package.py +++ b/var/spack/repos/builtin/packages/rocminfo/package.py @@ -12,11 +12,14 @@ class Rocminfo(CMakePackage): homepage = "https://github.com/RadeonOpenCompute/rocminfo" git = "https://github.com/RadeonOpenCompute/rocminfo.git" - url = "https://github.com/RadeonOpenCompute/rocminfo/archive/rocm-4.5.2.tar.gz" + url = "https://github.com/RadeonOpenCompute/rocminfo/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] version('master', branch='master') + + version('5.0.2', sha256='5fd970f08c5d6591efe7379ece564ce5580cba87fb6237531dabbd5adcb6a899') + version('5.0.0', sha256='43e025de31bffa335d9cb682649add886afdd02c92090ee63e9bf77b3aaaa75b') version('4.5.2', sha256='5ea839cd1f317cbc72ea1e3634a75f33a458ba0cb5bf48377f08bb329c29222d') version('4.5.0', sha256='421ed55192780eb478f0341fd1ce47a0dd3ffafbec9d7a02109a411878a58ee5') version('4.3.1', sha256='d042947d3f29e943a2e3294a2a2d759ca436cebe31151ce048e49bc4f02d6993') @@ -35,7 +38,8 @@ class Rocminfo(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', 'master']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2', + 'master']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocprim/package.py b/var/spack/repos/builtin/packages/rocprim/package.py index 0fa35c494d7e4a..25abc29cfbe963 100644 --- a/var/spack/repos/builtin/packages/rocprim/package.py +++ b/var/spack/repos/builtin/packages/rocprim/package.py @@ -11,10 +11,12 @@ class Rocprim(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocPRIM" git = "https://github.com/ROCmSoftwarePlatform/rocPRIM.git" - url = "https://github.com/ROCmSoftwarePlatform/rocPRIM/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocPRIM/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='a4280f15d470699a1c6a5f86bdd951c1387e0af227c6bee6f81cee658406f4b0') + version('5.0.0', sha256='0e7e7bda6a09b70a07ddd926986882df0c8d8ff3e0a34e12cb6d44f7d0a5840e') version('4.5.2', sha256='0dc673847e67db672f2e239f299206fe16c324005ddd2e92c7cb7725bb6f4fa6') version('4.5.0', sha256='6f0ca1da9a93064af662d6c61fbdb56bb313f8edca85615ead0dd284eb481089') version('4.3.1', sha256='d29ffcb5dd1c6155c586b9952fa4c11b717d90073feb083db6b03ea74746194b') @@ -34,7 +36,8 @@ class Rocprim(CMakePackage): depends_on('numactl', type='link', when='@3.7.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('comgr@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocprofiler-dev/package.py b/var/spack/repos/builtin/packages/rocprofiler-dev/package.py index eb6e0231b2e7de..847d227de3f8b3 100644 --- a/var/spack/repos/builtin/packages/rocprofiler-dev/package.py +++ b/var/spack/repos/builtin/packages/rocprofiler-dev/package.py @@ -12,9 +12,12 @@ class RocprofilerDev(CMakePackage): homepage = "https://github.com/ROCm-Developer-Tools/rocprofiler" git = "https://github.com/ROCm-Developer-Tools/rocprofiler.git" - url = "https://github.com/ROCm-Developer-Tools/rocprofiler/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/rocprofiler/archive/refs/tags/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('5.0.2', sha256='48f58c3c16dd45fead2086f89a175f74636e81bc2437e30bb6e9361b1083e71d') + version('5.0.0', sha256='2ed521f400e4aafd17405c2f9ad2fb3b906a982d3767b233122d9c2964c3245f') version('4.5.2', sha256='baa59826f8fb984993c03d05e2e3cdf0b830b08f8056b18ba206dfbaa367aca9') version('4.5.0', sha256='9b47b086d28fc831dbe0f83ec7e4640057b97edc961f2f050a0968633f32a06b') version('4.3.1', sha256='c6f5fa192c9cdb32553d24ed5c847107d312042e39fa3dd17c83e237c9542a2d') @@ -32,7 +35,7 @@ class RocprofilerDev(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) depends_on('rocminfo@' + ver, when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocrand/package.py b/var/spack/repos/builtin/packages/rocrand/package.py index 3fff838b547236..9b0ef65cde9f1f 100644 --- a/var/spack/repos/builtin/packages/rocrand/package.py +++ b/var/spack/repos/builtin/packages/rocrand/package.py @@ -15,10 +15,12 @@ class Rocrand(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocRAND" git = "https://github.com/ROCmSoftwarePlatform/rocRAND.git" - url = "https://github.com/ROCmSoftwarePlatform/rocRAND/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocRAND/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='2dbce2a7fb273c2f9456c002adf3a510b9ec79f2ff32dfccdd59948f3ddb1505') + version('5.0.0', sha256='356a03a74d6d5df3ae2d38da07929f23d90bb4dee71f88792c25c25069e673bc') version('4.5.2', sha256='1523997a21437c3b74d47a319d81f8cc44b8e96ec5174004944f2fb4629900db') version('4.5.0', sha256='fd391f81b9ea0b57808d93e8b72d86eec1b4c3529180dfb99ed6d3e2aa1285c2') version('4.3.1', sha256='b3d6ae0cdbbdfb56a73035690f8cb9e173fec1ccaaf9a4c5fdbe5e562e50c901') @@ -34,11 +36,13 @@ class Rocrand(CMakePackage): variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') + depends_on('cmake@3.10.2:', type='build', when='@4.5.0:') depends_on('cmake@3.5.1:', type='build') - depends_on('numactl', when='@3.7.0:') + + depends_on('googletest@1.10.0:', type='test') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) @@ -88,7 +92,7 @@ def fix_library_locations(self): def cmake_args(self): args = [ self.define('BUILD_BENCHMARK', 'OFF'), - self.define('BUILD_TEST', 'OFF') + self.define('BUILD_TEST', self.run_tests) ] if self.spec.satisfies('^cmake@3.21.0:3.21.2'): diff --git a/var/spack/repos/builtin/packages/rocsolver/package.py b/var/spack/repos/builtin/packages/rocsolver/package.py index 23ae323b990939..d0567510697c30 100644 --- a/var/spack/repos/builtin/packages/rocsolver/package.py +++ b/var/spack/repos/builtin/packages/rocsolver/package.py @@ -12,7 +12,7 @@ class Rocsolver(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocSOLVER" git = "https://github.com/ROCmSoftwarePlatform/rocSOLVER.git" - url = "https://github.com/ROCmSoftwarePlatform/rocSOLVER/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocSOLVER/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] @@ -26,6 +26,8 @@ class Rocsolver(CMakePackage): size and compile time by adding specialized kernels \ for small matrix sizes') + version('5.0.2', sha256='298e0903f1ba8074055ab072690f967062d6e06a9371574de23e4e38d2997688') + version('5.0.0', sha256='d444ad5348eb8a2c04646ceae6923467a0e775441f2c73150892e228e585b2e1') version('4.5.2', sha256='4639322bd1e77fedfdeb9032633bde6211a0b1cc16a612db7754f873f18a492f') version('4.5.0', sha256='0295862da941f31f4d43b19195b79331bd17f5968032f75c89d2791a6f8c1e8c') version('4.3.1', sha256='c6e7468d7041718ce6e1c7f50ec80a552439ac9cfed2dc3f753ae417dda5724f') @@ -43,7 +45,7 @@ class Rocsolver(CMakePackage): depends_on('cmake@3.8:', type='build', when='@4.1.0:') depends_on('cmake@3.5:', type='build') - depends_on('fmt@7.1.3:', type='build', when='@4.5.0:') + depends_on('fmt@7:8.0.1', type='build', when='@4.5.0:') depends_on('googletest@1.10.0:', type='test') depends_on('netlib-lapack@3.7.1:', type='test') @@ -55,7 +57,8 @@ def check(self): self.run_test(exe, options=['--gtest_filter=checkin*']) for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocblas@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocsparse/package.py b/var/spack/repos/builtin/packages/rocsparse/package.py index 12b879c8cd5619..106aca08095301 100644 --- a/var/spack/repos/builtin/packages/rocsparse/package.py +++ b/var/spack/repos/builtin/packages/rocsparse/package.py @@ -15,12 +15,14 @@ class Rocsparse(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocSPARSE" git = "https://github.com/ROCmSoftwarePlatform/rocSPARSE.git" - url = "https://github.com/ROCmSoftwarePlatform/rocSPARSE/archive/rocm-4.5.2.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocSPARSE/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] variant('build_type', default='Release', values=("Release", "Debug", "RelWithDebInfo"), description='CMake build type') + version('5.0.2', sha256='c9d9e1b7859e1c5aa5050f5dfdf86245cbd7c1296c0ce60d9ca5f3e22a9b748b') + version('5.0.0', sha256='6d352bf27dbed08e5115a58815aa76c59eb2008ec9dcc921aadf2efe20115d2a') version('4.5.2', sha256='e37af2cd097e239a55a278df534183b5591ef4d985fe1a268a229bd11ada6599') version('4.5.0', sha256='b120e9e17e7e141caee4c8c4288c9d1902bad0cec2ea76458d3ba11343376938') version('4.3.1', sha256='fa5ea64f71e1cfbebe41618cc183f501b387824a6dc58486ab1214d7af5cbef2') @@ -37,7 +39,7 @@ class Rocsparse(CMakePackage): depends_on('cmake@3:', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocprim@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) diff --git a/var/spack/repos/builtin/packages/rocthrust/package.py b/var/spack/repos/builtin/packages/rocthrust/package.py index 0d42c2f63d498b..a1d2065287b937 100644 --- a/var/spack/repos/builtin/packages/rocthrust/package.py +++ b/var/spack/repos/builtin/packages/rocthrust/package.py @@ -14,10 +14,12 @@ class Rocthrust(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocThrust" git = "https://github.com/ROCmSoftwarePlatform/rocThrust.git" - url = "https://github.com/ROCmSoftwarePlatform/rocThrust/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocThrust/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('5.0.2', sha256='60f0cf1848cc7cd8663f15307bd695eee3c5b20d3ad3baa4bc696189ffdcfd53') + version('5.0.0', sha256='10b7b1be919881904d64f8084c2afe22aa00c560f8493a75dbf5df8386443ab4') version('4.5.2', sha256='9171a05dd7438aebd4f6a939b1b33b7e87be1a0bd52d90a171b74539885cf591') version('4.5.0', sha256='86cf897b01a6f5df668d978ce42d44a6ae9df9f8adc92d0a1a49a7c3bbead259') version('4.3.1', sha256='86fcd3bc275efe9a485aed48afdc6d3351804c076caee43e3fb8bd69752865e9') @@ -37,7 +39,8 @@ class Rocthrust(CMakePackage): depends_on('numactl', when='@3.7.0:') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', + '5.0.2']: depends_on('hip@' + ver, when='@' + ver) depends_on('rocprim@' + ver, when='@' + ver) depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) diff --git a/var/spack/repos/builtin/packages/roctracer-dev-api/package.py b/var/spack/repos/builtin/packages/roctracer-dev-api/package.py index 7817b121876d70..84ce5ba7da5cff 100644 --- a/var/spack/repos/builtin/packages/roctracer-dev-api/package.py +++ b/var/spack/repos/builtin/packages/roctracer-dev-api/package.py @@ -13,9 +13,12 @@ class RoctracerDevApi(Package): homepage = "https://github.com/ROCm-Developer-Tools/roctracer" git = "https://github.com/ROCm-Developer-Tools/roctracer.git" - url = "https://github.com/ROCm-Developer-Tools/roctracer/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/roctracer/archive/refs/tags/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('5.0.2', sha256='5ee46f079e57dfe491678ffa4cdaf5f3b3d179cb3137948e4bcafca99ded47cc') + version('5.0.0', sha256='a21f4fb093cee4a806d53cbc0645d615d89db12fbde305e9eceee7e4150acdf2') version('4.5.2', sha256='7012d18b79736dbe119161aab86f4976b78553ce0b2f4753a9386752d75d5074') version('4.5.0', sha256='83dcd8987e129b14da0fe74e24ce8d027333f8fedc9247a402d3683765983296') version('4.3.1', sha256='88ada5f256a570792d1326a305663e94cf2c3b0cbd99f7e745326923882dafd2') diff --git a/var/spack/repos/builtin/packages/roctracer-dev/package.py b/var/spack/repos/builtin/packages/roctracer-dev/package.py index ecef50984b4d53..bec61b0475550c 100644 --- a/var/spack/repos/builtin/packages/roctracer-dev/package.py +++ b/var/spack/repos/builtin/packages/roctracer-dev/package.py @@ -14,9 +14,12 @@ class RoctracerDev(CMakePackage): homepage = "https://github.com/ROCm-Developer-Tools/roctracer" git = "https://github.com/ROCm-Developer-Tools/roctracer.git" - url = "https://github.com/ROCm-Developer-Tools/roctracer/archive/rocm-4.5.0.tar.gz" + url = "https://github.com/ROCm-Developer-Tools/roctracer/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('5.0.2', sha256='5ee46f079e57dfe491678ffa4cdaf5f3b3d179cb3137948e4bcafca99ded47cc') + version('5.0.0', sha256='a21f4fb093cee4a806d53cbc0645d615d89db12fbde305e9eceee7e4150acdf2') version('4.5.2', sha256='7012d18b79736dbe119161aab86f4976b78553ce0b2f4753a9386752d75d5074') version('4.5.0', sha256='83dcd8987e129b14da0fe74e24ce8d027333f8fedc9247a402d3683765983296') version('4.3.1', sha256='88ada5f256a570792d1326a305663e94cf2c3b0cbd99f7e745326923882dafd2') @@ -38,13 +41,13 @@ class RoctracerDev(CMakePackage): depends_on('py-cppheaderparser', type='build') for ver in ['3.5.0', '3.7.0', '3.8.0', '3.9.0', '3.10.0', '4.0.0', '4.1.0', - '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + '4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('hsakmt-roct@' + ver, when='@' + ver) depends_on('hsa-rocr-dev@' + ver, when='@' + ver) depends_on('rocminfo@' + ver, when='@' + ver) depends_on('hip@' + ver, when='@' + ver) - for ver in ['4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2']: + for ver in ['4.2.0', '4.3.0', '4.3.1', '4.5.0', '4.5.2', '5.0.0', '5.0.2']: depends_on('rocprofiler-dev@' + ver, when='@' + ver) def setup_build_environment(self, build_env): diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index b8d37b99ace2a1..324fc979b398cd 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -31,6 +31,7 @@ class Root(CMakePackage): # Development version (when more recent than production). # Production version + version('6.26.00', sha256='5fb9be71fdf0c0b5e5951f89c2f03fcb5e74291d043f6240fb86f5ca977d4b31') version('6.24.06', sha256='907f69f4baca1e4f30eeb4979598ca7599b6aa803ca046e80e25b6bbaa0ef522') version('6.24.02', sha256='0507e1095e279ccc7240f651d25966024325179fa85a1259b694b56723ad7c1c') version('6.24.00', sha256='9da30548a289211c3122d47dacb07e85d35e61067fac2be6c5a5ff7bda979989') @@ -294,6 +295,9 @@ class Root(CMakePackage): # ROOT <6.14 was incompatible with Python 3.7+ conflicts('^python@3.7:', when='@:6.13 +python') + # See https://github.com/root-project/root/issues/9297 + conflicts('target=ppc64le:', when='@:6.24') + # Incompatible variants conflicts('+opengl', when='~x', msg='OpenGL requires X') conflicts('+tmva', when='~gsl', msg='TVMA requires GSL') @@ -305,6 +309,9 @@ class Root(CMakePackage): conflicts('+' + pkg, when='@6.18.00:', msg='Obsolete option +{0} selected.'.format(pkg)) + # Feature removed in 6.26.00: + conflicts('+vmc', when='@6.26:', msg="VMC was removed in ROOT v6.26.00.") + @classmethod def filter_detected_exes(cls, prefix, exes_in_prefix): result = [] diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 6986f32868916e..ec446545249f65 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Rose(AutotoolsPackage): @@ -69,6 +70,11 @@ class Rose(AutotoolsPackage): depends_on("boost@1.60.0:1.64.0,1.65.1,1.66.0:1.67.0 cxxstd=11", when="+cxx11") depends_on("boost@1.60.0:1.64.0,1.65.1,1.66.0:1.67.0", when="~cxx11") + # 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) + # -------------------------------------------------------------------------- # Variants # -------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/ruby/package.py b/var/spack/repos/builtin/packages/ruby/package.py index 870a416283341e..4db2feb1addad7 100644 --- a/var/spack/repos/builtin/packages/ruby/package.py +++ b/var/spack/repos/builtin/packages/ruby/package.py @@ -4,9 +4,14 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import re +import sys +from spack import * -class Ruby(AutotoolsPackage): +is_windows = sys.platform == 'win32' + + +class Ruby(Package): """A dynamic, open source programming language with a focus on simplicity and productivity.""" @@ -27,23 +32,24 @@ class Ruby(AutotoolsPackage): version('2.5.3', sha256='9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c') version('2.2.0', sha256='7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc') - variant('openssl', default=True, description="Enable OpenSSL support") - variant('readline', default=False, description="Enable Readline support") + if not is_windows: + variant('openssl', default=True, description="Enable OpenSSL support") + variant('readline', default=False, description="Enable Readline support") + depends_on('pkgconfig', type=('build')) + depends_on('libffi') + depends_on('libx11', when='@:2.3') + depends_on('tcl', when='@:2.3') + depends_on('tk', when='@:2.3') + depends_on('readline', when='+readline') + depends_on('zlib') + with when('+openssl'): + depends_on('openssl@:1') + depends_on('openssl@:1.0', when='@:2.3') extendable = True - - depends_on('pkgconfig', type=('build')) - depends_on('libffi') - depends_on('zlib') - depends_on('libx11', when='@:2.3') - depends_on('tcl', when='@:2.3') - depends_on('tk', when='@:2.3') - depends_on('readline', when='+readline') - - with when('+openssl'): - depends_on('openssl@:1') - depends_on('openssl@:1.0', when='@:2.3') - + phases = ['configure', 'build', 'install'] + build_targets = [] + install_targets = ['install'] # Known build issues when Avira antivirus software is running: # https://github.com/rvm/rvm/issues/4313#issuecomment-374020379 # TODO: add check for this and warn user @@ -116,6 +122,32 @@ def setup_dependent_package(self, module, dependent_spec): module.gem = Executable(self.prefix.bin.gem) module.rake = Executable(self.prefix.bin.rake) + def configure(self, spec, prefix): + with working_dir(self.stage.source_path, create=True): + if is_windows: + Executable("win32\\configure.bat")("--prefix=%s" % self.prefix) + else: + options = getattr(self, 'configure_flag_args', []) + options += ['--prefix={0}'.format(prefix)] + options += self.configure_args() + configure(*options) + + def build(self, spec, prefix): + with working_dir(self.stage.source_path): + if is_windows: + nmake() + else: + params = ['V=1'] + params += self.build_targets + make(*params) + + def install(self, spec, prefix): + with working_dir(self.stage.source_path): + if is_windows: + nmake('install') + else: + make(*self.install_targets) + @run_after('install') def post_install(self): """ RubyGems updated their SSL certificates at some point, so diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index 5ca065050e2b7b..b0f9cdef9a3e1d 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -92,6 +92,7 @@ class Rust(Package): # The `x.py` bootstrapping script did not exist prior to Rust 1.17. It # would be possible to support both, but for simplicitly, we only support # Rust 1.17 and newer + version('1.58.1', sha256='a839afdd3625d6f3f3c4c10b79813675d1775c460d14be1feaf33a6c829c07c7') version('1.51.0', sha256='7a6b9bafc8b3d81bbc566e7c0d1f17c9f499fd22b95142f7ea3a8e4d1f9eb847') version('1.48.0', sha256='0e763e6db47d5d6f91583284d2f989eacc49b84794d1443355b85c58d67ae43b') version('1.47.0', sha256='3185df064c4747f2c8b9bb8c4468edd58ff4ad6d07880c879ac1b173b768d81d') @@ -99,39 +100,39 @@ class Rust(Package): version('1.45.1', sha256='ea53e6424e3d1fe56c6d77a00e72c5d594b509ec920c5a779a7b8e1dbd74219b') version('1.44.1', sha256='7e2e64cb298dd5d5aea52eafe943ba0458fa82f2987fdcda1ff6f537b6f88473') version('1.44.0', sha256='bf2df62317e533e84167c5bc7d4351a99fdab1f9cd6e6ba09f51996ad8561100') - version('1.43.1', sha256='cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d') - version('1.43.0', sha256='75f6ac6c9da9f897f4634d5a07be4084692f7ccc2d2bb89337be86cfc18453a1') - version('1.42.0', sha256='d2e8f931d16a0539faaaacd801e0d92c58df190269014b2360c6ab2a90ee3475') - version('1.41.1', sha256='38c93d016e6d3e083aa15e8f65511d3b4983072c0218a529f5ee94dd1de84573') - version('1.41.0', sha256='5546822c09944c4d847968e9b7b3d0e299f143f307c00fa40e84a99fabf8d74b') - version('1.40.0', sha256='dd97005578defc10a482bff3e4e728350d2099c60ffcf1f5e189540c39a549ad') - version('1.39.0', sha256='b4a1f6b6a93931f270691aba4fc85eee032fecda973e6b9c774cd06857609357') - version('1.38.0', sha256='644263ca7c7106f8ee8fcde6bb16910d246b30668a74be20b8c7e0e9f4a52d80') - version('1.37.0', sha256='120e7020d065499cc6b28759ff04153bfdc2ac9b5adeb252331a4eb87cbe38c3') - version('1.36.0', sha256='04c4e4d7213d036d6aaed392841496d272146312c0290f728b7400fccd15bb1b') - version('1.35.0', sha256='5a4d637a716bac18d085f44dd87ef48b32195f71b967d872d80280b38cff712d') - version('1.34.2', sha256='c69a4a85a1c464368597df8878cb9e1121aae93e215616d45ad7d23af3052f56') - version('1.34.1', sha256='b0c785264d17e1dac4598627c248a2d5e07dd39b6666d1881fcfc8e2cf4c40a7') - version('1.34.0', sha256='7ac85acffd79dd3a7c44305d9eaabd1f1e7116e2e6e11e770e4bf5f92c0f1f59') - version('1.33.0', sha256='5a01a8d7e65126f6079042831385e77485fa5c014bf217e9f3e4aff36a485d94') - version('1.32.0', sha256='4c594c7712a0e7e8eae6526c464bf6ea1d82f77b4f61717c3fc28fb27ba2224a') - version('1.31.1', sha256='91d2fc22f08d986adab7a54eb3a6a9b99e490f677d2d092e5b9e4e069c23686a') - version('1.30.1', sha256='36a38902dbd9a3e1240d46ab0f2ca40d2fd07c2ab6508ed7970c6c4c036b5b29') - version('1.30.0', sha256='cd0ba83fcca55b64c0c9f23130fe731dfc1882b73ae21bef96be8f2362c108ee') - version('1.29.2', sha256='5088e796aa2e47478cdf41e7243fc5443fafab0a7c70a11423e57c80c04167c9') - version('1.29.1', sha256='f1b0728b66ce6bce6d72bbe5ea9e3a24ea22a045665da2ed8fcdfad14f61a349') - version('1.29.0', sha256='a4eb34ffd47f76afe2abd813f398512d5a19ef00989d37306217c9c9ec2f61e9') - version('1.28.0', sha256='1d5a81729c6f23a0a23b584dd249e35abe9c6f7569cee967cc42b1758ecd6486') - version('1.27.2', sha256='9a818c50cdb7880abeaa68b3d97792711e6c64c1cdfb6efdc23f75b8ced0e15d') - version('1.27.1', sha256='2133beb01ddc3aa09eebc769dd884533c6cfb08ce684f042497e097068d733d1') - version('1.27.0', sha256='2cb9803f690349c9fd429564d909ddd4676c68dc48b670b8ddf797c2613e2d21') - version('1.26.2', sha256='fb9ecf304488c9b56600ab20cfd1937482057f7e5db7899fddb86e0774548700') - version('1.26.1', sha256='70a7961bd8ec43b2c01e9896e90b0a06804a7fbe0a5c05acc7fd6fed19500df0') - version('1.26.0', sha256='4fb09bc4e233b71dcbe08a37a3f38cabc32219745ec6a628b18a55a1232281dd') - version('1.25.0', sha256='eef63a0aeea5147930a366aee78cbde248bb6e5c6868801bdf34849152965d2d') - version('1.24.1', sha256='3ea53d45e8d2e9a41afb3340cf54b9745f845b552d802d607707cf04450761ef') - version('1.24.0', sha256='bb8276f6044e877e447f29f566e4bbf820fa51fea2f912d59b73233ffd95639f') - version('1.23.0', sha256='7464953871dcfdfa8afcc536916a686dd156a83339d8ec4d5cb4eb2fe146cb91') + version('1.43.1', sha256='cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d', deprecated=True) + version('1.43.0', sha256='75f6ac6c9da9f897f4634d5a07be4084692f7ccc2d2bb89337be86cfc18453a1', deprecated=True) + version('1.42.0', sha256='d2e8f931d16a0539faaaacd801e0d92c58df190269014b2360c6ab2a90ee3475', deprecated=True) + version('1.41.1', sha256='38c93d016e6d3e083aa15e8f65511d3b4983072c0218a529f5ee94dd1de84573', deprecated=True) + version('1.41.0', sha256='5546822c09944c4d847968e9b7b3d0e299f143f307c00fa40e84a99fabf8d74b', deprecated=True) + version('1.40.0', sha256='dd97005578defc10a482bff3e4e728350d2099c60ffcf1f5e189540c39a549ad', deprecated=True) + version('1.39.0', sha256='b4a1f6b6a93931f270691aba4fc85eee032fecda973e6b9c774cd06857609357', deprecated=True) + version('1.38.0', sha256='644263ca7c7106f8ee8fcde6bb16910d246b30668a74be20b8c7e0e9f4a52d80', deprecated=True) + version('1.37.0', sha256='120e7020d065499cc6b28759ff04153bfdc2ac9b5adeb252331a4eb87cbe38c3', deprecated=True) + version('1.36.0', sha256='04c4e4d7213d036d6aaed392841496d272146312c0290f728b7400fccd15bb1b', deprecated=True) + version('1.35.0', sha256='5a4d637a716bac18d085f44dd87ef48b32195f71b967d872d80280b38cff712d', deprecated=True) + version('1.34.2', sha256='c69a4a85a1c464368597df8878cb9e1121aae93e215616d45ad7d23af3052f56', deprecated=True) + version('1.34.1', sha256='b0c785264d17e1dac4598627c248a2d5e07dd39b6666d1881fcfc8e2cf4c40a7', deprecated=True) + version('1.34.0', sha256='7ac85acffd79dd3a7c44305d9eaabd1f1e7116e2e6e11e770e4bf5f92c0f1f59', deprecated=True) + version('1.33.0', sha256='5a01a8d7e65126f6079042831385e77485fa5c014bf217e9f3e4aff36a485d94', deprecated=True) + version('1.32.0', sha256='4c594c7712a0e7e8eae6526c464bf6ea1d82f77b4f61717c3fc28fb27ba2224a', deprecated=True) + version('1.31.1', sha256='91d2fc22f08d986adab7a54eb3a6a9b99e490f677d2d092e5b9e4e069c23686a', deprecated=True) + version('1.30.1', sha256='36a38902dbd9a3e1240d46ab0f2ca40d2fd07c2ab6508ed7970c6c4c036b5b29', deprecated=True) + version('1.30.0', sha256='cd0ba83fcca55b64c0c9f23130fe731dfc1882b73ae21bef96be8f2362c108ee', deprecated=True) + version('1.29.2', sha256='5088e796aa2e47478cdf41e7243fc5443fafab0a7c70a11423e57c80c04167c9', deprecated=True) + version('1.29.1', sha256='f1b0728b66ce6bce6d72bbe5ea9e3a24ea22a045665da2ed8fcdfad14f61a349', deprecated=True) + version('1.29.0', sha256='a4eb34ffd47f76afe2abd813f398512d5a19ef00989d37306217c9c9ec2f61e9', deprecated=True) + version('1.28.0', sha256='1d5a81729c6f23a0a23b584dd249e35abe9c6f7569cee967cc42b1758ecd6486', deprecated=True) + version('1.27.2', sha256='9a818c50cdb7880abeaa68b3d97792711e6c64c1cdfb6efdc23f75b8ced0e15d', deprecated=True) + version('1.27.1', sha256='2133beb01ddc3aa09eebc769dd884533c6cfb08ce684f042497e097068d733d1', deprecated=True) + version('1.27.0', sha256='2cb9803f690349c9fd429564d909ddd4676c68dc48b670b8ddf797c2613e2d21', deprecated=True) + version('1.26.2', sha256='fb9ecf304488c9b56600ab20cfd1937482057f7e5db7899fddb86e0774548700', deprecated=True) + version('1.26.1', sha256='70a7961bd8ec43b2c01e9896e90b0a06804a7fbe0a5c05acc7fd6fed19500df0', deprecated=True) + version('1.26.0', sha256='4fb09bc4e233b71dcbe08a37a3f38cabc32219745ec6a628b18a55a1232281dd', deprecated=True) + version('1.25.0', sha256='eef63a0aeea5147930a366aee78cbde248bb6e5c6868801bdf34849152965d2d', deprecated=True) + version('1.24.1', sha256='3ea53d45e8d2e9a41afb3340cf54b9745f845b552d802d607707cf04450761ef', deprecated=True) + version('1.24.0', sha256='bb8276f6044e877e447f29f566e4bbf820fa51fea2f912d59b73233ffd95639f', deprecated=True) + version('1.23.0', sha256='7464953871dcfdfa8afcc536916a686dd156a83339d8ec4d5cb4eb2fe146cb91', deprecated=True) # The Rust bootstrapping process requires a bootstrapping compiler. The # easiest way to do this is to download the binary distribution of the @@ -140,6 +141,12 @@ class Rust(Package): # This dictionary contains a version: hash dictionary for each supported # Rust target. rust_releases = { + '1.58.1': { + 'x86_64-unknown-linux-gnu': '4fac6df9ea49447682c333e57945bebf4f9f45ec7b08849e507a64b2ccd5f8fb', + 'powerpc64le-unknown-linux-gnu': 'b15baef702cbd6f0ea2bef7bf98ca7ce5644f2beb219028e8a12e7053da4c849', + 'aarch64-unknown-linux-gnu': 'ce557516593e4526709b0f33c2e1d7c932b3ddf76af94c2417d8d667921ce90c', + 'x86_64-apple-darwin': 'd0044680fc132a721481b130a0a4282a444867f423efdb890fe13e447966412f' + }, '1.51.0': { 'x86_64-unknown-linux-gnu': '9e125977aa13f012a68fdc6663629c685745091ae244f0587dd55ea4e3a3e42f', 'powerpc64le-unknown-linux-gnu': '7362f561104d7be4836507d3a53cd39444efcdf065813d559beb1f54ce9f7680', diff --git a/var/spack/repos/builtin/packages/sailfish/package.py b/var/spack/repos/builtin/packages/sailfish/package.py index 81790a92aa8ecb..9da23e0551e3c9 100644 --- a/var/spack/repos/builtin/packages/sailfish/package.py +++ b/var/spack/repos/builtin/packages/sailfish/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Sailfish(CMakePackage): @@ -15,4 +16,9 @@ class Sailfish(CMakePackage): version('0.10.1', sha256='a0d6d944382f2e07ffbfd0371132588e2f22bb846ecfc3d3435ff3d81b30d6c6') depends_on('boost@1.55:') + + # 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('tbb') diff --git a/var/spack/repos/builtin/packages/salmon/package.py b/var/spack/repos/builtin/packages/salmon/package.py index 562556bac97405..92ab7aab4981f0 100644 --- a/var/spack/repos/builtin/packages/salmon/package.py +++ b/var/spack/repos/builtin/packages/salmon/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost + class Salmon(CMakePackage): """Salmon is a tool for quantifying the expression of transcripts using @@ -22,8 +24,14 @@ class Salmon(CMakePackage): values=('DEBUG', 'RELEASE')) depends_on('tbb') + + # 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.66.0', when='@:0.14.1') depends_on('boost@1.72.0:', when='@1.4.0:') + depends_on('cereal') depends_on('jemalloc') depends_on('xz') diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index 5577ce9f0e7f1b..2b6394ab356673 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Samrai(AutotoolsPackage): @@ -52,13 +53,17 @@ class Samrai(AutotoolsPackage): depends_on('hdf5+mpi') depends_on('m4', type='build') depends_on('boost@:1.64.0', when='@3.0.0:3.11', type='build') + # 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, when='@3.0.0:3.11.99', type='build') depends_on('silo+mpi', when='+silo') # don't build SAMRAI 3+ with tools with gcc patch('no-tool-build.patch', when='@3.0.0:%gcc') # 2.4.4 needs a lot of patches to fix ADL and performance problems - patch('https://github.com/IBAMR/IBAMR/releases/download/v0.3.0/ibamr-samrai-fixes.patch', + patch('https://github.com/IBAMR/IBAMR/releases/download/v0.3.0/ibamr-samrai-fixes.patch?full_index=1', sha256='1d088b6cca41377747fa0ae8970440c20cb68988bbc34f9032d5a4e6aceede47', when='@2.4.4') diff --git a/var/spack/repos/builtin/packages/scallop/package.py b/var/spack/repos/builtin/packages/scallop/package.py index 31588a88b7363f..8df4e794376262 100644 --- a/var/spack/repos/builtin/packages/scallop/package.py +++ b/var/spack/repos/builtin/packages/scallop/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Scallop(AutotoolsPackage): @@ -16,7 +17,11 @@ class Scallop(AutotoolsPackage): version('0.10.3', sha256='04eb3ab27ed8c7ae38e1780d6b2af16b6a2c01807ffafd59e819d33bfeff58a0') depends_on('clp') - depends_on('boost') + + # 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('htslib@1.5:') def configure_args(self): diff --git a/var/spack/repos/builtin/packages/scantailor/package.py b/var/spack/repos/builtin/packages/scantailor/package.py index 4da336a13ce46e..b56891a28a89ef 100644 --- a/var/spack/repos/builtin/packages/scantailor/package.py +++ b/var/spack/repos/builtin/packages/scantailor/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Scantailor(CMakePackage): @@ -28,4 +29,9 @@ class Scantailor(CMakePackage): depends_on("libpng") depends_on("libtiff") depends_on("boost@1.35:") + + # 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("libxrender") diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index cab88e88719fff..c204a9aa32b101 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -12,6 +12,8 @@ class Scons(PythonPackage): homepage = "https://scons.org" pypi = "scons/scons-3.1.1.tar.gz" + tags = ['build-tools'] + version('3.1.2', sha256='8aaa483c303efeb678e6f7c776c8444a482f8ddc3ad891f8b6cdd35264da9a1f') version('3.1.1', sha256='fd44f8f2a4562e7e5bc8c63c82b01e469e8115805a3e9c2923ee54cdcd6678b3') version('3.1.0', sha256='94e0d0684772d3e6d9368785296716e0ed6ce757270b3ed814e5aa72d3163890') diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index a1960e97a11ab0..82ea5eeff20f4b 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -6,15 +6,20 @@ from spack import * -class Scotch(Package): +class Scotch(CMakePackage): """Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering.""" homepage = "https://gitlab.inria.fr/scotch/scotch" git = "https://gitlab.inria.fr/scotch/scotch.git" - url = "https://gforge.inria.fr/frs/download.php/latestfile/298/scotch_6.0.4.tar.gz" + url = "https://gitlab.inria.fr/scotch/scotch/-/archive/v7.0.1/scotch-v7.0.1.tar.gz" list_url = "https://gforge.inria.fr/frs/?group_id=248" + maintainers = ['pghysels'] + + version('7.0.1', sha256='0618e9bc33c02172ea7351600fce4fccd32fe00b3359c4aabb5e415f17c06fed') + version('6.1.3', sha256='4e54f056199e6c23d46581d448fcfe2285987e5554a0aa527f7931684ef2809e') + version('6.1.2', sha256='9c2c75c75f716914a2bd1c15dffac0e29a2f8069b2df1ad2b6207c984b699450') version('6.1.1', sha256='39052f59ff474a4a69cefc25cf3caf8429400889deba010ee6403ca188f8b311') version('6.1.0', sha256='a3bc3fa3b243fcb52f8d68de4272562a0328afb18a96f535724d284e36730485') version('6.0.10', sha256='fd8b707b8200823312a1571d97d3776ff3dfd3280cfa4b6e38987153cea5dbda') @@ -95,6 +100,7 @@ def libs(self): return scotchlibs + zlibs + @when('@:6') def patch(self): self.configure() @@ -102,6 +108,7 @@ def patch(self): # file that contains all of the configuration variables and their desired # values for the installation. This function writes this file based on # the given installation variants. + @when('@:6') def configure(self): makefile_inc = [] cflags = [ @@ -215,6 +222,7 @@ def configure(self): with open('Makefile.inc', 'w') as fh: fh.write('\n'.join(makefile_inc)) + @when('@:6') def install(self, spec, prefix): targets = ['scotch'] if '+mpi' in self.spec: @@ -262,3 +270,28 @@ def install(self, spec, prefix): install_tree('lib', prefix.lib) install_tree('include', prefix.include) install_tree('man/man1', prefix.share.man.man1) + + @when("@:6") + def cmake(self, spec, prefix): + self.configure() + + @when("@:6") + def build(self, spec, prefix): + pass + + def cmake_args(self): + spec = self.spec + args = [ + self.define_from_variant('BUILD_LIBSCOTCHMETIS', 'metis'), + self.define_from_variant('INSTALL_METIS_HEADERS', 'metis'), + self.define_from_variant('BUILD_LIBESMUMPS', 'esmumps'), + self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), + self.define_from_variant('BUILD_PTSCOTCH', 'mpi') + ] + + # TODO should we enable/disable THREADS? + + if '+int64' in spec: + args.append('-DINTSIZE=64') + + return args diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py index 97ffb4c4c17a69..4438a3e1ddf079 100644 --- a/var/spack/repos/builtin/packages/seacas/package.py +++ b/var/spack/repos/builtin/packages/seacas/package.py @@ -27,6 +27,7 @@ class Seacas(CMakePackage): # ###################### Versions ########################## version('master', branch='master') + version('2022-03-04', sha256='a934a473e1fdfbc8dbb55058358551a02e03a60e5cdbf2b28b8ecd3d9500bfa5') version('2022-01-27', sha256='beff12583814dcaf75cf8f1a78bb183c1dcc8937bc18d5206672e3a692db05e0') version('2021-09-30', sha256='5d061e35e93eb81214da3b67ddda2829cf5efed38a566be6363a9866ba2f9ab3') version('2021-05-12', sha256='92663767f0317018d6f6e422e8c687e49f6f7eb2b92e49e837eb7dc0ca0ac33d') @@ -91,6 +92,7 @@ class Seacas(CMakePackage): depends_on('hdf5+hl~mpi', when='~mpi') depends_on('cgns@4.2.0:+mpi+scoping', when='+cgns +mpi') depends_on('cgns@4.2.0:~mpi+scoping', when='+cgns ~mpi') + depends_on('fmt@8.1.0:', when='@2022-03-04:') with when('+adios2'): depends_on('adios2@master') diff --git a/var/spack/repos/builtin/packages/sensei/package.py b/var/spack/repos/builtin/packages/sensei/package.py index 50ae7fb3b3cf4d..3382c4a0a9be36 100644 --- a/var/spack/repos/builtin/packages/sensei/package.py +++ b/var/spack/repos/builtin/packages/sensei/package.py @@ -19,6 +19,7 @@ class Sensei(CMakePackage): maintainers = ['sshudler', 'kwryankrattiger'] version('develop', branch='develop') + version('3.2.2', sha256='d554b654880e899d97d572f02de87b0202faadaf899420ef871093b5bce320c0') version('3.2.1', sha256='7438fb4b148e4d1eb888c619366d0d8639122ecbbf1767e19549d6ca0c8698ca') version('3.2.0', sha256='fd1a69134d9f8151d85a7f84a67d6a648aef5580585b39f74a56367cff433c82') version('3.1.0', sha256='813075e033904835afa74231a841ab46424d4567157ee7366f3b785357ffc0ea') diff --git a/var/spack/repos/builtin/packages/seqan/package.py b/var/spack/repos/builtin/packages/seqan/package.py index b02481da66cebc..f3054759351c03 100644 --- a/var/spack/repos/builtin/packages/seqan/package.py +++ b/var/spack/repos/builtin/packages/seqan/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Seqan(CMakePackage): @@ -25,6 +26,11 @@ class Seqan(CMakePackage): depends_on('py-nose', type='build') depends_on('py-sphinx', type='build') depends_on('boost', type=('build', 'link')) + + # 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('zlib', type=('build', 'link')) depends_on('bzip2', type=('build', 'link')) diff --git a/var/spack/repos/builtin/packages/serialbox/nag/examples.patch b/var/spack/repos/builtin/packages/serialbox/nag/examples.patch new file mode 100644 index 00000000000000..91857d0d6c769f --- /dev/null +++ b/var/spack/repos/builtin/packages/serialbox/nag/examples.patch @@ -0,0 +1,27 @@ +# This patch is applicable starting version 2.3.1 +--- a/examples/fortran/simple/m_ser.F90 ++++ b/examples/fortran/simple/m_ser.F90 +@@ -38 +38 @@ USE utils_ppser, ONLY: & +- REAL(KIND=8), DIMENSION(:,:,:) :: a ++ REAL(KIND=SELECTED_REAL_KIND(15)), DIMENSION(:,:,:) :: a +@@ -59 +59 @@ USE utils_ppser, ONLY: & +- REAL(KIND=8), DIMENSION(:,:,:) :: a ++ REAL(KIND=SELECTED_REAL_KIND(15)), DIMENSION(:,:,:) :: a +@@ -91,2 +91,2 @@ USE utils_ppser, ONLY: & +- REAL(KIND=8), DIMENSION(:,:,:) :: a +- REAL(KIND=8) :: rprecision ++ REAL(KIND=SELECTED_REAL_KIND(15)), DIMENSION(:,:,:) :: a ++ REAL(KIND=SELECTED_REAL_KIND(15)) :: rprecision +@@ -97 +97 @@ USE utils_ppser, ONLY: & +- prefix_ref='SerialboxTest',rprecision=rprecision,rperturb=1.0e-5_8) ++ prefix_ref='SerialboxTest',rprecision=rprecision,rperturb=REAL(1.0e-5,SELECTED_REAL_KIND(15))) +--- a/examples/fortran/simple/main_consumer.F90 ++++ b/examples/fortran/simple/main_consumer.F90 +@@ -14 +14 @@ PROGRAM main_consumer +- REAL(KIND=8), DIMENSION(5,5,5) :: a ++ REAL(KIND=SELECTED_REAL_KIND(15)), DIMENSION(5,5,5) :: a +--- a/examples/fortran/simple/main_producer.F90 ++++ b/examples/fortran/simple/main_producer.F90 +@@ -14 +14 @@ PROGRAM main_producer +- REAL(KIND=8), DIMENSION(5,5,5) :: a ++ REAL(KIND=SELECTED_REAL_KIND(15)), DIMENSION(5,5,5) :: a diff --git a/var/spack/repos/builtin/packages/serialbox/nag/ftg.patch b/var/spack/repos/builtin/packages/serialbox/nag/ftg.patch new file mode 100644 index 00000000000000..6794227a91bf08 --- /dev/null +++ b/var/spack/repos/builtin/packages/serialbox/nag/ftg.patch @@ -0,0 +1,31 @@ +# This patch is applicable starting version 2.3.1 +--- a/src/serialbox-fortran/m_ser_ftg.f90 ++++ b/src/serialbox-fortran/m_ser_ftg.f90 +@@ -822,5 +822,5 @@ SUBROUTINE ftg_write_logical_1d(fieldname, field, lbounds, ubounds) + CALL ftg_register_only_internal(fieldname, 'bool', fs_boolsize(), lbounds, ubounds) + END IF +- CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', TRIM(ADJUSTL(ftg_loc_hex(C_LOC(field))))) ++ CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', 'N/A') + END IF + +@@ -853,5 +853,5 @@ SUBROUTINE ftg_write_logical_2d(fieldname, field, lbounds, ubounds) + CALL ftg_register_only_internal(fieldname, 'bool', fs_boolsize(), lbounds, ubounds) + END IF +- CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', TRIM(ADJUSTL(ftg_loc_hex(C_LOC(field))))) ++ CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', 'N/A') + END IF + +@@ -886,5 +886,5 @@ SUBROUTINE ftg_write_logical_3d(fieldname, field, lbounds, ubounds) + CALL ftg_register_only_internal(fieldname, 'bool', fs_boolsize(), lbounds, ubounds) + END IF +- CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', TRIM(ADJUSTL(ftg_loc_hex(C_LOC(field))))) ++ CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', 'N/A') + END IF + +@@ -919,5 +919,5 @@ SUBROUTINE ftg_write_logical_4d(fieldname, field, lbounds, ubounds) + CALL ftg_register_only_internal(fieldname, 'bool', fs_boolsize(), lbounds, ubounds) + END IF +- CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', TRIM(ADJUSTL(ftg_loc_hex(C_LOC(field))))) ++ CALL ftg_add_field_metainfo(TRIM(fieldname), 'ftg:loc', 'N/A') + END IF + diff --git a/var/spack/repos/builtin/packages/serialbox/nag/interface.patch b/var/spack/repos/builtin/packages/serialbox/nag/interface.patch new file mode 100644 index 00000000000000..abb79bf39697de --- /dev/null +++ b/var/spack/repos/builtin/packages/serialbox/nag/interface.patch @@ -0,0 +1,9 @@ +# This patch is applicable starting version 2.0.1 +--- a/src/serialbox-fortran/utils_ppser.f90 ++++ b/src/serialbox-fortran/utils_ppser.f90 +@@ -33 +33 @@ MODULE utils_ppser +-USE iso_fortran_env ++USE f90_unix_proc; USE iso_fortran_env +@@ -66 +66 @@ SUBROUTINE ppser_initialize(directory, prefix, mode, prefix_ref, mpi_rank, rprec +- REAL(KIND=8), OPTIONAL, INTENT(IN) :: rprecision, rperturb ++ REAL(KIND=SELECTED_REAL_KIND(15)), OPTIONAL, INTENT(IN) :: rprecision, rperturb diff --git a/var/spack/repos/builtin/packages/serialbox/package.py b/var/spack/repos/builtin/packages/serialbox/package.py new file mode 100644 index 00000000000000..49f57249d3b0ec --- /dev/null +++ b/var/spack/repos/builtin/packages/serialbox/package.py @@ -0,0 +1,183 @@ +# Copyright 2013-2022 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) + + +class Serialbox(CMakePackage): + """Serialbox is a serialization library and tools for C/C++, Python3 and + Fortran. Serialbox is used in several projects for building validation + frameworks against reference runs.""" + + homepage = "https://github.com/GridTools/serialbox" + url = "https://github.com/GridTools/serialbox/archive/v2.6.1.tar.gz" + + maintainers = ['skosukhin'] + + version('2.6.1', sha256='b795ce576e8c4fd137e48e502b07b136079c595c82c660cfa2e284b0ef873342') + version('2.6.0', sha256='9199f8637afbd7f2b3c5ba932d1c63e9e14d553a0cafe6c29107df0e04ee9fae') + version('2.5.4', sha256='f4aee8ef284f58e6847968fe4620e222ac7019d805bbbb26c199e4b6a5094fee') + version('2.5.3', sha256='696499b3f43978238c3bcc8f9de50bce2630c07971c47c9e03af0324652b2d5d') + + variant('c', default=True, description='enable C interface') + variant('python', default=False, description='enable Python interface') + variant('fortran', default=False, description='enable Fortran interface') + variant('ftg', default=False, + description='enable FortranTestGenerator frontend') + variant('sdb', default=False, description='enable stencil debugger') + variant('shared', default=True, description='build shared libraries') + variant('examples', default=False, description='build the examples') + variant('logging', default=True, + description='enable the logging infrastructure') + variant('async-api', default=True, + description='enable the asynchronous API') + variant('netcdf', default=False, + description='build the NetCDF archive backend') + variant('std-filesystem', default=True, + description='use std::experimental::filesystem (no dependency on ' + 'compiled boost libs)') + + depends_on('cmake@3.12:', type='build') + # We might be provided with an external vanilla cmake, and we need one with + # with https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5025 + depends_on('cmake@3.19:', when='%pgi', type='build') + + depends_on('boost@1.54:', type='build') + depends_on('boost+filesystem+system', + when='~std-filesystem', type=('build', 'link')) + + depends_on('netcdf-c', when='+netcdf') + + depends_on('python@3.4:', when='+python', type=('build', 'run')) + depends_on('py-numpy', when='+python', type=('build', 'run')) + + # pp_ser fails to process source files containing Unicode character with + # Python 3 (https://github.com/GridTools/serialbox/pull/249): + patch('ppser_py3.patch', when='@2.2.1:') + + # NAG patches: + patch('nag/interface.patch', when='@2.0.1:%nag+fortran') + patch('nag/examples.patch', when='@2.3.1:%nag+fortran+examples') + patch('nag/ftg.patch', when='@2.3.1:%nag+ftg') + + conflicts('+ftg', when='~fortran', + msg='the FortranTestGenerator frontend requires the Fortran ' + 'interface') + conflicts('+ftg', when='@:2.2.999', + msg='the FortranTestGenerator frontend is supported only ' + 'starting version 2.3.0') + conflicts('+sdb', when='~python', + msg='the stencil debugger requires the Python interface') + conflicts('+fortran', when='~c', + msg='the Fortran interface requires the C interface') + conflicts('+python', when='~c', + msg='the Python interface requires the C interface') + conflicts('+python', when='~shared', + msg='the Python interface requires the shared libraries') + + def patch(self): + # The following is implemented as a method to avoid having two sets of + # almost identical patch files: one with the CR symbols (for versions + # 2.5.x) and one without them (for versions 2.6.x). + + # Remove hard-coded -march=native + # (see https://github.com/GridTools/serialbox/pull/233): + if self.spec.satisfies('@2.0.1:2.6.0'): + filter_file( + r'^(\s*set\(CMAKE_CXX_FLAGS.*-march=native)', + r'#\1', 'CMakeLists.txt') + + # Do not fallback to boost::filesystem: + if '+std-filesystem' in self.spec: + filter_file( + r'(message\()' + r'STATUS( "std::experimental::filesystem not found).*("\))', + r'\1FATAL_ERROR\2\3', 'CMakeLists.txt') + + @property + def libs(self): + query_parameters = self.spec.last_query.extra_parameters + + shared = '+shared' in self.spec + + query2libraries = { + tuple(): ['libSerialboxCore'], + ('c', 'fortran'): [ + 'libSerialboxFortran', + 'libSerialboxC', + 'libSerialboxCore', + ], + ('c',): [ + 'libSerialboxC', + 'libSerialboxCore', + ], + ('fortran',): [ + 'libSerialboxFortran', + 'libSerialboxC', + 'libSerialboxCore' + ] + } + + key = tuple(sorted(query_parameters)) + libraries = query2libraries[key] + + if self.spec.satisfies('@2.5.0:2.5'): + libraries = [ + '{0}{1}'.format(name, 'Shared' if shared else 'Static') + for name in libraries] + + libs = find_libraries( + libraries, root=self.prefix, shared=shared, recursive=True) + + if libs: + return libs + + msg = 'Unable to recursively locate {0} libraries in {1}' + raise spack.error.NoLibrariesError( + msg.format(self.spec.name, self.spec.prefix)) + + def flag_handler(self, name, flags): + cmake_flags = [] + + if name == 'cxxflags': + # Intel (at least up to version 19.0.1, version 19.0.4 works) and + # PGI (at least up to version 19.9, version 20.1.0 works) compilers + # have problems with C++11 name mangling. An attempt to link to + # libSerialboxCore leads to: + # undefined reference to + # `std::experimental::filesystem::v1::__cxx11::path:: + # _M_find_extension[abi:cxx11]() const' + if any(self.spec.satisfies('{0}+std-filesystem'.format(x)) + for x in ['%intel@:19.0.1', '%pgi@:19.9']): + cmake_flags.append('-D_GLIBCXX_USE_CXX11_ABI=0') + + return flags, None, (cmake_flags or None) + + def cmake_args(self): + args = [ + '-DBOOST_ROOT:PATH=%s' % self.spec['boost'].prefix, + # https://cmake.org/cmake/help/v3.15/module/FindBoost.html#boost-cmake + self.define('Boost_NO_BOOST_CMAKE', True), + self.define_from_variant('SERIALBOX_ENABLE_C', 'c'), + self.define_from_variant('SERIALBOX_ENABLE_PYTHON', 'python'), + self.define_from_variant('SERIALBOX_ENABLE_FORTRAN', 'fortran'), + self.define_from_variant('SERIALBOX_ENABLE_FTG', 'ftg'), + self.define_from_variant('SERIALBOX_ENABLE_SDB', 'sdb'), + self.define_from_variant('SERIALBOX_BUILD_SHARED', 'shared'), + self.define_from_variant('SERIALBOX_EXAMPLES', 'examples'), + self.define_from_variant('SERIALBOX_LOGGING', 'logging'), + self.define_from_variant('SERIALBOX_ASYNC_API', 'async-api'), + # CMake scripts of Serialbox (at least up to version 2.6.0) are + # broken and do not instruct the compiler to link to the OpenSSL + # libraries: + self.define('SERIALBOX_USE_OPENSSL', False), + self.define_from_variant('SERIALBOX_ENABLE_EXPERIMENTAL_FILESYSTEM', + 'std-filesystem'), + self.define_from_variant('SERIALBOX_USE_NETCDF', 'netcdf'), + self.define('SERIALBOX_TESTING', self.run_tests), + ] + + if '+netcdf' in self.spec: + args.append('-DNETCDF_ROOT:PATH=%s' % self.spec['netcdf-c'].prefix) + + return args diff --git a/var/spack/repos/builtin/packages/serialbox/ppser_py3.patch b/var/spack/repos/builtin/packages/serialbox/ppser_py3.patch new file mode 100644 index 00000000000000..1a15de7274b2cc --- /dev/null +++ b/var/spack/repos/builtin/packages/serialbox/ppser_py3.patch @@ -0,0 +1,23 @@ +# This patch is applicable starting version 2.2.1 +--- a/src/serialbox-python/pp_ser/pp_ser.py ++++ b/src/serialbox-python/pp_ser/pp_ser.py +@@ -51 +51 @@ __email__ = 'oliver.fuhrer@meteoswiss.ch' +-def to_ascii(text): ++def open23(name, mode='r'): +@@ -53 +53,9 @@ def to_ascii(text): +- return bytes(text, 'ascii') ++ return open(name, mode, ++ encoding=(None if 'b' in mode else 'UTF-8')) ++ else: ++ return open(name, mode) ++ ++ ++def bytes23(text): ++ if sys.version_info[0] == 3: ++ return bytes(text, 'UTF-8') +@@ -815 +823 @@ class PpSer: +- input_file = open(os.path.join(self.infile), 'r') ++ input_file = open23(os.path.join(self.infile), 'r') +@@ -860 +868 @@ class PpSer: +- output_file.write(to_ascii(self.__outputBuffer)) ++ output_file.write(bytes23(self.__outputBuffer)) diff --git a/var/spack/repos/builtin/packages/sfcgal/package.py b/var/spack/repos/builtin/packages/sfcgal/package.py index 0bc6e498fc6a53..852fd8a18013da 100644 --- a/var/spack/repos/builtin/packages/sfcgal/package.py +++ b/var/spack/repos/builtin/packages/sfcgal/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Sfcgal(CMakePackage): @@ -24,6 +25,11 @@ class Sfcgal(CMakePackage): # Ref: https://oslandia.github.io/SFCGAL/installation.html, but starts to work @4.7: depends_on('cgal@4.7: +core') depends_on('boost@1.54.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('mpfr@2.2.1:') depends_on('gmp@4.2:') diff --git a/var/spack/repos/builtin/packages/sfcio/package.py b/var/spack/repos/builtin/packages/sfcio/package.py index 0b0e3d67ad7087..30ab34259b7d9d 100644 --- a/var/spack/repos/builtin/packages/sfcio/package.py +++ b/var/spack/repos/builtin/packages/sfcio/package.py @@ -25,3 +25,9 @@ def setup_run_environment(self, env): for suffix in ('4', ''): env.set('SFCIO_LIB' + suffix, lib[0]) env.set('SFCIO_INC' + suffix, join_path(self.prefix, 'include')) + + def flag_handler(self, name, flags): + if self.spec.satisfies('%fj'): + if name == 'fflags': + flags.append('-Free') + return (None, None, flags) diff --git a/var/spack/repos/builtin/packages/sgpp/package.py b/var/spack/repos/builtin/packages/sgpp/package.py index 4a4084ef143788..69a9df58425868 100644 --- a/var/spack/repos/builtin/packages/sgpp/package.py +++ b/var/spack/repos/builtin/packages/sgpp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Sgpp(SConsPackage): @@ -101,6 +102,11 @@ class Sgpp(SConsPackage): # Testing requires boost test depends_on('boost+test', type=('test')) + # 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, type=('test')) + # Compiler with C++11 support is required conflicts('%gcc@:4.8.4', msg='Compiler with c++11 support is required!') conflicts('%apple-clang@:3.9', msg='Compiler with c++11 support is required!') diff --git a/var/spack/repos/builtin/packages/shapeit4/package.py b/var/spack/repos/builtin/packages/shapeit4/package.py index 0ff65b1e6eeba7..8d0dbc608b610f 100644 --- a/var/spack/repos/builtin/packages/shapeit4/package.py +++ b/var/spack/repos/builtin/packages/shapeit4/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Shapeit4(MakefilePackage): @@ -18,7 +19,11 @@ class Shapeit4(MakefilePackage): maintainers = ['ilbiondo'] depends_on('htslib') - depends_on('boost') + + # 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('bzip2') depends_on('xz') diff --git a/var/spack/repos/builtin/packages/shark/package.py b/var/spack/repos/builtin/packages/shark/package.py index cd743dee1512df..112358e1202b74 100644 --- a/var/spack/repos/builtin/packages/shark/package.py +++ b/var/spack/repos/builtin/packages/shark/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Shark(CMakePackage): @@ -17,7 +18,10 @@ class Shark(CMakePackage): version('4.0.0', sha256='19d4099776327d5f8a2e2be286818c6081c61eb13ca279c1e438c86e70d90210') version('3.1.4', sha256='160c35ddeae3f6aeac3ce132ea4ba2611ece39eee347de2faa3ca52639dc6311') - depends_on('boost') + # 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) def cmake_args(self): args = ["-DBoost_USE_STATIC_LIBS=ON", "-DBOOST_ROOT={0}".format( diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py index 4a18ba430a346f..5e12fb9e82fc28 100644 --- a/var/spack/repos/builtin/packages/sherpa/package.py +++ b/var/spack/repos/builtin/packages/sherpa/package.py @@ -21,24 +21,24 @@ class Sherpa(AutotoolsPackage): maintainers = ['wdconinc', 'vvolkl'] version('2.2.12', sha256='4ba78098e45aaac0bc303d1b5abdc15809f30b407abf9457d99b55e63384c83d') version('2.2.11', sha256='5e12761988b41429f1d104f84fdf352775d233cde7a165eb64e14dcc20c3e1bd') - version('2.2.10', sha256='ae23bc8fdcc9f8c26becc41692822233b62203cd72a7e0dab2ca19316aa0aad7') - version('2.2.9', sha256='ebc836d42269a0c4049d3fc439a983d19d12595d9a06db2d18765bd1e301923e') - version('2.2.8', sha256='ff198cbae5de445e6fe383151021ef24b1628dffc0da6bf3737753f6672a0091') - version('2.0.0', sha256='0e873b27bb1be46ca5ed451d1b8514ca84c10221057b11be5952180076e6f848') - version('1.3.1', sha256='31881207838d341358db64e3fdadfeee1ea2f6d1cb42f370014f622f579159ae') - version('1.3.0', sha256='08b13c65b66f2edde6996d2a06762a12a0682ffb64bca43654df47321e5039a0') - version('1.2.3', sha256='029727337a430d6675a1a12dce3ced0411041e79ddaf4ce3b9466035cf6c8804') - version('1.2.2', sha256='6e7b5ea80b99f1378519009e494030d6cf4c4491f91218d749eabb8ffaad9ac1') - version('1.2.1', sha256='838462f4a1e8768135363aa6b8532fd8f5e5789a269b858f8e3728ab37f6a1d1') - version('1.2.0', sha256='509508fd0ad72aaf55ab484da8b6bc0b31688c955adcda62a3e8f94689cebf99') - version('1.1.3', sha256='6335e5eb1fc304e9618496d3ddb198b3591e57b27db6e876af8fd649a8b98c93') - version('1.1.2', sha256='e1689cad6700dc013af0afb0d33729ac2b5e9841d2f325c85b10d773e7f8a80e') - version('1.1.1', sha256='b80e1d75934be79b73400d2c95d96e88651626ea29ddcb9d8fde9c1812039e29') - version('1.1.0', sha256='8052d137d668353dc710f8691b921e772820d39e20361f0d616ee2da1ac798f2') - version('1.0.9', sha256='fe28db91ea8264364395c7e5efeeae3e5c01ea1343e0db7fe13924c6f17fb963') - version('1.0.8', sha256='6e346bafd13b5b05ad566a73759da6d5e64d65c5036780cc4911d93277e891fa') - version('1.0.7', sha256='d1eeefd96c6822ea8eb926447ca91ec4a1c714e4746323e92b1e17764e51ff0b') - version('1.0.6', sha256='358d417ec3afde24618c222bc9b742bc5102d435622b3cd6f2e3f72d03656255') + version('2.2.10', sha256='ae23bc8fdcc9f8c26becc41692822233b62203cd72a7e0dab2ca19316aa0aad7', deprecated=True) + version('2.2.9', sha256='ebc836d42269a0c4049d3fc439a983d19d12595d9a06db2d18765bd1e301923e', deprecated=True) + version('2.2.8', sha256='ff198cbae5de445e6fe383151021ef24b1628dffc0da6bf3737753f6672a0091', deprecated=True) + version('2.0.0', sha256='0e873b27bb1be46ca5ed451d1b8514ca84c10221057b11be5952180076e6f848', deprecated=True) + version('1.3.1', sha256='31881207838d341358db64e3fdadfeee1ea2f6d1cb42f370014f622f579159ae', deprecated=True) + version('1.3.0', sha256='08b13c65b66f2edde6996d2a06762a12a0682ffb64bca43654df47321e5039a0', deprecated=True) + version('1.2.3', sha256='029727337a430d6675a1a12dce3ced0411041e79ddaf4ce3b9466035cf6c8804', deprecated=True) + version('1.2.2', sha256='6e7b5ea80b99f1378519009e494030d6cf4c4491f91218d749eabb8ffaad9ac1', deprecated=True) + version('1.2.1', sha256='838462f4a1e8768135363aa6b8532fd8f5e5789a269b858f8e3728ab37f6a1d1', deprecated=True) + version('1.2.0', sha256='509508fd0ad72aaf55ab484da8b6bc0b31688c955adcda62a3e8f94689cebf99', deprecated=True) + version('1.1.3', sha256='6335e5eb1fc304e9618496d3ddb198b3591e57b27db6e876af8fd649a8b98c93', deprecated=True) + version('1.1.2', sha256='e1689cad6700dc013af0afb0d33729ac2b5e9841d2f325c85b10d773e7f8a80e', deprecated=True) + version('1.1.1', sha256='b80e1d75934be79b73400d2c95d96e88651626ea29ddcb9d8fde9c1812039e29', deprecated=True) + version('1.1.0', sha256='8052d137d668353dc710f8691b921e772820d39e20361f0d616ee2da1ac798f2', deprecated=True) + version('1.0.9', sha256='fe28db91ea8264364395c7e5efeeae3e5c01ea1343e0db7fe13924c6f17fb963', deprecated=True) + version('1.0.8', sha256='6e346bafd13b5b05ad566a73759da6d5e64d65c5036780cc4911d93277e891fa', deprecated=True) + version('1.0.7', sha256='d1eeefd96c6822ea8eb926447ca91ec4a1c714e4746323e92b1e17764e51ff0b', deprecated=True) + version('1.0.6', sha256='358d417ec3afde24618c222bc9b742bc5102d435622b3cd6f2e3f72d03656255', deprecated=True) _cxxstd_values = ('11', '14', '17') variant('cxxstd', default='11', values=_cxxstd_values, multi=False, @@ -59,6 +59,13 @@ class Sherpa(AutotoolsPackage): variant('lhapdf', default=True, description='Enable LHAPDF support') variant('gzip', default=False, description='Enable gzip support') variant('pythia', default=True, description='Enable fragmentation/decay interface to Pythia') + variant('blackhat', default=False, description='Enable BLACKHAT support') + variant('ufo', default=False, description='Enable UFO support') + # cernlib not yet in spack + variant('hztool', default=False, description='Enable HZTOOL support') + # variant('cernlib', default=False, description='Enable CERNLIB support') + + variant('cms', default=False, description="Append CXXFLAGS used by CMS experiment") # Note that the delphes integration seems utterly broken: https://sherpa.hepforge.org/trac/ticket/305 @@ -83,6 +90,9 @@ class Sherpa(AutotoolsPackage): depends_on('lhapdf', when='+lhapdf') depends_on('gzip', when='+gzip') depends_on('pythia6', when='+pythia') + depends_on('blackhat', when='+blackhat') + depends_on('hztool', when='+hztool') + # depends_on('cernlib', when='+cernlib') for std in _cxxstd_values: depends_on('root cxxstd=' + std, when='+root cxxstd=' + std) @@ -100,30 +110,52 @@ def configure_args(self): args.append('--enable-hepevtsize=200000') args.append('--with-sqlite3=' + self.spec['sqlite'].prefix) args.extend(self.enable_or_disable('mpi')) - if self.spec.satisfies('+python'): - args.append('--enable-pyext') + args.extend(self.enable_or_disable('pyext', variant='python')) args.extend(self.enable_or_disable('analysis')) args.extend(self.enable_or_disable('lhole')) args.extend(self.enable_or_disable('gzip')) args.extend(self.enable_or_disable('pythia')) - if self.spec.satisfies('+hepmc2'): - args.append('--enable-hepmc2=' + self.spec['hepmc'].prefix) - if self.spec.satisfies('+hepmc3'): - args.append('--enable-hepmc3=' + self.spec['hepmc3'].prefix) - if self.spec.satisfies('+rivet'): - args.append('--enable-rivet=' + self.spec['rivet'].prefix) - if self.spec.satisfies('+fastjet'): - args.append('--enable-fastjet=' + self.spec['fastjet'].prefix) - if self.spec.satisfies('+openloops'): - args.append('--enable-openloops=' + self.spec['openloops'].prefix) - if self.spec.satisfies('+recola'): - args.append('--enable-recola=' + self.spec['recola'].prefix) - if self.spec.satisfies('+root'): - args.append('--enable-root=' + self.spec['root'].prefix) - if self.spec.satisfies('+lhapdf'): - args.append('--enable-lhapdf=' + self.spec['lhapdf'].prefix) - if self.spec.satisfies('+hztool'): - args.append('--enable-hztool=' + self.spec['hztool'].prefix) - if self.spec.satisfies('+cernlib'): - args.append('--enable-cernlib=' + self.spec['cernlib'].prefix) + hepmc_root = lambda x: self.spec['hepmc'].prefix + args.extend(self.enable_or_disable('hepmc2', activation_value=hepmc_root)) + if self.spec.satisfies('@2.2.13:'): + args.extend(self.enable_or_disable('hepmc3', activation_value='prefix')) + args.extend(self.enable_or_disable('rivet', activation_value='prefix')) + args.extend(self.enable_or_disable('lhapdf', activation_value='prefix')) + else: + # See https://gitlab.com/sherpa-team/sherpa/-/issues/348 + if self.spec.satisfies('+hepmc3'): + args.append('--enable-hepmc3=' + self.spec['hepmc3'].prefix) + if self.spec.satisfies('+rivet'): + args.append('--enable-rivet=' + self.spec['rivet'].prefix) + if self.spec.satisfies('+lhapdf'): + args.append('--enable-lhapdf=' + self.spec['lhapdf'].prefix) + + args.extend(self.enable_or_disable('fastjet', activation_value='prefix')) + args.extend(self.enable_or_disable('openloops', activation_value='prefix')) + args.extend(self.enable_or_disable('recola', activation_value='prefix')) + args.extend(self.enable_or_disable('root', activation_value='prefix')) + + args.extend(self.enable_or_disable('hztool', activation_value='prefix')) + # args.extend(self.enable_or_disable('cernlib', activation_value='prefix')) + args.extend(self.enable_or_disable('blackhat', activation_value='prefix')) + args.extend(self.enable_or_disable('ufo')) + + if self.spec.satisfies('+mpi'): + args.append('CC=' + self.spec['mpi'].mpicc) + args.append('MPICXX=' + self.spec['mpi'].mpicxx) + args.append('CXX=' + self.spec['mpi'].mpicxx) + args.append('FC=' + self.spec['mpi'].mpifc) + return args + + def flag_handler(self, name, flags): + flags = list(flags) + if name == 'cxxflags': + flags.append('-std=c++' + self.spec.variants['cxxstd'].value) + + if '+cms' in self.spec: + flags.extend(['-fuse-cxa-atexit', '-O2']) + if self.spec.target.family == 'x86_64': + flags.append('-m64') + + return (None, None, flags) diff --git a/var/spack/repos/builtin/packages/sigcpp/package.py b/var/spack/repos/builtin/packages/sigcpp/package.py new file mode 100644 index 00000000000000..2d2357d26bc85d --- /dev/null +++ b/var/spack/repos/builtin/packages/sigcpp/package.py @@ -0,0 +1,33 @@ +# Copyright 2013-2022 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 shutil + +from spack import * + + +class Sigcpp(CMakePackage): + """libsigc++ : The Typesafe Callback Framework for C++""" + + homepage = "https://libsigcplusplus.github.io/libsigcplusplus/" + url = "https://github.com/libsigcplusplus/libsigcplusplus/archive/refs/tags/3.0.7.tar.gz" + + version('3.2.0', sha256='f9c36331b5d5ac7a1651477288f47eec51394c03ade8bb1a05d1c46eac5f77e7') + version('3.0.7', sha256='063b6ab86e4d8703ea65d894d78e8482b1fc34b92be8849f82ce1c5b05cf2b8d') + + variant('doc', default=True, description='Keep man files') + + @run_after('install') + def drop_doc(self): + if self.spec.satisfies('~doc'): + shutil.rmtree(prefix.share) + + @run_after('install') + def fix_include(self): + source = join_path(self.spec.prefix, 'lib', 'sigc++-3.0', + 'include', 'sigc++config.h') + target = join_path(self.spec.prefix, 'include', + 'sigc++-3.0', 'sigc++config.h') + shutil.copy(source, target) diff --git a/var/spack/repos/builtin/packages/sigio/package.py b/var/spack/repos/builtin/packages/sigio/package.py index 7df490cfcbbd89..90b39a3fe925ea 100644 --- a/var/spack/repos/builtin/packages/sigio/package.py +++ b/var/spack/repos/builtin/packages/sigio/package.py @@ -25,3 +25,9 @@ def setup_run_environment(self, env): for suffix in ('4', ''): env.set('SIGIO_LIB' + suffix, lib[0]) env.set('SIGIO_INC' + suffix, join_path(self.prefix, 'include')) + + def flag_handler(self, name, flags): + if self.spec.satisfies('%fj'): + if name == 'fflags': + flags.append('-Free') + return (None, None, flags) diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index fe0f4b5b8f5071..2a2f49081995a3 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -33,7 +33,7 @@ class Silo(AutotoolsPackage): variant('mpi', default=True, description='Compile with MPI Compatibility') variant('hdf5', default=True, - description='Use the HDF5 for database') + description='Support HDF5 for database I/O') variant('hzip', default=True, description='Enable hzip support') variant('fpzip', default=True, @@ -45,6 +45,7 @@ class Silo(AutotoolsPackage): depends_on('libtool', type='build', when='+shared') depends_on('mpi', when='+mpi') depends_on('hdf5', when='+hdf5') + depends_on('hdf5 api=v110', when='@:4.10 +hdf5 ^hdf5@1.12:') depends_on('qt+gui~framework@4.8:4.9', when='+silex') depends_on('libx11', when='+silex') # Xmu dependency is required on Ubuntu 18-20 @@ -55,11 +56,12 @@ class Silo(AutotoolsPackage): patch('remove-mpiposix.patch', when='@4.8:4.10.2') patch('H5FD_class_t-terminate.patch', when='@:4.10.2 ^hdf5@1.10.0:') # H5EPR_SEMI_COLON.patch should be applied only to silo@4.11 when building - # with hdf5@1.10.8 or later 1.10 or with hdf5@1.12.1 or later 1.12 - patch('H5EPR_SEMI_COLON.patch', when='@:4.11 ^hdf5@1.10.8:1.10,1.12.1:1.12') + # with hdf5@1.10.8 or later 1.10 or with hdf5@1.12.1 or later + patch('H5EPR_SEMI_COLON.patch', when='@:4.11 ^hdf5@1.10.8:1.10,1.12.1:') - conflicts('hdf5@1.10.8:', when="@:4.10.2") - conflicts('hdf5@1.13.0:', when="@:4.11") + conflicts('^hdf5 api=v18', when="@4.11: +hdf5") + conflicts('^hdf5 api=v112', when="@:4.10 +hdf5") + conflicts('^hdf5@1.13:', when="+hdf5") conflicts('+hzip', when="@4.11-bsd") conflicts('+fpzip', when="@4.11-bsd") conflicts('+hzip', when="@4.10.2-bsd") @@ -100,7 +102,7 @@ def clang_9_patch(self): # hasn't yet made it into silo. # https://github.com/LLNL/fpzip/blob/master/src/pcmap.h - if self.spec.satisfies('@4.10.2-bsd'): + if str(self.spec.version).endswith('-bsd'): # The files below don't exist in the BSD licenced version return diff --git a/var/spack/repos/builtin/packages/simgrid/package.py b/var/spack/repos/builtin/packages/simgrid/package.py index 9f671037267185..3e74f838195824 100644 --- a/var/spack/repos/builtin/packages/simgrid/package.py +++ b/var/spack/repos/builtin/packages/simgrid/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Simgrid(CMakePackage): @@ -70,7 +71,11 @@ class Simgrid(CMakePackage): variant('mc', default=False, description='Model checker') # does not build correctly with some old compilers -> rely on packages - depends_on('boost') + + # 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, when='@:3.21') depends_on('boost@:1.69.0', when='@:3.21') conflicts('%gcc@10:', when='@:3.23', diff --git a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py index 9b7fd57c6e05b3..3756ff4c8ecce1 100644 --- a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py +++ b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py @@ -10,6 +10,44 @@ def simmodsuite_releases(): releases = [ + { + 'version': '16.0-220312', + 'components': { + 'msparalleladapt': ['cc6d6ecba8183f3444e55977af879b297977ff94dd7f6197028110f7e24ea60b', 'paralleladapt'], + 'msadapt': ['ec4a985f9b29914411d299fecfb1a994224070480be5de5f701d9968ba9da9e5', 'base'], + 'opencascade': ['008e7232ee3531b70143129e5a664f7db0e232bad9d11d693d725d39986a8aa4', 'opencascade'], + 'gmvoxel': ['4a74c54c31e9eb93f9a0c09ef3ac88f365efb19666240374aa6d1142db993a2c', 'voxel'], + 'msadv': ['d33b591147152383130cc2190f1bd7726cb9ea3590468691db3be5815802d888', 'adv'], + 'pskrnl': ['e154c22c01ecab2e041cf5d87fcb23eab074449dae7f677f17e7863b6da70fdc', 'parasolid'], + 'gmcore': ['d9ed89d07d83f2c23eca6a27fd9000fd4c8eeefa70ac860aa28a40000a6ec93e', 'base'], + 'psint': ['5c236e429f28a36a36cb09ec3f4778dc7b6e72447014b684792eea733bb21fd5', 'parasolid'], + 'msparallelmesh': ['a791f4464da54faafdc63dbcaf3d326ffc49c9ea8d53e36cc57c15607cf72db9', 'parallelmesh'], + 'mscore': ['48e367e476a03a9fa5389830a6c60824b5d620d04d87392e423a33a331ba3595', 'base'], + 'fdcore': ['022de14021434d90daee8ea1200c024d98a7eb01bb9cb5a06a3b2f7ffee9c0a1', 'base'], + 'gmadv': ['6232ec08ef5cff4269d066b035490f33c199fb545355836ef1536b1a00179b2c', 'advmodel'], + 'gmabstract': ['08a6c7423ed59361c5330dbe00b8914d1d55160de73002e7e552c45c8316f37a', 'abstract'], + 'discrete': ['f5ae00688cf202e75686955185d95952e7b581b414dd52bfef0d917e5959ab22', 'discrete'], + 'aciskrnl': ['c2c7b0c495d47a5662765f1b0c6f52863032e63384d85241e6313c4b773e9ed2', 'acis'], + }, + 'docs': { + 'GeomSimParasolid': ['3420fcc1ac67cff8f46b79553cfe478f34676b9b0cd1fa913255b48cbdfd6ad4', 'parasolid'], + 'GeomSimAcis': ['77b31bfb368f1e7981b3a81087e4e287c560e0a0cd08920b36dc81fea25bcdfa', 'acis'], + 'MeshSimAdvanced': ['abeeb0cb10cf3074295a880412e0568b653f2784b1de19f0f8ede5eec536a8bd', 'adv'], + 'GeomSim': ['b1e762111eb8025b966b0aca4bef3768325d9f1c1e3c72a1246b59539e444eb2', 'base'], + 'GeomSimVoxel': ['bc43f931670657a2cae79f9a2a02048b511fa6e405f15e583631e9f6888e7000', 'voxel'], + 'ParallelMeshSimAdapt': ['dd3a0fd6b889dadb45f9a894f684353fffa25bf15be60ae8e09d0c035045e192', 'paralleladapt'], + 'GeomSimAdvanced': ['3e971ae069baf94b38794318f97f16dc25cf50f6a81413903fbe17407cbd73b3', 'advmodel'], + 'GeomSimGranite': ['e438c19bb94a182068bf327988bd1ff9c1e391876cd9b7c74760b98cbfd08763', 'granite'], + 'FieldSim': ['5ede572cbb7539921482390e5890daa92399a5f1ee68a98d3241a7d062667d9d', 'base'], + 'MeshSimAdapt': ['c4be287da651c68e246034b28e141143d83fc3986fd680174a0d6de7b1cc35ab', 'base'], + 'GeomSimOpenCascade': ['34a8d628d07ab66159d6151276e93fdabfcc92a370f5927b66a71d3a8545652c', 'opencascade'], + 'GeomSimDiscrete': ['d2b11367334401ec57390a658715e91bbf3e3a0e8521fab1ad5d3f7c215b2921', 'discrete'], + 'GeomSimAbstract': ['601b0179b65a385a39d241a9a4e3074e4f834c817e836bea07516015c769e666', 'abstract'], + 'GeomSimDiscreteModeling': ['619b8254d8e3bcc94e84551e997b577dd9325131d084c3b3693ab665b7e4213b', 'discrete'], + 'ParallelMeshSim': ['5b74b9b5f9290111366e341c12d4777635e375523d42cb0a2b24aa1bfa8ab8c4', 'parallelmesh'], + 'MeshSim': ['2f1944e1853a550cc474201790555212e4b7a21d3675715de416718a789ccae2', 'base'], + } + }, { 'version': '16.0-210623', 'components': { @@ -188,6 +226,7 @@ class SimmetrixSimmodsuite(Package): variant('discrete', default=False, description='enable discrete modeling') variant('acis', default=False, description='enable acis modeling') variant('parasolid', default=False, description='enable parasolid modeling') + variant('opencascade', default=False, when='@16.0-220312:', description='enable opencascade modeling') variant('granite', default=False, description='enable granite modeling') variant('import', default=False, description='enable import modeling') variant('adv', default=False, description='enable advanced meshing') diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py index 764cc3f022fe94..5097e3f096d3b8 100644 --- a/var/spack/repos/builtin/packages/sirius/package.py +++ b/var/spack/repos/builtin/packages/sirius/package.py @@ -29,26 +29,26 @@ class Sirius(CMakePackage, CudaPackage): version('7.2.3', sha256='6c10f0e87e50fcc7cdb4d1b2d35e91dba6144de8f111e36c7d08912e5942a906') version('7.2.1', sha256='01bf6c9893ff471473e13351ca7fdc2ed6c1f4b1bb7afa151909ea7cd6fa0de7') version('7.2.0', sha256='537800459db8a7553d7aa251c19f3a31f911930194b068bc5bca2dfb2c9b71db') - version('7.0.2', sha256='ee613607ce3be0b2c3f69b560b2415ce1b0e015179002aa90739430dbfaa0389') - version('7.0.1', sha256='cca11433f86e7f4921f7956d6589f27bf0fd5539f3e8f96e66a3a6f274888595') - version('7.0.0', sha256='da783df11e7b65668e29ba8d55c8a6827e2216ad6d88040f84f42ac20fd1bb99') - version('6.5.7', sha256='d886c3066163c43666ebac2ea50351df03907b5686671e514a75f131ba51b43c') - version('6.5.6', sha256='c8120100bde4477545eae489ea7f9140d264a3f88696ec92728616d78f214cae') - version('6.5.5', sha256='0b23d3a8512682eea67aec57271031c65f465b61853a165015b38f7477651dd1') - version('6.5.4', sha256='5f731926b882a567d117afa5e0ed33291f1db887fce52f371ba51f014209b85d') - version('6.5.3', sha256='eae0c303f332425a8c792d4455dca62557931b28a5df8b4c242652d5ffddd580') - version('6.5.2', sha256='c18adc45b069ebae03f94eeeeed031ee99b3d8171fa6ee73c7c6fb1e42397fe7') - version('6.5.1', sha256='599dd0fa25a4e83db2a359257a125e855d4259188cf5b0065b8e7e66378eacf3') - version('6.5.0', sha256='5544f3abbb71dcd6aa08d18aceaf53c38373de4cbd0c3af44fbb39c20cfeb7cc') - version('6.4.4', sha256='1c5de9565781847658c3cc11edcb404e6e6d1c5a9dfc81e977de7a9a7a162c8a') - version('6.4.3', sha256='4d1effeadb84b3e1efd7d9ac88018ef567aa2e0aa72e1112f0abf2e493e2a189') - version('6.4.2', sha256='40b9b66deebb6538fc0f4cd802554d0d763ea6426b9b2f0e8db8dc617e494479') - version('6.4.1', sha256='86f25c71517952a63e92e0a9bcf66d27e4afb2b0d67cf84af480f116b8e7f53c') - version('6.4.0', sha256='bc61758b71dd2996e2ff515b8c3560b2c69c00931cb2811a163a31bcfea4436e') - version('6.3.4', sha256='8839e988b4bb6ef99b6180f7fba03a5537e31fce51bb3e4c2298b513d6a07e0a') - version('6.3.3', sha256='7ba30a4e5c9a545433251211454ec0d59b74ba8941346057bc7de11e7f6886f7') - version('6.3.2', sha256='1723e5ad338dad9a816369a6957101b2cae7214425406b12e8712c82447a7ee5') - version('6.1.5', sha256='379f0a2e5208fd6d91c2bd4939c3a5c40002975fb97652946fa1bfe4a3ef97cb') + version('7.0.2', sha256='ee613607ce3be0b2c3f69b560b2415ce1b0e015179002aa90739430dbfaa0389', deprecated=True) + version('7.0.1', sha256='cca11433f86e7f4921f7956d6589f27bf0fd5539f3e8f96e66a3a6f274888595', deprecated=True) + version('7.0.0', sha256='da783df11e7b65668e29ba8d55c8a6827e2216ad6d88040f84f42ac20fd1bb99', deprecated=True) + version('6.5.7', sha256='d886c3066163c43666ebac2ea50351df03907b5686671e514a75f131ba51b43c', deprecated=True) + version('6.5.6', sha256='c8120100bde4477545eae489ea7f9140d264a3f88696ec92728616d78f214cae', deprecated=True) + version('6.5.5', sha256='0b23d3a8512682eea67aec57271031c65f465b61853a165015b38f7477651dd1', deprecated=True) + version('6.5.4', sha256='5f731926b882a567d117afa5e0ed33291f1db887fce52f371ba51f014209b85d', deprecated=True) + version('6.5.3', sha256='eae0c303f332425a8c792d4455dca62557931b28a5df8b4c242652d5ffddd580', deprecated=True) + version('6.5.2', sha256='c18adc45b069ebae03f94eeeeed031ee99b3d8171fa6ee73c7c6fb1e42397fe7', deprecated=True) + version('6.5.1', sha256='599dd0fa25a4e83db2a359257a125e855d4259188cf5b0065b8e7e66378eacf3', deprecated=True) + version('6.5.0', sha256='5544f3abbb71dcd6aa08d18aceaf53c38373de4cbd0c3af44fbb39c20cfeb7cc', deprecated=True) + version('6.4.4', sha256='1c5de9565781847658c3cc11edcb404e6e6d1c5a9dfc81e977de7a9a7a162c8a', deprecated=True) + version('6.4.3', sha256='4d1effeadb84b3e1efd7d9ac88018ef567aa2e0aa72e1112f0abf2e493e2a189', deprecated=True) + version('6.4.2', sha256='40b9b66deebb6538fc0f4cd802554d0d763ea6426b9b2f0e8db8dc617e494479', deprecated=True) + version('6.4.1', sha256='86f25c71517952a63e92e0a9bcf66d27e4afb2b0d67cf84af480f116b8e7f53c', deprecated=True) + version('6.4.0', sha256='bc61758b71dd2996e2ff515b8c3560b2c69c00931cb2811a163a31bcfea4436e', deprecated=True) + version('6.3.4', sha256='8839e988b4bb6ef99b6180f7fba03a5537e31fce51bb3e4c2298b513d6a07e0a', deprecated=True) + version('6.3.3', sha256='7ba30a4e5c9a545433251211454ec0d59b74ba8941346057bc7de11e7f6886f7', deprecated=True) + version('6.3.2', sha256='1723e5ad338dad9a816369a6957101b2cae7214425406b12e8712c82447a7ee5', deprecated=True) + version('6.1.5', sha256='379f0a2e5208fd6d91c2bd4939c3a5c40002975fb97652946fa1bfe4a3ef97cb', deprecated=True) amdgpu_targets = ( 'gfx701', 'gfx801', 'gfx802', 'gfx803', @@ -80,7 +80,6 @@ class Sirius(CMakePackage, CudaPackage): variant('single_precision', default=False, description="Use single precision arithmetics") variant('profiler', default=True, description="Use internal profiler to measure execution time") - depends_on('python', type=('build', 'run')) depends_on('mpi') depends_on('gsl') depends_on('lapack') @@ -90,6 +89,10 @@ class Sirius(CMakePackage, CudaPackage): depends_on('spglib') depends_on('hdf5+hl') depends_on('pkgconfig', type='build') + + # Python module + depends_on('python', when='+python', type=('build', 'run')) + depends_on('python', when='@:6', type=('build', 'run')) depends_on('py-numpy', when='+python', type=('build', 'run')) depends_on('py-scipy', when='+python', type=('build', 'run')) depends_on('py-h5py', when='+python', type=('build', 'run')) @@ -98,6 +101,8 @@ class Sirius(CMakePackage, CudaPackage): depends_on('py-mpi4py', when='+python', type=('build', 'run')) depends_on('py-voluptuous', when='+python', type=('build', 'run')) depends_on('py-pybind11', when='+python', type=('build', 'run')) + extends('python', when='+python') + depends_on('magma', when='+magma') depends_on('boost cxxstd=14 +filesystem', when='+boost_filesystem') @@ -126,8 +131,6 @@ class Sirius(CMakePackage, CudaPackage): # FindHIP cmake script only works for < 4.1 depends_on('hip@:4.0', when='@:7.2.0 +rocm') - extends('python', when='+python') - conflicts('+shared', when='@6.3.0:6.4') conflicts('+boost_filesystem', when='~apps') conflicts('^libxc@5.0.0') # known to produce incorrect results @@ -144,6 +147,8 @@ class Sirius(CMakePackage, CudaPackage): depends_on('eigen@3.4.0:', when='@7.4: +tests') + depends_on('costa+shared', when='@7.4:') + # TODO: # add support for CRAY_LIBSCI, testing diff --git a/var/spack/repos/builtin/packages/slate/package.py b/var/spack/repos/builtin/packages/slate/package.py index a7e02fbec52b9c..051c6287f699b2 100644 --- a/var/spack/repos/builtin/packages/slate/package.py +++ b/var/spack/repos/builtin/packages/slate/package.py @@ -32,6 +32,9 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): variant('openmp', default=True, description='Build with OpenMP support.') variant('shared', default=True, description='Build shared library') + # The runtime dependency on cmake is needed by the stand-alone tests (spack test). + depends_on('cmake', type='run') + depends_on('mpi', when='+mpi') depends_on('blas') depends_on('blaspp ~cuda', when='~cuda') @@ -72,28 +75,32 @@ def cmake_args(self): '-DSCALAPACK_LIBRARIES=%s' % spec['scalapack'].libs.joined(';') ] - examples_src_dir = 'examples' - @run_after('install') def cache_test_sources(self): + if self.spec.satisfies('@2020.10.00'): + return """Copy the example source files after the package is installed to an install test subdirectory for use during `spack test run`.""" - if self.spec.satisfies('@master'): - self.cache_extra_test_sources([self.examples_src_dir]) + self.cache_extra_test_sources(['examples']) def test(self): - if not self.spec.satisfies('@master') or '+mpi' not in self.spec: - print('Skipping: stand-alone tests only run on master with +mpi') + if self.spec.satisfies('@2020.10.00') or '+mpi' not in self.spec: + print('Skipping: stand-alone tests') return - test_dir = join_path(self.install_test_root, self.examples_src_dir) - test_bld_dir = join_path(test_dir, 'build') - with working_dir(test_bld_dir, create=True): - cmake('..') + test_dir = join_path(self.test_suite.current_test_cache_dir, + 'examples', 'build') + with working_dir(test_dir, create=True): + cmake_bin = join_path(self.spec['cmake'].prefix.bin, 'cmake') + prefixes = ';'.join([self.spec['blaspp'].prefix, + self.spec['lapackpp'].prefix, + self.spec['mpi'].prefix, + ]) + self.run_test(cmake_bin, ['-DCMAKE_PREFIX_PATH=' + prefixes, '..']) make() test_args = ['-n', '4', './ex05_blas'] - mpiexe_f = which('srun', 'mpirun', 'mpiexec') - if mpiexe_f: - self.run_test(mpiexe_f.command, test_args, - purpose='SLATE smoke test') + mpi_path = self.spec['mpi'].prefix.bin + mpiexe_f = which('srun', 'mpirun', 'mpiexec', path=mpi_path) + self.run_test(mpiexe_f.command, test_args, + purpose='SLATE smoke test') make('clean') diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 124b3f10217c49..38814c01f3c468 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.17.0', sha256='d4685fed01b2351c66706cbd6d08e4083a4645df398ef5ccd68fdfeb2f86ea97') version('3.16.2', sha256='3ba58f5005513ae0ab9f3b27579c82d245a82687886eaaa67cad4cd6ba2ca3a1') version('3.16.1', sha256='b1a8ad8db1ad88c60616e661ab48fc235d5a8b6965023cb6d691b9a2cfa94efb') version('3.16.0', sha256='be7292b85430e52210eb389c4f434b67164e96d19498585e82d117e850d477f4') @@ -65,6 +66,7 @@ class Slepc(Package, CudaPackage, ROCmPackage): # Cannot mix release and development versions of SLEPc and PETSc: depends_on('petsc@main', when='@main') + depends_on('petsc@3.17.0:3.17', when='@3.17.0:3.17') depends_on('petsc@3.16.0:3.16', when='@3.16.0:3.16') depends_on('petsc@3.15.0:3.15', when='@3.15.0:3.15') depends_on('petsc@3.14.0:3.14', when='@3.14.0:3.14') diff --git a/var/spack/repos/builtin/packages/slurm-drmaa/package.py b/var/spack/repos/builtin/packages/slurm-drmaa/package.py index da8e2e738f817b..69059fb138ad8d 100644 --- a/var/spack/repos/builtin/packages/slurm-drmaa/package.py +++ b/var/spack/repos/builtin/packages/slurm-drmaa/package.py @@ -24,8 +24,8 @@ class SlurmDrmaa(AutotoolsPackage): version('1.1.2', sha256='5bfe25d501de83729df3c8c8f28535b9da3e99aea7738e259903abd6f1f5c836') # Remove this patch when it is merged into main: - patch('https://patch-diff.githubusercontent.com/raw/natefoo/slurm-drmaa/pull/62.patch', - sha256='86bba5e2683f33e59f7e9193aa5fa948eb6a5507d44768f2f6d756a33fef7b74', + patch('https://github.com/natefoo/slurm-drmaa/pull/62.patch?full_index=1', + sha256='ec8d2963c731f7054f7d3c130232e731bc92366280100e108d93a3685fddfca7', when='@main') depends_on('autoconf', type='build', when='@main') diff --git a/var/spack/repos/builtin/packages/slurm/package.py b/var/spack/repos/builtin/packages/slurm/package.py index f24453b00e16b3..829b25745fc6da 100644 --- a/var/spack/repos/builtin/packages/slurm/package.py +++ b/var/spack/repos/builtin/packages/slurm/package.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * +import re class Slurm(AutotoolsPackage): @@ -78,6 +78,14 @@ class Slurm(AutotoolsPackage): depends_on('libyaml', when='+restd') depends_on('libjwt', when='+restd') + executables = ['^srun$', '^salloc$'] + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str).rstrip() + match = re.search(r'slurm\s*([0-9.]+)', output) + return match.group(1) if match else None + def flag_handler(self, name, flags): wrapper_flags = None diff --git a/var/spack/repos/builtin/packages/snap-korf/package.py b/var/spack/repos/builtin/packages/snap-korf/package.py index 19fb95a7a88954..95b024d84a1b36 100644 --- a/var/spack/repos/builtin/packages/snap-korf/package.py +++ b/var/spack/repos/builtin/packages/snap-korf/package.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - class SnapKorf(MakefilePackage): """SNAP is a general purpose gene finding program suitable for both eukaryotic and prokaryotic genomes.""" diff --git a/var/spack/repos/builtin/packages/source-highlight/package.py b/var/spack/repos/builtin/packages/source-highlight/package.py index 6f3aeb89c7ff56..b6a21ff0d471fa 100644 --- a/var/spack/repos/builtin/packages/source-highlight/package.py +++ b/var/spack/repos/builtin/packages/source-highlight/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class SourceHighlight(AutotoolsPackage, GNUMirrorPackage): @@ -25,7 +26,10 @@ class SourceHighlight(AutotoolsPackage, GNUMirrorPackage): sha256='45087b174b2b128a8dc81b0728f8ae63213d255ceef6dabfcba27c94e2a75ce9', when='%gcc@11:') - depends_on('boost') + # 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) # git version needs autotools depends_on('m4', when='@master') diff --git a/var/spack/repos/builtin/packages/sparrow/package.py b/var/spack/repos/builtin/packages/sparrow/package.py new file mode 100644 index 00000000000000..4171f5ee278e06 --- /dev/null +++ b/var/spack/repos/builtin/packages/sparrow/package.py @@ -0,0 +1,85 @@ +# Copyright 2013-2022 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 import * + + +class Sparrow(CMakePackage): + """Sparrow: fast semiempirical quantum chemical calculations. + + When publishing results obtained with Sparrow, please cite + the corresponding release as archived on Zenodo + (DOI 10.5281/zenodo.3244105; please use the DOI of the respective + release). + + In addition, we kindly request you to cite the following article + when using Sparrow: + + T. Husch, A. C. Vaucher, M. Reiher, "Semiempirical molecular orbital + models based on the neglect of diatomic differential overlap + approximation", Int. J. Quantum Chem., 2018, 118, e25799. + """ + + homepage = "https://scine.ethz.ch/" + url = "https://github.com/qcscine/sparrow/archive/refs/tags/3.0.0.tar.gz" + + maintainers = ["frobnitzem"] + + version( + "3.0.0", + sha256="70636871694c9363ae3fb2df5050bddb22667b71d875d5a7e9afd872f6a2b65d", + ) + + resource( + name="dev", + url="https://github.com/qcscine/development-utils/archive/refs/tags/4.0.0.tar.gz", + sha256="54002c2082b6bb75672ec66bf9cf3935bbdf6b085ed9b4d7174cbdedb7c2275d", + destination="deps", + placement="dev", + ) + + depends_on("eigen@3.3.2:") + depends_on("boost+filesystem+program_options cxxstd=17 @1.65.0:") + depends_on("py-pybind11@2.6.2") + depends_on("py-pip", type="build") + depends_on("yaml-cpp") + depends_on("cereal") + depends_on("googletest") + + def patch(self): + os.rmdir("dev") + os.rename("deps/dev", "dev") + if self.spec.satisfies("platform=darwin"): + filter_file( + r"SparrowApp PROPERTIES OUTPUT_NAME sparrow", + 'SparrowApp PROPERTIES OUTPUT_NAME sparrow SUFFIX ".exe"', + "src/Sparrow/CMakeLists.txt", + ) + filter_file( + r"MAKE_CXX_STANDARD 14 PARENT_SCOPE", + "MAKE_CXX_STANDARD 17 PARENT_SCOPE", + "dev/cmake/ComponentSetup.cmake", + ) + + def cmake_args(self): + args = [ + self.define("SCINE_BUILD_PYTHON_BINDINGS", True), + self.define("SCINE_BUILD_TESTS", self.run_tests), + ] + + return args + + # Adapted from ddd in MacPorts: cmake will build the executable + # "sparrow" right next to the copy of the source directory "Sparrow". + # As HFS+ is case-insensitive by default this will loosely FAIL. + # Mitigate this by building/installing 'sparrowexe' + # on Darwin and fixing up post install. + @run_after("install") + def _rename_exe_on_darwin(self): + if self.spec.satisfies("platform=darwin"): + with working_dir(self.prefix.bin): + os.rename("sparrow.exe", "sparrow") diff --git a/var/spack/repos/builtin/packages/spectre/package.py b/var/spack/repos/builtin/packages/spectre/package.py index a1ffa6063346fd..2ae83a66411064 100644 --- a/var/spack/repos/builtin/packages/spectre/package.py +++ b/var/spack/repos/builtin/packages/spectre/package.py @@ -29,6 +29,9 @@ class Spectre(CMakePackage): generator = 'Ninja' version('develop', branch='develop') + version('2022.03.07', sha256='41b2dea4d4a91313987fbad5252cad4a7e1cb3dcef5fbad0a09ea942423f5013') + version('2022.02.17', sha256='4bc2949453a35699090efc2bb71b8bd2b951909e0f02d0f8c8af255d1668e63f') + version('2022.02.08', sha256='996275536c990a6d49cd61f207c04ad771a1449506f38507afc35f95b29d4cf1') version('2022.01.03', sha256='872a0d152c19864ad543ddcc585ce30baaad4185c2617c13463d780175cbde5f') version('2021.12.15', sha256='4bfe9e27412e263ffdc6fcfcb84011f16d34a9fdd633ad7fc84a34c898f67e5c') @@ -115,13 +118,20 @@ class Spectre(CMakePackage): # Docs with when('+doc'): depends_on('doxygen', type='build') + depends_on('perl', type='build', when="@2022.03.07:") depends_on('py-beautifulsoup4', type='build') depends_on('py-pybtex', type='build') + depends_on('py-nbconvert', type='build', when="@2022.03.07:") # Incompatibilities # - Shared libs builds on macOS don't work before # https://github.com/sxs-collaboration/spectre/pull/2680 conflicts('+shared', when='@:2022.01.03 platform=darwin') + # - Blaze with `BLAZE_BLAS_MODE` enabled doesn't work before + # https://github.com/sxs-collaboration/spectre/pull/3806 because it + # doesn't find the BLAS header. Also, we haven't tested Blaze with BLAS + # kernels before then. + conflicts('^blaze+blas', when='@:2022.02.17') # These patches backport updates to the SpECTRE build system to earlier # releases, to support installing them with Spack. In particular, we try to @@ -132,52 +142,57 @@ class Spectre(CMakePackage): patch('install-pre-2022.01.03.patch', when='@:2022.01.03') # - Backport experimental support for Charm++ v7+ patch( - 'https://github.com/sxs-collaboration/spectre/commit/a2203824ef38ec79a247703ae8cd215befffe391.patch', - sha256='eb6094028530d9f28cb9c91a90b4af908cc537c8525fb4c81b11c74fd0354932', + 'https://github.com/sxs-collaboration/spectre/commit/a2203824ef38ec79a247703ae8cd215befffe391.patch?full_index=1', + sha256='e1b22e5ebeb814c07f4aff690b7b4f3a7ba1f06ea4bc91468c68637521a458a7', when='@:2022.01.03 ^charmpp@7.0.0:') # - Backport IWYU toggle to avoid CMake configuration issues patch( - 'https://github.com/sxs-collaboration/spectre/commit/cffeba1bc24bf7c00ec8bac710f02d3db36fa111.patch', - sha256='912877d4f553adff8b6df8264c50600c1e6d5a9c3ad18be0b86c9d801c07699c', + 'https://github.com/sxs-collaboration/spectre/commit/cffeba1bc24bf7c00ec8bac710f02d3db36fa111.patch?full_index=1', + sha256='a3752024b743aeba6f7a53d26bf583e1e46adbd08a2e6f74470a777dde7b2dff', when='@:2022.01.03') # - Backport patch for Boost 1.77 patch( - 'https://github.com/sxs-collaboration/spectre/commit/001fc190a6ec73ad6c19ada9444d04a2320f2b96.patch', - sha256='bf539feb01d01e178889828dbbe5e990e8ee58c9e971d8634845c70a7cfb42a9', + 'https://github.com/sxs-collaboration/spectre/commit/001fc190a6ec73ad6c19ada9444d04a2320f2b96.patch?full_index=1', + sha256='96b3a3cb49ee30206eb70d1160feda84b7e7b4e1c7dd81ba7138b5c4fa718622', when='@:2022.01.03 ^boost@1.77:') # - Backport patch for Python 3.10 in tests patch( - 'https://github.com/sxs-collaboration/spectre/commit/82ff2c39cdae0ecc1e42bdf4564506a4ca869818.patch', - sha256='5a5a3abf102e92812933e7318daabe2ca0a5a00d81d9663731c527e5dc6c8ced', + 'https://github.com/sxs-collaboration/spectre/commit/82ff2c39cdae0ecc1e42bdf4564506a4ca869818.patch?full_index=1', + sha256='36cdb5e48f6b49306709057e5e6ca37a44258ad6ecf918c1e87a71d7121e36ba', when='@:2022.01.03 ^python@3.10:') # - Backport patch for hdf5+mpi patch( - 'https://github.com/sxs-collaboration/spectre/commit/eb887635f5e2b394ae2c7e96170e9d907eb315cf.patch', - sha256='eb50b31af79d1e6b6535503bc30a9c5efd2ce36bd3638a2b3ab02af44bac6de3', + 'https://github.com/sxs-collaboration/spectre/commit/eb887635f5e2b394ae2c7e96170e9d907eb315cf.patch?full_index=1', + sha256='ccc4631541d6aca996ced358a3ee43d3f8b8eb62fd7bec4534685445688d4d84', when='@:2022.01.03 ^hdf5+mpi') # - Backport `BUILD_TESTING` toggle, based on upstream patch: # https://github.com/sxs-collaboration/spectre/commit/79bed6cad6e95efadf48a5846f389e90801202d4 patch('build-testing-pre-2022.01.03.patch', when='@:2022.01.03') # - Backport `PYTHONPATH` in CTest environment patch( - 'https://github.com/sxs-collaboration/spectre/commit/ada1d15d5963bd22581dd8966599e1529a99645d.patch', - sha256='160d55bb2537ea8f3937cea59a9a0fd56a2bfef856bb7fd8e9dceb504c04836c', + 'https://github.com/sxs-collaboration/spectre/commit/ada1d15d5963bd22581dd8966599e1529a99645d.patch?full_index=1', + sha256='6ae3d5b08bd3f0e743e1043c9363e32db2a4f9c549eb958ff989f1e7f3078f6c', when='@:2022.01.03') # - Backport executable name CTest labels patch( - 'https://github.com/sxs-collaboration/spectre/commit/1b61e62a27b02b658cc6a74c4d46af1f5b5d0a4d.patch', - sha256='07be176ca4dda74a2dd8e71c31dab638a9f3567c3a58eb7fddbfde001646fb8c', + 'https://github.com/sxs-collaboration/spectre/commit/1b61e62a27b02b658cc6a74c4d46af1f5b5d0a4d.patch?full_index=1', + sha256='aeb41c30dd7a8bf61b79efbb79cfa81372cfc2e870a2b494fc583a8bd554c703', when='@:2022.01.03') # - Backport fix for PCH builds with Spack patch( - 'https://github.com/sxs-collaboration/spectre/commit/4bb3f25f905f83d8295a28a8036f6971dc4e75a2.patch', - sha256='cd39217614a40f080d812e20220044aa8b26b9413324a7cd7a304e2378a2b426', + 'https://github.com/sxs-collaboration/spectre/commit/4bb3f25f905f83d8295a28a8036f6971dc4e75a2.patch?full_index=1', + sha256='6e8ec4584b6b03866594d0744c041012c68f6b2382abaa9abeec39cd2f2a6480', when='@:2022.01.03') # - Backport installation of shared libs patch( - 'https://github.com/sxs-collaboration/spectre/commit/b7c54a2a20c6d62aae6b1c97e3468d4cd39ed6ad.patch', - sha256='29ad44594ecfd6442a64d2cb57ed2d712cb8d93707c6bceea8030a9a2682b7ed', + 'https://github.com/sxs-collaboration/spectre/commit/b7c54a2a20c6d62aae6b1c97e3468d4cd39ed6ad.patch?full_index=1', + sha256='5ce050c73bab007c0bea9c1f4ae4fb5cd5abab820eeb89cf6cb81f8856d07c30', when='@:2022.01.03 +shared') + # - Fix an issue with Boost pre v1.67 + patch( + 'https://github.com/sxs-collaboration/spectre/commit/b229e939f15362aca892d4480a9182daf88305d4.patch?full_index=1', + sha256='87811b73d72d60cf82cd85e464b42843add50c3be858c7c8272936aeb8574933', + when='@2022.02.08 ^boost@:1.66') def cmake_args(self): args = [ @@ -186,6 +201,7 @@ def cmake_args(self): self.define('Python_EXECUTABLE', self.spec['python'].command.path), self.define_from_variant('BUILD_PYTHON_BINDINGS', 'python'), self.define('BUILD_TESTING', self.run_tests), + self.define_from_variant('BUILD_DOCS', 'doc'), self.define('USE_GIT_HOOKS', False), self.define('USE_IWYU', False), self.define_from_variant('USE_FORMALINE', 'formaline'), diff --git a/var/spack/repos/builtin/packages/spfft/package.py b/var/spack/repos/builtin/packages/spfft/package.py index 5c781765e733d3..59cf2422f5a727 100644 --- a/var/spack/repos/builtin/packages/spfft/package.py +++ b/var/spack/repos/builtin/packages/spfft/package.py @@ -19,6 +19,7 @@ class Spfft(CMakePackage, CudaPackage): version('develop', branch='develop') version('master', branch='master') + version('1.0.6', sha256='e1b927c61f8abbb4a9937653f917169e6253e8c40b850df491594310943ca14b') version('1.0.5', sha256='2a59d856286ea8559f00a32fc38f9f7546209cfa90112232a5288a69689a6e05') version('1.0.4', sha256='41e63880d95343da0d8c3dbe5bfb3d46a1d612199cc9cc13a936f1628a7fdb8e') version('1.0.3', sha256='4f87734e3582ef96ddc0402d0db78cfc173bed9cab3e0d9c6a6bf8b660d69559') @@ -47,20 +48,25 @@ class Spfft(CMakePackage, CudaPackage): # ROCM variants + dependencies variant('rocm', default=False, description="Use ROCm backend") - amdgpu_targets = ( - 'gfx701', 'gfx801', 'gfx802', 'gfx803', - 'gfx900', 'gfx906', 'gfx908', 'gfx1010', - 'gfx1011', 'gfx1012' - ) - - depends_on('rocfft', when='+rocm') - depends_on('hip', when='+rocm') - variant('amdgpu_target', default='gfx803,gfx900,gfx906', multi=True, values=amdgpu_targets, when='+rocm') - depends_on('cuda@:10', when='@:0.9.11 +cuda') - # FindHIP cmake script only works for < 4.1 - depends_on('hip@:4.0', when='@:1.0.1 +rocm') + with when('+rocm'): + # FindHIP cmake script only works for < 4.1 + depends_on('hip@:4.0', when='@:1.0.1') + # Workaround for compiler bug in ROCm 4.5 added in SpFFT 1.0.6 + depends_on('hip@:4.3.1', when='@:1.0.5') + depends_on('hip') + depends_on('rocfft') + # rocFFT and hipFFT have split with latest versions + depends_on('hipfft', when='^rocfft@4.1.0:') + + amdgpu_targets = ( + 'gfx701', 'gfx801', 'gfx802', 'gfx803', + 'gfx900', 'gfx906', 'gfx908', 'gfx1010', + 'gfx1011', 'gfx1012' + ) + variant('amdgpu_target', default='gfx803,gfx900,gfx906', multi=True, + values=amdgpu_targets) # Fix compilation error in some cases due to missing include statement # before version 1.0.3 diff --git a/var/spack/repos/builtin/packages/spiner/package.py b/var/spack/repos/builtin/packages/spiner/package.py new file mode 100644 index 00000000000000..bc1d1d7572ffe2 --- /dev/null +++ b/var/spack/repos/builtin/packages/spiner/package.py @@ -0,0 +1,77 @@ +# Copyright 2013-2022 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 import * + + +class Spiner(CMakePackage, CudaPackage): + """Spiner: + Performance portable routines for generic, tabulated, multi-dimensional data""" + + homepage = "https://github.com/lanl/spiner" + url = "https://github.com/lanl/spiner/archive/refs/tags/1.4.0.tar.gz" + git = "https://github.com/lanl/spiner.git" + + maintainers = ['rbberger'] + + version("main", branch="main") + version('1.4.0', sha256='c3801b9eab26feabec33ff8c59e4056f384287f407d23faba010d354766f3ac5') + + # When overriding/overloading varaints, the last variant is always used, except for + # "when" clauses. Therefore, call the whens FIRST then the non-whens. + # https://spack.readthedocs.io/en/latest/packaging_guide.html#overriding-variants + variant("kokkos", default=False, description="Enable kokkos",) + variant("openmp", default=False, description="Enable openmp kokkos backend") + + variant("hdf5", default=False, description="Enable hdf5") + variant("mpi", default=False, description="Support parallel hdf5") + + variant("python", default=False, description="Python, Numpy & Matplotlib Support") + variant("doc", default=False, description="Sphinx Documentation Support") + variant("format", default=False, description="Clang-Format Support") + + depends_on("cmake@3.12:") + depends_on("catch2@2.13.4:2.13.6") + depends_on("ports-of-call@1.1.0:") + + # Currently the raw cuda backend of ports-of-call is not supported. + depends_on("ports-of-call portability_strategy=Kokkos", when="+kokkos") + depends_on("ports-of-call portability_strategy=None", when="~kokkos") + for _flag in list(CudaPackage.cuda_arch_values): + depends_on("kokkos@3.2.00: cuda_arch=" + _flag, when="+cuda+kokkos cuda_arch=" + _flag) + for _flag in ("~cuda", "+cuda", "~openmp", "+openmp"): + depends_on("kokkos@3.2.00: " + _flag, when="+kokkos" + _flag) + depends_on("kokkos@3.2.00: ~shared+wrapper+cuda_lambda+cuda_relocatable_device_code", when="+cuda+kokkos") + + depends_on("hdf5+hl~mpi", when="+hdf5~mpi") + depends_on("hdf5+hl+mpi", when="+hdf5+mpi") + + depends_on("python", when="+python") + depends_on("py-numpy", when="+python") + depends_on("py-matplotlib", when="+python") + + depends_on("py-sphinx", when="+doc") + depends_on("py-sphinx-rtd-theme@0.4.3", when="+doc") + depends_on("py-sphinx-multiversion", when="+doc") + + depends_on("llvm@12.0.0+clang", when="+format") + + conflicts("+mpi", when="~hdf5") + conflicts("+cuda", when="~kokkos") + conflicts("+openmp", when="~kokkos") + conflicts("cuda_arch=none", when="+cuda", msg="CUDA architecture is required") + + def cmake_args(self): + args = [ + self.define("BUILD_TESTING", self.run_tests), + self.define_from_variant("SPINER_USE_KOKKOS", "kokkos"), + self.define_from_variant("SPINER_USE_CUDA", "cuda"), + self.define_from_variant("SPINER_USE_HDF", "hdf5") + ] + if '+cuda' in self.spec: + args.append(self.define( + 'CMAKE_CUDA_ARCHITECTURES', self.spec.variants['cuda_arch'].value + )) + return args diff --git a/var/spack/repos/builtin/packages/spla/package.py b/var/spack/repos/builtin/packages/spla/package.py index ce4f3990969509..a3467f8d914aba 100644 --- a/var/spack/repos/builtin/packages/spla/package.py +++ b/var/spack/repos/builtin/packages/spla/package.py @@ -17,6 +17,8 @@ class Spla(CMakePackage): maintainers = ['AdhocMan', 'haampie'] + version('1.5.4', sha256='de30e427d24c741e2e4fcae3d7668162056ac2574afed6522c0bb49d6f1d0f79') + version('1.5.3', sha256='527c06e316ce46ec87309a16bfa4138b1abad23fd276fe789c78a2de84f05637') version('1.5.2', sha256='344c34986dfae182ec2e1eb539c9a57f75683aaa7a61a024fd0c594d81d97016') version('1.5.1', sha256='2021a30b7cbb10bd660e5d94e1cc7bc6a428c87ea507e09d1e57e455685da421') version('1.5.0', sha256='bea782d46ce615e1c40efc2bfb19d95e3b59f332fc9ca83ac7e6684b8ac2dd93') diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py index 01b42ce1b34ac0..4cabcb0570bbcb 100644 --- a/var/spack/repos/builtin/packages/spot/package.py +++ b/var/spack/repos/builtin/packages/spot/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Spot(AutotoolsPackage): @@ -22,3 +23,8 @@ class Spot(AutotoolsPackage): depends_on("python@3.2:", when='@1.99: +python') depends_on("python@2:", when='+python') depends_on('boost', when='@:1.2.6') + + # 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, when='@:1.2.6') diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index c166ac38e5e814..d33c4686acb0f8 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -15,6 +15,7 @@ class Sqlite(AutotoolsPackage): """ homepage = "https://www.sqlite.org" + version('3.37.2', sha256='4089a8d9b467537b3f246f217b84cd76e00b1d1a971fe5aca1e30e230e46b2d8') version('3.37.1', sha256='40f22a13bf38bbcd4c7ac79bcfb42a72d5aa40930c1f3f822e30ccce295f0f2e') version('3.37.0', sha256='731a4651d4d4b36fc7d21db586b2de4dd00af31fd54fb5a9a4b7f492057479f7') version('3.36.0', sha256='bd90c3eb96bee996206b83be7065c9ce19aef38c3f4fb53073ada0d0b69bbce3') @@ -137,7 +138,9 @@ def url_for_version(self, version): ''.join(['%02d' % v for v in full_version[1:]]) # See https://www.sqlite.org/chronology.html for version -> year # correspondence. - if version >= Version('3.34.1'): + if version >= Version('3.37.2'): + year = '2022' + elif version >= Version('3.34.1'): year = '2021' elif version >= Version('3.31.0'): year = '2020' diff --git a/var/spack/repos/builtin/packages/starlight/package.py b/var/spack/repos/builtin/packages/starlight/package.py new file mode 100644 index 00000000000000..55302891910f3f --- /dev/null +++ b/var/spack/repos/builtin/packages/starlight/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2022 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 import * + + +class Starlight(CMakePackage): + """STARlight is a Monte Carlo that simulates two-photon + and photon-Pomeron interactions between relativistic nuclei and protons.""" + + homepage = "https://starlight.hepforge.org" + url = "https://starlight.hepforge.org/downloads?f=starlight_r313.tar" + + tags = ['hep'] + + maintainers = ['vvolkl'] + + version('313', sha256='afff1ac01bc312cb443931eb425808a85ac7e349ed3df228405a4ba87d780f23', + url='https://starlight.hepforge.org/downloads?f=starlight_r313.tar') + version('300', sha256='e754212f173fb42a96611b3519cb386c772429e690f3e088396bd103c2cf9348', + url='https://starlight.hepforge.org/downloads?f=starlight_r300.tar') + + patch('https://gitlab.cern.ch/sft/lcgcmake/-/raw/master/generators/patches/starlight-r313.patch', sha256='c70f70fd7c96dc0417f9254d25b584222abcb2c452e1e6dd4b8cfb0b64bf10e0', when='@300:', level=0) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index ed2c49051bd2e7..1a80c17823b9b5 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Stat(AutotoolsPackage): @@ -63,7 +64,11 @@ class Stat(AutotoolsPackage): depends_on('py-xdot@1.0', when='@4.0.1: +gui') depends_on('swig') depends_on('mpi', when='+examples') - depends_on('boost') + + # 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) patch('configure_mpicxx.patch', when='@2.1.0') diff --git a/var/spack/repos/builtin/packages/storm/package.py b/var/spack/repos/builtin/packages/storm/package.py index 9b814c06cda969..4bb4ee4144b681 100644 --- a/var/spack/repos/builtin/packages/storm/package.py +++ b/var/spack/repos/builtin/packages/storm/package.py @@ -18,12 +18,13 @@ class Storm(Package): list_url = "https://archive.apache.org/dist/storm/" list_depth = 1 + version('2.3.0', sha256='49c2255b26633c6fd96399c520339e459fcda29a0e7e6d0c8775cefcff6c3636') version('2.2.0', sha256='f621163f349a8e85130bc3d2fbb34e3b08f9c039ccac5474f3724e47a3a38675') version('2.1.0', sha256='e279a495dda42af7d9051543989f74a1435a5bda53e795a1de4a1def32027fc4') version('2.0.0', sha256='0a4a6f985242a99f899a01bd01dacf9365f381e2acc473caa84073fbe84f6703') version('1.2.3', sha256='d45322253db06353a521284f31b30bd964dab859f3a279a305bd79112803425a') - depends_on('java@8', type=('build', 'run')) + depends_on('java@8:', type=('build', 'run')) depends_on('zookeeper', type='run') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/strelka/package.py b/var/spack/repos/builtin/packages/strelka/package.py index b3fd5d822326c5..1bdc31a688c288 100644 --- a/var/spack/repos/builtin/packages/strelka/package.py +++ b/var/spack/repos/builtin/packages/strelka/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Strelka(CMakePackage): @@ -33,3 +34,8 @@ class Strelka(CMakePackage): depends_on('bzip2') depends_on('cmake@2.8.5:', type='build') depends_on('boost@1.56.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) diff --git a/var/spack/repos/builtin/packages/strumpack/package.py b/var/spack/repos/builtin/packages/strumpack/package.py index 89dce39b315e99..0a4d24bf5a7678 100644 --- a/var/spack/repos/builtin/packages/strumpack/package.py +++ b/var/spack/repos/builtin/packages/strumpack/package.py @@ -20,7 +20,7 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): iterative solvers.""" homepage = "http://portal.nersc.gov/project/sparse/strumpack" - url = "https://github.com/pghysels/STRUMPACK/archive/refs/tags/v6.1.0.tar.gz" + url = "https://github.com/pghysels/STRUMPACK/archive/refs/tags/v6.3.1.tar.gz" git = "https://github.com/pghysels/STRUMPACK.git" tags = ['e4s'] @@ -30,6 +30,7 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): test_requires_compiler = True version('master', branch='master') + version('6.3.1', sha256='3f1de435aeb850c06d841655c3bc426565eb0cc0a7314b76586c2c709b03fb61') version('6.3.0', sha256='47dec831684894b7ed77c66b8a23e172b388c83580cfaf91f921564fa0b46d41') version('6.2.1', sha256='52d63ab8f565266a9b1b5f3596afd00fc3b70296179b53a1e5b99405defeca22') version('6.2.0', sha256='d8443fc66b399b8f2615ad9dd0e599c2e2b6836620cca5d9c4d7a9cde9c5a860') diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index f4fc5a212ea691..3ec2874ff14b76 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack import * @@ -15,6 +17,8 @@ class Subversion(AutotoolsPackage): 'https://downloads.apache.org/subversion/subversion-1.13.0.tar.gz' ] + tags = ['build-tools'] + version('1.14.1', sha256='dee2796abaa1f5351e6cc2a60b1917beb8238af548b20d3e1ec22760ab2f0cad') version('1.14.0', sha256='ef3d1147535e41874c304fb5b9ea32745fbf5d7faecf2ce21d4115b567e937d0') version('1.13.0', sha256='daad440c03b8a86fcca804ea82217bb1902cfcae1b7d28c624143c58dcb96931') @@ -42,6 +46,8 @@ class Subversion(AutotoolsPackage): depends_on('swig@1.3.24:3.0.0', when='+perl') depends_on('perl-termreadkey', when='+perl') + executables = [r'^svn$'] + # https://www.linuxfromscratch.org/blfs/view/svn/general/subversion.html def configure_args(self): spec = self.spec @@ -108,3 +114,9 @@ def install(self, spec, prefix): with working_dir(join_path( 'subversion', 'bindings', 'swig', 'perl', 'native')): make('install') + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + match = re.search(r'^svn, version\s+([\d\.]+)', output) + return match.group(1) if match else None diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index e5ced56fd40762..4831d85a88071b 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -6,6 +6,8 @@ import os import sys +from llnl.util import tty + from spack import * @@ -17,6 +19,7 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): url = "https://github.com/LLNL/sundials/releases/download/v2.7.0/sundials-2.7.0.tar.gz" git = "https://github.com/llnl/sundials.git" tags = ['radiuss', 'e4s'] + test_requires_compiler = True maintainers = ['balos1', 'cswoodward', 'gardner48'] @@ -24,6 +27,8 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): # Versions # ========================================================================== version('develop', branch='develop') + version('6.1.1', sha256='cfaf637b792c330396a25ef787eb59d58726c35918ebbc08e33466e45d50470c') + version('6.1.0', sha256='eea49f52140640e54931c779e73aece65f34efa996a26b2263db6a1e27d0901c') version('6.0.0', sha256='c7178e54df20a9363ae3e5ac5b3ee9db756a4ddd4b8fff045127e93b73b151f4') version('5.8.0', sha256='d4ed403351f72434d347df592da6c91a69452071860525385b3339c824e8a213') version('5.7.0', sha256='48da7baa8152ddb22aed1b02d82d1dbb4fbfea22acf67634011aa0303a100a43') @@ -92,7 +97,7 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): description='Enable SYCL vector') # External libraries - variant('caliper', default=False, when='@6.0.0:', + variant('caliper', default=False, when='@6.0.0: +profiling', description='Enable Caliper instrumentation/profiling') variant('hypre', default=False, description='Enable Hypre MPI parallel vector') @@ -102,6 +107,8 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): description='Enable KLU sparse, direct solver') variant('petsc', default=False, description='Enable PETSc interfaces') + variant('magma', default=False, when='@5.7.0:', + description='Enable MAGMA interface') variant('superlu-mt', default=False, description='Enable SuperLU_MT sparse, direct solver') variant('superlu-dist', default=False, @@ -132,7 +139,7 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): description='Use generic (std-c) math libraries on unix systems') # Monitoring - variant('monitoring', default=False, + variant('monitoring', default=False, when='@5.5.0:', description='Build with simulation monitoring capabilities') # Profiling @@ -152,7 +159,6 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): conflicts('+superlu-dist', when='@:4.1.0') conflicts('+f2003', when='@:4.1.0') conflicts('+trilinos', when='@:4.1.0') - conflicts('+monitoring', when='@:5.5.0') conflicts('+rocm', when='@:5.6.0') # External libraries incompatible with 64-bit indices @@ -177,9 +183,6 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): # rocm+examples and cstd do not work together in 6.0.0 conflicts('+rocm+examples', when='@6.0.0') - # profiling must be on for Caliper support to mean anything - conflicts('+caliper', when='~profiling') - # ========================================================================== # Dependencies # ========================================================================== @@ -205,6 +208,7 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): depends_on('hypre+mpi+int64', when='@5.7.1: +hypre +int64') depends_on('hypre@:2.22.0+mpi~int64', when='@:5.7.0 +hypre ~int64') depends_on('hypre@:2.22.0+mpi+int64', when='@:5.7.0 +hypre +int64') + depends_on('magma', when='+magma') depends_on('petsc+mpi', when='+petsc') depends_on('suite-sparse', when='+klu') depends_on('superlu-dist@6.1.1:', when='@:5.4.0 +superlu-dist') @@ -241,16 +245,8 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): def cmake_args(self): spec = self.spec - - def on_off(varstr): - return 'ON' if varstr in self.spec else 'OFF' - - fortran_flag = self.compiler.f77_pic_flag - if (spec.satisfies('%apple-clang')) and ('+fcmix' in spec): - f77 = Executable(self.compiler.f77) - libgfortran = LibraryList(f77('--print-file-name', - 'libgfortran.a', output=str)) - fortran_flag += ' ' + libgfortran.ld_flags + define = CMakePackage.define + from_variant = self.define_from_variant # List of CMake arguments # Note: CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE are set automatically @@ -258,239 +254,175 @@ def on_off(varstr): # SUNDIALS solvers for pkg in self.sun_solvers: - args.append(self.define_from_variant('BUILD_' + pkg, pkg)) - - # language standard - cstd = spec.variants['cstd'].value - args.append('-DCMAKE_C_STANDARD=%s' % cstd) - cxxstd = spec.variants['cxxstd'].value - args.append('-DCMAKE_CXX_STANDARD=%s' % cxxstd) + args.append(from_variant('BUILD_' + pkg, pkg)) - # precision args.extend([ - '-DSUNDIALS_PRECISION=%s' % spec.variants['precision'].value + # language standard + from_variant('CMAKE_C_STANDARD', 'cstd'), + from_variant('CMAKE_CXX_STANDARD', 'cxxstd'), + # precision + from_variant('SUNDIALS_PRECISION', 'precision'), ]) # index type (v3.0.0 or later) - if spec.satisfies('@3.0.0:'): - if '+int64' in spec: - args.extend(['-DSUNDIALS_INDEX_SIZE=64']) - args.extend(['-DSUNDIALS_INDEX_TYPE=int64_t']) - else: - args.extend(['-DSUNDIALS_INDEX_SIZE=32']) - args.extend(['-DSUNDIALS_INDEX_TYPE=int32_t']) - - # Fortran interface - args.extend([self.define_from_variant('F77_INTERFACE_ENABLE', 'fcmix')]) - args.extend([self.define_from_variant('F2003_INTERFACE_ENABLE', 'f2003')]) - - # library type - args.extend([ - self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), - self.define_from_variant('BUILD_STATIC_LIBS', 'static') - ]) - - # generic (std-c) math libraries - args.extend([ - '-DUSE_GENERIC_MATH=%s' % on_off('+generic-math') - ]) + if spec.satisfies('@3:'): + intsize = "64" if '+int64' in spec else "32" + args.extend([ + define('SUNDIALS_INDEX_SIZE', intsize), + define('SUNDIALS_INDEX_TYPE', 'int{}_t'.format(intsize)), + ]) - # Monitoring args.extend([ - self.define_from_variant('SUNDIALS_BUILD_WITH_MONITORING', 'monitoring') + # Fortran interface + from_variant('F77_INTERFACE_ENABLE', 'fcmix'), + from_variant('F2003_INTERFACE_ENABLE', 'f2003'), + # library type + from_variant('BUILD_SHARED_LIBS', 'shared'), + from_variant('BUILD_STATIC_LIBS', 'static'), + # Generic (std-c) math libraries + from_variant('USE_GENERIC_MATH', 'generic-math'), + # Monitoring + from_variant('SUNDIALS_BUILD_WITH_MONITORING', 'monitoring'), + # Profiling + from_variant('SUNDIALS_BUILD_WITH_PROFILING', 'profiling'), + from_variant('ENABLE_CALIPER', 'caliper'), ]) - # Profiling - args.extend([ - self.define_from_variant('SUNDIALS_BUILD_WITH_PROFILING', 'profiling') - ]) - if '+profiling+caliper' in spec: - args.extend([ - '-DENABLE_CALIPER=ON', - '-DCALIPER_DIR=%s' % spec['caliper'].prefix - ]) + if '+caliper' in spec: + args.append(define('CALIPER_DIR', spec['caliper'].prefix)) # parallelism args.extend([ - self.define_from_variant('MPI_ENABLE', 'mpi'), - self.define_from_variant('OPENMP_ENABLE', 'openmp'), - self.define_from_variant('PTHREAD_ENABLE', 'pthread'), - self.define_from_variant('ENABLE_SYCL', 'sycl') + from_variant('MPI_ENABLE', 'mpi'), + from_variant('OPENMP_ENABLE', 'openmp'), + from_variant('PTHREAD_ENABLE', 'pthread'), + from_variant('ENABLE_SYCL', 'sycl'), + from_variant('CUDA_ENABLE', 'cuda'), + from_variant('ENABLE_HIP', 'rocm'), + from_variant('HYPRE_ENABLE', 'hypre'), + from_variant('KLU_ENABLE', 'klu'), + from_variant('LAPACK_ENABLE', 'lapack'), + from_variant('PETSC_ENABLE', 'petsc'), + from_variant('RAJA_ENABLE', 'raja'), + from_variant('SUPERLUMT_ENABLE', 'superlu-mt'), + from_variant('SUPERLUDIST_ENABLE', 'superlu-dist'), + from_variant('Trilinos_ENABLE', 'trilinos'), + from_variant('EXAMPLES_INSTALL', 'examples-install'), ]) if '+cuda' in spec: - args.append('-DCUDA_ENABLE=ON') - archs = spec.variants['cuda_arch'].value - if archs != 'none': - arch_str = ",".join(archs) - args.append('-DCMAKE_CUDA_ARCHITECTURES=%s' % arch_str) - else: - args.append('-DCUDA_ENABLE=OFF') + args.append(define( + 'CMAKE_CUDA_ARCHITECTURES', spec.variants['cuda_arch'].value + )) if '+rocm' in spec: args.extend([ - '-DCMAKE_C_COMPILER=%s' % (spec['llvm-amdgpu'].prefix + '/bin/clang'), - '-DCMAKE_CXX_COMPILER=%s' % spec['hip'].hipcc, - '-DENABLE_HIP=ON', - '-DHIP_PATH=%s' % spec['hip'].prefix, - '-DHIP_CLANG_INCLUDE_PATH=%s/include' % spec['llvm-amdgpu'].prefix, - '-DROCM_PATH=%s' % spec['llvm-amdgpu'].prefix + define('CMAKE_C_COMPILER', spec['llvm-amdgpu'].prefix.bin.clang), + define('CMAKE_CXX_COMPILER', spec['hip'].hipcc), + define('HIP_PATH', spec['hip'].prefix), + define('HIP_CLANG_INCLUDE_PATH', spec['llvm-amdgpu'].prefix.include), + define('ROCM_PATH', spec['llvm-amdgpu'].prefix), + define('AMDGPU_TARGETS', spec.variants['amdgpu_target'].value), ]) - archs = spec.variants['amdgpu_target'].value - if archs != 'none': - arch_str = ",".join(archs) - args.append('-DAMDGPU_TARGETS=%s' % arch_str) - else: - args.append('-DENABLE_HIP=OFF') # MPI support if '+mpi' in spec: args.extend([ - '-DMPI_MPICC=%s' % spec['mpi'].mpicc, - '-DMPI_MPICXX=%s' % spec['mpi'].mpicxx, - '-DMPI_MPIF77=%s' % spec['mpi'].mpif77, - '-DMPI_MPIF90=%s' % spec['mpi'].mpifc + define('MPI_MPICC', spec['mpi'].mpicc), + define('MPI_MPICXX', spec['mpi'].mpicxx), + define('MPI_MPIF77', spec['mpi'].mpif77), + define('MPI_MPIF90', spec['mpi'].mpifc), ]) # Building with Hypre if '+hypre' in spec: args.extend([ - '-DHYPRE_ENABLE=ON', - '-DHYPRE_INCLUDE_DIR=%s' % spec['hypre'].prefix.include, - '-DHYPRE_LIBRARY_DIR=%s' % spec['hypre'].prefix.lib - ]) - else: - args.extend([ - '-DHYPRE_ENABLE=OFF' + define('HYPRE_INCLUDE_DIR', spec['hypre'].prefix.include), + define('HYPRE_LIBRARY_DIR', spec['hypre'].prefix.lib) ]) # Building with KLU if '+klu' in spec: args.extend([ - '-DKLU_ENABLE=ON', - '-DKLU_INCLUDE_DIR=%s' % spec['suite-sparse'].prefix.include, - '-DKLU_LIBRARY_DIR=%s' % spec['suite-sparse'].prefix.lib - ]) - else: - args.extend([ - '-DKLU_ENABLE=OFF' + define('KLU_INCLUDE_DIR', spec['suite-sparse'].prefix.include), + define('KLU_LIBRARY_DIR', spec['suite-sparse'].prefix.lib) ]) # Building with LAPACK if '+lapack' in spec: + args.append(define('LAPACK_LIBRARIES', + spec['lapack'].libs + spec['blas'].libs)) + + # Building with MAGMA + if '+magma' in spec: args.extend([ - '-DLAPACK_ENABLE=ON', - '-DLAPACK_LIBRARIES=%s' - % (spec['lapack'].libs + spec['blas'].libs).joined(';') - ]) - else: - args.extend([ - '-DLAPACK_ENABLE=OFF' + define('ENABLE_MAGMA', True), + define('MAGMA_DIR', spec['magma'].prefix) ]) + if '+cuda' in spec: + define('SUNDIALS_MAGMA_BACKENDS', 'CUDA') + if '+rocm' in spec: + define('SUNDIALS_MAGMA_BACKENDS', 'HIP') # Building with PETSc if '+petsc' in spec: - args.extend([ - '-DPETSC_ENABLE=ON', - # PETSC_DIR was added in 5.0.0 - '-DPETSC_DIR=%s' % spec['petsc'].prefix, - # The following options were removed 5.0.0, but we keep - # them here for versions < 5.0.0. - '-DPETSC_INCLUDE_DIR=%s' % spec['petsc'].prefix.include, - '-DPETSC_LIBRARY_DIR=%s' % spec['petsc'].prefix.lib - ]) - else: - args.extend([ - '-DPETSC_ENABLE=OFF' - ]) + if spec.version >= Version('5'): + args.append(define('PETSC_DIR', spec['petsc'].prefix)) + else: + args.extend([ + define('PETSC_INCLUDE_DIR', spec['petsc'].prefix.include), + define('PETSC_LIBRARY_DIR', spec['petsc'].prefix.lib), + ]) # Building with RAJA if '+raja' in spec: - args.extend([ - '-DRAJA_ENABLE=ON', - '-DRAJA_DIR=%s' % spec['raja'].prefix - ]) - else: - args.extend([ - '-DRAJA_ENABLE=OFF' - ]) + args.append(define('RAJA_DIR', spec['raja'].prefix)) # Building with SuperLU_MT if '+superlu-mt' in spec: - if spec.satisfies('@3.0.0:'): + if spec.satisfies('@3:'): args.extend([ - '-DBLAS_ENABLE=ON', - '-DBLAS_LIBRARIES=%s' % spec['blas'].libs + define('BLAS_ENABLE', True), + define('BLAS_LIBRARIES', spec['blas'].libs), ]) args.extend([ - '-DSUPERLUMT_ENABLE=ON', - '-DSUPERLUMT_INCLUDE_DIR=%s' - % spec['superlu-mt'].prefix.include, - '-DSUPERLUMT_LIBRARY_DIR=%s' - % spec['superlu-mt'].prefix.lib - ]) - if spec.satisfies('^superlu-mt+openmp'): - args.append('-DSUPERLUMT_THREAD_TYPE=OpenMP') - else: - args.append('-DSUPERLUMT_THREAD_TYPE=Pthread') - else: - args.extend([ - '-DSUPERLUMT_ENABLE=OFF' + define('SUPERLUMT_INCLUDE_DIR', spec['superlu-mt'].prefix.include), + define('SUPERLUMT_LIBRARY_DIR', spec['superlu-mt'].prefix.lib), + define('SUPERLUMT_THREAD_TYPE', + 'OpenMP' if '^superlu-mt+openmp' in spec else 'Pthread'), ]) # Building with SuperLU_DIST if '+superlu-dist' in spec: args.extend([ - '-DOPENMP_ENABLE=%s' - % on_off('^superlu-dist+openmp'), - '-DSUPERLUDIST_ENABLE=ON', - '-DSUPERLUDIST_INCLUDE_DIR=%s' - % spec['superlu-dist'].prefix.include, - '-DSUPERLUDIST_LIBRARY_DIR=%s' - % spec['superlu-dist'].prefix.lib, - '-DSUPERLUDIST_LIBRARIES=%s' - % spec['blas'].libs.joined(';'), - '-DSUPERLUDIST_OpenMP=%s' - % on_off('^superlu-dist+openmp') - ]) - else: - args.extend([ - '-DSUPERLUDIST_ENABLE=OFF' + define('OPENMP_ENABLE', '^superlu-dist+openmp' in spec), + define('SUPERLUDIST_INCLUDE_DIR', spec['superlu-dist'].prefix.include), + define('SUPERLUDIST_LIBRARY_DIR', spec['superlu-dist'].prefix.lib), + define('SUPERLUDIST_LIBRARIES', spec['blas'].libs), + define('SUPERLUDIST_OpenMP', '^superlu-dist+openmp' in spec), ]) # Building with Trilinos if '+trilinos' in spec: - args.extend([ - '-DTrilinos_ENABLE=ON', - '-DTrilinos_DIR=%s' - % spec['trilinos'].prefix - ]) - else: - args.extend([ - '-DTrilinos_ENABLE=OFF' - ]) + args.append(define('Trilinos_DIR', spec['trilinos'].prefix)) # Examples - if spec.satisfies('@3.0.0:'): + if spec.satisfies('@3:'): args.extend([ - self.define_from_variant('EXAMPLES_ENABLE_C', 'examples'), - self.define_from_variant('EXAMPLES_ENABLE_CXX', 'examples'), - '-DEXAMPLES_ENABLE_CUDA=%s' % on_off('+examples+cuda'), - '-DEXAMPLES_ENABLE_F77=%s' % on_off('+examples+fcmix'), - '-DEXAMPLES_ENABLE_F90=%s' % on_off('+examples+fcmix'), - '-DEXAMPLES_ENABLE_F2003=%s' % on_off('+examples+f2003'), + from_variant('EXAMPLES_ENABLE_C', 'examples'), + from_variant('EXAMPLES_ENABLE_CXX', 'examples'), + define('EXAMPLES_ENABLE_CUDA', '+examples+cuda' in spec), + define('EXAMPLES_ENABLE_F77', '+examples+fcmix' in spec), + define('EXAMPLES_ENABLE_F90', '+examples+fcmix' in spec), + define('EXAMPLES_ENABLE_F2003', '+examples+f2003' in spec), ]) else: args.extend([ - self.define_from_variant('EXAMPLES_ENABLE', 'examples'), - self.define_from_variant('CXX_ENABLE', 'examples'), - '-DF90_ENABLE=%s' % on_off('+examples+fcmix') + from_variant('EXAMPLES_ENABLE', 'examples'), + from_variant('CXX_ENABLE', 'examples'), + define('F90_ENABLE', '+examples+fcmix' in spec), ]) - args.extend([ - '-DEXAMPLES_INSTALL=%s' % on_off('+examples-install') - ]) - return args # ========================================================================== @@ -682,51 +614,91 @@ def test_install(self): with working_dir(self.build_directory): make("test_install") - @run_after('install') - def setup_build_tests(self): - """Copy the build test files after the package is installed to a - relative install test subdirectory for use during `spack test run`.""" - # Now copy the relative files - self.cache_extra_test_sources(self.build_relpath) + @property + def _smoke_tests(self): + # smoke_tests tuple: exe, args, purpose, use cmake (true/false) + smoke_tests = [('nvector/serial/test_nvector_serial', ['10', '0'], + 'Test serial N_Vector', False)] + if '+CVODE' in self.spec: + smoke_tests.append(('cvode/serial/cvAdvDiff_bnd', [], + 'Test CVODE', True)) - # Ensure the path exists since relying on a relative path at the - # same level as the normal stage source path. - mkdirp(self.install_test_root) + if '+cuda' in self.spec: + smoke_tests.append(('nvector/cuda/test_nvector_cuda', ['10', '0', '0'], + 'Test CUDA N_Vector', True)) + if '+CVODE' in self.spec: + smoke_tests.append(('cvode/cuda/cvAdvDiff_kry_cuda', [], + 'Test CVODE with CUDA', True)) + + if '+hip' in self.spec: + smoke_tests.append(('nvector/hip/test_nvector_hip', ['10', '0', '0'], + 'Test HIP N_Vector', True)) + if '+CVODE' in self.spec: + smoke_tests.append(('cvode/hip/cvAdvDiff_kry_hip', [], + 'Test CVODE with HIP', True)) - @property - def build_relpath(self): - """Relative path to the cmake build subdirectory.""" - return join_path('..', self.build_dirname) + if '+sycl' in self.spec: + smoke_tests.append(('nvector/sycl/test_nvector_sycl', ['10', '0', '0'], + 'Test SYCL N_Vector')) + if '+CVODE' in self.spec: + smoke_tests.append(('cvode/sycl/cvAdvDiff_kry_sycl', [], + 'Test CVODE with SYCL', True)) + + return smoke_tests @property - def _extra_tests_path(self): - return join_path(self.install_test_root, self.build_relpath) + def _smoke_tests_path(self): + # examples/smoke-tests are cached for testing + return self.prefix.examples + + # TODO: Replace this method and its 'get' use for cmake path with + # join_path(self.spec['cmake'].prefix.bin, 'cmake') once stand-alone + # tests can access build dependencies through self.spec['cmake']. + def cmake_bin(self, set=True): + """(Hack) Set/get cmake dependency path.""" + filepath = join_path(self.install_test_root, 'cmake_bin_path.txt') + if set: + with open(filepath, 'w') as out_file: + cmake_bin = join_path(self.spec['cmake'].prefix.bin, 'cmake') + out_file.write('{0}\n'.format(cmake_bin)) + elif os.path.isfile(filepath): + with open(filepath, 'r') as in_file: + return in_file.read().strip() - def test(self): - """Run the smoke tests.""" - if '+examples' not in self.spec: - print('Smoke tests were skipped: install with examples enabled') - return + @run_after('install') + def setup_smoke_tests(self): + install_tree(self._smoke_tests_path, + join_path(self.install_test_root, 'testing')) + self.cmake_bin(set=True) + + def build_smoke_tests(self): + cmake_bin = self.cmake_bin(set=False) + + if not cmake_bin: + tty.msg('Skipping sundials test: cmake_bin_path.txt not found') + return + + for smoke_test in self._smoke_tests: + work_dir = join_path(self._smoke_tests_path, os.path.dirname(smoke_test[0])) + with working_dir(work_dir): + if smoke_test[3]: # use cmake + self.run_test(exe=cmake_bin, options=['.']) + self.run_test(exe='make') + + def run_smoke_tests(self): + for smoke_test in self._smoke_tests: + self.run_test(exe=join_path(self._smoke_tests_path, smoke_test[0]), + options=smoke_test[1], status=[0], installed=True, + skip_missing=True, purpose=smoke_test[2]) + + def clean_smoke_tests(self): + for smoke_test in self._smoke_tests: + work_dir = join_path(self._smoke_tests_path, os.path.dirname(smoke_test[0])) + with working_dir(work_dir): + self.run_test(exe='make', options=['clean']) - self.run_test('examples/nvector/serial/test_nvector_serial', - options=['10', '0'], - work_dir=self._extra_tests_path) - if '+cuda' in self.spec: - self.run_test('examples/cvode/cuda/cvAdvDiff_ky_cuda', - work_dir=self._extra_tests_path) - self.run_test('examples/nvector/cuda/test_nvector_cuda', - options=['10', '0', '0'], - work_dir=self._extra_tests_path) - if '+rocm' in self.spec: - self.run_test('examples/cvode/hip/cvAdvDiff_kry_hip', - work_dir=self._extra_tests_path) - self.run_test('examples/nvector/hip/test_nvector_hip', - options=['10', '0', '0'], - work_dir=self._extra_tests_path) - if '+sycl' in self.spec: - self.run_test('examples/cvode/CXX_sycl/cvAdvDiff_kry_sycl', - work_dir=self._extra_tests_path) - self.run_test('examples/nvector/sycl/test_nvector_sycl', - options=['10', '0', '0'], - work_dir=self._extra_tests_path) + def test(self): + self.build_smoke_tests() + self.run_smoke_tests() + self.clean_smoke_tests() return diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 6bf5ea66bb9457..565ec5d3807746 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -78,6 +78,7 @@ def append_from_variant(*args): append_define('CMAKE_INSTALL_BINDIR:STRING', self.prefix.bin) append_define('TPL_BLAS_LIBRARIES', spec['blas'].libs) append_define('TPL_LAPACK_LIBRARIES', spec['lapack'].libs) + append_define('TPL_ENABLE_LAPACKLIB', True) append_define('USE_XSDK_DEFAULTS', True) append_define('TPL_PARMETIS_LIBRARIES', [ spec['parmetis'].libs.ld_flags, diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index cc0e1750a6f420..9527c650b30a4f 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -3,6 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + +from llnl.util import tty + class Superlu(CMakePackage): """SuperLU is a general purpose library for the direct solution of large, @@ -111,7 +115,7 @@ def cmake(self, spec, prefix): def cache_test_sources(self): """Copy the example source files after the package is installed to an install test subdirectory for use during `spack test run`.""" - if self.version == Version('5.2.2'): + if self.spec.satisfies('@5.2.2:'): # Include dir was hardcoded in 5.2.2 filter_file(r'INCLUDEDIR = -I\.\./SRC', 'INCLUDEDIR = -I' + self.prefix.include, @@ -132,9 +136,9 @@ def _generate_make_hdr_for_test(self): 'ARCH = ar', 'ARCHFLAGS = cr', 'RANLIB = {0}'.format('ranlib' if which('ranlib') else 'echo'), - 'CC = {0}'.format(self.compiler.cc), - 'FORTRAN = {0}'.format(self.compiler.fc), - 'LOADER = {0}'.format(self.compiler.cc), + 'CC = {0}'.format(env['CC']), + 'FORTRAN = {0}'.format(env['FC']), + 'LOADER = {0}'.format(env['CC']), 'CFLAGS = -O3 -DNDEBUG -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DAdd_', 'NOOPTS = -O0' ]) @@ -158,20 +162,34 @@ def _generate_make_hdr_for_test(self): 'ARCH = ar', 'ARCHFLAGS = cr', 'RANLIB = {0}'.format('ranlib' if which('ranlib') else 'echo'), - 'CC = {0}'.format(self.compiler.cc), - 'FORTRAN = {0}'.format(self.compiler.fc), - 'LOADER = {0}'.format(self.compiler.cc), + 'CC = {0}'.format(env['CC']), + 'FORTRAN = {0}'.format(env['FC']), + 'LOADER = {0}'.format(env['CC']), 'CFLAGS = -O3 -DNDEBUG -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DAdd_', 'NOOPTS = -O0' ]) return config_args + def run_superlu_test(self, test_dir, exe, args): + if not self.run_test('make', + options=args, + purpose='test: compile {0} example'.format(exe), + work_dir=test_dir): + tty.warn('Skipping test: failed to compile example') + return + + if not self.run_test(exe, + purpose='test: run {0} example'.format(exe), + work_dir=test_dir): + tty.warn('Skipping test: failed to run example') + def test(self): config_args = self._generate_make_hdr_for_test() # Write configuration options to make.inc file - make_file_inc = join_path(self.install_test_root, self.make_hdr_file) + make_file_inc = join_path(self.test_suite.current_test_cache_dir, + self.make_hdr_file) with open(make_file_inc, 'w') as inc: for option in config_args: inc.write('{0}\n'.format(option)) @@ -181,9 +199,13 @@ def test(self): args.append('HEADER=' + self.prefix.include) args.append('superlu') - test_dir = join_path(self.install_test_root, self.examples_src_dir) - with working_dir(test_dir, create=False): - make(*args, parallel=False) - self.run_test('./superlu', purpose='Smoke test for superlu', - work_dir='.') - make('clean') + test_dir = join_path(self.test_suite.current_test_cache_dir, + self.examples_src_dir) + exe = 'superlu' + + if not os.path.isfile(join_path(test_dir, '{0}.c'.format(exe))): + tty.warn('Skipping superlu test:' + 'missing file {0}.c'.format(exe)) + return + + self.run_superlu_test(test_dir, exe, args) diff --git a/var/spack/repos/builtin/packages/survey/package.py b/var/spack/repos/builtin/packages/survey/package.py index 3455e4a0e1db9d..be4033eb8c43aa 100644 --- a/var/spack/repos/builtin/packages/survey/package.py +++ b/var/spack/repos/builtin/packages/survey/package.py @@ -28,11 +28,13 @@ class Survey(CMakePackage): """ homepage = "http://www.trenzasynergy.com" - git = "git@gitlab.com:trenza/survey.git" + git = "ssh://git@gitlab.com/trenza/survey.git" maintainers = ['jgalarowicz'] version('master', branch='master') + version('1.0.3', tag='1.0.3') + version('1.0.2', tag='1.0.2') version('1.0.1.1', tag='1.0.1.1') version('1.0.1', tag='1.0.1') version('1.0.0', branch='1.0.0') @@ -40,15 +42,21 @@ class Survey(CMakePackage): variant('mpi', default=False, description="Enable mpi, build MPI data collector") + variant('tls_model', default='implicit', + description='The TLS model to build with', + values=('implicit', 'explicit')) + # must have cmake at 3.12 or greater to find python3 depends_on('cmake@3.12:', type='build') # for collectors - depends_on("libmonitor@2021.04.27+commrank", type=('build', 'link', 'run')) + depends_on("libmonitor@2021.04.27+commrank", type=('build', 'link', 'run'), when='@:1.0.2') + depends_on('libmonitor@2021.11.08+commrank', type=('build', 'link', 'run'), when='@1.0.3:') depends_on("papi@5:", type=('build', 'link', 'run')) depends_on("gotcha@master", type=('build', 'link', 'run')) - depends_on("llvm-openmp@9.0.0", type=('build', 'link', 'run')) + depends_on("llvm-openmp@9.0.0", type=('build', 'link', 'run'), when='@:1.0.2') + depends_on('llvm-openmp@12.0.1', type=('build', 'link', 'run'), when='@1.0.3:') # MPI Installation depends_on("mpi", when="+mpi") @@ -74,11 +82,16 @@ def get_mpi_cmake_options(self, spec): def cmake_args(self): spec = self.spec + if 'tls_model=implicit' in spec: + spack_tls_model = "implicit" + else: + spack_tls_model = "explicit" + # Add in paths for finding package config files that tell us # where to find these packages cmake_args = [ '-DCMAKE_VERBOSE_MAKEFILE=ON', - '-DTLS_MODEL=implicit', + '-DTLS_MODEL=%s' % spack_tls_model, '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, '-DPAPI_DIR=%s' % spec['papi'].prefix, '-DLIBIOMP_DIR=%s' % spec['llvm-openmp'].prefix, diff --git a/var/spack/repos/builtin/packages/swftools/extern.patch b/var/spack/repos/builtin/packages/swftools/extern.patch new file mode 100644 index 00000000000000..012ebc573d069e --- /dev/null +++ b/var/spack/repos/builtin/packages/swftools/extern.patch @@ -0,0 +1,86 @@ +--- lib/as3/registry.h ++++ lib/as3/registry.h +@@ -153,7 +153,6 @@ void registry_use(slotinfo_t*s); + asset_bundle_list_t*registry_getassets(); + + // static multinames +-classinfo_t voidclass; + classinfo_t* registry_getanytype(); + classinfo_t* registry_getarrayclass(); + classinfo_t* registry_getobjectclass(); +--- lib/gfxpoly/poly.h ++++ lib/gfxpoly/poly.h +@@ -18,7 +18,7 @@ typedef struct _point { + int32_t x; + int32_t y; + } point_t; +-type_t point_type; ++extern type_t point_type; + + #define SEGNR(s) ((int)((s)?(s)->nr:-1)) + +--- src/swfc-feedback.c ++++ src/swfc-feedback.c +@@ -24,6 +24,11 @@ + #include + #include "swfc-feedback.h" + ++char* filename; ++int line; ++int column; ++void (*cleanUp)(); ++ + void syntaxerror(char*format, ...) + { + char buf[1024]; +--- src/swfc-feedback.h ++++ src/swfc-feedback.h +@@ -22,10 +22,10 @@ + #ifndef __FEEDBACK_H + #define __FEEDBACK_H + +-char* filename; +-int line; +-int column; +-void (*cleanUp)(); ++extern char* filename; ++extern int line; ++extern int column; ++extern void (*cleanUp)(); + + void syntaxerror(char*format, ...); + void warning(char*format, ...); +--- src/swfc-history.c ++++ src/swfc-history.c +@@ -23,6 +23,12 @@ + #include + #include "swfc-history.h" + ++FILTER* noFilters; ++FILTER_BLUR* noBlur; ++FILTER_BEVEL* noBevel; ++FILTER_DROPSHADOW* noDropshadow; ++FILTER_GRADIENTGLOW* noGradientGlow; ++ + enum + { + T_BEFORE, +--- src/swfc-history.h ++++ src/swfc-history.h +@@ -55,11 +55,11 @@ enum + + #define IF_FIXED_ALIGNMENT 0x0001 + +-FILTER* noFilters; +-FILTER_BLUR* noBlur; +-FILTER_BEVEL* noBevel; +-FILTER_DROPSHADOW* noDropshadow; +-FILTER_GRADIENTGLOW* noGradientGlow; ++extern FILTER* noFilters; ++extern FILTER_BLUR* noBlur; ++extern FILTER_BEVEL* noBevel; ++extern FILTER_DROPSHADOW* noDropshadow; ++extern FILTER_GRADIENTGLOW* noGradientGlow; + + typedef struct _spline + { diff --git a/var/spack/repos/builtin/packages/swftools/package.py b/var/spack/repos/builtin/packages/swftools/package.py index 1fe30de3f82636..dcb12e58e3926a 100644 --- a/var/spack/repos/builtin/packages/swftools/package.py +++ b/var/spack/repos/builtin/packages/swftools/package.py @@ -25,6 +25,12 @@ class Swftools(AutotoolsPackage): sha256='6a995dfd674c5954f5b967e3d45d6845a186872fcaa4223d725902fd4d679f1b', level=0) + # The patches below are needed for swftools to compile on newer GCC + # versions. These are derived from: + # https://aur.archlinux.org/packages/swftools/#comment-839523 + patch('extern.patch', level=0, when='%gcc@10:') + patch('pointer_compare.patch', level=0, when='%gcc@11:') + depends_on('giflib') depends_on('lame') depends_on('poppler') diff --git a/var/spack/repos/builtin/packages/swftools/pointer_compare.patch b/var/spack/repos/builtin/packages/swftools/pointer_compare.patch new file mode 100644 index 00000000000000..4110e66198e9bf --- /dev/null +++ b/var/spack/repos/builtin/packages/swftools/pointer_compare.patch @@ -0,0 +1,14 @@ +--- lib/pdf/xpdf/GlobalParams.cc ++++ lib/pdf/xpdf/GlobalParams.cc +@@ -922,9 +922,9 @@ void GlobalParams::parseFile(GString *fileName, FILE *f) { + char* p = pos1>pos2?pos1:pos2; + int pos = p ? p-cfgFileName : -1; + GString*path = new GString(new GString(cfgFileName), 0, (pos < 0 ? strlen(cfgFileName): pos)); +- if(pos1>=0) ++ if(pos1==0) + path->append('/'); +- else if(pos2>=0) ++ else if(pos2==0) + path->append('\\'); + else + #ifdef WIN32 diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index 2847a77687cf60..c94cd4b61e0b45 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -6,6 +6,7 @@ import sys from spack import * +from spack.pkg.builtin.boost import Boost class Symengine(CMakePackage): @@ -51,6 +52,11 @@ class Symengine(CMakePackage): # NOTE: mpir is a drop-in replacement for gmp # NOTE: [mpc,mpfr,flint,piranha] could also be built against mpir depends_on('boost', when='+boostmp') + + # 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, when='+boostmp') depends_on('gmp', when='~boostmp') depends_on('llvm', when='+llvm') depends_on('mpc', when='+mpc~boostmp') diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py index b5155526a53222..e9748a07d27fa2 100644 --- a/var/spack/repos/builtin/packages/sympol/package.py +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class Sympol(CMakePackage): @@ -17,7 +18,11 @@ class Sympol(CMakePackage): depends_on("cmake@2.6:", type="build") depends_on("bliss") - depends_on("boost") + + # 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("gmp") depends_on("lrslib") diff --git a/var/spack/repos/builtin/packages/talass/package.py b/var/spack/repos/builtin/packages/talass/package.py index 015dcf58224350..426447cf89ec91 100644 --- a/var/spack/repos/builtin/packages/talass/package.py +++ b/var/spack/repos/builtin/packages/talass/package.py @@ -15,7 +15,7 @@ class Talass(CMakePackage): alone.""" homepage = "http://www.cedmav.org/research/project/16-talass.html" - git = "git@bitbucket.org:cedmav/talass.git" + git = "ssh://git@bitbucket.org/cedmav/talass.git" version('2018-10-29', commit='5d459c0dd89e733fa301391908a5b79fe2850ad7') diff --git a/var/spack/repos/builtin/packages/tangram/package.py b/var/spack/repos/builtin/packages/tangram/package.py index 0eecbcdbf1643e..0d0a37b307935e 100644 --- a/var/spack/repos/builtin/packages/tangram/package.py +++ b/var/spack/repos/builtin/packages/tangram/package.py @@ -88,4 +88,4 @@ def cmake_args(self): def check(self): if self.run_tests: with working_dir(self.build_directory): - make("test") + ctest("-j 8") diff --git a/var/spack/repos/builtin/packages/tar/package.py b/var/spack/repos/builtin/packages/tar/package.py index aa559ca9f62d2b..3732a554a3c36e 100644 --- a/var/spack/repos/builtin/packages/tar/package.py +++ b/var/spack/repos/builtin/packages/tar/package.py @@ -17,6 +17,8 @@ class Tar(AutotoolsPackage, GNUMirrorPackage): executables = [r'^tar$'] + tags = ['core-packages'] + version('1.34', sha256='03d908cf5768cfe6b7ad588c921c6ed21acabfb2b79b788d1330453507647aed') version('1.32', sha256='b59549594d91d84ee00c99cf2541a3330fed3a42c440503326dab767f2fbb96c') version('1.31', sha256='b471be6cb68fd13c4878297d856aebd50551646f4e3074906b1a74549c40d5a2') diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 303b6074eb6b69..a3fe579995e583 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -103,7 +103,7 @@ class Tau(Package): depends_on('libdwarf', when='+libdwarf') depends_on('elf', when='+elf') # TAU requires the ELF header support, libiberty and demangle. - depends_on('binutils@:2.33.1+libiberty+headers+plugins', when='+binutils') + depends_on('binutils+libiberty+headers+plugins', when='+binutils') # Build errors with Python 3.9 depends_on('python@2.7:3.8', when='+python') depends_on('libunwind', when='+libunwind') @@ -116,6 +116,7 @@ class Tau(Package): depends_on('rocprofiler-dev', when='+rocprofiler') depends_on('roctracer-dev', when='+roctracer') depends_on('hsa-rocr-dev', when='+rocm') + depends_on('java', type='run') # for paraprof # Elf only required from 2.28.1 on conflicts('+elf', when='@:2.28.0') diff --git a/var/spack/repos/builtin/packages/templight-tools/package.py b/var/spack/repos/builtin/packages/templight-tools/package.py index e028b34ca4c6b5..662a1b57bebbfe 100644 --- a/var/spack/repos/builtin/packages/templight-tools/package.py +++ b/var/spack/repos/builtin/packages/templight-tools/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class TemplightTools(CMakePackage): @@ -16,3 +17,8 @@ class TemplightTools(CMakePackage): depends_on('cmake @2.8.7:', type='build') depends_on('boost @1.48.1: +filesystem +graph +program_options +test') + + # 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) diff --git a/var/spack/repos/builtin/packages/tetgen/package.py b/var/spack/repos/builtin/packages/tetgen/package.py index af326ac6b96e47..efce6140d99175 100644 --- a/var/spack/repos/builtin/packages/tetgen/package.py +++ b/var/spack/repos/builtin/packages/tetgen/package.py @@ -18,12 +18,14 @@ class Tetgen(Package): homepage = "https://wias-berlin.de/software/tetgen/" + version('1.6.0', sha256='87b5e61ebd3a471fc4f2cdd7124c2b11dd6639f4feb1f941a5d2f5110d05ce39', url='http://www.tetgen.org/1.5/src/tetgen1.6.0.tar.gz') + version('1.5.1', sha256='e46a4434a3e7c00044c8f4f167e18b6f4a85be7d22838c8f948ce8cc8c01b850', url='http://www.tetgen.org/1.5/src/tetgen1.5.1.tar.gz', preferred=True) version('1.5.0', sha256='4d114861d5ef2063afd06ef38885ec46822e90e7b4ea38c864f76493451f9cf3', url='http://www.tetgen.org/1.5/src/tetgen1.5.0.tar.gz') version('1.4.3', sha256='952711bb06b7f64fd855eb24c33f08e3faf40bdd54764de10bbe5ed5b0dce034', url='http://www.tetgen.org/files/tetgen1.4.3.tar.gz') variant('pic', default=True, description='Builds the library in pic mode.') variant('debug', default=False, description='Builds the library in debug mode.') - variant('except', default=False, description='Replaces asserts with exceptions for better C++ compatibility.') + variant('except', default=False, description='Replaces asserts with exceptions for better C++ compatibility.', when='@:1.5.0') patch('tetgen-1.5.0-free.patch', when='@1.5.0') diff --git a/var/spack/repos/builtin/packages/texinfo/package.py b/var/spack/repos/builtin/packages/texinfo/package.py index 1dea56ce71a9cd..32ad2ef1e70a08 100644 --- a/var/spack/repos/builtin/packages/texinfo/package.py +++ b/var/spack/repos/builtin/packages/texinfo/package.py @@ -21,6 +21,8 @@ class Texinfo(AutotoolsPackage, GNUMirrorPackage): executables = ['^info$'] + tags = ['build-tools'] + version('6.5', sha256='d34272e4042c46186ddcd66bd5d980c0ca14ff734444686ccf8131f6ec8b1427') version('6.3', sha256='300a6ba4958c2dd4a6d5ce60f0a335daf7e379f5374f276f6ba31a221f02f606') version('6.0', sha256='83d3183290f34e7f958d209d0b20022c6fe9e921eb6fe94c27d988827d4878d2') diff --git a/var/spack/repos/builtin/packages/tfel/package.py b/var/spack/repos/builtin/packages/tfel/package.py index 1f6bb5300a1d8a..8b0959f97f61bf 100644 --- a/var/spack/repos/builtin/packages/tfel/package.py +++ b/var/spack/repos/builtin/packages/tfel/package.py @@ -7,6 +7,7 @@ # 18/12/2018: fix python detection from spack import * +from spack.pkg.builtin.boost import Boost class Tfel(CMakePackage): @@ -134,6 +135,11 @@ class Tfel(CMakePackage): depends_on('boost+python+numpy', when='+python_bindings', type=('build', 'link', 'run')) + # 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, when='+python_bindings') + extends('python', when='+python_bindings') conflicts('%gcc@:7', when='@4:') diff --git a/var/spack/repos/builtin/packages/thepeg/package.py b/var/spack/repos/builtin/packages/thepeg/package.py index 664ae85d1037c3..1e9339d45d2543 100644 --- a/var/spack/repos/builtin/packages/thepeg/package.py +++ b/var/spack/repos/builtin/packages/thepeg/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Thepeg(AutotoolsPackage): @@ -67,10 +68,16 @@ class Thepeg(AutotoolsPackage): depends_on('rivet', when='@2.0.3:') depends_on('boost', when='@2.1.1:') + # 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('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('m4', type='build') + depends_on('zlib') variant('hepmc', default='2', values=('2', '3'), description='HepMC interface to build ') @@ -78,6 +85,7 @@ class Thepeg(AutotoolsPackage): def configure_args(self): args = ['--with-gsl=' + self.spec['gsl'].prefix, '--without-javagui'] + args += ['--with-zlib=' + self.spec['zlib'].prefix] if self.spec.satisfies('@:1.8'): args += ['--with-LHAPDF=' + self.spec['lhapdf'].prefix] diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 044a0d4c52097a..8ad5bb80f46040 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Thrift(Package): @@ -39,6 +40,11 @@ class Thrift(Package): depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('boost@1.53:') + + # 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('bison', type='build') depends_on('flex', type='build') depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/tix/package.py b/var/spack/repos/builtin/packages/tix/package.py index f0d71ae5484a5d..4220df70da21f8 100644 --- a/var/spack/repos/builtin/packages/tix/package.py +++ b/var/spack/repos/builtin/packages/tix/package.py @@ -22,25 +22,25 @@ class Tix(AutotoolsPackage): extends('tcl', type=('build', 'link', 'run')) depends_on('tk', type=('build', 'link', 'run')) - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/panic.patch', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/panic.patch', sha256='1be1a1c7453f6ab8771f90d7e7c0f8959490104752a16a8755bbb7287a841a96', level=0) - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/implicit.patch', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/implicit.patch', sha256='8a2720368c7757896814684147029d8318b9aa3b0914b3f37dd5e8a8603a61d3', level=0) - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/patch-generic-tixGrSort.c.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/patch-generic-tixGrSort.c.diff', sha256='99b33cc307f71bcf9cc6f5a44b588f22956884ce3f1e4c716ad64c79cf9c5f41', level=0) - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/patch-missing-headers.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/patch-missing-headers.diff', sha256='d9f789dcfe5f4c5ee4589a18f9f410cdf162e41d35d00648c1ef37831f4a2b2b', level=0) - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/patch-tk_x11.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/patch-tk_x11.diff', sha256='1e28d8eee1aaa956a00571cf495a4775e72a993958dff1cabfbc5f102e327a6f', level=0) - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/patch-tk_aqua.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/patch-tk_aqua.diff', sha256='41a717f5d95f61b4b8196ca6f14ece8f4764d4ba58fb2e1ae15e3240ee5ac534', level=0, when='platform=darwin') - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tix/files/patch-dyld_variable.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tix/files/patch-dyld_variable.diff', sha256='719eb2e4d8c5d6aae897e5f676cf5ed1a0005c1bd07fd9b18705d81a005f592b', level=0, when='platform=darwin') diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index b613e809be249c..fe4b09a9a54e4e 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -40,10 +40,10 @@ class Tk(AutotoolsPackage, SourceforgePackage): # https://core.tcl-lang.org/tk/tktview/3598664fffffffffffff # https://core.tcl-lang.org/tk/info/8b679f597b1d17ad # https://core.tcl-lang.org/tk/info/997b17c343444e48 - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tk/files/patch-unix-Makefile.in.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tk/files/patch-unix-Makefile.in.diff', sha256='54bba3d2b3550b7e2c636881c1a3acaf6e1eb743f314449a132864ff47fd0010', level=0, when='@:8.6.11 platform=darwin') - patch('https://raw.githubusercontent.com/macports/macports-ports/master/x11/tk/files/patch-dyld_fallback_library_path.diff', + patch('https://raw.githubusercontent.com/macports/macports-ports/v2.7.0-archive/x11/tk/files/patch-dyld_fallback_library_path.diff', sha256='9ce6512f1928db9987986f4d3540207c39429395d5234bd6489ba9d86a6d9c31', level=0, when='platform=darwin') diff --git a/var/spack/repos/builtin/packages/toml11/package.py b/var/spack/repos/builtin/packages/toml11/package.py index cd61c2cea5c9f6..ae55d03e3e991b 100644 --- a/var/spack/repos/builtin/packages/toml11/package.py +++ b/var/spack/repos/builtin/packages/toml11/package.py @@ -12,10 +12,11 @@ class Toml11(CMakePackage): only on C++ standard library.""" homepage = "https://github.com/ToruNiina/toml11" - url = "https://github.com/ToruNiina/toml11/archive/refs/tags/v3.7.0.tar.gz" + url = "https://github.com/ToruNiina/toml11/archive/refs/tags/v3.7.1.tar.gz" maintainers = ['ashermancinelli', 'ToruNiina'] + version('3.7.1', sha256='afeaa9aa0416d4b6b2cd3897ca55d9317084103077b32a852247d8efd4cf6068') version('3.7.0', sha256='a0b6bec77c0e418eea7d270a4437510884f2fe8f61e7ab121729624f04c4b58e') version('3.6.1', sha256='ca4c390ed8da0d77ae6eca30e70ab0bf5cc92adfc1bc2f71a2066bc5656d8d96') version('3.6.0', sha256='39e8d651db346ae8c7e3b39d6338a37232b9af3bba36ade45b241bf105c2226c') diff --git a/var/spack/repos/builtin/packages/tophat/package.py b/var/spack/repos/builtin/packages/tophat/package.py index 4b933f55e38eb6..5d5c3542a5229e 100644 --- a/var/spack/repos/builtin/packages/tophat/package.py +++ b/var/spack/repos/builtin/packages/tophat/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Tophat(AutotoolsPackage): @@ -25,6 +26,11 @@ class Tophat(AutotoolsPackage): depends_on('m4', type='build') depends_on('boost@1.47:') + + # 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('bowtie2', type='run') parallel = False diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 9e990c6b496048..c57d44421731b3 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -10,6 +10,7 @@ from spack.build_environment import dso_suffix from spack.error import NoHeadersError from spack.operating_systems.mac_os import macos_version +from spack.pkg.builtin.boost import Boost from spack.pkg.builtin.kokkos import Kokkos # Trilinos is complicated to build, as an inspiration a couple of links to @@ -63,7 +64,8 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # Build options variant('complex', default=False, description='Enable complex numbers in Trilinos') - variant('cuda_rdc', default=False, description='turn on RDC for CUDA build') + variant('cuda_rdc', default=False, description='Turn on RDC for CUDA build') + variant('rocm_rdc', default=False, description='Turn on RDC for ROCm build') variant('cxxstd', default='14', values=['11', '14', '17'], multi=False) variant('debug', default=False, description='Enable runtime safety and debug checks') variant('explicit_template_instantiation', default=True, description='Enable explicit template instantiation (ETI)') @@ -76,7 +78,8 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): variant('openmp', default=False, description='Enable OpenMP') variant('python', default=False, description='Build PyTrilinos wrappers') variant('shared', default=True, description='Enables the build of shared libraries') - variant('wrapper', default=False, description="Use nvcc-wrapper for CUDA build") + variant('uvm', default=False, when='@13.2: +cuda', description='Turn on UVM for CUDA build') + variant('wrapper', default=False, description='Use nvcc-wrapper for CUDA build') # TPLs (alphabet order) variant('adios2', default=False, description='Enable ADIOS2') @@ -112,18 +115,20 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): variant('minitensor', default=False, description='Compile with MiniTensor') variant('muelu', default=True, description='Compile with Muelu') variant('nox', default=False, description='Compile with NOX') + variant('panzer', default=False, description='Compile with Panzer') variant('piro', default=False, description='Compile with Piro') variant('phalanx', default=False, description='Compile with Phalanx') variant('rol', default=False, description='Compile with ROL') variant('rythmos', default=False, description='Compile with Rythmos') - variant('sacado', default=True, description='Compile with Sacado') - variant('stk', default=False, description='Compile with STK') + variant('sacado', default=True, description='Compile with Sacado') + variant('stk', default=False, description='Compile with STK') variant('shards', default=False, description='Compile with Shards') variant('shylu', default=False, description='Compile with ShyLU') variant('stokhos', default=False, description='Compile with Stokhos') variant('stratimikos', default=False, description='Compile with Stratimikos') variant('teko', default=False, description='Compile with Teko') variant('tempus', default=False, description='Compile with Tempus') + variant('thyra', default=False, description='Compile with Thyra') variant('tpetra', default=True, description='Compile with Tpetra') variant('trilinoscouplings', default=False, description='Compile with TrilinosCouplings') variant('zoltan', default=False, description='Compile with Zoltan') @@ -191,6 +196,9 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): with when('+teko'): conflicts('~stratimikos') conflicts('@:12 gotype=long') + with when('+piro'): + conflicts('~stratimikos') + conflicts('~nox') # Tpetra stack with when('~kokkos'): @@ -221,7 +229,26 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): conflicts('~mpi') conflicts('~stk') + # Panzer is not gen-2 library + with when('+panzer'): + conflicts('~intrepid2') + conflicts('~mpi') + conflicts('~phalanx') + conflicts('~sacado') + conflicts('~tpetra') + conflicts('~thyra') + conflicts('~zoltan') + conflicts('~nox') + conflicts('~rythmos') + conflicts('~piro') + conflicts('~stratimikos') + conflicts('~stk') + conflicts('~ml') + conflicts('~ifpack') + conflicts('~aztec') + # Known requirements from tribits dependencies + conflicts('~thyra', when='+stratimikos') conflicts('+aztec', when='~fortran') conflicts('+basker', when='~amesos2') conflicts('+ifpack2', when='~belos') @@ -276,6 +303,7 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): msg='trilinos~wrapper+cuda can only be built with the ' 'Clang compiler') conflicts('+cuda_rdc', when='~cuda') + conflicts('+rocm_rdc', when='~rocm') conflicts('+wrapper', when='~cuda') conflicts('+wrapper', when='%clang') @@ -283,20 +311,28 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): conflicts('@:13.0.1 +cuda', when='^cuda@11:') # Build hangs with CUDA 11.6 (see #28439) conflicts('+cuda +stokhos', when='^cuda@11.6:') + # Cuda UVM must be enabled prior to 13.2 + # See https://github.com/spack/spack/issues/28869 + conflicts('~uvm', when='@:13.1 +cuda') # stokhos fails on xl/xl_r conflicts('+stokhos', when='%xl') conflicts('+stokhos', when='%xl_r') - # Fortran mangling fails on Apple M1 (see spack/spack#25900) - conflicts('@:13.0.1 +fortran', when='target=m1') - # ###################### Dependencies ########################## depends_on('adios2', when='+adios2') depends_on('blas') depends_on('boost', when='+boost') + # Need to revisit the requirement of STK + depends_on('boost', when='+stk') + + # depends_on('cgns', when='+exodus') + # 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, when='+boost') depends_on('hdf5+hl', when='+hdf5') depends_on('hypre~internal-superlu~int64', when='+hypre') depends_on('kokkos-nvcc-wrapper', when='+wrapper') @@ -363,15 +399,15 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # avoid calling deprecated functions with CUDA-11 patch('fix_cxx14_cuda11.patch', when='@13.0.0:13.0.1 cxxstd=14 ^cuda@11:') # Allow building with +teko gotype=long - patch('https://github.com/trilinos/Trilinos/commit/b17f20a0b91e0b9fc5b1b0af3c8a34e2a4874f3f.patch', - sha256='dee6c55fe38eb7f6367e1896d6bc7483f6f9ab8fa252503050cc0c68c6340610', + patch('https://github.com/trilinos/Trilinos/commit/b17f20a0b91e0b9fc5b1b0af3c8a34e2a4874f3f.patch?full_index=1', + sha256='063a38f402439fa39fd8d57315a321e6510adcd04aec5400a88e744aaa60bc8e', when='@13.0.0:13.0.1 +teko gotype=long') def flag_handler(self, name, flags): is_cce = self.spec.satisfies('%cce') + spec = self.spec if name == 'cxxflags': - spec = self.spec if '+mumps' in spec: # see https://github.com/trilinos/Trilinos/blob/master/packages/amesos/README-MUMPS flags.append('-DMUMPS_5_0') @@ -382,8 +418,17 @@ def flag_handler(self, name, flags): flags.append('-no-ipo') if '+wrapper' in spec: flags.append('--expt-extended-lambda') - elif name == 'ldflags' and is_cce: - flags.append('-fuse-ld=gold') + elif name == 'ldflags': + if is_cce: + flags.append('-fuse-ld=gold') + if spec.satisfies('platform=linux ~cuda'): + # TriBITS explicitly links libraries against all transitive + # dependencies, leading to O(N^2) library resolution. When + # CUDA is enabled (possibly only with MPI as well) the linker + # flag does not propagate correctly. + flags.append('-Wl,--as-needed') + elif spec.satisfies('+stk +shared platform=darwin'): + flags.append('-Wl,-undefined,dynamic_lookup') if is_cce: return (None, None, flags) @@ -505,7 +550,7 @@ def define_enable(suffix, value=None): define_trilinos_enable('MueLu'), define_trilinos_enable('NOX'), define_trilinos_enable('Pamgen', False), - define_trilinos_enable('Panzer', False), + define_trilinos_enable('Panzer'), define_trilinos_enable('Pike', False), define_trilinos_enable('Piro'), define_trilinos_enable('Phalanx'), @@ -521,11 +566,11 @@ def define_enable(suffix, value=None): define_trilinos_enable('Stratimikos'), define_trilinos_enable('Teko'), define_trilinos_enable('Tempus'), + define_trilinos_enable('Thyra'), define_trilinos_enable('Tpetra'), define_trilinos_enable('TrilinosCouplings'), define_trilinos_enable('Zoltan'), define_trilinos_enable('Zoltan2'), - define_tpl_enable('Cholmod', False), define_from_variant('EpetraExt_BUILD_BTF', 'epetraextbtf'), define_from_variant('EpetraExt_BUILD_EXPERIMENTAL', 'epetraextexperimental'), @@ -575,7 +620,6 @@ def define_enable(suffix, value=None): # Thyra is NOT enabled at this point!" leading to eventual build # errors if using MueLu because `Xpetra_ENABLE_Thyra` is set to # off. - options.append(define_trilinos_enable('Thyra', True)) # Add thyra adapters based on package enables options.extend( @@ -685,6 +729,13 @@ def define_tpl(trilinos_name, spack_name, have_dep): define('PNetCDF_ROOT', spec['parallel-netcdf'].prefix), ]) + options.append(define_tpl_enable('Cholmod', False)) + + if spec.satisfies('platform=darwin'): + # Don't let TriBITS define `libdl` as an absolute path to + # the MacOSX{nn.n}.sdk since that breaks at every xcode update + options.append(define_tpl_enable('DLlib', False)) + # ################# Explicit template instantiation ################# complex_s = spec.variants['complex'].value @@ -734,8 +785,9 @@ def define_tpl(trilinos_name, spack_name, have_dep): else 'OpenMP'), ]) if '+cuda' in spec: + use_uvm = '+uvm' in spec options.extend([ - define_kok_enable('CUDA_UVM', True), + define_kok_enable('CUDA_UVM', use_uvm), define_kok_enable('CUDA_LAMBDA', True), define_kok_enable('CUDA_RELOCATABLE_DEVICE_CODE', 'cuda_rdc') ]) @@ -748,7 +800,8 @@ def define_tpl(trilinos_name, spack_name, have_dep): if '+rocm' in spec: options.extend([ define_kok_enable('ROCM', False), - define_kok_enable('HIP', True) + define_kok_enable('HIP', True), + define_kok_enable('HIP_RELOCATABLE_DEVICE_CODE', 'rocm_rdc') ]) if '+tpetra' in spec: options.append(define('Tpetra_INST_HIP', True)) diff --git a/var/spack/repos/builtin/packages/ucx/package.py b/var/spack/repos/builtin/packages/ucx/package.py index 80a6a57b7db0a5..a7ca871b74a174 100644 --- a/var/spack/repos/builtin/packages/ucx/package.py +++ b/var/spack/repos/builtin/packages/ucx/package.py @@ -17,6 +17,8 @@ class Ucx(AutotoolsPackage, CudaPackage): maintainers = ['hppritcha'] # Current + version('1.12.1', sha256='40b447c8e7da94a253f2828001b2d76021eb4ad39647107d433d62d61e18ae8e') + version('1.12.0', sha256='93e994de2d1a4df32381ea92ba4c98a249010d1720eb0f6110dc72c9a7d25db6') version('1.11.2', sha256='deebf86a5344fc2bd9e55449f88c650c4514928592807c9bc6fe4190e516c6df') version('1.11.1', sha256='29338cad18858517f96b46ff83bdd259a5899e274792cebd269717c660aa86fd') version('1.11.0', sha256='b7189b69fe0e16e3c03784ef674e45687a9c520750bd74a45125c460ede37647') diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py index 29fbaa19c4e224..f67ec62f7b0a5a 100644 --- a/var/spack/repos/builtin/packages/umpire/package.py +++ b/var/spack/repos/builtin/packages/umpire/package.py @@ -56,8 +56,8 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): patch('missing_header_for_numeric_limits.patch', when='@4.1:5.0.1') # export targets when building pre-6.0.0 release with BLT 0.4.0+ - patch('https://github.com/LLNL/Umpire/commit/5773ce9af88952c8d23f9bcdcb2e503ceda40763.patch', - sha256='f5c691752e4833a936bce224bbe0fe884d3afa84c5e5a4a481f59a12840159c9', + patch('https://github.com/LLNL/Umpire/commit/5773ce9af88952c8d23f9bcdcb2e503ceda40763.patch?full_index=1', + sha256='f3b21335ce5cf9c0fecc852a94dfec90fb5703032ac97f9fee104af9408d8899', when='@:5.0.1 ^blt@0.4:') variant('fortran', default=False, description='Build C/Fortran API') @@ -75,7 +75,8 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on('cmake@3.9:', when='+cuda', type='build') depends_on('cmake@:3.20', when='+rocm', type='build') - depends_on('blt@0.4.1:', type='build', when='@6.0.0:') + depends_on('blt@0.5.0:', type='build', when='@6.0.1:') + depends_on('blt@0.4.1', type='build', when='@6.0.0') depends_on('blt@0.4.0:', type='build', when='@4.1.3:5.0.1') depends_on('blt@0.3.6:', type='build', when='@:4.1.2') diff --git a/var/spack/repos/builtin/packages/util-linux-uuid/package.py b/var/spack/repos/builtin/packages/util-linux-uuid/package.py index b9ead2da546d74..38b355a30a1f48 100644 --- a/var/spack/repos/builtin/packages/util-linux-uuid/package.py +++ b/var/spack/repos/builtin/packages/util-linux-uuid/package.py @@ -14,9 +14,12 @@ class UtilLinuxUuid(AutotoolsPackage): list_url = "https://www.kernel.org/pub/linux/utils/util-linux" list_depth = 1 + version('2.37.4', sha256='c8b7b4fa541f974cc32c1c6559d9bfca33651020a456ad6ee5fc9b0cacd00151') version('2.36.2', sha256='f5dbe79057e7d68e1a46fc04083fc558b26a49499b1b3f50e4f4893150970463') version('2.36', sha256='82942cd877a989f6d12d4ce2c757fb67ec53d8c5cd9af0537141ec5f84a2eea3') + conflicts('%gcc@:4', when='@2.37:') + depends_on('pkgconfig', type='build') provides('uuid') diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index 9f664882b2ed9b..9b5dee67019079 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -16,6 +16,7 @@ class UtilLinux(AutotoolsPackage): list_url = "https://www.kernel.org/pub/linux/utils/util-linux" list_depth = 1 + version('2.37.4', sha256='c8b7b4fa541f974cc32c1c6559d9bfca33651020a456ad6ee5fc9b0cacd00151') version('2.37.2', sha256='15db966474e459b33fa390a6b892190a92079a73ca45384cde4c86e6ed265a86') version('2.37.1', sha256='0fe9ee8ee7f157be8abcfc2902ec8de9fe30b39173b84e4c458675cef4709b35') version('2.37', sha256='faa8b46d080faa6f32c57da81eda871e38e1e27ba4e9b61cb2589334671aba50') diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index 3afb6ab80672af..8ffce9ee2d0f4a 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -7,6 +7,7 @@ import sys from spack import * +from spack.pkg.builtin.boost import Boost class Valgrind(AutotoolsPackage, SourcewarePackage): @@ -54,6 +55,11 @@ class Valgrind(AutotoolsPackage, SourcewarePackage): depends_on('mpi', when='+mpi') depends_on('boost', when='+boost') + # 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, when='+boost') + depends_on("autoconf", type='build', when='@develop') depends_on("automake", type='build', when='@develop') depends_on("libtool", type='build', when='@develop') diff --git a/var/spack/repos/builtin/packages/variorum/package.py b/var/spack/repos/builtin/packages/variorum/package.py index 5d189c412d24e4..8fba46ae4a2a0e 100644 --- a/var/spack/repos/builtin/packages/variorum/package.py +++ b/var/spack/repos/builtin/packages/variorum/package.py @@ -54,6 +54,11 @@ def cmake_args(self): cmake_args.append('-DJANSSON_DIR={0}'.format(spec['jansson'].prefix)) + if spec.satisfies('%cce'): + cmake_args.append('-DCMAKE_C_FLAGS=-fcommon') + cmake_args.append('-DCMAKE_CCC_FLAGS=-fcommon') + cmake_args.append('-DCMAKE_Fortran_FLAGS=-ef') + if "+shared" in spec: cmake_args.append("-DBUILD_SHARED_LIBS=ON") else: diff --git a/var/spack/repos/builtin/packages/vdt/CMakeLists.txt.patch b/var/spack/repos/builtin/packages/vdt/CMakeLists.txt.patch deleted file mode 100644 index 84136e1c97a53c..00000000000000 --- a/var/spack/repos/builtin/packages/vdt/CMakeLists.txt.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- spack-src/CMakeLists.txt.bak 2019-02-05 19:20:28.000000000 +0900 -+++ spack-src/CMakeLists.txt 2020-08-17 16:54:33.476417139 +0900 -@@ -51,7 +51,7 @@ - # SIMD and FMA instructions set------------------------------------------------- - if (NEON) - message(STATUS "Using NEON instructions!") -- set(PACKED_INSTR "-mfpu=neon ") -+ set(PACKED_INSTR " ") - else() - if (SSE AND (NOT (AVX OR AVX2) )) - message(STATUS "Using SSE instructions!") diff --git a/var/spack/repos/builtin/packages/vdt/package.py b/var/spack/repos/builtin/packages/vdt/package.py index 4f400b56a42e20..ead55612606757 100644 --- a/var/spack/repos/builtin/packages/vdt/package.py +++ b/var/spack/repos/builtin/packages/vdt/package.py @@ -18,8 +18,6 @@ class Vdt(CMakePackage): version('0.3.7', sha256='713a7e6d76d98f3b2b56b5216e7d5906e30f17865a5c7c889968e9a0b0664949') version('0.3.6', sha256='fb8f6386f2cd1eeb03db43f2b5c83a172107949bb5e5e8d4dfa603660a9757b0') - patch('CMakeLists.txt.patch', when='target=aarch64:') - @property def build_directory(self): d = join_path(self.stage.path, 'spack-build') @@ -28,10 +26,18 @@ def build_directory(self): return d def cmake_args(self): + spec = self.spec + + disable_features = set() + if spec.satisfies('target=aarch64:'): + disable_features.add('neon') + elif spec.satisfies('target=ppc64le:'): + disable_features.add('fma') + options = [] - for simd_feature in ('sse', 'avx', 'avx2', 'fma', 'neon'): - options.append("-D{0}={1}".format( - simd_feature.upper(), - "ON" if simd_feature in self.spec.target else "OFF" + for f in ['sse', 'avx', 'avx2', 'fma', 'neon']: + options.append(self.define( + f.upper(), + f not in disable_features and f in self.spec.target )) return options diff --git a/var/spack/repos/builtin/packages/veccore/package.py b/var/spack/repos/builtin/packages/veccore/package.py index c414472d339963..ab685cfc0f56d0 100644 --- a/var/spack/repos/builtin/packages/veccore/package.py +++ b/var/spack/repos/builtin/packages/veccore/package.py @@ -6,39 +6,27 @@ from spack import * -class Veccore(CMakePackage, CudaPackage): - """SIMD Vectorization Library for VecGeom and GeantV""" +class Veccore(CMakePackage): + """SIMD Vectorization Library for VecGeom and GeantV. + + VecCore is a header-only (interface) library so no cmake arguments are + necessary. + """ homepage = "https://gitlab.cern.ch/VecGeom/VecCore" - url = "https://gitlab.cern.ch/VecGeom/VecCore/-/archive/v0.6.0/VecCore-v0.6.0.tar.gz" - git = "https://gitlab.cern.ch/VecGeom/VecCore.git" + url = "https://github.com/root-project/veccore/archive/refs/tags/v0.8.0.tar.gz" + git = "https://github.com/root-project/veccore.git" maintainers = ['drbenmorgan', 'sethrj'] version('master', branch='master') - # Note: 0.8.0 tag is currently unofficial but it is needed explicitly for - # VecGeom 1.1.18 - version('0.8.0', commit='6038e4732394413b0661fede171c77e75ed9bd71') - version('0.7.0', sha256='8aa97e19c455382f1a3dae07ffa5e49f2982f09e75b25a3f98d7b94cd43d6001') - version('0.6.0', sha256='e7ff874ba2a8201624795cbe11c84634863e4ac7da691a936772d4202ef54413') - version('0.5.2', sha256='0cfaa830b9d10fb9df4ced5208a742623da08520fea5949461fe81637a27db15') - version('0.5.1', sha256='5ef3a8d8692d8f82641aae76b58405b8b3a1539a8f21b23d66a5df8327eeafc4') - version('0.5.0', sha256='aba3e0217c0cd829290c9fe63f1db865838aa25312ae0a09effdcb186f7771be') - version('0.4.2', sha256='4a3bb944bce63dc1dc9757ba53624b822e1aff5ed088d542039a20227ed2b715') - - variant('cxxstd', - default='11', - values=('11', '14', '17'), - multi=False, - description='Use the specified C++ standard when building.') - conflicts('cxxstd=14', when='@:0.5') - conflicts('cxxstd=17', when='@:0.5') - - def cmake_args(self): - define = CMakePackage.define - return [ - define('VC', False), - define('UMESIMD', False), - self.define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'), - self.define_from_variant('CUDA'), - ] + version('0.8.0', sha256='2f8e49f2b609bf15a776026fbec899b3d5d4ba30f033d4fdac4b07a5220a4fd3') + version('0.7.0', sha256='61d9fc4be815c5c98088c2796763d3ed82ba4bad5a69b7892c1c2e7e1e53d311') + version('0.6.0', sha256='db404d745906efec2a76175995e847af9174df5a8da1e5ccdb241c773d7c8df9') + version('0.5.2', sha256='6c8740342bfa1d9c6ef55a19f57b95674a94e5f9ea156e9b329635718b0b4049') + version('0.5.1', sha256='20f4ab8f599b9d12becc3e27e8dbb0f4ec0aa2de958053eb550020a9c95a6d62') + version('0.5.0', sha256='5b52205c1213574fa43d6362b60b0e16239035cf64106f8841d7beb7e32bdd03') + version('0.4.2', sha256='79f418e466c211d0a5ff1d9127a82d84bceefe5321878cd37e77f50bc91f4cc2') + version('0.4.1', sha256='59ffe668c061acde89afb33749f4eb8bab35dd5f6e51f632758794c1a745aabf') + version('0.4.0', sha256='0a38b958c92647c30b5709d17edaf39d241b92b988f1040c0fbe24932b42927e') + version('0.3.2', sha256='d72b03df00f5e94b2d07f78ab3af6d9d956c19e9a1fae07267b48f6fc8d7713f') diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index 8432b4ca90ff8d..ce5c80a970bea0 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -20,6 +20,8 @@ class Vecgeom(CMakePackage, CudaPackage): maintainers = ['drbenmorgan', 'sethrj'] version('master', branch='master') + version('1.1.20', sha256='e1c75e480fc72bca8f8072ea00320878a9ae375eed7401628b15cddd097ed7fd') + version('1.1.19', sha256='4c586b57fd4e30be044366c9be983249c7fa8bec629624523f5f69fd9caaa05b') version('1.1.18', sha256='2780640233a36e0d3c767140417015be1893c1ad695ccc0bd3ee0767bc9fbed8') version('1.1.17', sha256='2e95429b795311a6986320d785bedcd9dace9f8e7b7f6bd778d23a4ff23e0424') version('1.1.16', sha256='2fa636993156d9d06750586e8a1ac1701ae2be62dea07964e2369698ae521d02') @@ -50,10 +52,10 @@ class Vecgeom(CMakePackage, CudaPackage): variant('shared', default=True, description='Build shared libraries') - depends_on('veccore@0.8.0', type=('build', 'link'), when='@1.1.18') - depends_on('veccore@0.5.2:', type=('build', 'link'), when='@1.1.0:') - depends_on('veccore@0.4.2', type=('build', 'link'), when='@:1.0') - depends_on('veccore+cuda', type=('build', 'link'), when='+cuda') + depends_on('veccore') + depends_on('veccore@0.8.0', when='@1.1.18:') + depends_on('veccore@0.5.2:', when='@1.1.0:') + depends_on('veccore@0.4.2', when='@:1.0') conflicts('+cuda', when='@:1.1.5') @@ -61,58 +63,70 @@ class Vecgeom(CMakePackage, CudaPackage): patch('https://gitlab.cern.ch/VecGeom/VecGeom/-/commit/7094dd180ef694f2abb7463cafcedfb8b8ed30a1.diff', sha256='34f1a6899616e40bce33d80a38a9b409f819cbaab07b2e3be7f4ec4bedb52b29', when='@1.1.7 +cuda') + # Fix installed target properties to not propagate flags to nvcc + patch('https://gitlab.cern.ch/VecGeom/VecGeom/-/commit/ac398bd109dd9175e4a898cd4b62571a3cc88252.diff', + sha256='a9ba136d3ed4282ec950069da2199f22beadea27d89a4264d8773ba329e253df', + when='@1.1.18 +cuda ^cuda@:11.4') for std in _cxxstd_values: depends_on('geant4 cxxstd=' + std, when='+geant4 cxxstd=' + std) depends_on('root cxxstd=' + std, when='+root cxxstd=' + std) - depends_on('veccore cxxstd=' + std, when='cxxstd=' + std) depends_on('xerces-c cxxstd=' + std, when='+gdml cxxstd=' + std) def cmake_args(self): - # Possible target options are from the main CMakeLists.txt, assuming + # Possible target args are from the main CMakeLists.txt, assuming # "best" is last - target = self.spec.target - vecgeom_arch = "sse2 sse3 ssse3 sse4.1 sse4.2 avx avx2".split() - for feature in reversed(vecgeom_arch): - if feature.replace('.', '_') in target: - target_instructions = feature - break - else: - # No features available (could be 'generic' arch) - target_instructions = 'empty' + spec = self.spec + + target_instructions = 'empty' + if '~cuda' in spec: + vecgeom_arch = "sse2 sse3 ssse3 sse4.1 sse4.2 avx avx2".split() + for feature in reversed(vecgeom_arch): + if feature.replace('.', '_') in spec.target: + target_instructions = feature + break define = CMakePackage.define - options = [ + args = [ define('BACKEND', 'Scalar'), define('BUILTIN_VECCORE', False), define('NO_SPECIALIZATION', True), define('VECGEOM_VECTOR', target_instructions), self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), self.define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'), - self.define_from_variant('CUDA'), self.define_from_variant('GDML'), self.define_from_variant('GEANT4'), self.define_from_variant('ROOT'), ] + if spec.satisfies('@:1.1.18'): + args.append(self.define_from_variant('CUDA')) + if '+cuda' in spec: + arch = spec.variants['cuda_arch'].value + if len(arch) != 1 or arch[0] == 'none': + raise InstallError("Exactly one cuda_arch must be specified") + args.append(define('CUDA_ARCH', arch[0])) + else: + args.append(self.define_from_variant('VECGEOM_ENABLE_CUDA', 'cuda')) + if '+cuda' in spec: + # This will add an (ignored) empty string if no values are + # selected, otherwise will add a CMake list of arch values + args.append(self.define( + 'CMAKE_CUDA_ARCHITECTURES', spec.variants['cuda_arch'].value + )) + # Set testing flags build_tests = self.run_tests - options.extend([ + args.extend([ define('BUILD_TESTING', build_tests), define('CTEST', build_tests), - define('GDMLTESTING', build_tests and '+gdml' in self.spec), + define('GDMLTESTING', build_tests and '+gdml' in spec), ]) - if '+cuda' in self.spec: - arch = self.spec.variants['cuda_arch'].value - if len(arch) != 1 or arch[0] == 'none': - raise InstallError("Exactly one cuda_arch must be specified") - options.append(define('CUDA_ARCH', arch[0])) - - if self.spec.satisfies("@:0.5.2"): - options.extend([ + if spec.satisfies("@:0.5.2"): + args.extend([ define('USOLIDS', True), define('USOLIDS_VECGEOM', True), ]) - return options + return args diff --git a/var/spack/repos/builtin/packages/vectorclass-version2/package.py b/var/spack/repos/builtin/packages/vectorclass-version2/package.py new file mode 100644 index 00000000000000..00aa8147c9d889 --- /dev/null +++ b/var/spack/repos/builtin/packages/vectorclass-version2/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2022 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 import * + + +class VectorclassVersion2(Package): + """This is a C++ class library for using the Single Instruction Multiple + Data (SIMD) instructions to improve performance on modern microprocessors + with the x86 or x86/64 instruction set on Windows, Linux, and Mac platforms.""" + + homepage = "https://www.agner.org/optimize/#vectorclass" + url = "https://github.com/vectorclass/version2/archive/refs/tags/v2.01.04.tar.gz" + + maintainers = ['haralmha'] + + version('2.01.04', sha256='7885c343b1af9eb940f4debdd7cd19544130a06ed70e0000e1a8471fb9c15118') + + def install(self, spec, prefix): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/veloc/package.py b/var/spack/repos/builtin/packages/veloc/package.py index 890b72b4f48a0e..e4c22deec25b5d 100644 --- a/var/spack/repos/builtin/packages/veloc/package.py +++ b/var/spack/repos/builtin/packages/veloc/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Veloc(CMakePackage): @@ -24,7 +25,10 @@ class Veloc(CMakePackage): version('1.1', sha256='2bbdacf3e0ce4e7c9e360874d8d85b405525bdc7bd992bdb1f1ba49218072160') version('1.0', sha256='d594b73d6549a61fce8e67b8984a17cebc3e766fc520ed1636ae3683cdde77cb') - depends_on('boost') + # 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('libpthread-stubs') depends_on('mpi') depends_on('er') diff --git a/var/spack/repos/builtin/packages/vigra/package.py b/var/spack/repos/builtin/packages/vigra/package.py index e5f026dc1c2915..f2144026223990 100644 --- a/var/spack/repos/builtin/packages/vigra/package.py +++ b/var/spack/repos/builtin/packages/vigra/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Vigra(CMakePackage): @@ -35,6 +36,11 @@ class Vigra(CMakePackage): depends_on('openexr', when='+exr') depends_on('py-numpy', type=('build', 'run'), when='+python') depends_on('boost+python+numpy', when='+python') + + # 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, when='+python') depends_on('py-sphinx', type='build', when='+python') depends_on('doxygen', type='build', when='+cxxdoc') depends_on('python', type='build', when='+cxxdoc') diff --git a/var/spack/repos/builtin/packages/vite/package.py b/var/spack/repos/builtin/packages/vite/package.py new file mode 100644 index 00000000000000..e551ba8aea7231 --- /dev/null +++ b/var/spack/repos/builtin/packages/vite/package.py @@ -0,0 +1,41 @@ +# Copyright 2013-2022 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 import * + + +class Vite(CMakePackage): + """ViTE is a trace explorer. It is a tool to visualize execution + traces in Paje or OTF2 format for debugging and profiling parallel or + distributed applications. + """ + + homepage = "https://solverstack.gitlabpages.inria.fr/vite/" + maintainers = ['trahay'] + git = "https://gitlab.inria.fr/solverstack/vite.git" + + version('master', branch='master') + + depends_on('cmake@3.1:', type='build') + depends_on('qt+opengl') + depends_on('glm') + depends_on('glew') + depends_on('otf2', when='+otf2') + depends_on('tau', when='+tau') + + variant('tau', default=False, description='Support for TAU trace format') + variant('otf2', default=False, description='Support for OTF2 trace format') + + def cmake_args(self): + define = CMakePackage.define + from_variant = self.define_from_variant + args = [ + define("USE_QT5", True), + define("USE_OPENGL", True), + define("USE_VBO", False), + from_variant("VITE_ENABLE_OTF2", "otf2"), + from_variant("VITE_ENABLE_TAU", "tau"), + ] + return args diff --git a/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py b/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py index ca31b9330de4bd..8970e266cb5fff 100644 --- a/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py +++ b/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class VotcaCsgTutorials(CMakePackage): @@ -37,4 +38,8 @@ class VotcaCsgTutorials(CMakePackage): for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6", "1.6.1", "1.6.2", "1.6.3", "1.6.4", "2021", "2021.1", "2021.2", "stable"]: depends_on('votca-csg@%s' % v, when="@%s:%s.0" % (v, v)) - depends_on("boost") + + # 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) diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py index 807023bc519dbc..8e36334b8c9a57 100644 --- a/var/spack/repos/builtin/packages/votca-csg/package.py +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class VotcaCsg(CMakePackage): @@ -38,6 +39,9 @@ class VotcaCsg(CMakePackage): for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6", "1.6.1", "1.6.2", "1.6.3", "1.6.4", "2021", "2021.1", "2021.2", "stable"]: depends_on('votca-tools@%s' % v, when="@%s:%s.0" % (v, v)) - depends_on("boost") + # 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("gromacs~mpi@5.1:2019") depends_on("hdf5~mpi") diff --git a/var/spack/repos/builtin/packages/votca-csgapps/package.py b/var/spack/repos/builtin/packages/votca-csgapps/package.py index 597a8451cc51d9..63a50821765c91 100644 --- a/var/spack/repos/builtin/packages/votca-csgapps/package.py +++ b/var/spack/repos/builtin/packages/votca-csgapps/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class VotcaCsgapps(CMakePackage): @@ -33,4 +34,8 @@ class VotcaCsgapps(CMakePackage): for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6", "1.6.1", "1.6.2", "1.6.3", "1.6.4"]: depends_on('votca-csg@%s' % v, when="@%s:%s.0" % (v, v)) - depends_on("boost") + + # 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) diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py index 06726a37a70d1e..c195dd8e1bc09f 100644 --- a/var/spack/repos/builtin/packages/votca-tools/package.py +++ b/var/spack/repos/builtin/packages/votca-tools/package.py @@ -5,6 +5,7 @@ from spack import * +from spack.pkg.builtin.boost import Boost class VotcaTools(CMakePackage): @@ -35,9 +36,9 @@ class VotcaTools(CMakePackage): version('1.4', sha256='41638122e7e59852af61d391b4ab8c308fd2e16652f768077e13a99d206ec5d3', deprecated=True) # https://github.com/votca/tools/pull/229, fix mkl in exported target - patch("https://github.com/votca/tools/pull/229.patch", sha256="250d0b679e5d3104e3c8d6adf99751b71386c7ed4cbdae1c75408717ef3f401f", when="@1.6:1.6.0+mkl") + patch("https://github.com/votca/tools/pull/229.patch?full_index=1", sha256="2a9ef179904d5057f36a5ce533c002d8f5880dc4b3eba569825f4a7e7f055eb1", when="@1.6:1.6.0+mkl") # https://github.com/votca/tools/pull/361, fix build with newer glibc/gcc, fixed in stable and 2021.1 - patch("https://github.com/votca/tools/commit/6bb7e35ba7d1a31247eafb323be2777ec0439cfe.patch", sha256="3c9fa5ac9cf45c54ac475bcb22350793efaccd6b5154e3d30c24b8aa754fe47b", when="@2021:2021.0") + patch("https://github.com/votca/tools/commit/6bb7e35ba7d1a31247eafb323be2777ec0439cfe.patch?full_index=1", sha256="5a67eaf362755412b9825558bedb53fac3204713effd60c59f14c54eb1ad52b9", when="@2021:2021.0") variant('mkl', default=False, description='Build with MKL support') conflicts('+mkl', when='@1.4:1.5') @@ -47,7 +48,10 @@ class VotcaTools(CMakePackage): depends_on("fftw-api@3") depends_on("gsl", when="@1.4:1.4.9999") depends_on("eigen@3.3:", when="@stable,1.5:") - depends_on("boost") + # 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("sqlite", when="@1.4:1.5") depends_on('mkl', when='+mkl') diff --git a/var/spack/repos/builtin/packages/votca/package.py b/var/spack/repos/builtin/packages/votca/package.py index a93618708c4592..983335774f91b5 100644 --- a/var/spack/repos/builtin/packages/votca/package.py +++ b/var/spack/repos/builtin/packages/votca/package.py @@ -15,7 +15,7 @@ class Votca(CMakePackage): """ homepage = "https://www.votca.org" url = "https://github.com/votca/votca/tarball/v2022-rc.1" - git = "https://github.com/votca/xtp.git" + git = "https://github.com/votca/votca.git" maintainers = ['junghans'] version('master', branch='master') @@ -24,6 +24,7 @@ class Votca(CMakePackage): variant('mkl', default=False, description='Build with MKL support') variant('new-gmx', default=False, description='Build against gromacs>2019 - no tabulated kernels') + variant('xtp', default=True, description='Build xtp parts of votca') conflicts('votca-tools') conflicts('votca-csg') conflicts('votca-xtp') @@ -34,14 +35,17 @@ class Votca(CMakePackage): depends_on("eigen@3.3:") depends_on("boost") depends_on('mkl', when='+mkl') - depends_on("libxc") depends_on("hdf5+cxx~mpi") - depends_on("libint@2.6.0:") - depends_on("libecpint") - depends_on("py-h5py") - depends_on("py-lxml") depends_on("gromacs~mpi@5.1:") depends_on("gromacs~mpi@5.1:2019", when="~new-gmx") + + with when('+xtp'): + depends_on("libxc") + depends_on("libint@2.6.0:") + depends_on("libecpint") + depends_on("py-h5py") + depends_on("py-lxml") + depends_on('lammps', type='test') depends_on('py-espresso', type='test') depends_on('py-pytest', type='test') @@ -49,7 +53,7 @@ class Votca(CMakePackage): def cmake_args(self): args = [ '-DINSTALL_RC_FILES=OFF', - '-DBUILD_XTP=ON', + self.define_from_variant('BUILD_XTP', 'xtp'), '-DBUILD_CSGAPPS=ON', ] diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index f8f55712ed3277..2f390651974020 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -61,7 +61,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): # Device variants # CudaPackage provides cuda variant # ROCmPackage provides rocm variant - variant("kokkos", default=False, description="build using Kokkos backend") + variant("kokkos", default=False, when='@1.6:', description="build using Kokkos backend") variant("cuda_native", default=True, description="build using native cuda backend", when="+cuda") variant("openmp", default=(sys.platform != 'darwin'), description="build openmp support") variant("tbb", default=(sys.platform == 'darwin'), description="build TBB support") @@ -94,10 +94,17 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): depends_on("rocm-cmake@3.7:", when="+rocm") depends_on("hip@3.7:", when="+rocm") + # The rocm variant is only valid options for >= 1.7. It would be better if + # this could be expressed as a when clause to disable the rocm variant, + # but that is not currently possible since when clauses are stacked, + # not overwritten. + conflicts('+rocm', when='@:1.6') conflicts("+rocm", when="+cuda") conflicts("+rocm", when="~kokkos", msg="VTK-m does not support HIP without Kokkos") - conflicts("+shared", when="+cuda_native") + # 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") conflicts("+cuda", when="cuda_arch=none", msg="vtk-m +cuda requires that cuda_arch be set") diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index 9f064e2ded5bc8..5d34c11d76ecb8 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -8,6 +8,7 @@ import sys from spack import * +from spack.pkg.builtin.boost import Boost class Vtk(CMakePackage): @@ -99,6 +100,11 @@ class Vtk(CMakePackage): depends_on('boost', when='+xdmf') depends_on('boost+mpi', when='+xdmf +mpi') + + # 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, when='+xdmf') depends_on('ffmpeg', when='+ffmpeg') depends_on('mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/warpx/package.py b/var/spack/repos/builtin/packages/warpx/package.py index ff4b55b9c5748f..fa98176d33bab6 100644 --- a/var/spack/repos/builtin/packages/warpx/package.py +++ b/var/spack/repos/builtin/packages/warpx/package.py @@ -17,14 +17,15 @@ class Warpx(CMakePackage): """ homepage = "https://ecp-warpx.github.io" - url = "https://github.com/ECP-WarpX/WarpX/archive/refs/tags/22.01.tar.gz" + url = "https://github.com/ECP-WarpX/WarpX/archive/refs/tags/22.03.tar.gz" git = "https://github.com/ECP-WarpX/WarpX.git" maintainers = ['ax3l', 'dpgrote', 'MaxThevenet', 'RemiLehe'] - tags = ['e4s'] + tags = ['e4s', 'ecp'] # NOTE: if you update the versions here, also see py-warpx version('develop', branch='development') + version('22.03', sha256='ddbef760c8000f2f827dfb097ca3359e7aecbea8766bec5c3a91ee28d3641564') version('22.02', sha256='d74b593d6f396e037970c5fbe10c2e5d71d557a99c97d40e4255226bc6c26e42') version('22.01', sha256='e465ffadabb7dc360c63c4d3862dc08082b5b0e77923d3fb05570408748b0d28') # 22.01+ requires C++17 or newer diff --git a/var/spack/repos/builtin/packages/wcs/package.py b/var/spack/repos/builtin/packages/wcs/package.py index 682abc8942dec4..d3b79c80439fae 100644 --- a/var/spack/repos/builtin/packages/wcs/package.py +++ b/var/spack/repos/builtin/packages/wcs/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Wcs(CMakePackage): @@ -17,6 +18,11 @@ class Wcs(CMakePackage): version('develop', branch='devel') depends_on('boost+graph+filesystem+regex+system') + + # 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('sbml@5.18.0:+cpp') depends_on('cmake@3.12:', type='build') depends_on('cereal', type='build') diff --git a/var/spack/repos/builtin/packages/wonton/package.py b/var/spack/repos/builtin/packages/wonton/package.py index 9ea901317133b6..a44121eee1a4ef 100644 --- a/var/spack/repos/builtin/packages/wonton/package.py +++ b/var/spack/repos/builtin/packages/wonton/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Wonton(CMakePackage): @@ -21,6 +22,7 @@ class Wonton(CMakePackage): maintainers = ['raovgarimella'] + version('1.3.2', sha256='a03f00cd95290c2dbe8724d430de19537ea644b75161614ed4ac918376fcf64d') version('1.2.11', sha256='613436c799b392a99355db1cbf1062f1da39f3287eed665a5cd43bb65364d926') version('1.2.10', sha256='c5c2c99f040f1fa5a8da21ac5ccbbc5b226d1fd43ce3eb14c76d211601b65a72') version('1.2.1', sha256='4f00513d1abe86f256214d2b5171b1575b2cd464df8609307c24cbc4c595c305') @@ -49,15 +51,18 @@ class Wonton(CMakePackage): depends_on('mpi', when='+mpi') depends_on('flecsi', when='+flecsi') + depends_on('jali@1.1.6', when='@1.3.2: +jali') depends_on('jali +mstk', when='+jali') depends_on('mpi', when='+jali') - # We need boost only when no thrust option - depends_on('boost', when='~thrust') - # NVidia thrust library depends_on('thrust@1.8.3', when='+thrust') + # 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, when='@:1.2.10 ~thrust') + # CUDA library depends_on('cuda', when='+cuda') @@ -130,4 +135,4 @@ def cmake_args(self): def check(self): if self.run_tests: with working_dir(self.build_directory): - make("test") + ctest("-j 8") diff --git a/var/spack/repos/builtin/packages/wps/package.py b/var/spack/repos/builtin/packages/wps/package.py index c703327c48c953..71fbc8170bce35 100644 --- a/var/spack/repos/builtin/packages/wps/package.py +++ b/var/spack/repos/builtin/packages/wps/package.py @@ -17,6 +17,8 @@ class Wps(Package): url = "https://github.com/wrf-model/WPS/archive/v4.2.tar.gz" maintainers = ['MichaelLaufer'] + version('4.3.1', sha256='db6da44a2ca68cc289e98ab388a53c27283eb4ed8e92edee268466543fdedb0e') + version('4.3', sha256='1913cb24de549f029d65635feea27f3304a8f42ec025954a0887651fc89d1e9e') version('4.2', sha256='3e175d033355d3e7638be75bc7c0bc0de6da299ebd175a9bbc1b7a121acd0168') # Serial variant recommended in WRF/WPS docs @@ -24,10 +26,12 @@ class Wps(Package): values=('serial', 'serial_NO_GRIB2', 'dmpar', 'dmpar_NO_GRIB2')) # These patches deal with netcdf & netcdf-fortran being two diff things - patch('patches/4.2/arch.Config.pl.patch', when='@4.2') + patch('patches/4.2/arch.Config.pl.patch', when='@4.2:') patch('patches/4.2/arch.configure.defaults.patch', when='@4.2') - patch('patches/4.2/configure.patch', when='@4.2') - patch('patches/4.2/preamble.patch', when='@4.2') + patch('patches/4.2/configure.patch', when='@4.2:') + patch('patches/4.2/preamble.patch', when='@4.2:') + patch('patches/4.3/arch.configure.defaults.patch', when='@4.3:4.3.0') + patch('patches/4.3.1/arch.configure.defaults.patch', when='@4.3.1') # According to: # http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.0/users_guide_chap2.html#_Required_Compilers_and_1 diff --git a/var/spack/repos/builtin/packages/wps/patches/4.3.1/arch.configure.defaults.patch b/var/spack/repos/builtin/packages/wps/patches/4.3.1/arch.configure.defaults.patch new file mode 100644 index 00000000000000..4bb4acbb47f136 --- /dev/null +++ b/var/spack/repos/builtin/packages/wps/patches/4.3.1/arch.configure.defaults.patch @@ -0,0 +1,354 @@ +--- a/arch/configure.defaults 2022-03-11 20:25:56.745017753 +0000 ++++ b/arch/configure.defaults 2022-03-11 20:24:12.548778719 +0000 +@@ -11,8 +11,8 @@ + CC = mpicc + SCC = xlc_r + LD = $(FC) +-FFLAGS = -qfree=f90 -qufmt=be +-F77FLAGS = -qfixed -qufmt=be ++FFLAGS = $(FCFLAGS) -qfree=f90 -qufmt=be ++F77FLAGS = $(FCFLAGS) -qfixed -qufmt=be + FNGFLAGS = $(FFLAGS) + LDFLAGS = + CFLAGS = +@@ -32,8 +32,8 @@ + CC = mpicc + SCC = pgcc + LD = $(FC) +-FFLAGS = -Mfree -byteswapio +-F77FLAGS = -Mfixed -byteswapio ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio + FNGFLAGS = $(FFLAGS) + LDFLAGS = + CFLAGS = +@@ -56,8 +56,8 @@ + SFC = blrts_xlf90 + CC = blrts_xlc + LD = $(FC) +-FFLAGS = -qfree=f90 $(MPI_INC) +-F77FLAGS = -qfixed $(MPI_INC) ++FFLAGS = $(FCFLAGS) -qfree=f90 $(MPI_INC) ++F77FLAGS = $(FCFLAGS) -qfixed $(MPI_INC) + FNGFLAGS = $(FFLAGS) + LDFLAGS = + SCC = cc +@@ -85,8 +85,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O +-F77FLAGS = -Mfixed -byteswapio -O ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -109,8 +109,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -133,8 +133,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fendian=big +-F77FLAGS = -ffixed-form -O -fendian=big ++FFLAGS = $(FCFLAGS) -ffree-form -O -fendian=big ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fendian=big + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -157,8 +157,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCCOMPAT = CONFIGURE_COMPAT_FLAGS + FCSUFFIX = + FNGFLAGS = $(FFLAGS) +@@ -181,8 +181,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCCOMPAT = CONFIGURE_COMPAT_FLAGS + FCSUFFIX = + FNGFLAGS = $(FFLAGS) +@@ -207,8 +207,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O +-F77FLAGS = -Mfixed -byteswapio -O ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -233,8 +233,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O +-F77FLAGS = -Mfixed -byteswapio -O ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -L$(MPI_ROOT)/lib -lmpi +@@ -257,8 +257,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -freeform -fno-second-underscore -byteswapio -O +-F77FLAGS = -byteswapio -fno-second-underscore -O ++FFLAGS = $(FCFLAGS) -freeform -fno-second-underscore -byteswapio -O ++F77FLAGS = $(FCFLAGS) -byteswapio -fno-second-underscore -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -281,8 +281,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -305,8 +305,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -L$(MPI_ROOT)/lib -lmpi +@@ -329,8 +329,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -353,8 +353,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O2 +-F77FLAGS = -Mfixed -byteswapio -O2 ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O2 ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O2 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -378,8 +378,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O2 +-F77FLAGS = -Mfixed -byteswapio -O2 ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O2 ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O2 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -403,8 +403,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -427,8 +427,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -g -fendian=big +-F77FLAGS = -ffixed-form -g -fendian=big ++FFLAGS = $(FCFLAGS) -ffree-form -g -fendian=big ++F77FLAGS = $(FCFLAGS) -ffixed-form -g -fendian=big + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -452,8 +452,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCCOMPAT = CONFIGURE_COMPAT_FLAGS + FCSUFFIX = + FNGFLAGS = $(FFLAGS) +@@ -478,8 +478,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCCOMPAT = CONFIGURE_COMPAT_FLAGS + FCSUFFIX = + FNGFLAGS = $(FFLAGS) +@@ -509,8 +509,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -qfree +-F77FLAGS = -qfixed ++FFLAGS = $(FCFLAGS) -qfree ++F77FLAGS = $(FCFLAGS) -qfixed + FCSUFFIX = + FNGFLAGS = $(FFLAGS) -qextname + LDFLAGS = -Wl,-stack_size,10000000,-stack_addr,0xc000000 +@@ -535,8 +535,8 @@ + SCC = gcc-3.3 + DM_FC = mpif90 -f90=$(SFC) + DM_CC = mpicc -cc=$(SCC) +-FFLAGS = -qfree +-F77FLAGS = -qfixed ++FFLAGS = $(FCFLAGS) -qfree ++F77FLAGS = $(FCFLAGS) -qfixed + FNGFLAGS = $(FFLAGS) -qextname + LDFLAGS = -Wl,-stack_size,10000000,-stack_addr,0xc0000000 -L/usr/lib -lSystemStubs + FC = CONFIGURE_FC +@@ -559,8 +559,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -g -fno-second-underscore +-F77FLAGS = -ffixed-form -g -fno-second-underscore ++FFLAGS = $(FCFLAGS) -ffree-form -g -fno-second-underscore ++F77FLAGS = $(FCFLAGS) -ffixed-form -g -fno-second-underscore + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -588,8 +588,8 @@ + CC = CONFIGURE_CC + LD = $(FC) + AR = ar +-FFLAGS = -qfree=f90 +-F77FLAGS = -qfixed ++FFLAGS = $(FCFLAGS) -qfree=f90 ++F77FLAGS = $(FCFLAGS) -qfixed + FCSUFFIX = -qsuffix=f=f90 + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -611,8 +611,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_FC + LD = $(FC) +-FFLAGS = -free -convert big_endian +-F77FLAGS = -convert big_endian ++FFLAGS = $(FCFLAGS) -free -convert big_endian ++F77FLAGS = $(FCFLAGS) -convert big_endian + FNGFLAGS = $(FFLAGS) + LDFLAGS = + CFLAGS = +@@ -633,8 +633,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -g -fno-second-underscore +-F77FLAGS = -ffixed-form -g -fno-second-underscore ++FFLAGS = $(FCFLAGS) -ffree-form -g -fno-second-underscore ++F77FLAGS = $(FCFLAGS) -ffixed-form -g -fno-second-underscore + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -663,8 +663,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -g +-F77FLAGS = -Mfixed -g ++FFLAGS = $(FCFLAGS) -Mfree -g ++F77FLAGS = $(FCFLAGS) -Mfixed -g + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -686,8 +686,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -freeform -64 +-F77FLAGS = -64 ++FFLAGS = $(FCFLAGS) -freeform -64 ++F77FLAGS = $(FCFLAGS) -64 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -64 +@@ -716,8 +716,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = + LDFLAGS = +@@ -740,8 +740,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -free +-F77FLAGS = ++FFLAGS = $(FCFLAGS) -free ++F77FLAGS = $(FCFLAGS) + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -763,8 +763,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -N255 -f free -h byteswapio +-F77FLAGS = -N255 -f fixed -h byteswapio ++FFLAGS = $(FCFLAGS) -N255 -f free -h byteswapio ++F77FLAGS = $(FCFLAGS) -N255 -f fixed -h byteswapio + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -787,8 +787,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = diff --git a/var/spack/repos/builtin/packages/wps/patches/4.3/arch.configure.defaults.patch b/var/spack/repos/builtin/packages/wps/patches/4.3/arch.configure.defaults.patch new file mode 100644 index 00000000000000..d3fc8be06502d6 --- /dev/null +++ b/var/spack/repos/builtin/packages/wps/patches/4.3/arch.configure.defaults.patch @@ -0,0 +1,354 @@ +--- a/arch/configure.defaults 2022-03-11 19:50:15.022465976 +0000 ++++ b/arch/configure.defaults 2022-03-11 19:54:23.353498695 +0000 +@@ -11,8 +11,8 @@ + CC = mpicc + SCC = xlc_r + LD = $(FC) +-FFLAGS = -qfree=f90 -qufmt=be +-F77FLAGS = -qfixed -qufmt=be ++FFLAGS = $(FCFLAGS) -qfree=f90 -qufmt=be ++F77FLAGS = $(FCFLAGS) -qfixed -qufmt=be + FNGFLAGS = $(FFLAGS) + LDFLAGS = + CFLAGS = +@@ -32,8 +32,8 @@ + CC = mpicc + SCC = pgcc + LD = $(FC) +-FFLAGS = -Mfree -byteswapio +-F77FLAGS = -Mfixed -byteswapio ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio + FNGFLAGS = $(FFLAGS) + LDFLAGS = + CFLAGS = +@@ -56,8 +56,8 @@ + SFC = blrts_xlf90 + CC = blrts_xlc + LD = $(FC) +-FFLAGS = -qfree=f90 $(MPI_INC) +-F77FLAGS = -qfixed $(MPI_INC) ++FFLAGS = $(FCFLAGS) -qfree=f90 $(MPI_INC) ++F77FLAGS = $(FCFLAGS) -qfixed $(MPI_INC) + FNGFLAGS = $(FFLAGS) + LDFLAGS = + SCC = cc +@@ -85,8 +85,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O +-F77FLAGS = -Mfixed -byteswapio -O ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -109,8 +109,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -133,8 +133,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fendian=big +-F77FLAGS = -ffixed-form -O -fendian=big ++FFLAGS = $(FCFLAGS) -ffree-form -O -fendian=big ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fendian=big + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -157,8 +157,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -180,8 +180,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -205,8 +205,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O +-F77FLAGS = -Mfixed -byteswapio -O ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -231,8 +231,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O +-F77FLAGS = -Mfixed -byteswapio -O ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -L$(MPI_ROOT)/lib -lmpi +@@ -255,8 +255,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -freeform -fno-second-underscore -byteswapio -O +-F77FLAGS = -byteswapio -fno-second-underscore -O ++FFLAGS = $(FCFLAGS) -freeform -fno-second-underscore -byteswapio -O ++F77FLAGS = $(FCFLAGS) -byteswapio -fno-second-underscore -O + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -279,8 +279,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -303,8 +303,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -L$(MPI_ROOT)/lib -lmpi +@@ -327,8 +327,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -351,8 +351,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O2 +-F77FLAGS = -Mfixed -byteswapio -O2 ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O2 ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O2 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -376,8 +376,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -byteswapio -O2 +-F77FLAGS = -Mfixed -byteswapio -O2 ++FFLAGS = $(FCFLAGS) -Mfree -byteswapio -O2 ++F77FLAGS = $(FCFLAGS) -Mfixed -byteswapio -O2 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -401,8 +401,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -425,8 +425,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -g -fendian=big +-F77FLAGS = -ffixed-form -g -fendian=big ++FFLAGS = $(FCFLAGS) -ffree-form -g -fendian=big ++F77FLAGS = $(FCFLAGS) -ffixed-form -g -fendian=big + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -450,8 +450,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -475,8 +475,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -O -fconvert=big-endian -frecord-marker=4 +-F77FLAGS = -ffixed-form -O -fconvert=big-endian -frecord-marker=4 ++FFLAGS = $(FCFLAGS) -ffree-form -O -fconvert=big-endian -frecord-marker=4 ++F77FLAGS = $(FCFLAGS) -ffixed-form -O -fconvert=big-endian -frecord-marker=4 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + # For a WRF OpenMP build, add the gomp library for WPS +@@ -505,8 +505,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -qfree +-F77FLAGS = -qfixed ++FFLAGS = $(FCFLAGS) -qfree ++F77FLAGS = $(FCFLAGS) -qfixed + FCSUFFIX = + FNGFLAGS = $(FFLAGS) -qextname + LDFLAGS = -Wl,-stack_size,10000000,-stack_addr,0xc000000 +@@ -531,8 +531,8 @@ + SCC = gcc-3.3 + DM_FC = mpif90 -f90=$(SFC) + DM_CC = mpicc -cc=$(SCC) +-FFLAGS = -qfree +-F77FLAGS = -qfixed ++FFLAGS = $(FCFLAGS) -qfree ++F77FLAGS = $(FCFLAGS) -qfixed + FNGFLAGS = $(FFLAGS) -qextname + LDFLAGS = -Wl,-stack_size,10000000,-stack_addr,0xc0000000 -L/usr/lib -lSystemStubs + FC = CONFIGURE_FC +@@ -555,8 +555,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -g -fno-second-underscore +-F77FLAGS = -ffixed-form -g -fno-second-underscore ++FFLAGS = $(FCFLAGS) -ffree-form -g -fno-second-underscore ++F77FLAGS = $(FCFLAGS) -ffixed-form -g -fno-second-underscore + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -584,8 +584,8 @@ + CC = CONFIGURE_CC + LD = $(FC) + AR = ar +-FFLAGS = -qfree=f90 +-F77FLAGS = -qfixed ++FFLAGS = $(FCFLAGS) -qfree=f90 ++F77FLAGS = $(FCFLAGS) -qfixed + FCSUFFIX = -qsuffix=f=f90 + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -607,8 +607,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_FC + LD = $(FC) +-FFLAGS = -free -convert big_endian +-F77FLAGS = -convert big_endian ++FFLAGS = $(FCFLAGS) -free -convert big_endian ++F77FLAGS = $(FCFLAGS) -convert big_endian + FNGFLAGS = $(FFLAGS) + LDFLAGS = + CFLAGS = +@@ -629,8 +629,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -ffree-form -g -fno-second-underscore +-F77FLAGS = -ffixed-form -g -fno-second-underscore ++FFLAGS = $(FCFLAGS) -ffree-form -g -fno-second-underscore ++F77FLAGS = $(FCFLAGS) -ffixed-form -g -fno-second-underscore + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -659,8 +659,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -Mfree -g +-F77FLAGS = -Mfixed -g ++FFLAGS = $(FCFLAGS) -Mfree -g ++F77FLAGS = $(FCFLAGS) -Mfixed -g + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -g +@@ -682,8 +682,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -freeform -64 +-F77FLAGS = -64 ++FFLAGS = $(FCFLAGS) -freeform -64 ++F77FLAGS = $(FCFLAGS) -64 + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = -64 +@@ -712,8 +712,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = + LDFLAGS = +@@ -736,8 +736,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -free +-F77FLAGS = ++FFLAGS = $(FCFLAGS) -free ++F77FLAGS = $(FCFLAGS) + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -759,8 +759,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -N255 -f free -h byteswapio +-F77FLAGS = -N255 -f fixed -h byteswapio ++FFLAGS = $(FCFLAGS) -N255 -f free -h byteswapio ++F77FLAGS = $(FCFLAGS) -N255 -f fixed -h byteswapio + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = +@@ -783,8 +783,8 @@ + FC = CONFIGURE_FC + CC = CONFIGURE_CC + LD = $(FC) +-FFLAGS = -FR -convert big_endian +-F77FLAGS = -FI -convert big_endian ++FFLAGS = $(FCFLAGS) -FR -convert big_endian ++F77FLAGS = $(FCFLAGS) -FI -convert big_endian + FCSUFFIX = + FNGFLAGS = $(FFLAGS) + LDFLAGS = diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index cd433c1ac2bef1..fd7a70110be076 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -6,16 +6,20 @@ import glob import re import time -from fcntl import F_GETFL, F_SETFL, fcntl -from os import O_NONBLOCK from os.path import basename from subprocess import PIPE, Popen -from sys import stdout +from sys import platform, stdout from llnl.util import tty from spack import * +is_windows = platform == 'win32' + +if not is_windows: + from fcntl import F_GETFL, F_SETFL, fcntl + from os import O_NONBLOCK + re_optline = re.compile(r'\s+[0-9]+\..*\((serial|smpar|dmpar|dm\+sm)\)\s+') re_paroptname = re.compile(r'\((serial|smpar|dmpar|dm\+sm)\)') re_paroptnum = re.compile(r'\s+([0-9]+)\.\s+\(') @@ -27,6 +31,7 @@ def setNonBlocking(fd): """ Set the given file descriptor to non-blocking + Non-blocking pipes are not supported on windows """ flags = fcntl(fd, F_GETFL) | O_NONBLOCK fcntl(fd, F_SETFL, flags) @@ -138,22 +143,22 @@ class Wrf(Package): patch("patches/4.2/tirpc_detect.patch", when="@4.2") patch("patches/4.2/add_aarch64.patch", when="@4.2:") patch("patches/4.2/configure_aocc_2.3.patch", when="@4.2 %aocc@:2.4.0") - patch("patches/4.2/configure_aocc_3.0.patch", when="@4.2 %aocc@3.0.0:3.2.0") - patch("patches/4.2/hdf5_fix.patch", when="@4.2 %aocc") + patch("patches/4.2/configure_aocc_3.0.patch", when="@4.2: %aocc@3.0.0:3.2.0") + patch("patches/4.2/hdf5_fix.patch", when="@4.2: %aocc") patch("patches/4.2/derf_fix.patch", when="@4.2 %aocc") # Various syntax fixes found by FPT tool - patch("https://github.com/wrf-model/WRF/commit/6502d5d9c15f5f9a652dec244cc12434af737c3c.patch", - sha256="d685a77c82d770f2af4e66711effa0cb115e2bc6e601de4cb92f15b138c6c85b", when="@4.2 %fj") + patch("https://github.com/wrf-model/WRF/commit/6502d5d9c15f5f9a652dec244cc12434af737c3c.patch?full_index=1", + sha256="c5162c23a132b377132924f8f1545313861c6cee5a627e9ebbdcf7b7b9d5726f", when="@4.2 %fj") patch("patches/4.2/configure_fujitsu.patch", when="@4 %fj") patch("patches/4.3/Makefile.patch", when="@4.3:") patch("patches/4.3/arch.postamble.patch", when="@4.3:") patch("patches/4.3/fujitsu.patch", when="@4.3: %fj") # Syntax errors in physics routines - patch("https://github.com/wrf-model/WRF/commit/7c6fd575b7a8fe5715b07b38db160e606c302956.patch", - sha256="bc24b6c8a073837404dbd33b0a4402843bd4771441dd766899d9274583db683f", when="@4.3.1") - patch("https://github.com/wrf-model/WRF/commit/238a7d219b7c8e285db28fe4f0c96ebe5068d91c.patch", - sha256="d3fe347fd57c0f989744113c0bc8faf98bab2dd4e88867efa4b154c2b4265636", when="@4.3.1") + patch("https://github.com/wrf-model/WRF/commit/7c6fd575b7a8fe5715b07b38db160e606c302956.patch?full_index=1", + sha256="1ce97f4fd09e440bdf00f67711b1c50439ac27595ea6796efbfb32e0b9a1f3e4", when="@4.3.1") + patch("https://github.com/wrf-model/WRF/commit/238a7d219b7c8e285db28fe4f0c96ebe5068d91c.patch?full_index=1", + sha256="27c7268f6c84b884d21e4afad0bab8554b06961cf4d6bfd7d0f5a457dcfdffb1", when="@4.3.1") depends_on("pkgconfig", type=("build")) depends_on("libtirpc") @@ -294,8 +299,9 @@ def configure(self, spec, prefix): ) p = Popen("./configure", stdin=PIPE, stdout=PIPE, stderr=PIPE) - setNonBlocking(p.stdout) - setNonBlocking(p.stderr) + if not is_windows: + setNonBlocking(p.stdout) + setNonBlocking(p.stderr) # Because of WRFs custom configure scripts that require interactive # input we need to parse and respond to questions. The details can diff --git a/var/spack/repos/builtin/packages/wt/package.py b/var/spack/repos/builtin/packages/wt/package.py index 2de7ff508e55cb..625a432fc07bf6 100644 --- a/var/spack/repos/builtin/packages/wt/package.py +++ b/var/spack/repos/builtin/packages/wt/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Wt(CMakePackage): @@ -43,6 +44,11 @@ class Wt(CMakePackage): depends_on('pkgconfig', type='build') depends_on('boost@1.46.1:1.65') + + # 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('openssl', when='+openssl') depends_on('libharu', when='+libharu') depends_on('sqlite', when='+sqlite') diff --git a/var/spack/repos/builtin/packages/x264/package.py b/var/spack/repos/builtin/packages/x264/package.py new file mode 100644 index 00000000000000..0f2be7eae5dc0b --- /dev/null +++ b/var/spack/repos/builtin/packages/x264/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2022 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.directives import depends_on, version + + +class X264(AutotoolsPackage): + """Software library and application for encoding video streams""" + + homepage = "https://www.videolan.org/developers/x264.html" + git = "https://code.videolan.org/videolan/x264.git" + + version("20210613", commit="5db6aa6cab1b146e07b60cc1736a01f21da01154") + + depends_on("nasm") + + def configure_args(self): + return ["--enable-shared", "--enable-pic"] diff --git a/var/spack/repos/builtin/packages/xapian-core/package.py b/var/spack/repos/builtin/packages/xapian-core/package.py index 85b4440d80809a..3402f28ed6f5e0 100644 --- a/var/spack/repos/builtin/packages/xapian-core/package.py +++ b/var/spack/repos/builtin/packages/xapian-core/package.py @@ -13,8 +13,9 @@ class XapianCore(AutotoolsPackage): supports a rich set of boolean query operators.""" homepage = "https://xapian.org" - url = "https://oligarchy.co.uk/xapian/1.4.3/xapian-core-1.4.3.tar.xz" + url = "https://oligarchy.co.uk/xapian/1.4.19/xapian-core-1.4.19.tar.xz" + version('1.4.19', sha256='1fca48fca6cc3526cc4ba93dd194fe9c1326857b78edcfb37e68d086d714a9c3') version('1.4.11', sha256='9f16b2f3e2351a24034d7636f73566ab74c3f0729e9e0492934e956b25c5bc07') version('1.4.3', sha256='7d5295511ca2de70463a29e75f6a2393df5dc1485bf33074b778c66e1721e475') diff --git a/var/spack/repos/builtin/packages/xdmf3/package.py b/var/spack/repos/builtin/packages/xdmf3/package.py index 9e75967da432d0..eca3b7725bd052 100644 --- a/var/spack/repos/builtin/packages/xdmf3/package.py +++ b/var/spack/repos/builtin/packages/xdmf3/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Xdmf3(CMakePackage): @@ -23,7 +24,11 @@ class Xdmf3(CMakePackage): variant('mpi', default=True, description='Enable MPI') depends_on('libxml2') - depends_on('boost') + + # 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('mpi', when='+mpi') depends_on('hdf5+mpi', when='+mpi') depends_on('hdf5~mpi', when='~mpi') diff --git a/var/spack/repos/builtin/packages/xios/package.py b/var/spack/repos/builtin/packages/xios/package.py index 3a31290dda7db1..4031c5957634b2 100644 --- a/var/spack/repos/builtin/packages/xios/package.py +++ b/var/spack/repos/builtin/packages/xios/package.py @@ -7,6 +7,7 @@ # from spack import * +from spack.pkg.builtin.boost import Boost class Xios(Package): @@ -39,7 +40,11 @@ class Xios(Package): depends_on('netcdf-fortran') depends_on('hdf5+mpi') depends_on('mpi') - depends_on('boost') + + # 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('blitz') depends_on('perl', type='build') depends_on('perl-uri', type='build') diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py index 26a7f7348dbb44..0a64e2d5b7b949 100644 --- a/var/spack/repos/builtin/packages/xyce/package.py +++ b/var/spack/repos/builtin/packages/xyce/package.py @@ -52,12 +52,17 @@ class Xyce(CMakePackage): variant('pymi', default=False, description='Enable Python Model Interpreter for Xyce') depends_on('python@3:', type=('build', 'link', 'run'), when='+pymi') + depends_on('py-numba@0.48.0:', type=('build', 'link', 'run'), when='+pymi') + depends_on('py-pycompadre+trilinos', type=('build', 'link', 'run'), when='+pymi') depends_on('py-pip', type='run', when='+pymi') - depends_on('py-pybind11@2.6.1:', when='+pymi') + depends_on('py-pybind11@2.6.1:', type=('build', 'link'), when='+pymi') - # Xyce is built against an older version of Trilinos unlikely to be - # used for any other purpose. - depends_on('trilinos@12.12.1 +amesos+amesos2+anasazi+aztec+basker+belos+complex+epetra+epetraext+explicit_template_instantiation+fortran+hdf5+ifpack+isorropia+kokkos+nox+sacado+suite-sparse+trilinoscouplings+zoltan+stokhos+epetraextbtf+epetraextexperimental+epetraextgraphreorderings gotype=all') + depends_on('trilinos +amesos+amesos2+anasazi+aztec+basker+belos+complex+epetra+epetraext+explicit_template_instantiation+fortran+hdf5+ifpack+isorropia+kokkos+nox+sacado+suite-sparse+trilinoscouplings+zoltan+stokhos+epetraextbtf+epetraextexperimental+epetraextgraphreorderings') + # tested versions of Trilinos for everything up to 7.4.0 + depends_on('trilinos@12.12.1:13.2.0', when='@:7.4.0') + depends_on('trilinos gotype=all cxxstd=11', when='^trilinos@:12.15') + # pymi requires Kokkos/KokkosKernels >= 3.3, Trilinos 13.2 onward + depends_on('trilinos@13.2.0:', when='+pymi') # Propagate variants to trilinos: for _variant in ('mpi',): @@ -68,10 +73,6 @@ class Xyce(CMakePackage): # installation of many more packages than are needed for Xyce. depends_on('trilinos~float~ifpack2~ml~muelu~zoltan2') - # ensures trilinos built with same cxxstd as Xyce (which Xyce was tested against) - for cxxstd_ in cxxstd_choices: - depends_on('trilinos cxxstd={0}'.format(cxxstd_), when='cxxstd={0}'.format(cxxstd_)) - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index b0f2075e545e4b..7bb9325c6ba745 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.pkg.builtin.boost import Boost from spack.spec import ConflictsInSpecError yaml_cpp_tests_libcxx_error_msg = 'yaml-cpp tests incompatible with libc++' @@ -32,6 +33,11 @@ class YamlCpp(CMakePackage): depends_on('boost@:1.66', when='@0.5.0:0.5.3') + # 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, when='@0.5.0:0.5.3') + conflicts('%gcc@:4.7', when='@0.6.0:', msg="versions 0.6.0: require c++11 support") conflicts('%clang@:3.3.0', when='@0.6.0:', msg="versions 0.6.0: require c++11 support") conflicts('%apple-clang@:4.0.0', when='@0.6.0:', msg="versions 0.6.0: require c++11 support") diff --git a/var/spack/repos/builtin/packages/yoda/package.py b/var/spack/repos/builtin/packages/yoda/package.py index 76d4009cdcea21..c1d540099ac0d3 100644 --- a/var/spack/repos/builtin/packages/yoda/package.py +++ b/var/spack/repos/builtin/packages/yoda/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +from spack.pkg.builtin.boost import Boost class Yoda(AutotoolsPackage): @@ -65,6 +66,11 @@ class Yoda(AutotoolsPackage): depends_on('py-future', type=('build', 'run')) depends_on('zlib') depends_on('boost', when='@:1.6.0', type=('build', 'run')) + + # 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, when='@:1.6.0', type=('build', 'run')) depends_on('py-cython@0.18:', type='build', when='@:1.4.0') depends_on('py-cython@0.20:', type='build', when='@1.4.0:1.6.5') depends_on('py-cython@0.23.5:', type='build', when='@1.6.5:1.8.0') diff --git a/var/spack/repos/builtin/packages/zlib/configure-cc.patch b/var/spack/repos/builtin/packages/zlib/configure-cc.patch new file mode 100644 index 00000000000000..0136071eabe791 --- /dev/null +++ b/var/spack/repos/builtin/packages/zlib/configure-cc.patch @@ -0,0 +1,24 @@ +From 05796d3d8d5546cf1b4dfe2cd72ab746afae505d Mon Sep 17 00:00:00 2001 +From: Mark Adler +Date: Mon, 28 Mar 2022 18:34:10 -0700 +Subject: [PATCH] Fix configure issue that discarded provided CC definition. + +--- + configure | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure b/configure +index 52ff4a04e..3fa3e8618 100755 +--- a/configure ++++ b/configure +@@ -174,7 +174,10 @@ if test -z "$CC"; then + else + cc=${CROSS_PREFIX}cc + fi ++else ++ cc=${CC} + fi ++ + cflags=${CFLAGS-"-O3"} + # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure + case "$cc" in diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index e7db85776b8b04..f7bd9574d937f1 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -6,6 +6,10 @@ # Although zlib comes with a configure script, it does not use Autotools # The AutotoolsPackage causes zlib to fail to build with PGI +import glob +import os + + class Zlib(Package): """A free, general-purpose, legally unencumbered lossless data-compression library. @@ -15,11 +19,10 @@ class Zlib(Package): # URL must remain http:// so Spack can bootstrap curl url = "https://zlib.net/fossils/zlib-1.2.11.tar.gz" - version('1.2.11', sha256='c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1') - # Due to the bug fixes, any installations of 1.2.9 or 1.2.10 should be - # immediately replaced with 1.2.11. - version('1.2.8', sha256='36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d') - version('1.2.3', sha256='1795c7d067a43174113fdf03447532f373e1c6c57c08d61d9e4e9be5e244b05e') + version('1.2.12', sha256='91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9') + version('1.2.11', sha256='c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1', deprecated=True) + version('1.2.8', sha256='36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d', deprecated=True) + version('1.2.3', sha256='1795c7d067a43174113fdf03447532f373e1c6c57c08d61d9e4e9be5e244b05e', deprecated=True) variant('pic', default=True, description='Produce position-independent code (for shared libs)') @@ -29,6 +32,7 @@ class Zlib(Package): description='Enable -O2 for a more optimized lib') patch('w_patch.patch', when="@1.2.11%cce") + patch('configure-cc.patch', when='@1.2.12') @property def libs(self): @@ -37,6 +41,29 @@ def libs(self): ['libz'], root=self.prefix, recursive=True, shared=shared ) + def win_install(self): + build_dir = self.stage.source_path + install_tree = {} + install_tree["bin"] = glob.glob(os.path.join(build_dir, "*.dll")) + install_tree["lib"] = glob.glob(os.path.join(build_dir, "*.lib")) + compose_src_path = lambda x: os.path.join(build_dir, x) + install_tree["include"] = [compose_src_path("zlib.h"), + compose_src_path("zconf.h")] + # Windows path seps are fine here as this method is Windows specific. + install_tree["share\\man\\man3"] = [compose_src_path("zlib.3")] + + def installtree(dst, tree): + for inst_dir in tree: + install_dst = getattr(dst, inst_dir) + try: + os.makedirs(install_dst) + except OSError: + pass + for file in tree[inst_dir]: + install(file, install_dst) + + installtree(self.prefix, install_tree) + def setup_build_environment(self, env): if '+pic' in self.spec: env.append_flags('CFLAGS', self.compiler.cc_pic_flag) @@ -44,12 +71,16 @@ def setup_build_environment(self, env): env.append_flags('CFLAGS', '-O2') def install(self, spec, prefix): - config_args = [] - if '~shared' in spec: - config_args.append('--static') - configure('--prefix={0}'.format(prefix), *config_args) - - make() - if self.run_tests: - make('check') - make('install') + if 'platform=windows' in self.spec: + nmake('-f' 'win32\\Makefile.msc') + self.win_install() + else: + config_args = [] + if '~shared' in spec: + config_args.append('--static') + configure('--prefix={0}'.format(prefix), *config_args) + + make() + if self.run_tests: + make('check') + make('install') diff --git a/var/spack/repos/builtin/packages/zpares/package.py b/var/spack/repos/builtin/packages/zpares/package.py new file mode 100644 index 00000000000000..9abbaf54693e96 --- /dev/null +++ b/var/spack/repos/builtin/packages/zpares/package.py @@ -0,0 +1,59 @@ +# Copyright 2013-2022 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 import * + + +class Zpares(MakefilePackage): + """z-Pares is designed to compute a few eigenvalues + and eigenvectors of sparse matrices.""" + + homepage = "https://zpares.cs.tsukuba.ac.jp/" + url = "http://zpares.cs.tsukuba.ac.jp/download/zpares_0.9.6a.tar.gz" + + version('0.9.6a', sha256='3c34257d249451b0b984abc985e296ebb73ae5331025f1b8ea08d50301c7cf9a') + + variant('mpi', default=False, description='Activates MPI support') + variant('mumps', default=False, description='Activates MUMPS support') + + depends_on('mumps+mpi', when='+mumps+mpi') + depends_on('mumps~mpi', when='+mumps~mpi') + depends_on('lapack') + depends_on('blas') + depends_on('mpi', when='+mpi') + + def edit(self, spec, prefix): + copy(join_path('Makefile.inc', 'make.inc.gfortran.seq'), 'make.inc') + + @property + def build_targets(self): + targets = [] + + if '+mpi' in self.spec: + targets.append('USE_MPI=1') + targets.append('FC={0}'.format(self.spec['mpi'].mpifc)) + else: + targets.append('USE_MPI=0') + targets.append('FC={0}'.format(self.compiler.fc)) + + if '+mumps' in self.spec: + targets.append('USE_MUMPS=1') + targets.append('FFLAG={0}'.format(self.compiler.openmp_flag)) + targets.append('LFFLAG={0}'.format(self.compiler.openmp_flag)) + targets.append('MUMPS_DIR={0}'.format(self.spec['mumps'].prefix)) + else: + targets.append('USE_MUMPS=0') + + targets.append('BLAS={0}'.format(self.spec['blas'].libs.link_flags)) + targets.append('LAPACK={0}'.format(self.spec['lapack'].libs.link_flags)) + + return targets + + def install(self, spec, prefix): + mkdirp(prefix.lib) + mkdirp(prefix.include) + + install(join_path('lib', '*.a'), prefix.lib) + install(join_path('include', '*.mod'), prefix.include) diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py index 0eb98094e2fe5e..e1daec856be1a4 100644 --- a/var/spack/repos/builtin/packages/zstd/package.py +++ b/var/spack/repos/builtin/packages/zstd/package.py @@ -18,6 +18,7 @@ class Zstd(MakefilePackage): maintainers = ['haampie'] version('develop', branch='dev') + version('1.5.2', sha256='f7de13462f7a82c29ab865820149e778cbfe01087b3a55b5332707abf9db4a6e') version('1.5.0', sha256='0d9ade222c64e912d6957b11c923e214e2e010a18f39bec102f572e693ba2867') version('1.4.9', sha256='acf714d98e3db7b876e5b540cbf6dee298f60eb3c0723104f6d3f065cd60d6a8') version('1.4.8', sha256='f176f0626cb797022fbf257c3c644d71c1c747bb74c32201f9203654da35e9fa') @@ -34,8 +35,10 @@ class Zstd(MakefilePackage): variant('programs', default=False, description='Build executables') depends_on('zlib', when='+programs') - depends_on('lzma', when='+programs') depends_on('lz4', when='+programs') + depends_on('xz', when='+programs') + + conflicts('%nvhpc') def _make(self, *args, **kwargs): # PREFIX must be defined on macOS even when building the library, since diff --git a/var/spack/repos/tutorial/packages/elpa/package.py b/var/spack/repos/tutorial/packages/elpa/package.py index a6c7ea62605568..6d7dc82b208c02 100644 --- a/var/spack/repos/tutorial/packages/elpa/package.py +++ b/var/spack/repos/tutorial/packages/elpa/package.py @@ -44,7 +44,7 @@ def libs(self): build_directory = 'spack-build' - def setup_environment(self, spack_env, run_env): + def setup_run_environment(self, env): # TUTORIAL: set the following environment variables: # # CC=spec['mpi'].mpicc diff --git a/var/spack/repos/tutorial/packages/mpich/package.py b/var/spack/repos/tutorial/packages/mpich/package.py index 10a53810953bcb..b5befe995d7b62 100644 --- a/var/spack/repos/tutorial/packages/mpich/package.py +++ b/var/spack/repos/tutorial/packages/mpich/package.py @@ -75,7 +75,7 @@ class Mpich(AutotoolsPackage): conflicts('netmod=mxm', when='@:3.1.3') conflicts('netmod=tcp', when='device=ch4') - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): # TUTORIAL: set the following variables for dependents: # # MPICC=join_path(self.prefix.bin, 'mpicc')