Compare commits
1 Commits
2023-04-05
...
revert-341
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4583161224 |
@@ -1,5 +1,3 @@
|
|||||||
# .git-blame-ignore-revs
|
# .git-blame-ignore-revs
|
||||||
# Formatted entire codebase with black 23
|
# Formatted entire codebase with black
|
||||||
603569e321013a1a63a637813c94c2834d0a0023
|
|
||||||
# Formatted entire codebase with black 22
|
|
||||||
f52f6e99dbf1131886a80112b8c79dfc414afb7c
|
f52f6e99dbf1131886a80112b8c79dfc414afb7c
|
||||||
|
|||||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,4 +1,3 @@
|
|||||||
*.py diff=python
|
*.py diff=python
|
||||||
*.lp linguist-language=Prolog
|
*.lp linguist-language=Prolog
|
||||||
lib/spack/external/* linguist-vendored
|
lib/spack/external/* linguist-vendored
|
||||||
*.bat text eol=crlf
|
|
||||||
4
.github/workflows/audit.yaml
vendored
4
.github/workflows/audit.yaml
vendored
@@ -19,8 +19,8 @@ jobs:
|
|||||||
package-audits:
|
package-audits:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: ${{inputs.python_version}}
|
python-version: ${{inputs.python_version}}
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
|
|||||||
22
.github/workflows/bootstrap.yml
vendored
22
.github/workflows/bootstrap.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
|||||||
make patch unzip which xz python3 python3-devel tree \
|
make patch unzip which xz python3 python3-devel tree \
|
||||||
cmake bison bison-devel libstdc++-static
|
cmake bison bison-devel libstdc++-static
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup non-root user
|
- name: Setup non-root user
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
make patch unzip xz-utils python3 python3-dev tree \
|
make patch unzip xz-utils python3 python3-dev tree \
|
||||||
cmake bison
|
cmake bison
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup non-root user
|
- name: Setup non-root user
|
||||||
@@ -99,7 +99,7 @@ jobs:
|
|||||||
bzip2 curl file g++ gcc gfortran git gnupg2 gzip \
|
bzip2 curl file g++ gcc gfortran git gnupg2 gzip \
|
||||||
make patch unzip xz-utils python3 python3-dev tree
|
make patch unzip xz-utils python3 python3-dev tree
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup non-root user
|
- name: Setup non-root user
|
||||||
@@ -133,7 +133,7 @@ jobs:
|
|||||||
make patch unzip which xz python3 python3-devel tree \
|
make patch unzip which xz python3 python3-devel tree \
|
||||||
cmake bison
|
cmake bison
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup repo
|
- name: Setup repo
|
||||||
@@ -158,7 +158,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
brew install cmake bison@2.7 tree
|
brew install cmake bison@2.7 tree
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
- name: Bootstrap clingo
|
- name: Bootstrap clingo
|
||||||
run: |
|
run: |
|
||||||
source share/spack/setup-env.sh
|
source share/spack/setup-env.sh
|
||||||
@@ -179,7 +179,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
brew install tree
|
brew install tree
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
- name: Bootstrap clingo
|
- name: Bootstrap clingo
|
||||||
run: |
|
run: |
|
||||||
set -ex
|
set -ex
|
||||||
@@ -204,7 +204,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup repo
|
- name: Setup repo
|
||||||
@@ -247,7 +247,7 @@ jobs:
|
|||||||
bzip2 curl file g++ gcc patchelf gfortran git gzip \
|
bzip2 curl file g++ gcc patchelf gfortran git gzip \
|
||||||
make patch unzip xz-utils python3 python3-dev tree
|
make patch unzip xz-utils python3 python3-dev tree
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup non-root user
|
- name: Setup non-root user
|
||||||
@@ -283,7 +283,7 @@ jobs:
|
|||||||
make patch unzip xz-utils python3 python3-dev tree \
|
make patch unzip xz-utils python3 python3-dev tree \
|
||||||
gawk
|
gawk
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup non-root user
|
- name: Setup non-root user
|
||||||
@@ -316,7 +316,7 @@ jobs:
|
|||||||
# Remove GnuPG since we want to bootstrap it
|
# Remove GnuPG since we want to bootstrap it
|
||||||
sudo rm -rf /usr/local/bin/gpg
|
sudo rm -rf /usr/local/bin/gpg
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
- name: Bootstrap GnuPG
|
- name: Bootstrap GnuPG
|
||||||
run: |
|
run: |
|
||||||
source share/spack/setup-env.sh
|
source share/spack/setup-env.sh
|
||||||
@@ -333,7 +333,7 @@ jobs:
|
|||||||
# Remove GnuPG since we want to bootstrap it
|
# Remove GnuPG since we want to bootstrap it
|
||||||
sudo rm -rf /usr/local/bin/gpg
|
sudo rm -rf /usr/local/bin/gpg
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
- name: Bootstrap GnuPG
|
- name: Bootstrap GnuPG
|
||||||
run: |
|
run: |
|
||||||
source share/spack/setup-env.sh
|
source share/spack/setup-env.sh
|
||||||
|
|||||||
8
.github/workflows/build-containers.yml
vendored
8
.github/workflows/build-containers.yml
vendored
@@ -50,7 +50,7 @@ jobs:
|
|||||||
if: github.repository == 'spack/spack'
|
if: github.repository == 'spack/spack'
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
|
|
||||||
- name: Set Container Tag Normal (Nightly)
|
- name: Set Container Tag Normal (Nightly)
|
||||||
run: |
|
run: |
|
||||||
@@ -80,7 +80,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload Dockerfile
|
- name: Upload Dockerfile
|
||||||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
|
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb
|
||||||
with:
|
with:
|
||||||
name: dockerfiles
|
name: dockerfiles
|
||||||
path: dockerfiles
|
path: dockerfiles
|
||||||
@@ -89,7 +89,7 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@e81a89b1732b9c48d79cd809d8d81d79c4647a18 # @v1
|
uses: docker/setup-qemu-action@e81a89b1732b9c48d79cd809d8d81d79c4647a18 # @v1
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@f03ac48505955848960e80bbb68046aa35c7b9e7 # @v1
|
uses: docker/setup-buildx-action@8c0edbc76e98fa90f69d9a2c020dcb50019dc325 # @v1
|
||||||
|
|
||||||
- name: Log in to GitHub Container Registry
|
- name: Log in to GitHub Container Registry
|
||||||
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # @v1
|
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # @v1
|
||||||
@@ -106,7 +106,7 @@ jobs:
|
|||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build & Deploy ${{ matrix.dockerfile[0] }}
|
- name: Build & Deploy ${{ matrix.dockerfile[0] }}
|
||||||
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 # @v2
|
uses: docker/build-push-action@c56af957549030174b10d6867f20e78cfd7debc5 # @v2
|
||||||
with:
|
with:
|
||||||
context: dockerfiles/${{ matrix.dockerfile[0] }}
|
context: dockerfiles/${{ matrix.dockerfile[0] }}
|
||||||
platforms: ${{ matrix.dockerfile[1] }}
|
platforms: ${{ matrix.dockerfile[1] }}
|
||||||
|
|||||||
2
.github/workflows/ci.yaml
vendored
2
.github/workflows/ci.yaml
vendored
@@ -35,7 +35,7 @@ jobs:
|
|||||||
core: ${{ steps.filter.outputs.core }}
|
core: ${{ steps.filter.outputs.core }}
|
||||||
packages: ${{ steps.filter.outputs.packages }}
|
packages: ${{ steps.filter.outputs.packages }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|||||||
8
.github/workflows/setup_git.ps1
vendored
8
.github/workflows/setup_git.ps1
vendored
@@ -1,9 +1,15 @@
|
|||||||
# (c) 2022 Lawrence Livermore National Laboratory
|
# (c) 2021 Lawrence Livermore National Laboratory
|
||||||
|
|
||||||
|
Set-Location spack
|
||||||
|
|
||||||
git config --global user.email "spack@example.com"
|
git config --global user.email "spack@example.com"
|
||||||
git config --global user.name "Test User"
|
git config --global user.name "Test User"
|
||||||
git config --global core.longpaths true
|
git config --global core.longpaths true
|
||||||
|
|
||||||
|
# See https://github.com/git/git/security/advisories/GHSA-3wp6-j8xr-qw85 (CVE-2022-39253)
|
||||||
|
# This is needed to let some fixture in our unit-test suite run
|
||||||
|
git config --global protocol.file.allow always
|
||||||
|
|
||||||
if ($(git branch --show-current) -ne "develop")
|
if ($(git branch --show-current) -ne "develop")
|
||||||
{
|
{
|
||||||
git branch develop origin/develop
|
git branch develop origin/develop
|
||||||
|
|||||||
4
.github/workflows/setup_git.sh
vendored
4
.github/workflows/setup_git.sh
vendored
@@ -2,6 +2,10 @@
|
|||||||
git config --global user.email "spack@example.com"
|
git config --global user.email "spack@example.com"
|
||||||
git config --global user.name "Test User"
|
git config --global user.name "Test User"
|
||||||
|
|
||||||
|
# See https://github.com/git/git/security/advisories/GHSA-3wp6-j8xr-qw85 (CVE-2022-39253)
|
||||||
|
# This is needed to let some fixture in our unit-test suite run
|
||||||
|
git config --global protocol.file.allow always
|
||||||
|
|
||||||
# create a local pr base branch
|
# create a local pr base branch
|
||||||
if [[ -n $GITHUB_BASE_REF ]]; then
|
if [[ -n $GITHUB_BASE_REF ]]; then
|
||||||
git fetch origin "${GITHUB_BASE_REF}:${GITHUB_BASE_REF}"
|
git fetch origin "${GITHUB_BASE_REF}:${GITHUB_BASE_REF}"
|
||||||
|
|||||||
20
.github/workflows/unit_tests.yaml
vendored
20
.github/workflows/unit_tests.yaml
vendored
@@ -47,10 +47,10 @@ jobs:
|
|||||||
on_develop: false
|
on_develop: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
- name: Install System packages
|
- name: Install System packages
|
||||||
@@ -94,10 +94,10 @@ jobs:
|
|||||||
shell:
|
shell:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: '3.11'
|
||||||
- name: Install System packages
|
- name: Install System packages
|
||||||
@@ -133,7 +133,7 @@ jobs:
|
|||||||
dnf install -y \
|
dnf install -y \
|
||||||
bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
|
bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
|
||||||
make patch tcl unzip which xz
|
make patch tcl unzip which xz
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
- name: Setup repo and non-root user
|
- name: Setup repo and non-root user
|
||||||
run: |
|
run: |
|
||||||
git --version
|
git --version
|
||||||
@@ -145,16 +145,16 @@ jobs:
|
|||||||
shell: runuser -u spack-test -- bash {0}
|
shell: runuser -u spack-test -- bash {0}
|
||||||
run: |
|
run: |
|
||||||
source share/spack/setup-env.sh
|
source share/spack/setup-env.sh
|
||||||
spack -d bootstrap now --dev
|
spack -d solve zlib
|
||||||
spack unit-test -k 'not cvs and not svn and not hg' -x --verbose
|
spack unit-test -k 'not cvs and not svn and not hg' -x --verbose
|
||||||
# Test for the clingo based solver (using clingo-cffi)
|
# Test for the clingo based solver (using clingo-cffi)
|
||||||
clingo-cffi:
|
clingo-cffi:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: '3.11'
|
||||||
- name: Install System packages
|
- name: Install System packages
|
||||||
@@ -185,10 +185,10 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
python-version: ["3.10"]
|
python-version: ["3.10"]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
|
|||||||
10
.github/workflows/valid-style.yml
vendored
10
.github/workflows/valid-style.yml
vendored
@@ -18,8 +18,8 @@ jobs:
|
|||||||
validate:
|
validate:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: '3.11'
|
||||||
cache: 'pip'
|
cache: 'pip'
|
||||||
@@ -35,16 +35,16 @@ jobs:
|
|||||||
style:
|
style:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # @v2
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # @v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # @v2
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # @v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: '3.11'
|
||||||
cache: 'pip'
|
cache: 'pip'
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install --upgrade pip six setuptools types-six black==23.1.0 mypy isort clingo flake8
|
python3 -m pip install --upgrade pip six setuptools types-six black mypy isort clingo flake8
|
||||||
- name: Setup git configuration
|
- name: Setup git configuration
|
||||||
run: |
|
run: |
|
||||||
# Need this for the git tests to succeed.
|
# Need this for the git tests to succeed.
|
||||||
|
|||||||
175
.github/workflows/windows_python.yml
vendored
175
.github/workflows/windows_python.yml
vendored
@@ -10,15 +10,15 @@ concurrency:
|
|||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell:
|
shell:
|
||||||
powershell Invoke-Expression -Command "./share/spack/qa/windows_test_setup.ps1"; {0}
|
powershell Invoke-Expression -Command ".\share\spack\qa\windows_test_setup.ps1"; {0}
|
||||||
jobs:
|
jobs:
|
||||||
unit-tests:
|
unit-tests:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
||||||
with:
|
with:
|
||||||
python-version: 3.9
|
python-version: 3.9
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
@@ -26,11 +26,13 @@ jobs:
|
|||||||
python -m pip install --upgrade pip six pywin32 setuptools codecov pytest-cov clingo
|
python -m pip install --upgrade pip six pywin32 setuptools codecov pytest-cov clingo
|
||||||
- name: Create local develop
|
- name: Create local develop
|
||||||
run: |
|
run: |
|
||||||
./.github/workflows/setup_git.ps1
|
.\spack\.github\workflows\setup_git.ps1
|
||||||
- name: Unit Test
|
- name: Unit Test
|
||||||
run: |
|
run: |
|
||||||
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
||||||
|
cd spack
|
||||||
|
dir
|
||||||
spack unit-test -x --verbose --cov --cov-config=pyproject.toml --ignore=lib/spack/spack/test/cmd
|
spack unit-test -x --verbose --cov --cov-config=pyproject.toml --ignore=lib/spack/spack/test/cmd
|
||||||
./share/spack/qa/validate_last_exit.ps1
|
|
||||||
coverage combine -a
|
coverage combine -a
|
||||||
coverage xml
|
coverage xml
|
||||||
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
||||||
@@ -39,10 +41,10 @@ jobs:
|
|||||||
unit-tests-cmd:
|
unit-tests-cmd:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
||||||
with:
|
with:
|
||||||
python-version: 3.9
|
python-version: 3.9
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
@@ -50,11 +52,12 @@ jobs:
|
|||||||
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage pytest-cov clingo
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage pytest-cov clingo
|
||||||
- name: Create local develop
|
- name: Create local develop
|
||||||
run: |
|
run: |
|
||||||
./.github/workflows/setup_git.ps1
|
.\spack\.github\workflows\setup_git.ps1
|
||||||
- name: Command Unit Test
|
- name: Command Unit Test
|
||||||
run: |
|
run: |
|
||||||
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
||||||
|
cd spack
|
||||||
spack unit-test -x --verbose --cov --cov-config=pyproject.toml lib/spack/spack/test/cmd
|
spack unit-test -x --verbose --cov --cov-config=pyproject.toml lib/spack/spack/test/cmd
|
||||||
./share/spack/qa/validate_last_exit.ps1
|
|
||||||
coverage combine -a
|
coverage combine -a
|
||||||
coverage xml
|
coverage xml
|
||||||
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
||||||
@@ -63,10 +66,10 @@ jobs:
|
|||||||
build-abseil:
|
build-abseil:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
||||||
with:
|
with:
|
||||||
python-version: 3.9
|
python-version: 3.9
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
@@ -75,81 +78,81 @@ jobs:
|
|||||||
- name: Build Test
|
- name: Build Test
|
||||||
run: |
|
run: |
|
||||||
spack compiler find
|
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 cmake
|
||||||
spack external find ninja
|
spack external find ninja
|
||||||
spack -d install abseil-cpp
|
spack -d install abseil-cpp
|
||||||
# TODO: johnwparent - reduce the size of the installer operations
|
make-installer:
|
||||||
# make-installer:
|
runs-on: windows-latest
|
||||||
# runs-on: windows-latest
|
steps:
|
||||||
# steps:
|
- name: Disable Windows Symlinks
|
||||||
# - name: Disable Windows Symlinks
|
run: |
|
||||||
# run: |
|
git config --global core.symlinks false
|
||||||
# git config --global core.symlinks false
|
shell:
|
||||||
# shell:
|
powershell
|
||||||
# powershell
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
||||||
# - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
|
with:
|
||||||
# with:
|
fetch-depth: 0
|
||||||
# fetch-depth: 0
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
||||||
# - uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435
|
with:
|
||||||
# with:
|
python-version: 3.9
|
||||||
# python-version: 3.9
|
- name: Install Python packages
|
||||||
# - name: Install Python packages
|
run: |
|
||||||
# run: |
|
python -m pip install --upgrade pip six pywin32 setuptools
|
||||||
# python -m pip install --upgrade pip six pywin32 setuptools
|
- name: Add Light and Candle to Path
|
||||||
# - name: Add Light and Candle to Path
|
run: |
|
||||||
# run: |
|
$env:WIX >> $GITHUB_PATH
|
||||||
# $env:WIX >> $GITHUB_PATH
|
- name: Run Installer
|
||||||
# - name: Run Installer
|
run: |
|
||||||
# run: |
|
.\spack\share\spack\qa\setup_spack.ps1
|
||||||
# ./share/spack/qa/setup_spack_installer.ps1
|
spack make-installer -s spack -g SILENT pkg
|
||||||
# spack make-installer -s . -g SILENT pkg
|
echo "installer_root=$((pwd).Path)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
# echo "installer_root=$((pwd).Path)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
env:
|
||||||
# env:
|
ProgressPreference: SilentlyContinue
|
||||||
# ProgressPreference: SilentlyContinue
|
- uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb
|
||||||
# - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb
|
with:
|
||||||
# with:
|
name: Windows Spack Installer Bundle
|
||||||
# name: Windows Spack Installer Bundle
|
path: ${{ env.installer_root }}\pkg\Spack.exe
|
||||||
# path: ${{ env.installer_root }}\pkg\Spack.exe
|
- uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb
|
||||||
# - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb
|
with:
|
||||||
# with:
|
name: Windows Spack Installer
|
||||||
# name: Windows Spack Installer
|
path: ${{ env.installer_root}}\pkg\Spack.msi
|
||||||
# path: ${{ env.installer_root}}\pkg\Spack.msi
|
execute-installer:
|
||||||
# execute-installer:
|
needs: make-installer
|
||||||
# needs: make-installer
|
runs-on: windows-latest
|
||||||
# runs-on: windows-latest
|
defaults:
|
||||||
# defaults:
|
run:
|
||||||
# run:
|
shell: pwsh
|
||||||
# shell: pwsh
|
steps:
|
||||||
# steps:
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
||||||
# - uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435
|
with:
|
||||||
# with:
|
python-version: 3.9
|
||||||
# python-version: 3.9
|
- name: Install Python packages
|
||||||
# - name: Install Python packages
|
run: |
|
||||||
# run: |
|
python -m pip install --upgrade pip six pywin32 setuptools
|
||||||
# python -m pip install --upgrade pip six pywin32 setuptools
|
- name: Setup installer directory
|
||||||
# - name: Setup installer directory
|
run: |
|
||||||
# run: |
|
mkdir -p spack_installer
|
||||||
# mkdir -p spack_installer
|
echo "spack_installer=$((pwd).Path)\spack_installer" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
# echo "spack_installer=$((pwd).Path)\spack_installer" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
- uses: actions/download-artifact@v3
|
||||||
# - uses: actions/download-artifact@v3
|
with:
|
||||||
# with:
|
name: Windows Spack Installer Bundle
|
||||||
# name: Windows Spack Installer Bundle
|
path: ${{ env.spack_installer }}
|
||||||
# path: ${{ env.spack_installer }}
|
- name: Execute Bundled Installer
|
||||||
# - name: Execute Bundled Installer
|
run: |
|
||||||
# run: |
|
$proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru
|
||||||
# $proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru
|
$handle = $proc.Handle # cache proc.Handle
|
||||||
# $handle = $proc.Handle # cache proc.Handle
|
$proc.WaitForExit();
|
||||||
# $proc.WaitForExit();
|
$LASTEXITCODE
|
||||||
# $LASTEXITCODE
|
env:
|
||||||
# env:
|
ProgressPreference: SilentlyContinue
|
||||||
# ProgressPreference: SilentlyContinue
|
- uses: actions/download-artifact@v3
|
||||||
# - uses: actions/download-artifact@v3
|
with:
|
||||||
# with:
|
name: Windows Spack Installer
|
||||||
# name: Windows Spack Installer
|
path: ${{ env.spack_installer }}
|
||||||
# path: ${{ env.spack_installer }}
|
- name: Execute MSI
|
||||||
# - name: Execute MSI
|
run: |
|
||||||
# run: |
|
$proc = Start-Process ${{ env.spack_installer }}\spack.msi "/quiet" -Passthru
|
||||||
# $proc = Start-Process ${{ env.spack_installer }}\spack.msi "/quiet" -Passthru
|
$handle = $proc.Handle # cache proc.Handle
|
||||||
# $handle = $proc.Handle # cache proc.Handle
|
$proc.WaitForExit();
|
||||||
# $proc.WaitForExit();
|
$LASTEXITCODE
|
||||||
# $LASTEXITCODE
|
|
||||||
|
|||||||
25
CHANGELOG.md
25
CHANGELOG.md
@@ -1,28 +1,3 @@
|
|||||||
# v0.19.1 (2023-02-07)
|
|
||||||
|
|
||||||
### Spack Bugfixes
|
|
||||||
|
|
||||||
* `buildcache create`: make "file exists" less verbose (#35019)
|
|
||||||
* `spack mirror create`: don't change paths to urls (#34992)
|
|
||||||
* Improve error message for requirements (#33988)
|
|
||||||
* uninstall: fix accidental cubic complexity (#34005)
|
|
||||||
* scons: fix signature for `install_args` (#34481)
|
|
||||||
* Fix `combine_phase_logs` text encoding issues (#34657)
|
|
||||||
* Use a module-like object to propagate changes in the MRO, when setting build env (#34059)
|
|
||||||
* PackageBase should not define builder legacy attributes (#33942)
|
|
||||||
* Forward lookup of the "run_tests" attribute (#34531)
|
|
||||||
* Bugfix for timers (#33917, #33900)
|
|
||||||
* Fix path handling in prefix inspections (#35318)
|
|
||||||
* Fix libtool filter for Fujitsu compilers (#34916)
|
|
||||||
* Bug fix for duplicate rpath errors on macOS when creating build caches (#34375)
|
|
||||||
* FileCache: delete the new cache file on exception (#34623)
|
|
||||||
* Propagate exceptions from Spack python console (#34547)
|
|
||||||
* Tests: Fix a bug/typo in a `config_values.py` fixture (#33886)
|
|
||||||
* Various CI fixes (#33953, #34560, #34560, #34828)
|
|
||||||
* Docs: remove monitors and analyzers, typos (#34358, #33926)
|
|
||||||
* bump release version for tutorial command (#33859)
|
|
||||||
|
|
||||||
|
|
||||||
# v0.19.0 (2022-11-11)
|
# v0.19.0 (2022-11-11)
|
||||||
|
|
||||||
`v0.19.0` is a major feature release.
|
`v0.19.0` is a major feature release.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2013-2023 LLNS, LLC and other Spack Project Developers.
|
Copyright (c) 2013-2022 LLNS, LLC and other Spack Project Developers.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -10,7 +10,6 @@ def getpywin():
|
|||||||
try:
|
try:
|
||||||
import win32con # noqa: F401
|
import win32con # noqa: F401
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print("pyWin32 not installed but is required...\nInstalling via pip:")
|
|
||||||
subprocess.check_call([sys.executable, "-m", "pip", "-q", "install", "--upgrade", "pip"])
|
subprocess.check_call([sys.executable, "-m", "pip", "-q", "install", "--upgrade", "pip"])
|
||||||
subprocess.check_call([sys.executable, "-m", "pip", "-q", "install", "pywin32"])
|
subprocess.check_call([sys.executable, "-m", "pip", "-q", "install", "pywin32"])
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
# sbang project developers. See the top-level COPYRIGHT file for details.
|
# sbang project developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# -*- python -*-
|
# -*- python -*-
|
||||||
#
|
#
|
||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ config:
|
|||||||
root: $TMP_DIR/install
|
root: $TMP_DIR/install
|
||||||
misc_cache: $$user_cache_path/cache
|
misc_cache: $$user_cache_path/cache
|
||||||
source_cache: $$user_cache_path/source
|
source_cache: $$user_cache_path/source
|
||||||
environments_root: $TMP_DIR/envs
|
|
||||||
EOF
|
EOF
|
||||||
cat >"$SPACK_USER_CONFIG_PATH/bootstrap.yaml" <<EOF
|
cat >"$SPACK_USER_CONFIG_PATH/bootstrap.yaml" <<EOF
|
||||||
bootstrap:
|
bootstrap:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
:: Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
:: Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
:: Spack Project Developers. See the top-level COPYRIGHT file for details.
|
:: Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
::
|
::
|
||||||
:: SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
:: SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -83,16 +83,6 @@ if defined _sp_flags (
|
|||||||
exit /B 0
|
exit /B 0
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if not defined _sp_subcommand (
|
|
||||||
if not defined _sp_args (
|
|
||||||
if not defined _sp_flags (
|
|
||||||
python "%spack%" --help
|
|
||||||
exit /B 0
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
:: pass parsed variables outside of local scope. Need to do
|
:: pass parsed variables outside of local scope. Need to do
|
||||||
:: this because delayedexpansion can only be set by setlocal
|
:: this because delayedexpansion can only be set by setlocal
|
||||||
echo %_sp_flags%>flags
|
echo %_sp_flags%>flags
|
||||||
@@ -102,24 +92,24 @@ endlocal
|
|||||||
set /p _sp_subcommand=<subcmd
|
set /p _sp_subcommand=<subcmd
|
||||||
set /p _sp_flags=<flags
|
set /p _sp_flags=<flags
|
||||||
set /p _sp_args=<args
|
set /p _sp_args=<args
|
||||||
if "%_sp_subcommand%"=="ECHO is off." (set "_sp_subcommand=")
|
set str_subcommand=%_sp_subcommand:"='%
|
||||||
if "%_sp_subcommand%"=="ECHO is on." (set "_sp_subcommand=")
|
set str_flags=%_sp_flags:"='%
|
||||||
if "%_sp_flags%"=="ECHO is off." (set "_sp_flags=")
|
set str_args=%_sp_args:"='%
|
||||||
if "%_sp_flags%"=="ECHO is on." (set "_sp_flags=")
|
if "%str_subcommand%"=="ECHO is off." (set "_sp_subcommand=")
|
||||||
if "%_sp_args%"=="ECHO is off." (set "_sp_args=")
|
if "%str_flags%"=="ECHO is off." (set "_sp_flags=")
|
||||||
if "%_sp_args%"=="ECHO is on." (set "_sp_args=")
|
if "%str_args%"=="ECHO is off." (set "_sp_args=")
|
||||||
del subcmd
|
del subcmd
|
||||||
del flags
|
del flags
|
||||||
del args
|
del args
|
||||||
|
|
||||||
:: Filter out some commands. For any others, just run the command.
|
:: Filter out some commands. For any others, just run the command.
|
||||||
if %_sp_subcommand% == "cd" (
|
if "%_sp_subcommand%" == "cd" (
|
||||||
goto :case_cd
|
goto :case_cd
|
||||||
) else if %_sp_subcommand% == "env" (
|
) else if "%_sp_subcommand%" == "env" (
|
||||||
goto :case_env
|
goto :case_env
|
||||||
) else if %_sp_subcommand% == "load" (
|
) else if "%_sp_subcommand%" == "load" (
|
||||||
goto :case_load
|
goto :case_load
|
||||||
) else if %_sp_subcommand% == "unload" (
|
) else if "%_sp_subcommand%" == "unload" (
|
||||||
goto :case_load
|
goto :case_load
|
||||||
) else (
|
) else (
|
||||||
goto :default_case
|
goto :default_case
|
||||||
@@ -153,21 +143,19 @@ goto :end_switch
|
|||||||
:: If no args or args contain --bat or -h/--help: just execute.
|
:: If no args or args contain --bat or -h/--help: just execute.
|
||||||
if NOT defined _sp_args (
|
if NOT defined _sp_args (
|
||||||
goto :default_case
|
goto :default_case
|
||||||
)
|
)else if NOT "%_sp_args%"=="%_sp_args:--help=%" (
|
||||||
set args_no_quote=%_sp_args:"=%
|
|
||||||
if NOT "%args_no_quote%"=="%args_no_quote:--help=%" (
|
|
||||||
goto :default_case
|
goto :default_case
|
||||||
) else if NOT "%args_no_quote%"=="%args_no_quote: -h=%" (
|
) else if NOT "%_sp_args%"=="%_sp_args: -h=%" (
|
||||||
goto :default_case
|
goto :default_case
|
||||||
) else if NOT "%args_no_quote%"=="%args_no_quote:--bat=%" (
|
) else if NOT "%_sp_args%"=="%_sp_args:--bat=%" (
|
||||||
goto :default_case
|
goto :default_case
|
||||||
) else if NOT "%args_no_quote%"=="%args_no_quote:deactivate=%" (
|
) else if NOT "%_sp_args%"=="%_sp_args:deactivate=%" (
|
||||||
for /f "tokens=* USEBACKQ" %%I in (
|
for /f "tokens=* USEBACKQ" %%I in (
|
||||||
`call python %spack% %_sp_flags% env deactivate --bat %args_no_quote:deactivate=%`
|
`call python "%spack%" %_sp_flags% env deactivate --bat %_sp_args:deactivate=%`
|
||||||
) do %%I
|
) do %%I
|
||||||
) else if NOT "%args_no_quote%"=="%args_no_quote:activate=%" (
|
) else if NOT "%_sp_args%"=="%_sp_args:activate=%" (
|
||||||
for /f "tokens=* USEBACKQ" %%I in (
|
for /f "tokens=* USEBACKQ" %%I in (
|
||||||
`python %spack% %_sp_flags% env activate --bat %args_no_quote:activate=%`
|
`call python "%spack%" %_sp_flags% env activate --bat %_sp_args:activate=%`
|
||||||
) do %%I
|
) do %%I
|
||||||
) else (
|
) else (
|
||||||
goto :default_case
|
goto :default_case
|
||||||
@@ -226,10 +214,10 @@ for %%Z in ("%_pa_new_path%") do if EXIST %%~sZ\NUL (
|
|||||||
exit /b 0
|
exit /b 0
|
||||||
|
|
||||||
:: set module system roots
|
:: set module system roots
|
||||||
:_sp_multi_pathadd
|
:_sp_multi_pathadd
|
||||||
for %%I in (%~2) do (
|
for %%I in (%~2) do (
|
||||||
for %%Z in (%_sp_compatible_sys_types%) do (
|
for %%Z in (%_sp_compatible_sys_types%) do (
|
||||||
:pathadd "%~1" "%%I\%%Z"
|
:pathadd "%~1" "%%I\%%Z"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
exit /B %ERRORLEVEL%
|
exit /B %ERRORLEVEL%
|
||||||
@@ -52,6 +52,7 @@ if defined py_path (
|
|||||||
|
|
||||||
if defined py_exe (
|
if defined py_exe (
|
||||||
"%py_exe%" "%SPACK_ROOT%\bin\haspywin.py"
|
"%py_exe%" "%SPACK_ROOT%\bin\haspywin.py"
|
||||||
|
"%py_exe%" "%SPACK_ROOT%\bin\spack" external find python >NUL
|
||||||
)
|
)
|
||||||
|
|
||||||
set "EDITOR=notepad"
|
set "EDITOR=notepad"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -54,11 +54,6 @@ config:
|
|||||||
# are that it precludes its use as a system package and its ability to be
|
# are that it precludes its use as a system package and its ability to be
|
||||||
# pip installable.
|
# pip installable.
|
||||||
#
|
#
|
||||||
# In Spack environment files, chaining onto existing system Spack
|
|
||||||
# installations, the $env variable can be used to download, cache and build
|
|
||||||
# into user-writable paths that are relative to the currently active
|
|
||||||
# environment.
|
|
||||||
#
|
|
||||||
# In any case, if the username is not already in the path, Spack will append
|
# In any case, if the username is not already in the path, Spack will append
|
||||||
# the value of `$user` in an attempt to avoid potential conflicts between
|
# the value of `$user` in an attempt to avoid potential conflicts between
|
||||||
# users in shared temporary spaces.
|
# users in shared temporary spaces.
|
||||||
@@ -81,10 +76,6 @@ config:
|
|||||||
source_cache: $spack/var/spack/cache
|
source_cache: $spack/var/spack/cache
|
||||||
|
|
||||||
|
|
||||||
## Directory where spack managed environments are created and stored
|
|
||||||
# environments_root: $spack/var/spack/environments
|
|
||||||
|
|
||||||
|
|
||||||
# Cache directory for miscellaneous files, like the package index.
|
# Cache directory for miscellaneous files, like the package index.
|
||||||
# This can be purged with `spack clean --misc-cache`
|
# This can be purged with `spack clean --misc-cache`
|
||||||
misc_cache: $user_cache_path/cache
|
misc_cache: $user_cache_path/cache
|
||||||
@@ -185,7 +176,7 @@ config:
|
|||||||
# when Spack needs to manage its own package metadata and all operations are
|
# when Spack needs to manage its own package metadata and all operations are
|
||||||
# expected to complete within the default time limit. The timeout should
|
# expected to complete within the default time limit. The timeout should
|
||||||
# therefore generally be left untouched.
|
# therefore generally be left untouched.
|
||||||
db_lock_timeout: 60
|
db_lock_timeout: 3
|
||||||
|
|
||||||
|
|
||||||
# How long to wait when attempting to modify a package (e.g. to install it).
|
# How long to wait when attempting to modify a package (e.g. to install it).
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
# -------------------------------------------------------------------------
|
|
||||||
# This file controls default concretization preferences for Spack.
|
|
||||||
#
|
|
||||||
# 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 the following files.
|
|
||||||
#
|
|
||||||
# Per-spack-instance settings (overrides defaults):
|
|
||||||
# $SPACK_ROOT/etc/spack/packages.yaml
|
|
||||||
#
|
|
||||||
# Per-user settings (overrides default and site settings):
|
|
||||||
# ~/.spack/packages.yaml
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
packages:
|
|
||||||
all:
|
|
||||||
compiler:
|
|
||||||
- msvc
|
|
||||||
providers:
|
|
||||||
mpi: [msmpi]
|
|
||||||
1
lib/spack/docs/.gitignore
vendored
1
lib/spack/docs/.gitignore
vendored
@@ -5,4 +5,3 @@ llnl*.rst
|
|||||||
_build
|
_build
|
||||||
.spack-env
|
.spack-env
|
||||||
spack.lock
|
spack.lock
|
||||||
_spack_root
|
|
||||||
|
|||||||
162
lib/spack/docs/analyze.rst
Normal file
162
lib/spack/docs/analyze.rst
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
.. 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)
|
||||||
|
|
||||||
|
.. _analyze:
|
||||||
|
|
||||||
|
=======
|
||||||
|
Analyze
|
||||||
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
The analyze command is a front-end to various tools that let us analyze
|
||||||
|
package installations. Each analyzer is a module for a different kind
|
||||||
|
of analysis that can be done on a package installation, including (but not
|
||||||
|
limited to) binary, log, or text analysis. Thus, the analyze command group
|
||||||
|
allows you to take an existing package install, choose an analyzer,
|
||||||
|
and extract some output for the package using it.
|
||||||
|
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
Analyzer Metadata
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
For all analyzers, we write to an ``analyzers`` folder in ``~/.spack``, or the
|
||||||
|
value that you specify in your spack config at ``config:analyzers_dir``.
|
||||||
|
For example, here we see the results of running an analysis on zlib:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tree ~/.spack/analyzers/
|
||||||
|
└── linux-ubuntu20.04-skylake
|
||||||
|
└── gcc-9.3.0
|
||||||
|
└── zlib-1.2.11-sl7m27mzkbejtkrajigj3a3m37ygv4u2
|
||||||
|
├── environment_variables
|
||||||
|
│ └── spack-analyzer-environment-variables.json
|
||||||
|
├── install_files
|
||||||
|
│ └── spack-analyzer-install-files.json
|
||||||
|
└── libabigail
|
||||||
|
└── spack-analyzer-libabigail-libz.so.1.2.11.xml
|
||||||
|
|
||||||
|
|
||||||
|
This means that you can always find analyzer output in this folder, and it
|
||||||
|
is organized with the same logic as the package install it was run for.
|
||||||
|
If you want to customize this top level folder, simply provide the ``--path``
|
||||||
|
argument to ``spack analyze run``. The nested organization will be maintained
|
||||||
|
within your custom root.
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
Listing Analyzers
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
If you aren't familiar with Spack's analyzers, you can quickly list those that
|
||||||
|
are available:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze list-analyzers
|
||||||
|
install_files : install file listing read from install_manifest.json
|
||||||
|
environment_variables : environment variables parsed from spack-build-env.txt
|
||||||
|
config_args : config args loaded from spack-configure-args.txt
|
||||||
|
libabigail : Application Binary Interface (ABI) features for objects
|
||||||
|
|
||||||
|
|
||||||
|
In the above, the first three are fairly simple - parsing metadata files from
|
||||||
|
a package install directory to save
|
||||||
|
|
||||||
|
-------------------
|
||||||
|
Analyzing a Package
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The analyze command, akin to install, will accept a package spec to perform
|
||||||
|
an analysis for. The package must be installed. Let's walk through an example
|
||||||
|
with zlib. We first ask to analyze it. However, since we have more than one
|
||||||
|
install, we are asked to disambiguate:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze run zlib
|
||||||
|
==> Error: zlib matches multiple packages.
|
||||||
|
Matching packages:
|
||||||
|
fz2bs56 zlib@1.2.11%gcc@7.5.0 arch=linux-ubuntu18.04-skylake
|
||||||
|
sl7m27m zlib@1.2.11%gcc@9.3.0 arch=linux-ubuntu20.04-skylake
|
||||||
|
Use a more specific spec.
|
||||||
|
|
||||||
|
|
||||||
|
We can then specify the spec version that we want to analyze:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze run zlib/fz2bs56
|
||||||
|
|
||||||
|
If you don't provide any specific analyzer names, by default all analyzers
|
||||||
|
(shown in the ``list-analyzers`` subcommand list) will be run. If an analyzer does not
|
||||||
|
have any result, it will be skipped. For example, here is a result running for
|
||||||
|
zlib:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ ls ~/.spack/analyzers/linux-ubuntu20.04-skylake/gcc-9.3.0/zlib-1.2.11-sl7m27mzkbejtkrajigj3a3m37ygv4u2/
|
||||||
|
spack-analyzer-environment-variables.json
|
||||||
|
spack-analyzer-install-files.json
|
||||||
|
spack-analyzer-libabigail-libz.so.1.2.11.xml
|
||||||
|
|
||||||
|
If you want to run a specific analyzer, ask for it with `--analyzer`. Here we run
|
||||||
|
spack analyze on libabigail (already installed) _using_ libabigail1
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze run --analyzer abigail libabigail
|
||||||
|
|
||||||
|
|
||||||
|
.. _analyze_monitoring:
|
||||||
|
|
||||||
|
----------------------
|
||||||
|
Monitoring An Analysis
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
For any kind of analysis, you can
|
||||||
|
use a `spack monitor <https://github.com/spack/spack-monitor>`_ "Spackmon"
|
||||||
|
as a server to upload the same run metadata to. You can
|
||||||
|
follow the instructions in the `spack monitor documentation <https://spack-monitor.readthedocs.org>`_
|
||||||
|
to first create a server along with a username and token for yourself.
|
||||||
|
You can then use this guide to interact with the server.
|
||||||
|
|
||||||
|
You should first export our spack monitor token and username to the environment:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ export SPACKMON_TOKEN=50445263afd8f67e59bd79bff597836ee6c05438
|
||||||
|
$ export SPACKMON_USER=spacky
|
||||||
|
|
||||||
|
|
||||||
|
By default, the host for your server is expected to be at ``http://127.0.0.1``
|
||||||
|
with a prefix of ``ms1``, and if this is the case, you can simply add the
|
||||||
|
``--monitor`` flag to the install command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze run --monitor wget
|
||||||
|
|
||||||
|
If you need to customize the host or the prefix, you can do that as well:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze run --monitor --monitor-prefix monitor --monitor-host https://monitor-service.io wget
|
||||||
|
|
||||||
|
If your server doesn't have authentication, you can skip it:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze run --monitor --monitor-disable-auth wget
|
||||||
|
|
||||||
|
Regardless of your choice, when you run analyze on an installed package (whether
|
||||||
|
it was installed with ``--monitor`` or not, you'll see the results generating as they did
|
||||||
|
before, and a message that the monitor server was pinged:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack analyze --monitor wget
|
||||||
|
...
|
||||||
|
==> Sending result for wget bin/wget to monitor.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -13,51 +13,49 @@ Some sites may encourage users to set up their own test environments
|
|||||||
before carrying out central installations, or some users may prefer to set
|
before carrying out central installations, or some users may prefer to set
|
||||||
up these environments on their own motivation. To reduce the load of
|
up these environments on their own motivation. To reduce the load of
|
||||||
recompiling otherwise identical package specs in different installations,
|
recompiling otherwise identical package specs in different installations,
|
||||||
installed packages can be put into build cache tarballs, pushed to
|
installed packages can be put into build cache tarballs, uploaded to
|
||||||
your Spack mirror and then downloaded and installed by others.
|
your Spack mirror and then downloaded and installed by others.
|
||||||
|
|
||||||
Whenever a mirror provides prebuilt packages, Spack will take these packages
|
|
||||||
into account during concretization and installation, making ``spack install``
|
|
||||||
signficantly faster.
|
|
||||||
|
|
||||||
|
--------------------------
|
||||||
|
Creating build cache files
|
||||||
|
--------------------------
|
||||||
|
|
||||||
.. note::
|
A compressed tarball of an installed package is created. Tarballs are created
|
||||||
|
for all of its link and run dependency packages as well. Compressed tarballs are
|
||||||
We use the terms "build cache" and "mirror" often interchangeably. Mirrors
|
signed with gpg and signature and tarball and put in a ``.spack`` file. Optionally,
|
||||||
are used during installation both for sources and prebuilt packages. Build
|
the rpaths (and ids and deps on macOS) can be changed to paths relative to
|
||||||
caches refer to mirrors that provide prebuilt packages.
|
the Spack install tree before the tarball is created.
|
||||||
|
|
||||||
|
|
||||||
----------------------
|
|
||||||
Creating a build cache
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Build caches are created via:
|
Build caches are created via:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack buildcache create <path/url/mirror name> <spec>
|
$ spack buildcache create <spec>
|
||||||
|
|
||||||
This command takes the locally installed spec and its dependencies, and
|
|
||||||
creates tarballs of their install prefixes. It also generates metadata files,
|
|
||||||
signed with GPG. These tarballs and metadata files are then pushed to the
|
|
||||||
provided binary cache, which can be a local directory or a remote URL.
|
|
||||||
|
|
||||||
Here is an example where a build cache is created in a local directory named
|
If you wanted to create a build cache in a local directory, you would provide
|
||||||
"spack-cache", to which we push the "ninja" spec:
|
the ``-d`` argument to target that directory, again also specifying the spec.
|
||||||
|
Here is an example creating a local directory, "spack-cache" and creating
|
||||||
|
build cache files for the "ninja" spec:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack buildcache create --allow-root ./spack-cache ninja
|
$ mkdir -p ./spack-cache
|
||||||
==> Pushing binary packages to file:///home/spackuser/spack/spack-cache/build_cache
|
$ spack buildcache create -d ./spack-cache ninja
|
||||||
|
==> Buildcache files will be output to file:///home/spackuser/spack/spack-cache/build_cache
|
||||||
|
gpgconf: socketdir is '/run/user/1000/gnupg'
|
||||||
|
gpg: using "E6DF6A8BD43208E4D6F392F23777740B7DBD643D" as default secret key for signing
|
||||||
|
|
||||||
Not that ``ninja`` must be installed locally for this to work.
|
Note that the targeted spec must already be installed. Once you have a build cache,
|
||||||
|
you can add it as a mirror, discussed next.
|
||||||
|
|
||||||
We're using the ``--allow-root`` flag to tell Spack that is OK when any of
|
.. warning::
|
||||||
the binaries we're pushing contain references to the local Spack install
|
|
||||||
directory.
|
|
||||||
|
|
||||||
Once you have a build cache, you can add it as a mirror, discussed next.
|
Spack improved the format used for binary caches in v0.18. The entire v0.18 series
|
||||||
|
will be able to verify and install binary caches both in the new and in the old format.
|
||||||
|
Support for using the old format is expected to end in v0.19, so we advise users to
|
||||||
|
recreate relevant buildcaches using Spack v0.18 or higher.
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
Finding or installing build cache files
|
Finding or installing build cache files
|
||||||
@@ -68,10 +66,10 @@ with:
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack mirror add <name> <url or path>
|
$ spack mirror add <name> <url>
|
||||||
|
|
||||||
|
|
||||||
Both web URLs and local paths on the filesystem can be specified. In the previous
|
Note that the url can be a web url _or_ a local filesystem location. In the previous
|
||||||
example, you might add the directory "spack-cache" and call it ``mymirror``:
|
example, you might add the directory "spack-cache" and call it ``mymirror``:
|
||||||
|
|
||||||
|
|
||||||
@@ -96,7 +94,7 @@ this new build cache as follows:
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack buildcache update-index ./spack-cache
|
$ spack buildcache update-index -d spack-cache/
|
||||||
|
|
||||||
Now you can use list:
|
Now you can use list:
|
||||||
|
|
||||||
@@ -107,38 +105,46 @@ Now you can use list:
|
|||||||
-- linux-ubuntu20.04-skylake / gcc@9.3.0 ------------------------
|
-- linux-ubuntu20.04-skylake / gcc@9.3.0 ------------------------
|
||||||
ninja@1.10.2
|
ninja@1.10.2
|
||||||
|
|
||||||
With ``mymirror`` configured and an index available, Spack will automatically
|
|
||||||
use it during concretization and installation. That means that you can expect
|
Great! So now let's say you have a different spack installation, or perhaps just
|
||||||
``spack install ninja`` to fetch prebuilt packages from the mirror. Let's
|
a different environment for the same one, and you want to install a package from
|
||||||
verify by re-installing ninja:
|
that build cache. Let's first uninstall the actual library "ninja" to see if we can
|
||||||
|
re-install it from the cache.
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack uninstall ninja
|
$ spack uninstall ninja
|
||||||
$ spack install ninja
|
|
||||||
==> Installing ninja-1.11.1-yxferyhmrjkosgta5ei6b4lqf6bxbscz
|
|
||||||
==> Fetching file:///home/spackuser/spack/spack-cache/build_cache/linux-ubuntu20.04-skylake-gcc-9.3.0-ninja-1.10.2-yxferyhmrjkosgta5ei6b4lqf6bxbscz.spec.json.sig
|
|
||||||
gpg: Signature made Do 12 Jan 2023 16:01:04 CET
|
|
||||||
gpg: using RSA key 61B82B2B2350E171BD17A1744E3A689061D57BF6
|
|
||||||
gpg: Good signature from "example (GPG created for Spack) <example@example.com>" [ultimate]
|
|
||||||
==> Fetching file:///home/spackuser/spack/spack-cache/build_cache/linux-ubuntu20.04-skylake/gcc-9.3.0/ninja-1.10.2/linux-ubuntu20.04-skylake-gcc-9.3.0-ninja-1.10.2-yxferyhmrjkosgta5ei6b4lqf6bxbscz.spack
|
|
||||||
==> Extracting ninja-1.10.2-yxferyhmrjkosgta5ei6b4lqf6bxbscz from binary cache
|
|
||||||
==> ninja: Successfully installed ninja-1.11.1-yxferyhmrjkosgta5ei6b4lqf6bxbscz
|
|
||||||
Search: 0.00s. Fetch: 0.17s. Install: 0.12s. Total: 0.29s
|
|
||||||
[+] /home/harmen/spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/ninja-1.11.1-yxferyhmrjkosgta5ei6b4lqf6bxbscz
|
|
||||||
|
|
||||||
|
|
||||||
It worked! You've just completed a full example of creating a build cache with
|
And now reinstall from the buildcache
|
||||||
a spec of interest, adding it as a mirror, updating its index, listing the contents,
|
|
||||||
and finally, installing from it.
|
|
||||||
|
|
||||||
By default Spack falls back to building from sources when the mirror is not available
|
|
||||||
or when the package is simply not already available. To force Spack to only install
|
|
||||||
prebuilt packages, you can use
|
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install --use-buildcache only <package>
|
$ spack buildcache install ninja
|
||||||
|
==> buildcache spec(s) matching ninja
|
||||||
|
==> Fetching file:///home/spackuser/spack/spack-cache/build_cache/linux-ubuntu20.04-skylake/gcc-9.3.0/ninja-1.10.2/linux-ubuntu20.04-skylake-gcc-9.3.0-ninja-1.10.2-i4e5luour7jxdpc3bkiykd4imke3mkym.spack
|
||||||
|
####################################################################################################################################### 100.0%
|
||||||
|
==> Installing buildcache for spec ninja@1.10.2%gcc@9.3.0 arch=linux-ubuntu20.04-skylake
|
||||||
|
gpgconf: socketdir is '/run/user/1000/gnupg'
|
||||||
|
gpg: Signature made Tue 23 Mar 2021 10:16:29 PM MDT
|
||||||
|
gpg: using RSA key E6DF6A8BD43208E4D6F392F23777740B7DBD643D
|
||||||
|
gpg: Good signature from "spackuser (GPG created for Spack) <spackuser@noreply.users.github.com>" [ultimate]
|
||||||
|
|
||||||
|
|
||||||
|
It worked! You've just completed a full example of creating a build cache with
|
||||||
|
a spec of interest, adding it as a mirror, updating it's index, listing the contents,
|
||||||
|
and finally, installing from it.
|
||||||
|
|
||||||
|
|
||||||
|
Note that the above command is intended to install a particular package to a
|
||||||
|
build cache you have created, and not to install a package from a build cache.
|
||||||
|
For the latter, once a mirror is added, by default when you do ``spack install`` the ``--use-cache``
|
||||||
|
flag is set, and you will install a package from a build cache if it is available.
|
||||||
|
If you want to always use the cache, you can do:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install --cache-only <package>
|
||||||
|
|
||||||
For example, to combine all of the commands above to add the E4S build cache
|
For example, to combine all of the commands above to add the E4S build cache
|
||||||
and then install from it exclusively, you would do:
|
and then install from it exclusively, you would do:
|
||||||
@@ -147,7 +153,7 @@ and then install from it exclusively, you would do:
|
|||||||
|
|
||||||
$ spack mirror add E4S https://cache.e4s.io
|
$ spack mirror add E4S https://cache.e4s.io
|
||||||
$ spack buildcache keys --install --trust
|
$ spack buildcache keys --install --trust
|
||||||
$ spack install --use-buildache only <package>
|
$ spack install --cache-only <package>
|
||||||
|
|
||||||
We use ``--install`` and ``--trust`` to say that we are installing keys to our
|
We use ``--install`` and ``--trust`` to say that we are installing keys to our
|
||||||
keyring, and trusting all downloaded keys.
|
keyring, and trusting all downloaded keys.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
.. Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -272,7 +272,7 @@ Selection of the target microarchitectures
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The options under the ``targets`` attribute control which targets are considered during a solve.
|
The options under the ``targets`` attribute control which targets are considered during a solve.
|
||||||
Currently the options in this section are only configurable from the ``concretizer.yaml`` file
|
Currently the options in this section are only configurable from the ``concretization.yaml`` file
|
||||||
and there are no corresponding command line arguments to enable them for a single solve.
|
and there are no corresponding command line arguments to enable them for a single solve.
|
||||||
|
|
||||||
The ``granularity`` option can take two possible values: ``microarchitectures`` and ``generic``.
|
The ``granularity`` option can take two possible values: ``microarchitectures`` and ``generic``.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
.. Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -366,7 +366,7 @@ If the ``pyproject.toml`` lists ``mesonpy`` as the ``build-backend``,
|
|||||||
it uses the meson build system. Meson uses the default
|
it uses the meson build system. Meson uses the default
|
||||||
``pyproject.toml`` keys to list dependencies.
|
``pyproject.toml`` keys to list dependencies.
|
||||||
|
|
||||||
See https://meson-python.readthedocs.io/en/latest/tutorials/introduction.html
|
See https://meson-python.readthedocs.io/en/latest/usage/start.html
|
||||||
for more information.
|
for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
.. Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -58,7 +58,9 @@ Testing
|
|||||||
``WafPackage`` also provides ``test`` and ``installtest`` methods,
|
``WafPackage`` also provides ``test`` and ``installtest`` methods,
|
||||||
which are run after the ``build`` and ``install`` phases, respectively.
|
which are run after the ``build`` and ``install`` phases, respectively.
|
||||||
By default, these phases do nothing, but you can override them to
|
By default, these phases do nothing, but you can override them to
|
||||||
run package-specific unit tests.
|
run package-specific unit tests. For example, the
|
||||||
|
`py-py2cairo <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/py-py2cairo/package.py>`_
|
||||||
|
package uses:
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
if not os.path.exists(link_name):
|
if not os.path.exists(link_name):
|
||||||
os.symlink(os.path.abspath("../../.."), link_name, target_is_directory=True)
|
os.symlink(os.path.abspath("../../.."), link_name, target_is_directory=True)
|
||||||
sys.path.insert(0, os.path.abspath("_spack_root/lib/spack/external"))
|
sys.path.insert(0, os.path.abspath("_spack_root/lib/spack/external"))
|
||||||
sys.path.insert(0, os.path.abspath("_spack_root/lib/spack/external/_vendoring"))
|
sys.path.insert(0, os.path.abspath("_spack_root/lib/spack/external/pytest-fallback"))
|
||||||
sys.path.append(os.path.abspath("_spack_root/lib/spack/"))
|
sys.path.append(os.path.abspath("_spack_root/lib/spack/"))
|
||||||
|
|
||||||
# Add the Spack bin directory to the path so that we can use its output in docs.
|
# Add the Spack bin directory to the path so that we can use its output in docs.
|
||||||
@@ -74,22 +74,13 @@
|
|||||||
"--force", # Overwrite existing files
|
"--force", # Overwrite existing files
|
||||||
"--no-toc", # Don't create a table of contents file
|
"--no-toc", # Don't create a table of contents file
|
||||||
"--output-dir=.", # Directory to place all output
|
"--output-dir=.", # Directory to place all output
|
||||||
"--module-first", # emit module docs before submodule docs
|
|
||||||
]
|
]
|
||||||
sphinx_apidoc(
|
sphinx_apidoc(apidoc_args + ["_spack_root/lib/spack/spack"])
|
||||||
apidoc_args
|
|
||||||
+ [
|
|
||||||
"_spack_root/lib/spack/spack",
|
|
||||||
"_spack_root/lib/spack/spack/test/*.py",
|
|
||||||
"_spack_root/lib/spack/spack/test/cmd/*.py",
|
|
||||||
]
|
|
||||||
)
|
|
||||||
sphinx_apidoc(apidoc_args + ["_spack_root/lib/spack/llnl"])
|
sphinx_apidoc(apidoc_args + ["_spack_root/lib/spack/llnl"])
|
||||||
|
|
||||||
# Enable todo items
|
# Enable todo items
|
||||||
todo_include_todos = True
|
todo_include_todos = True
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Disable duplicate cross-reference warnings.
|
# Disable duplicate cross-reference warnings.
|
||||||
#
|
#
|
||||||
@@ -164,7 +155,7 @@ def setup(sphinx):
|
|||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = "Spack"
|
project = "Spack"
|
||||||
copyright = "2013-2023, Lawrence Livermore National Laboratory."
|
copyright = "2013-2021, Lawrence Livermore National Laboratory."
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
@@ -209,14 +200,12 @@ def setup(sphinx):
|
|||||||
("py:class", "_frozen_importlib_external.SourceFileLoader"),
|
("py:class", "_frozen_importlib_external.SourceFileLoader"),
|
||||||
("py:class", "clingo.Control"),
|
("py:class", "clingo.Control"),
|
||||||
("py:class", "six.moves.urllib.parse.ParseResult"),
|
("py:class", "six.moves.urllib.parse.ParseResult"),
|
||||||
("py:class", "TextIO"),
|
|
||||||
# Spack classes that are private and we don't want to expose
|
# Spack classes that are private and we don't want to expose
|
||||||
("py:class", "spack.provider_index._IndexBase"),
|
("py:class", "spack.provider_index._IndexBase"),
|
||||||
("py:class", "spack.repo._PrependFileLoader"),
|
("py:class", "spack.repo._PrependFileLoader"),
|
||||||
("py:class", "spack.build_systems._checks.BaseBuilder"),
|
("py:class", "spack.build_systems._checks.BaseBuilder"),
|
||||||
# Spack classes that intersphinx is unable to resolve
|
# Spack classes that intersphinx is unable to resolve
|
||||||
("py:class", "spack.version.VersionBase"),
|
("py:class", "spack.version.VersionBase"),
|
||||||
("py:class", "spack.spec.DependencySpec"),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||||
@@ -354,7 +343,9 @@ class SpackStyle(DefaultStyle):
|
|||||||
|
|
||||||
# Grouping the document tree into LaTeX files. List of tuples
|
# Grouping the document tree into LaTeX files. List of tuples
|
||||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||||
latex_documents = [("index", "Spack.tex", "Spack Documentation", "Todd Gamblin", "manual")]
|
latex_documents = [
|
||||||
|
("index", "Spack.tex", "Spack Documentation", "Todd Gamblin", "manual"),
|
||||||
|
]
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of
|
# The name of an image file (relative to this directory) to place at the top of
|
||||||
# the title page.
|
# the title page.
|
||||||
@@ -401,7 +392,7 @@ class SpackStyle(DefaultStyle):
|
|||||||
"Spack",
|
"Spack",
|
||||||
"One line description of project.",
|
"One line description of project.",
|
||||||
"Miscellaneous",
|
"Miscellaneous",
|
||||||
)
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Documents to append as an appendix to all manuals.
|
# Documents to append as an appendix to all manuals.
|
||||||
@@ -417,4 +408,6 @@ class SpackStyle(DefaultStyle):
|
|||||||
# -- Extension configuration -------------------------------------------------
|
# -- Extension configuration -------------------------------------------------
|
||||||
|
|
||||||
# sphinx.ext.intersphinx
|
# sphinx.ext.intersphinx
|
||||||
intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
|
intersphinx_mapping = {
|
||||||
|
"python": ("https://docs.python.org/3", None),
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -222,7 +222,7 @@ and location. (See the *Configuration settings* section of ``man
|
|||||||
ccache`` to learn more about the default settings and how to change
|
ccache`` to learn more about the default settings and how to change
|
||||||
them). Please note that we currently disable ccache's ``hash_dir``
|
them). Please note that we currently disable ccache's ``hash_dir``
|
||||||
feature to avoid an issue with the stage directory (see
|
feature to avoid an issue with the stage directory (see
|
||||||
https://github.com/spack/spack/pull/3761#issuecomment-294352232).
|
https://github.com/LLNL/spack/pull/3761#issuecomment-294352232).
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
``shared_linking:type``
|
``shared_linking:type``
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -394,7 +394,7 @@ are indicated at the start of the path with ``~`` or ``~user``.
|
|||||||
Spack-specific variables
|
Spack-specific variables
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Spack understands over a dozen special variables. These are:
|
Spack understands several special variables. These are:
|
||||||
|
|
||||||
* ``$env``: name of the currently active :ref:`environment <environments>`
|
* ``$env``: name of the currently active :ref:`environment <environments>`
|
||||||
* ``$spack``: path to the prefix of this Spack installation
|
* ``$spack``: path to the prefix of this Spack installation
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -118,7 +118,7 @@ make another change, test that change, etc. We use `pytest
|
|||||||
<http://pytest.org/>`_ as our tests framework, and these types of
|
<http://pytest.org/>`_ as our tests framework, and these types of
|
||||||
arguments are just passed to the ``pytest`` command underneath. See `the
|
arguments are just passed to the ``pytest`` command underneath. See `the
|
||||||
pytest docs
|
pytest docs
|
||||||
<https://doc.pytest.org/en/latest/how-to/usage.html#specifying-which-tests-to-run>`_
|
<http://doc.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests>`_
|
||||||
for more details on test selection syntax.
|
for more details on test selection syntax.
|
||||||
|
|
||||||
``spack unit-test`` has a few special options that can help you
|
``spack unit-test`` has a few special options that can help you
|
||||||
@@ -147,7 +147,7 @@ you want to know about. For example, to see just the tests in
|
|||||||
|
|
||||||
You can also combine any of these options with a ``pytest`` keyword
|
You can also combine any of these options with a ``pytest`` keyword
|
||||||
search. See the `pytest usage docs
|
search. See the `pytest usage docs
|
||||||
<https://doc.pytest.org/en/latest/how-to/usage.html#specifying-which-tests-to-run>`_
|
<https://docs.pytest.org/en/stable/usage.html#specifying-tests-selecting-tests>`_:
|
||||||
for more details on test selection syntax. For example, to see the names of all tests that have "spec"
|
for more details on test selection syntax. For example, to see the names of all tests that have "spec"
|
||||||
or "concretize" somewhere in their names:
|
or "concretize" somewhere in their names:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -175,11 +175,14 @@ Spec-related modules
|
|||||||
^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
:mod:`spack.spec`
|
:mod:`spack.spec`
|
||||||
Contains :class:`~spack.spec.Spec`. Also implements most of the logic for concretization
|
Contains :class:`~spack.spec.Spec` and :class:`~spack.spec.SpecParser`.
|
||||||
|
Also implements most of the logic for normalization and concretization
|
||||||
of specs.
|
of specs.
|
||||||
|
|
||||||
:mod:`spack.parser`
|
:mod:`spack.parse`
|
||||||
Contains :class:`~spack.parser.SpecParser` and functions related to parsing specs.
|
Contains some base classes for implementing simple recursive descent
|
||||||
|
parsers: :class:`~spack.parse.Parser` and :class:`~spack.parse.Lexer`.
|
||||||
|
Used by :class:`~spack.spec.SpecParser`.
|
||||||
|
|
||||||
:mod:`spack.concretize`
|
:mod:`spack.concretize`
|
||||||
Contains :class:`~spack.concretize.Concretizer` implementation,
|
Contains :class:`~spack.concretize.Concretizer` implementation,
|
||||||
@@ -232,7 +235,7 @@ Spack Subcommands
|
|||||||
Unit tests
|
Unit tests
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
||||||
``spack.test``
|
:mod:`spack.test`
|
||||||
Implements Spack's test suite. Add a module and put its name in
|
Implements Spack's test suite. Add a module and put its name in
|
||||||
the test suite in ``__init__.py`` to add more unit tests.
|
the test suite in ``__init__.py`` to add more unit tests.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -58,9 +58,9 @@ Using Environments
|
|||||||
Here we follow a typical use case of creating, concretizing,
|
Here we follow a typical use case of creating, concretizing,
|
||||||
installing and loading an environment.
|
installing and loading an environment.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Creating a managed Environment
|
Creating a named Environment
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
An environment is created by:
|
An environment is created by:
|
||||||
|
|
||||||
@@ -72,8 +72,7 @@ Spack then creates the directory ``var/spack/environments/myenv``.
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
All managed environments by default are stored in the ``var/spack/environments`` folder.
|
All named environments are stored in the ``var/spack/environments`` folder.
|
||||||
This location can be changed by setting the ``environments_root`` variable in ``config.yaml``.
|
|
||||||
|
|
||||||
In the ``var/spack/environments/myenv`` directory, Spack creates the
|
In the ``var/spack/environments/myenv`` directory, Spack creates the
|
||||||
file ``spack.yaml`` and the hidden directory ``.spack-env``.
|
file ``spack.yaml`` and the hidden directory ``.spack-env``.
|
||||||
@@ -1040,7 +1039,7 @@ gets installed and is available for use in the ``env`` target.
|
|||||||
$(SPACK) -e . concretize -f
|
$(SPACK) -e . concretize -f
|
||||||
|
|
||||||
env.mk: spack.lock
|
env.mk: spack.lock
|
||||||
$(SPACK) -e . env depfile -o $@ --make-prefix spack
|
$(SPACK) -e . env depfile -o $@ --make-target-prefix spack
|
||||||
|
|
||||||
env: spack/env
|
env: spack/env
|
||||||
$(info Environment installed!)
|
$(info Environment installed!)
|
||||||
@@ -1063,9 +1062,9 @@ the include is conditional.
|
|||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
When including generated ``Makefile``\s, it is important to use
|
When including generated ``Makefile``\s, it is important to use
|
||||||
the ``--make-prefix`` flag and use the non-phony target
|
the ``--make-target-prefix`` flag and use the non-phony target
|
||||||
``<prefix>/env`` as prerequisite, instead of the phony target
|
``<target-prefix>/env`` as prerequisite, instead of the phony target
|
||||||
``<prefix>/all``.
|
``<target-prefix>/all``.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Building a subset of the environment
|
Building a subset of the environment
|
||||||
@@ -1090,52 +1089,4 @@ output (``spack install --verbose``) while its dependencies are installed silent
|
|||||||
$ make -j16 install-deps/python-3.11.0-<hash> SPACK_INSTALL_FLAGS=--show-log-on-error
|
$ make -j16 install-deps/python-3.11.0-<hash> SPACK_INSTALL_FLAGS=--show-log-on-error
|
||||||
|
|
||||||
# Install the root spec with verbose output.
|
# Install the root spec with verbose output.
|
||||||
$ make -j16 install/python-3.11.0-<hash> SPACK_INSTALL_FLAGS=--verbose
|
$ make -j16 install/python-3.11.0-<hash> SPACK_INSTALL_FLAGS=--verbose
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
Adding post-install hooks
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Another advanced use-case of generated ``Makefile``\s is running a post-install
|
|
||||||
command for each package. These "hooks" could be anything from printing a
|
|
||||||
post-install message, running tests, or pushing just-built binaries to a buildcache.
|
|
||||||
|
|
||||||
This can be accomplished through the generated ``[<prefix>/]SPACK_PACKAGE_IDS``
|
|
||||||
variable. Assuming we have an active and concrete environment, we generate the
|
|
||||||
associated ``Makefile`` with a prefix ``example``:
|
|
||||||
|
|
||||||
.. code:: console
|
|
||||||
|
|
||||||
$ spack env depfile -o env.mk --make-prefix example
|
|
||||||
|
|
||||||
And we now include it in a different ``Makefile``, in which we create a target
|
|
||||||
``example/push/%`` with ``%`` referring to a package identifier. This target
|
|
||||||
depends on the particular package installation. In this target we automatically
|
|
||||||
have the target-specific ``HASH`` and ``SPEC`` variables at our disposal. They
|
|
||||||
are respectively the spec hash (excluding leading ``/``), and a human-readable spec.
|
|
||||||
Finally, we have an entrypoint target ``push`` that will update the buildcache
|
|
||||||
index once every package is pushed. Note how this target uses the generated
|
|
||||||
``example/SPACK_PACKAGE_IDS`` variable to define its prerequisites.
|
|
||||||
|
|
||||||
.. code:: Makefile
|
|
||||||
|
|
||||||
SPACK ?= spack
|
|
||||||
BUILDCACHE_DIR = $(CURDIR)/tarballs
|
|
||||||
|
|
||||||
.PHONY: all
|
|
||||||
|
|
||||||
all: push
|
|
||||||
|
|
||||||
include env.mk
|
|
||||||
|
|
||||||
example/push/%: example/install/%
|
|
||||||
@mkdir -p $(dir $@)
|
|
||||||
$(info About to push $(SPEC) to a buildcache)
|
|
||||||
$(SPACK) -e . buildcache create --allow-root --only=package --directory $(BUILDCACHE_DIR) /$(HASH)
|
|
||||||
@touch $@
|
|
||||||
|
|
||||||
push: $(addprefix example/push/,$(example/SPACK_PACKAGE_IDS))
|
|
||||||
$(info Updating the buildcache index)
|
|
||||||
$(SPACK) -e . buildcache update-index --directory $(BUILDCACHE_DIR)
|
|
||||||
$(info Done!)
|
|
||||||
@touch $@
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -116,7 +116,7 @@ creates a simple python file:
|
|||||||
|
|
||||||
# FIXME: Add a list of GitHub accounts to
|
# FIXME: Add a list of GitHub accounts to
|
||||||
# notify when the package is updated.
|
# notify when the package is updated.
|
||||||
# maintainers("github_user1", "github_user2")
|
# maintainers = ["github_user1", "github_user2"]
|
||||||
|
|
||||||
version("0.8.13", sha256="591a9b4ec81c1f2042a97aa60564e0cb79d041c52faa7416acb38bc95bd2c76d")
|
version("0.8.13", sha256="591a9b4ec81c1f2042a97aa60564e0cb79d041c52faa7416acb38bc95bd2c76d")
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -21,7 +21,7 @@ be present on the machine where Spack is run:
|
|||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
|
|
||||||
These requirements can be easily installed on most modern Linux systems;
|
These requirements can be easily installed on most modern Linux systems;
|
||||||
on macOS, the Command Line Tools package is required, and a full XCode suite
|
on macOS, the Command Line Tools package is required, and a full XCode suite
|
||||||
may be necessary for some packages such as Qt and apple-gl. Spack is designed
|
may be necessary for some packages such as Qt and apple-gl. Spack is designed
|
||||||
to run on HPC platforms like Cray. Not all packages should be expected
|
to run on HPC platforms like Cray. Not all packages should be expected
|
||||||
to work on all platforms.
|
to work on all platforms.
|
||||||
@@ -1506,7 +1506,7 @@ Spack On Windows
|
|||||||
|
|
||||||
Windows support for Spack is currently under development. While this work is still in an early stage,
|
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
|
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.
|
you through the steps needed to install Spack and start running it on a fresh Windows machine.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Step 1: Install prerequisites
|
Step 1: Install prerequisites
|
||||||
@@ -1516,7 +1516,7 @@ To use Spack on Windows, you will need the following packages:
|
|||||||
|
|
||||||
Required:
|
Required:
|
||||||
* Microsoft Visual Studio
|
* Microsoft Visual Studio
|
||||||
* Python
|
* Python
|
||||||
* Git
|
* Git
|
||||||
|
|
||||||
Optional:
|
Optional:
|
||||||
@@ -1547,8 +1547,8 @@ Intel Fortran
|
|||||||
"""""""""""""
|
"""""""""""""
|
||||||
|
|
||||||
For Fortran-based packages on Windows, we strongly recommend Intel's oneAPI Fortran compilers.
|
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
|
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.
|
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
|
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.
|
compiler's (ifort's) frontend and runtime libraries by using LLVM.
|
||||||
|
|
||||||
@@ -1700,15 +1700,29 @@ If in the previous step, you did not have CMake or Ninja installed, running the
|
|||||||
Windows Compatible Packages
|
Windows Compatible Packages
|
||||||
"""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""
|
||||||
|
|
||||||
Not all spack packages currently have Windows support. Some are inherently incompatible with the
|
Many Spack packages are not currently compatible with Windows, due to Unix
|
||||||
platform, and others simply have yet to be ported. To view the current set of packages with Windows
|
dependencies or incompatible build tools like autoconf. Here are several
|
||||||
support, the list command should be used via `spack list -t windows`. If there's a package you'd like
|
packages known to work on Windows:
|
||||||
to install on Windows but is not in that list, feel free to reach out to request the port or contribute
|
|
||||||
the port yourself.
|
* abseil-cpp
|
||||||
|
* bzip2
|
||||||
|
* clingo
|
||||||
|
* cpuinfo
|
||||||
|
* cmake
|
||||||
|
* hdf5
|
||||||
|
* glm
|
||||||
|
* nasm
|
||||||
|
* netlib-lapack (requires Intel Fortran)
|
||||||
|
* ninja
|
||||||
|
* openssl
|
||||||
|
* perl
|
||||||
|
* python
|
||||||
|
* ruby
|
||||||
|
* wrf
|
||||||
|
* zlib
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This is by no means a comprehensive list, some packages may have ports that were not tagged
|
This is by no means a comprehensive list
|
||||||
while others may just work out of the box on Windows and have not been tagged as such.
|
|
||||||
|
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
For developers
|
For developers
|
||||||
@@ -1720,4 +1734,3 @@ Instructions for creating the installer are at
|
|||||||
https://github.com/spack/spack/blob/develop/lib/spack/spack/cmd/installer/README.md
|
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
|
Alternatively a pre-built copy of the Windows installer is available as an artifact of Spack's Windows CI
|
||||||
available at each run of the CI on develop or any PR.
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -67,6 +67,7 @@ or refer to the full manual below.
|
|||||||
build_settings
|
build_settings
|
||||||
environments
|
environments
|
||||||
containers
|
containers
|
||||||
|
monitoring
|
||||||
mirrors
|
mirrors
|
||||||
module_file_support
|
module_file_support
|
||||||
repositories
|
repositories
|
||||||
@@ -77,6 +78,12 @@ or refer to the full manual below.
|
|||||||
extensions
|
extensions
|
||||||
pipelines
|
pipelines
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: Research
|
||||||
|
|
||||||
|
analyze
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Contributing
|
:caption: Contributing
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
265
lib/spack/docs/monitoring.rst
Normal file
265
lib/spack/docs/monitoring.rst
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
.. 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)
|
||||||
|
|
||||||
|
.. _monitoring:
|
||||||
|
|
||||||
|
==========
|
||||||
|
Monitoring
|
||||||
|
==========
|
||||||
|
|
||||||
|
You can use a `spack monitor <https://github.com/spack/spack-monitor>`_ "Spackmon"
|
||||||
|
server to store a database of your packages, builds, and associated metadata
|
||||||
|
for provenance, research, or some other kind of development. You should
|
||||||
|
follow the instructions in the `spack monitor documentation <https://spack-monitor.readthedocs.org>`_
|
||||||
|
to first create a server along with a username and token for yourself.
|
||||||
|
You can then use this guide to interact with the server.
|
||||||
|
|
||||||
|
-------------------
|
||||||
|
Analysis Monitoring
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
To read about how to monitor an analysis (meaning you want to send analysis results
|
||||||
|
to a server) see :ref:`analyze_monitoring`.
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
Monitoring An Install
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Since an install is typically when you build packages, we logically want
|
||||||
|
to tell spack to monitor during this step. Let's start with an example
|
||||||
|
where we want to monitor the install of hdf5. Unless you have disabled authentication
|
||||||
|
for the server, we first want to export our spack monitor token and username to the environment:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ export SPACKMON_TOKEN=50445263afd8f67e59bd79bff597836ee6c05438
|
||||||
|
$ export SPACKMON_USER=spacky
|
||||||
|
|
||||||
|
|
||||||
|
By default, the host for your server is expected to be at ``http://127.0.0.1``
|
||||||
|
with a prefix of ``ms1``, and if this is the case, you can simply add the
|
||||||
|
``--monitor`` flag to the install command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install --monitor hdf5
|
||||||
|
|
||||||
|
|
||||||
|
If you need to customize the host or the prefix, you can do that as well:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install --monitor --monitor-prefix monitor --monitor-host https://monitor-service.io hdf5
|
||||||
|
|
||||||
|
|
||||||
|
As a precaution, we cut out early in the spack client if you have not provided
|
||||||
|
authentication credentials. For example, if you run the command above without
|
||||||
|
exporting your username or token, you'll see:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
==> Error: You are required to export SPACKMON_TOKEN and SPACKMON_USER
|
||||||
|
|
||||||
|
This extra check is to ensure that we don't start any builds,
|
||||||
|
and then discover that you forgot to export your token. However, if
|
||||||
|
your monitoring server has authentication disabled, you can tell this to
|
||||||
|
the client to skip this step:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install --monitor --monitor-disable-auth hdf5
|
||||||
|
|
||||||
|
If the service is not running, you'll cleanly exit early - the install will
|
||||||
|
not continue if you've asked it to monitor and there is no service.
|
||||||
|
For example, here is what you'll see if the monitoring service is not running:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
[Errno 111] Connection refused
|
||||||
|
|
||||||
|
|
||||||
|
If you want to continue builds (and stop monitoring) you can set the ``--monitor-keep-going``
|
||||||
|
flag.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install --monitor --monitor-keep-going hdf5
|
||||||
|
|
||||||
|
This could mean that if a request fails, you only have partial or no data
|
||||||
|
added to your monitoring database. This setting will not be applied to the
|
||||||
|
first request to check if the server is running, but to subsequent requests.
|
||||||
|
If you don't have a monitor server running and you want to build, simply
|
||||||
|
don't provide the ``--monitor`` flag! Finally, if you want to provide one or
|
||||||
|
more tags to your build, you can do:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# Add one tag, "pizza"
|
||||||
|
$ spack install --monitor --monitor-tags pizza hdf5
|
||||||
|
|
||||||
|
# Add two tags, "pizza" and "pasta"
|
||||||
|
$ spack install --monitor --monitor-tags pizza,pasta hdf5
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
Monitoring with Containerize
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
The same argument group is available to add to a containerize command.
|
||||||
|
|
||||||
|
^^^^^^
|
||||||
|
Docker
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
To add monitoring to a Docker container recipe generation using the defaults,
|
||||||
|
and assuming a monitor server running on localhost, you would
|
||||||
|
start with a spack.yaml in your present working directory:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
spack:
|
||||||
|
specs:
|
||||||
|
- samtools
|
||||||
|
|
||||||
|
And then do:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# preview first
|
||||||
|
spack containerize --monitor
|
||||||
|
|
||||||
|
# and then write to a Dockerfile
|
||||||
|
spack containerize --monitor > Dockerfile
|
||||||
|
|
||||||
|
|
||||||
|
The install command will be edited to include commands for enabling monitoring.
|
||||||
|
However, getting secrets into the container for your monitor server is something
|
||||||
|
that should be done carefully. Specifically you should:
|
||||||
|
|
||||||
|
- Never try to define secrets as ENV, ARG, or using ``--build-arg``
|
||||||
|
- Do not try to get the secret into the container via a "temporary" file that you remove (it in fact will still exist in a layer)
|
||||||
|
|
||||||
|
Instead, it's recommended to use buildkit `as explained here <https://pythonspeed.com/articles/docker-build-secrets/>`_.
|
||||||
|
You'll need to again export environment variables for your spack monitor server:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ export SPACKMON_TOKEN=50445263afd8f67e59bd79bff597836ee6c05438
|
||||||
|
$ export SPACKMON_USER=spacky
|
||||||
|
|
||||||
|
And then use buildkit along with your build and identifying the name of the secret:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ DOCKER_BUILDKIT=1 docker build --secret id=st,env=SPACKMON_TOKEN --secret id=su,env=SPACKMON_USER -t spack/container .
|
||||||
|
|
||||||
|
The secrets are expected to come from your environment, and then will be temporarily mounted and available
|
||||||
|
at ``/run/secrets/<name>``. If you forget to supply them (and authentication is required) the build
|
||||||
|
will fail. If you need to build on your host (and interact with a spack monitor at localhost) you'll
|
||||||
|
need to tell Docker to use the host network:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ DOCKER_BUILDKIT=1 docker build --network="host" --secret id=st,env=SPACKMON_TOKEN --secret id=su,env=SPACKMON_USER -t spack/container .
|
||||||
|
|
||||||
|
|
||||||
|
^^^^^^^^^^^
|
||||||
|
Singularity
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
To add monitoring to a Singularity container build, the spack.yaml needs to
|
||||||
|
be modified slightly to specify wanting a different format:
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
spack:
|
||||||
|
specs:
|
||||||
|
- samtools
|
||||||
|
container:
|
||||||
|
format: singularity
|
||||||
|
|
||||||
|
|
||||||
|
Again, generate the recipe:
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# preview first
|
||||||
|
$ spack containerize --monitor
|
||||||
|
|
||||||
|
# then write to a Singularity recipe
|
||||||
|
$ spack containerize --monitor > Singularity
|
||||||
|
|
||||||
|
|
||||||
|
Singularity doesn't have a direct way to define secrets at build time, so we have
|
||||||
|
to do a bit of a manual command to add a file, source secrets in it, and remove it.
|
||||||
|
Since Singularity doesn't have layers like Docker, deleting a file will truly
|
||||||
|
remove it from the container and history. So let's say we have this file,
|
||||||
|
``secrets.sh``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# secrets.sh
|
||||||
|
export SPACKMON_USER=spack
|
||||||
|
export SPACKMON_TOKEN=50445263afd8f67e59bd79bff597836ee6c05438
|
||||||
|
|
||||||
|
|
||||||
|
We would then generate the Singularity recipe, and add a files section,
|
||||||
|
a source of that file at the start of ``%post``, and **importantly**
|
||||||
|
a removal of the final at the end of that same section.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
Bootstrap: docker
|
||||||
|
From: spack/ubuntu-bionic:latest
|
||||||
|
Stage: build
|
||||||
|
|
||||||
|
%files
|
||||||
|
secrets.sh /opt/secrets.sh
|
||||||
|
|
||||||
|
%post
|
||||||
|
. /opt/secrets.sh
|
||||||
|
|
||||||
|
# spack install commands are here
|
||||||
|
...
|
||||||
|
|
||||||
|
# Don't forget to remove here!
|
||||||
|
rm /opt/secrets.sh
|
||||||
|
|
||||||
|
|
||||||
|
You can then build the container as your normally would.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ sudo singularity build container.sif Singularity
|
||||||
|
|
||||||
|
|
||||||
|
------------------
|
||||||
|
Monitoring Offline
|
||||||
|
------------------
|
||||||
|
|
||||||
|
In the case that you want to save monitor results to your filesystem
|
||||||
|
and then upload them later (perhaps you are in an environment where you don't
|
||||||
|
have credentials or it isn't safe to use them) you can use the ``--monitor-save-local``
|
||||||
|
flag.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install --monitor --monitor-save-local hdf5
|
||||||
|
|
||||||
|
This will save results in a subfolder, "monitor" in your designated spack
|
||||||
|
reports folder, which defaults to ``$HOME/.spack/reports/monitor``. When
|
||||||
|
you are ready to upload them to a spack monitor server:
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack monitor upload ~/.spack/reports/monitor
|
||||||
|
|
||||||
|
|
||||||
|
You can choose the root directory of results as shown above, or a specific
|
||||||
|
subdirectory. The command accepts other arguments to specify configuration
|
||||||
|
for the monitor.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -34,15 +34,6 @@ ubiquitous in the scientific software community. Second, it's a modern
|
|||||||
language and has many powerful features to help make package writing
|
language and has many powerful features to help make package writing
|
||||||
easy.
|
easy.
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
As a general rule, packages should install the software *from source*.
|
|
||||||
The only exception is for proprietary software (e.g., vendor compilers).
|
|
||||||
|
|
||||||
If a special build system needs to be added in order to support building
|
|
||||||
a package from source, then the associated code and recipe need to be added
|
|
||||||
first.
|
|
||||||
|
|
||||||
|
|
||||||
.. _installation_procedure:
|
.. _installation_procedure:
|
||||||
|
|
||||||
@@ -234,7 +225,7 @@ generates a boilerplate template for your package, and opens up the new
|
|||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -268,7 +259,7 @@ generates a boilerplate template for your package, and opens up the new
|
|||||||
|
|
||||||
# FIXME: Add a list of GitHub accounts to
|
# FIXME: Add a list of GitHub accounts to
|
||||||
# notify when the package is updated.
|
# notify when the package is updated.
|
||||||
# maintainers("github_user1", "github_user2")
|
# maintainers = ["github_user1", "github_user2"]
|
||||||
|
|
||||||
version("6.2.1", sha256="eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c")
|
version("6.2.1", sha256="eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c")
|
||||||
|
|
||||||
@@ -319,8 +310,14 @@ The rest of the tasks you need to do are as follows:
|
|||||||
|
|
||||||
#. Add a comma-separated list of maintainers.
|
#. Add a comma-separated list of maintainers.
|
||||||
|
|
||||||
Add a list of Github accounts of people who want to be notified
|
The ``maintainers`` field is a list of GitHub accounts of people
|
||||||
any time the package is modified. See :ref:`package_maintainers`.
|
who want to be notified any time the package is modified. When a
|
||||||
|
pull request is submitted that updates the package, these people
|
||||||
|
will be requested to review the PR. This is useful for developers
|
||||||
|
who maintain a Spack package for their own software, as well as
|
||||||
|
users who rely on a piece of software and want to ensure that the
|
||||||
|
package doesn't break. It also gives users a list of people to
|
||||||
|
contact for help when someone reports a build error with the package.
|
||||||
|
|
||||||
#. Add ``depends_on()`` calls for the package's dependencies.
|
#. Add ``depends_on()`` calls for the package's dependencies.
|
||||||
|
|
||||||
@@ -491,31 +488,6 @@ some examples:
|
|||||||
In general, you won't have to remember this naming convention because
|
In general, you won't have to remember this naming convention because
|
||||||
:ref:`cmd-spack-create` and :ref:`cmd-spack-edit` handle the details for you.
|
:ref:`cmd-spack-create` and :ref:`cmd-spack-edit` handle the details for you.
|
||||||
|
|
||||||
.. _package_maintainers:
|
|
||||||
|
|
||||||
-----------
|
|
||||||
Maintainers
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Each package in Spack may have one or more maintainers, i.e. one or more
|
|
||||||
GitHub accounts of people who want to be notified any time the package is
|
|
||||||
modified.
|
|
||||||
|
|
||||||
When a pull request is submitted that updates the package, these people will
|
|
||||||
be requested to review the PR. This is useful for developers who maintain a
|
|
||||||
Spack package for their own software, as well as users who rely on a piece of
|
|
||||||
software and want to ensure that the package doesn't break. It also gives users
|
|
||||||
a list of people to contact for help when someone reports a build error with
|
|
||||||
the package.
|
|
||||||
|
|
||||||
To add maintainers to a package, simply declare them with the ``maintainers`` directive:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
maintainers("user1", "user2")
|
|
||||||
|
|
||||||
The list of maintainers is additive, and includes all the accounts eventually declared in base classes.
|
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
Trusted Downloads
|
Trusted Downloads
|
||||||
-----------------
|
-----------------
|
||||||
@@ -1392,7 +1364,7 @@ Go
|
|||||||
^^
|
^^
|
||||||
|
|
||||||
Go isn't a VCS, it is a programming language with a builtin command,
|
Go isn't a VCS, it is a programming language with a builtin command,
|
||||||
`go get <https://pkg.go.dev/cmd/go#hdr-Add_dependencies_to_current_module_and_install_them>`_,
|
`go get <https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies>`_,
|
||||||
that fetches packages and their dependencies automatically.
|
that fetches packages and their dependencies automatically.
|
||||||
The destination directory will be the standard stage source path.
|
The destination directory will be the standard stage source path.
|
||||||
|
|
||||||
@@ -2117,7 +2089,7 @@ dynamic loader where to find its dependencies at runtime. You may be
|
|||||||
familiar with `LD_LIBRARY_PATH
|
familiar with `LD_LIBRARY_PATH
|
||||||
<http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html>`_
|
<http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html>`_
|
||||||
on Linux or `DYLD_LIBRARY_PATH
|
on Linux or `DYLD_LIBRARY_PATH
|
||||||
<https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/dyld.3.html>`_
|
<https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dyld.1.html>`_
|
||||||
on Mac OS X. RPATH is similar to these paths, in that it tells
|
on Mac OS X. RPATH is similar to these paths, in that it tells
|
||||||
the loader where to find libraries. Unlike them, it is embedded in
|
the loader where to find libraries. Unlike them, it is embedded in
|
||||||
the binary and not set in each user's environment.
|
the binary and not set in each user's environment.
|
||||||
@@ -2425,15 +2397,13 @@ this because uninstalling the dependency would break the package.
|
|||||||
|
|
||||||
``build``, ``link``, and ``run`` dependencies all affect the hash of Spack
|
``build``, ``link``, and ``run`` dependencies all affect the hash of Spack
|
||||||
packages (along with ``sha256`` sums of patches and archives used to build the
|
packages (along with ``sha256`` sums of patches and archives used to build the
|
||||||
package, and a `canonical hash <https://github.com/spack/spack/pull/28156>`_ of
|
package, and a [canonical hash](https://github.com/spack/spack/pull/28156) of
|
||||||
the ``package.py`` recipes). ``test`` dependencies do not affect the package
|
the ``package.py`` recipes). ``test`` dependencies do not affect the package
|
||||||
hash, as they are only used to construct a test environment *after* building and
|
hash, as they are only used to construct a test environment *after* building and
|
||||||
installing a given package installation. Older versions of Spack did not include
|
installing a given package installation. Older versions of Spack did not include
|
||||||
build dependencies in the hash, but this has been
|
build dependencies in the hash, but this has been
|
||||||
`fixed <https://github.com/spack/spack/pull/28504>`_ as of |Spack v0.18|_.
|
[fixed](https://github.com/spack/spack/pull/28504) as of [Spack
|
||||||
|
``v0.18``](https://github.com/spack/spack/releases/tag/v0.18.0)
|
||||||
.. |Spack v0.18| replace:: Spack ``v0.18``
|
|
||||||
.. _Spack v0.18: https://github.com/spack/spack/releases/tag/v0.18.0
|
|
||||||
|
|
||||||
If the dependency type is not specified, Spack uses a default of
|
If the dependency type is not specified, Spack uses a default of
|
||||||
``('build', 'link')``. This is the common case for compiler languages.
|
``('build', 'link')``. This is the common case for compiler languages.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -184,48 +184,13 @@ simply run the following commands:
|
|||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack env activate myenv
|
$ spack env activate myenv
|
||||||
$ spack concretize --fresh --force
|
$ spack concretize --force
|
||||||
$ spack install
|
$ spack install
|
||||||
|
|
||||||
The ``--fresh`` flag tells Spack to use the latest version of every package
|
The ``--force`` flag tells Spack to overwrite its previous concretization
|
||||||
where possible instead of trying to optimize for reuse of existing installed
|
decisions, allowing you to choose a new version of Python. If any of the new
|
||||||
packages.
|
packages like Bash are already installed, ``spack install`` won't re-install
|
||||||
|
them, it will keep the symlinks in place.
|
||||||
The ``--force`` flag in addition 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.
|
|
||||||
|
|
||||||
-----------------------------------
|
|
||||||
Updating & Cleaning Up Old Packages
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
If you're looking to mimic the behavior of Homebrew, you may also want to
|
|
||||||
clean up out-of-date packages from your environment after an upgrade. To
|
|
||||||
upgrade your entire software stack within an environment and clean up old
|
|
||||||
package versions, simply run the following commands:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ spack env activate myenv
|
|
||||||
$ spack mark -i --all
|
|
||||||
$ spack concretize --fresh --force
|
|
||||||
$ spack install
|
|
||||||
$ spack gc
|
|
||||||
|
|
||||||
Running ``spack mark -i --all`` tells Spack to mark all of the existing
|
|
||||||
packages within an environment as "implicitly" installed. This tells
|
|
||||||
spack's garbage collection system that these packages should be cleaned up.
|
|
||||||
|
|
||||||
Don't worry however, this will not remove your entire environment.
|
|
||||||
Running ``spack install`` will reexamine your spack environment after
|
|
||||||
a fresh concretization and will re-mark any packages that should remain
|
|
||||||
installed as "explicitly" installed.
|
|
||||||
|
|
||||||
**Note:** if you use multiple spack environments you should re-run ``spack install``
|
|
||||||
in each of your environments prior to running ``spack gc`` to prevent spack
|
|
||||||
from uninstalling any shared packages that are no longer required by the
|
|
||||||
environment you just upgraded.
|
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
Uninstallation
|
Uninstallation
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. Copyright 2013-2023 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.
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
|
||||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
2
lib/spack/env/cc
vendored
2
lib/spack/env/cc
vendored
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh -f
|
#!/bin/sh -f
|
||||||
# shellcheck disable=SC2034 # evals in this script fool shellcheck
|
# shellcheck disable=SC2034 # evals in this script fool shellcheck
|
||||||
#
|
#
|
||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|||||||
59
lib/spack/external/__init__.py
vendored
59
lib/spack/external/__init__.py
vendored
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2013-2023 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.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
@@ -11,14 +11,25 @@
|
|||||||
|
|
||||||
* Homepage: https://altgraph.readthedocs.io/en/latest/index.html
|
* Homepage: https://altgraph.readthedocs.io/en/latest/index.html
|
||||||
* Usage: dependency of macholib
|
* Usage: dependency of macholib
|
||||||
* Version: 0.17.3
|
* Version: 0.17.2
|
||||||
|
|
||||||
archspec
|
archspec
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Homepage: https://pypi.python.org/pypi/archspec
|
* Homepage: https://pypi.python.org/pypi/archspec
|
||||||
* Usage: Labeling, comparison and detection of microarchitectures
|
* Usage: Labeling, comparison and detection of microarchitectures
|
||||||
* Version: 0.2.0 (commit e44bad9c7b6defac73696f64078b2fe634719b62)
|
* Version: 0.2.0 (commit 77640e572725ad97f18e63a04857155752ace045)
|
||||||
|
|
||||||
|
argparse
|
||||||
|
--------
|
||||||
|
|
||||||
|
* Homepage: https://pypi.python.org/pypi/argparse
|
||||||
|
* Usage: We include our own version to be Python 3.X compatible.
|
||||||
|
* Version: 1.4.0
|
||||||
|
* Note: This package has been slightly modified to improve
|
||||||
|
error message formatting. See the following commit if the
|
||||||
|
vendored copy ever needs to be updated again:
|
||||||
|
https://github.com/spack/spack/pull/6786/commits/dfcef577b77249106ea4e4c69a6cd9e64fa6c418
|
||||||
|
|
||||||
astunparse
|
astunparse
|
||||||
----------------
|
----------------
|
||||||
@@ -41,7 +52,7 @@
|
|||||||
|
|
||||||
* Homepage: https://github.com/python-attrs/attrs
|
* Homepage: https://github.com/python-attrs/attrs
|
||||||
* Usage: Needed by jsonschema.
|
* Usage: Needed by jsonschema.
|
||||||
* Version: 22.1.0
|
* Version: 21.2.0 (83d3cd70f90a3f4d19ee8b508e58d1c58821c0ad)
|
||||||
|
|
||||||
ctest_log_parser
|
ctest_log_parser
|
||||||
----------------
|
----------------
|
||||||
@@ -56,14 +67,21 @@
|
|||||||
|
|
||||||
* Homepage: https://pypi.python.org/pypi/distro
|
* Homepage: https://pypi.python.org/pypi/distro
|
||||||
* Usage: Provides a more stable linux distribution detection.
|
* Usage: Provides a more stable linux distribution detection.
|
||||||
* Version: 1.8.0
|
* Version: 1.6.0 (64946a1e2a9ff529047070657728600e006c99ff)
|
||||||
|
* Note: Last version supporting Python 2.7
|
||||||
|
|
||||||
|
functools32
|
||||||
|
-----------
|
||||||
|
* Homepage: https://github.com/MiCHiLU/python-functools32
|
||||||
|
* Usage: Needed by jsonschema when using Python 2.7.
|
||||||
|
* Version: 3.2.3-2
|
||||||
|
|
||||||
jinja2
|
jinja2
|
||||||
------
|
------
|
||||||
|
|
||||||
* Homepage: https://pypi.python.org/pypi/Jinja2
|
* Homepage: https://pypi.python.org/pypi/Jinja2
|
||||||
* Usage: A modern and designer-friendly templating language for Python.
|
* Usage: A modern and designer-friendly templating language for Python.
|
||||||
* Version: 3.0.3 (last version supporting Python 3.6)
|
* Version: 2.11.3 (last version supporting Python 2.7)
|
||||||
|
|
||||||
jsonschema
|
jsonschema
|
||||||
----------
|
----------
|
||||||
@@ -78,21 +96,44 @@
|
|||||||
|
|
||||||
* Homepage: https://macholib.readthedocs.io/en/latest/index.html#
|
* Homepage: https://macholib.readthedocs.io/en/latest/index.html#
|
||||||
* Usage: Manipulation of Mach-o binaries for relocating macOS buildcaches on Linux
|
* Usage: Manipulation of Mach-o binaries for relocating macOS buildcaches on Linux
|
||||||
* Version: 1.16.2
|
* Version: 1.15.2
|
||||||
|
|
||||||
markupsafe
|
markupsafe
|
||||||
----------
|
----------
|
||||||
|
|
||||||
* Homepage: https://pypi.python.org/pypi/MarkupSafe
|
* Homepage: https://pypi.python.org/pypi/MarkupSafe
|
||||||
* Usage: Implements a XML/HTML/XHTML Markup safe string for Python.
|
* Usage: Implements a XML/HTML/XHTML Markup safe string for Python.
|
||||||
* Version: 2.0.1 (last version supporting Python 3.6)
|
* Version: 1.1.1 (last version supporting Python 2.7)
|
||||||
|
|
||||||
|
py
|
||||||
|
--
|
||||||
|
|
||||||
|
* Homepage: https://pypi.python.org/pypi/py
|
||||||
|
* Usage: Needed by pytest. Library with cross-python path,
|
||||||
|
ini-parsing, io, code, and log facilities.
|
||||||
|
* Version: 1.4.34 (last version supporting Python 2.6)
|
||||||
|
* Note: This packages has been modified:
|
||||||
|
* https://github.com/pytest-dev/py/pull/186 was backported
|
||||||
|
|
||||||
pyrsistent
|
pyrsistent
|
||||||
----------
|
----------
|
||||||
|
|
||||||
* Homepage: http://github.com/tobgu/pyrsistent/
|
* Homepage: http://github.com/tobgu/pyrsistent/
|
||||||
* Usage: Needed by `jsonschema`
|
* Usage: Needed by `jsonschema`
|
||||||
* Version: 0.18.0
|
* Version: 0.16.1 (last version supporting Python 2.7)
|
||||||
|
* Note: We only include the parts needed for `jsonschema`.
|
||||||
|
|
||||||
|
pytest
|
||||||
|
------
|
||||||
|
|
||||||
|
* Homepage: https://pypi.python.org/pypi/pytest
|
||||||
|
* Usage: Testing framework used by Spack.
|
||||||
|
* Version: 3.2.5 (last version supporting Python 2.6)
|
||||||
|
* Note: This package has been slightly modified:
|
||||||
|
* We improve Python 2.6 compatibility. See:
|
||||||
|
https://github.com/spack/spack/pull/6801.
|
||||||
|
* We have patched pytest not to depend on setuptools. See:
|
||||||
|
https://github.com/spack/spack/pull/15612
|
||||||
|
|
||||||
ruamel.yaml
|
ruamel.yaml
|
||||||
------
|
------
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
__version__ = '0.18.0'
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from _pyrsistent_version import *
|
|
||||||
1
lib/spack/external/_vendoring/altgraph.pyi
vendored
1
lib/spack/external/_vendoring/altgraph.pyi
vendored
@@ -1 +0,0 @@
|
|||||||
from altgraph import *
|
|
||||||
18
lib/spack/external/_vendoring/altgraph/LICENSE
vendored
18
lib/spack/external/_vendoring/altgraph/LICENSE
vendored
@@ -1,18 +0,0 @@
|
|||||||
Copyright (c) 2004 Istvan Albert unless otherwise noted.
|
|
||||||
Copyright (c) 2006-2010 Bob Ippolito
|
|
||||||
Copyright (2) 2010-2020 Ronald Oussoren, et. al.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to
|
|
||||||
deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.
|
|
||||||
486
lib/spack/external/_vendoring/attr/__init__.pyi
vendored
486
lib/spack/external/_vendoring/attr/__init__.pyi
vendored
@@ -1,486 +0,0 @@
|
|||||||
import sys
|
|
||||||
|
|
||||||
from typing import (
|
|
||||||
Any,
|
|
||||||
Callable,
|
|
||||||
ClassVar,
|
|
||||||
Dict,
|
|
||||||
Generic,
|
|
||||||
List,
|
|
||||||
Mapping,
|
|
||||||
Optional,
|
|
||||||
Protocol,
|
|
||||||
Sequence,
|
|
||||||
Tuple,
|
|
||||||
Type,
|
|
||||||
TypeVar,
|
|
||||||
Union,
|
|
||||||
overload,
|
|
||||||
)
|
|
||||||
|
|
||||||
# `import X as X` is required to make these public
|
|
||||||
from . import converters as converters
|
|
||||||
from . import exceptions as exceptions
|
|
||||||
from . import filters as filters
|
|
||||||
from . import setters as setters
|
|
||||||
from . import validators as validators
|
|
||||||
from ._cmp import cmp_using as cmp_using
|
|
||||||
from ._version_info import VersionInfo
|
|
||||||
|
|
||||||
__version__: str
|
|
||||||
__version_info__: VersionInfo
|
|
||||||
__title__: str
|
|
||||||
__description__: str
|
|
||||||
__url__: str
|
|
||||||
__uri__: str
|
|
||||||
__author__: str
|
|
||||||
__email__: str
|
|
||||||
__license__: str
|
|
||||||
__copyright__: str
|
|
||||||
|
|
||||||
_T = TypeVar("_T")
|
|
||||||
_C = TypeVar("_C", bound=type)
|
|
||||||
|
|
||||||
_EqOrderType = Union[bool, Callable[[Any], Any]]
|
|
||||||
_ValidatorType = Callable[[Any, Attribute[_T], _T], Any]
|
|
||||||
_ConverterType = Callable[[Any], Any]
|
|
||||||
_FilterType = Callable[[Attribute[_T], _T], bool]
|
|
||||||
_ReprType = Callable[[Any], str]
|
|
||||||
_ReprArgType = Union[bool, _ReprType]
|
|
||||||
_OnSetAttrType = Callable[[Any, Attribute[Any], Any], Any]
|
|
||||||
_OnSetAttrArgType = Union[
|
|
||||||
_OnSetAttrType, List[_OnSetAttrType], setters._NoOpType
|
|
||||||
]
|
|
||||||
_FieldTransformer = Callable[
|
|
||||||
[type, List[Attribute[Any]]], List[Attribute[Any]]
|
|
||||||
]
|
|
||||||
# FIXME: in reality, if multiple validators are passed they must be in a list
|
|
||||||
# or tuple, but those are invariant and so would prevent subtypes of
|
|
||||||
# _ValidatorType from working when passed in a list or tuple.
|
|
||||||
_ValidatorArgType = Union[_ValidatorType[_T], Sequence[_ValidatorType[_T]]]
|
|
||||||
|
|
||||||
# A protocol to be able to statically accept an attrs class.
|
|
||||||
class AttrsInstance(Protocol):
|
|
||||||
__attrs_attrs__: ClassVar[Any]
|
|
||||||
|
|
||||||
# _make --
|
|
||||||
|
|
||||||
NOTHING: object
|
|
||||||
|
|
||||||
# NOTE: Factory lies about its return type to make this possible:
|
|
||||||
# `x: List[int] # = Factory(list)`
|
|
||||||
# Work around mypy issue #4554 in the common case by using an overload.
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from typing import Literal
|
|
||||||
@overload
|
|
||||||
def Factory(factory: Callable[[], _T]) -> _T: ...
|
|
||||||
@overload
|
|
||||||
def Factory(
|
|
||||||
factory: Callable[[Any], _T],
|
|
||||||
takes_self: Literal[True],
|
|
||||||
) -> _T: ...
|
|
||||||
@overload
|
|
||||||
def Factory(
|
|
||||||
factory: Callable[[], _T],
|
|
||||||
takes_self: Literal[False],
|
|
||||||
) -> _T: ...
|
|
||||||
|
|
||||||
else:
|
|
||||||
@overload
|
|
||||||
def Factory(factory: Callable[[], _T]) -> _T: ...
|
|
||||||
@overload
|
|
||||||
def Factory(
|
|
||||||
factory: Union[Callable[[Any], _T], Callable[[], _T]],
|
|
||||||
takes_self: bool = ...,
|
|
||||||
) -> _T: ...
|
|
||||||
|
|
||||||
# Static type inference support via __dataclass_transform__ implemented as per:
|
|
||||||
# https://github.com/microsoft/pyright/blob/1.1.135/specs/dataclass_transforms.md
|
|
||||||
# This annotation must be applied to all overloads of "define" and "attrs"
|
|
||||||
#
|
|
||||||
# NOTE: This is a typing construct and does not exist at runtime. Extensions
|
|
||||||
# wrapping attrs decorators should declare a separate __dataclass_transform__
|
|
||||||
# signature in the extension module using the specification linked above to
|
|
||||||
# provide pyright support.
|
|
||||||
def __dataclass_transform__(
|
|
||||||
*,
|
|
||||||
eq_default: bool = True,
|
|
||||||
order_default: bool = False,
|
|
||||||
kw_only_default: bool = False,
|
|
||||||
field_descriptors: Tuple[Union[type, Callable[..., Any]], ...] = (()),
|
|
||||||
) -> Callable[[_T], _T]: ...
|
|
||||||
|
|
||||||
class Attribute(Generic[_T]):
|
|
||||||
name: str
|
|
||||||
default: Optional[_T]
|
|
||||||
validator: Optional[_ValidatorType[_T]]
|
|
||||||
repr: _ReprArgType
|
|
||||||
cmp: _EqOrderType
|
|
||||||
eq: _EqOrderType
|
|
||||||
order: _EqOrderType
|
|
||||||
hash: Optional[bool]
|
|
||||||
init: bool
|
|
||||||
converter: Optional[_ConverterType]
|
|
||||||
metadata: Dict[Any, Any]
|
|
||||||
type: Optional[Type[_T]]
|
|
||||||
kw_only: bool
|
|
||||||
on_setattr: _OnSetAttrType
|
|
||||||
def evolve(self, **changes: Any) -> "Attribute[Any]": ...
|
|
||||||
|
|
||||||
# NOTE: We had several choices for the annotation to use for type arg:
|
|
||||||
# 1) Type[_T]
|
|
||||||
# - Pros: Handles simple cases correctly
|
|
||||||
# - Cons: Might produce less informative errors in the case of conflicting
|
|
||||||
# TypeVars e.g. `attr.ib(default='bad', type=int)`
|
|
||||||
# 2) Callable[..., _T]
|
|
||||||
# - Pros: Better error messages than #1 for conflicting TypeVars
|
|
||||||
# - Cons: Terrible error messages for validator checks.
|
|
||||||
# e.g. attr.ib(type=int, validator=validate_str)
|
|
||||||
# -> error: Cannot infer function type argument
|
|
||||||
# 3) type (and do all of the work in the mypy plugin)
|
|
||||||
# - Pros: Simple here, and we could customize the plugin with our own errors.
|
|
||||||
# - Cons: Would need to write mypy plugin code to handle all the cases.
|
|
||||||
# We chose option #1.
|
|
||||||
|
|
||||||
# `attr` lies about its return type to make the following possible:
|
|
||||||
# attr() -> Any
|
|
||||||
# attr(8) -> int
|
|
||||||
# attr(validator=<some callable>) -> Whatever the callable expects.
|
|
||||||
# This makes this type of assignments possible:
|
|
||||||
# x: int = attr(8)
|
|
||||||
#
|
|
||||||
# This form catches explicit None or no default but with no other arguments
|
|
||||||
# returns Any.
|
|
||||||
@overload
|
|
||||||
def attrib(
|
|
||||||
default: None = ...,
|
|
||||||
validator: None = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
type: None = ...,
|
|
||||||
converter: None = ...,
|
|
||||||
factory: None = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> Any: ...
|
|
||||||
|
|
||||||
# This form catches an explicit None or no default and infers the type from the
|
|
||||||
# other arguments.
|
|
||||||
@overload
|
|
||||||
def attrib(
|
|
||||||
default: None = ...,
|
|
||||||
validator: Optional[_ValidatorArgType[_T]] = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
type: Optional[Type[_T]] = ...,
|
|
||||||
converter: Optional[_ConverterType] = ...,
|
|
||||||
factory: Optional[Callable[[], _T]] = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> _T: ...
|
|
||||||
|
|
||||||
# This form catches an explicit default argument.
|
|
||||||
@overload
|
|
||||||
def attrib(
|
|
||||||
default: _T,
|
|
||||||
validator: Optional[_ValidatorArgType[_T]] = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
type: Optional[Type[_T]] = ...,
|
|
||||||
converter: Optional[_ConverterType] = ...,
|
|
||||||
factory: Optional[Callable[[], _T]] = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> _T: ...
|
|
||||||
|
|
||||||
# This form covers type=non-Type: e.g. forward references (str), Any
|
|
||||||
@overload
|
|
||||||
def attrib(
|
|
||||||
default: Optional[_T] = ...,
|
|
||||||
validator: Optional[_ValidatorArgType[_T]] = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
type: object = ...,
|
|
||||||
converter: Optional[_ConverterType] = ...,
|
|
||||||
factory: Optional[Callable[[], _T]] = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> Any: ...
|
|
||||||
@overload
|
|
||||||
def field(
|
|
||||||
*,
|
|
||||||
default: None = ...,
|
|
||||||
validator: None = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
converter: None = ...,
|
|
||||||
factory: None = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[bool] = ...,
|
|
||||||
order: Optional[bool] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> Any: ...
|
|
||||||
|
|
||||||
# This form catches an explicit None or no default and infers the type from the
|
|
||||||
# other arguments.
|
|
||||||
@overload
|
|
||||||
def field(
|
|
||||||
*,
|
|
||||||
default: None = ...,
|
|
||||||
validator: Optional[_ValidatorArgType[_T]] = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
converter: Optional[_ConverterType] = ...,
|
|
||||||
factory: Optional[Callable[[], _T]] = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> _T: ...
|
|
||||||
|
|
||||||
# This form catches an explicit default argument.
|
|
||||||
@overload
|
|
||||||
def field(
|
|
||||||
*,
|
|
||||||
default: _T,
|
|
||||||
validator: Optional[_ValidatorArgType[_T]] = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
converter: Optional[_ConverterType] = ...,
|
|
||||||
factory: Optional[Callable[[], _T]] = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> _T: ...
|
|
||||||
|
|
||||||
# This form covers type=non-Type: e.g. forward references (str), Any
|
|
||||||
@overload
|
|
||||||
def field(
|
|
||||||
*,
|
|
||||||
default: Optional[_T] = ...,
|
|
||||||
validator: Optional[_ValidatorArgType[_T]] = ...,
|
|
||||||
repr: _ReprArgType = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
metadata: Optional[Mapping[Any, Any]] = ...,
|
|
||||||
converter: Optional[_ConverterType] = ...,
|
|
||||||
factory: Optional[Callable[[], _T]] = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
) -> Any: ...
|
|
||||||
@overload
|
|
||||||
@__dataclass_transform__(order_default=True, field_descriptors=(attrib, field))
|
|
||||||
def attrs(
|
|
||||||
maybe_cls: _C,
|
|
||||||
these: Optional[Dict[str, Any]] = ...,
|
|
||||||
repr_ns: Optional[str] = ...,
|
|
||||||
repr: bool = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
slots: bool = ...,
|
|
||||||
frozen: bool = ...,
|
|
||||||
weakref_slot: bool = ...,
|
|
||||||
str: bool = ...,
|
|
||||||
auto_attribs: bool = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
cache_hash: bool = ...,
|
|
||||||
auto_exc: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
auto_detect: bool = ...,
|
|
||||||
collect_by_mro: bool = ...,
|
|
||||||
getstate_setstate: Optional[bool] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
field_transformer: Optional[_FieldTransformer] = ...,
|
|
||||||
match_args: bool = ...,
|
|
||||||
) -> _C: ...
|
|
||||||
@overload
|
|
||||||
@__dataclass_transform__(order_default=True, field_descriptors=(attrib, field))
|
|
||||||
def attrs(
|
|
||||||
maybe_cls: None = ...,
|
|
||||||
these: Optional[Dict[str, Any]] = ...,
|
|
||||||
repr_ns: Optional[str] = ...,
|
|
||||||
repr: bool = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
slots: bool = ...,
|
|
||||||
frozen: bool = ...,
|
|
||||||
weakref_slot: bool = ...,
|
|
||||||
str: bool = ...,
|
|
||||||
auto_attribs: bool = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
cache_hash: bool = ...,
|
|
||||||
auto_exc: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
auto_detect: bool = ...,
|
|
||||||
collect_by_mro: bool = ...,
|
|
||||||
getstate_setstate: Optional[bool] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
field_transformer: Optional[_FieldTransformer] = ...,
|
|
||||||
match_args: bool = ...,
|
|
||||||
) -> Callable[[_C], _C]: ...
|
|
||||||
@overload
|
|
||||||
@__dataclass_transform__(field_descriptors=(attrib, field))
|
|
||||||
def define(
|
|
||||||
maybe_cls: _C,
|
|
||||||
*,
|
|
||||||
these: Optional[Dict[str, Any]] = ...,
|
|
||||||
repr: bool = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
slots: bool = ...,
|
|
||||||
frozen: bool = ...,
|
|
||||||
weakref_slot: bool = ...,
|
|
||||||
str: bool = ...,
|
|
||||||
auto_attribs: bool = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
cache_hash: bool = ...,
|
|
||||||
auto_exc: bool = ...,
|
|
||||||
eq: Optional[bool] = ...,
|
|
||||||
order: Optional[bool] = ...,
|
|
||||||
auto_detect: bool = ...,
|
|
||||||
getstate_setstate: Optional[bool] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
field_transformer: Optional[_FieldTransformer] = ...,
|
|
||||||
match_args: bool = ...,
|
|
||||||
) -> _C: ...
|
|
||||||
@overload
|
|
||||||
@__dataclass_transform__(field_descriptors=(attrib, field))
|
|
||||||
def define(
|
|
||||||
maybe_cls: None = ...,
|
|
||||||
*,
|
|
||||||
these: Optional[Dict[str, Any]] = ...,
|
|
||||||
repr: bool = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
slots: bool = ...,
|
|
||||||
frozen: bool = ...,
|
|
||||||
weakref_slot: bool = ...,
|
|
||||||
str: bool = ...,
|
|
||||||
auto_attribs: bool = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
cache_hash: bool = ...,
|
|
||||||
auto_exc: bool = ...,
|
|
||||||
eq: Optional[bool] = ...,
|
|
||||||
order: Optional[bool] = ...,
|
|
||||||
auto_detect: bool = ...,
|
|
||||||
getstate_setstate: Optional[bool] = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
field_transformer: Optional[_FieldTransformer] = ...,
|
|
||||||
match_args: bool = ...,
|
|
||||||
) -> Callable[[_C], _C]: ...
|
|
||||||
|
|
||||||
mutable = define
|
|
||||||
frozen = define # they differ only in their defaults
|
|
||||||
|
|
||||||
def fields(cls: Type[AttrsInstance]) -> Any: ...
|
|
||||||
def fields_dict(cls: Type[AttrsInstance]) -> Dict[str, Attribute[Any]]: ...
|
|
||||||
def validate(inst: AttrsInstance) -> None: ...
|
|
||||||
def resolve_types(
|
|
||||||
cls: _C,
|
|
||||||
globalns: Optional[Dict[str, Any]] = ...,
|
|
||||||
localns: Optional[Dict[str, Any]] = ...,
|
|
||||||
attribs: Optional[List[Attribute[Any]]] = ...,
|
|
||||||
) -> _C: ...
|
|
||||||
|
|
||||||
# TODO: add support for returning a proper attrs class from the mypy plugin
|
|
||||||
# we use Any instead of _CountingAttr so that e.g. `make_class('Foo',
|
|
||||||
# [attr.ib()])` is valid
|
|
||||||
def make_class(
|
|
||||||
name: str,
|
|
||||||
attrs: Union[List[str], Tuple[str, ...], Dict[str, Any]],
|
|
||||||
bases: Tuple[type, ...] = ...,
|
|
||||||
repr_ns: Optional[str] = ...,
|
|
||||||
repr: bool = ...,
|
|
||||||
cmp: Optional[_EqOrderType] = ...,
|
|
||||||
hash: Optional[bool] = ...,
|
|
||||||
init: bool = ...,
|
|
||||||
slots: bool = ...,
|
|
||||||
frozen: bool = ...,
|
|
||||||
weakref_slot: bool = ...,
|
|
||||||
str: bool = ...,
|
|
||||||
auto_attribs: bool = ...,
|
|
||||||
kw_only: bool = ...,
|
|
||||||
cache_hash: bool = ...,
|
|
||||||
auto_exc: bool = ...,
|
|
||||||
eq: Optional[_EqOrderType] = ...,
|
|
||||||
order: Optional[_EqOrderType] = ...,
|
|
||||||
collect_by_mro: bool = ...,
|
|
||||||
on_setattr: Optional[_OnSetAttrArgType] = ...,
|
|
||||||
field_transformer: Optional[_FieldTransformer] = ...,
|
|
||||||
) -> type: ...
|
|
||||||
|
|
||||||
# _funcs --
|
|
||||||
|
|
||||||
# TODO: add support for returning TypedDict from the mypy plugin
|
|
||||||
# FIXME: asdict/astuple do not honor their factory args. Waiting on one of
|
|
||||||
# these:
|
|
||||||
# https://github.com/python/mypy/issues/4236
|
|
||||||
# https://github.com/python/typing/issues/253
|
|
||||||
# XXX: remember to fix attrs.asdict/astuple too!
|
|
||||||
def asdict(
|
|
||||||
inst: AttrsInstance,
|
|
||||||
recurse: bool = ...,
|
|
||||||
filter: Optional[_FilterType[Any]] = ...,
|
|
||||||
dict_factory: Type[Mapping[Any, Any]] = ...,
|
|
||||||
retain_collection_types: bool = ...,
|
|
||||||
value_serializer: Optional[
|
|
||||||
Callable[[type, Attribute[Any], Any], Any]
|
|
||||||
] = ...,
|
|
||||||
tuple_keys: Optional[bool] = ...,
|
|
||||||
) -> Dict[str, Any]: ...
|
|
||||||
|
|
||||||
# TODO: add support for returning NamedTuple from the mypy plugin
|
|
||||||
def astuple(
|
|
||||||
inst: AttrsInstance,
|
|
||||||
recurse: bool = ...,
|
|
||||||
filter: Optional[_FilterType[Any]] = ...,
|
|
||||||
tuple_factory: Type[Sequence[Any]] = ...,
|
|
||||||
retain_collection_types: bool = ...,
|
|
||||||
) -> Tuple[Any, ...]: ...
|
|
||||||
def has(cls: type) -> bool: ...
|
|
||||||
def assoc(inst: _T, **changes: Any) -> _T: ...
|
|
||||||
def evolve(inst: _T, **changes: Any) -> _T: ...
|
|
||||||
|
|
||||||
# _config --
|
|
||||||
|
|
||||||
def set_run_validators(run: bool) -> None: ...
|
|
||||||
def get_run_validators() -> bool: ...
|
|
||||||
|
|
||||||
# aliases --
|
|
||||||
|
|
||||||
s = attributes = attrs
|
|
||||||
ib = attr = attrib
|
|
||||||
dataclass = attrs # Technically, partial(attrs, auto_attribs=True) ;)
|
|
||||||
13
lib/spack/external/_vendoring/attr/_cmp.pyi
vendored
13
lib/spack/external/_vendoring/attr/_cmp.pyi
vendored
@@ -1,13 +0,0 @@
|
|||||||
from typing import Any, Callable, Optional, Type
|
|
||||||
|
|
||||||
_CompareWithType = Callable[[Any, Any], bool]
|
|
||||||
|
|
||||||
def cmp_using(
|
|
||||||
eq: Optional[_CompareWithType],
|
|
||||||
lt: Optional[_CompareWithType],
|
|
||||||
le: Optional[_CompareWithType],
|
|
||||||
gt: Optional[_CompareWithType],
|
|
||||||
ge: Optional[_CompareWithType],
|
|
||||||
require_same_type: bool,
|
|
||||||
class_name: str,
|
|
||||||
) -> Type: ...
|
|
||||||
185
lib/spack/external/_vendoring/attr/_compat.py
vendored
185
lib/spack/external/_vendoring/attr/_compat.py
vendored
@@ -1,185 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
|
|
||||||
import inspect
|
|
||||||
import platform
|
|
||||||
import sys
|
|
||||||
import threading
|
|
||||||
import types
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
from collections.abc import Mapping, Sequence # noqa
|
|
||||||
|
|
||||||
|
|
||||||
PYPY = platform.python_implementation() == "PyPy"
|
|
||||||
PY36 = sys.version_info[:2] >= (3, 6)
|
|
||||||
HAS_F_STRINGS = PY36
|
|
||||||
PY310 = sys.version_info[:2] >= (3, 10)
|
|
||||||
|
|
||||||
|
|
||||||
if PYPY or PY36:
|
|
||||||
ordered_dict = dict
|
|
||||||
else:
|
|
||||||
from collections import OrderedDict
|
|
||||||
|
|
||||||
ordered_dict = OrderedDict
|
|
||||||
|
|
||||||
|
|
||||||
def just_warn(*args, **kw):
|
|
||||||
warnings.warn(
|
|
||||||
"Running interpreter doesn't sufficiently support code object "
|
|
||||||
"introspection. Some features like bare super() or accessing "
|
|
||||||
"__class__ will not work with slotted classes.",
|
|
||||||
RuntimeWarning,
|
|
||||||
stacklevel=2,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class _AnnotationExtractor:
|
|
||||||
"""
|
|
||||||
Extract type annotations from a callable, returning None whenever there
|
|
||||||
is none.
|
|
||||||
"""
|
|
||||||
|
|
||||||
__slots__ = ["sig"]
|
|
||||||
|
|
||||||
def __init__(self, callable):
|
|
||||||
try:
|
|
||||||
self.sig = inspect.signature(callable)
|
|
||||||
except (ValueError, TypeError): # inspect failed
|
|
||||||
self.sig = None
|
|
||||||
|
|
||||||
def get_first_param_type(self):
|
|
||||||
"""
|
|
||||||
Return the type annotation of the first argument if it's not empty.
|
|
||||||
"""
|
|
||||||
if not self.sig:
|
|
||||||
return None
|
|
||||||
|
|
||||||
params = list(self.sig.parameters.values())
|
|
||||||
if params and params[0].annotation is not inspect.Parameter.empty:
|
|
||||||
return params[0].annotation
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
def get_return_type(self):
|
|
||||||
"""
|
|
||||||
Return the return type if it's not empty.
|
|
||||||
"""
|
|
||||||
if (
|
|
||||||
self.sig
|
|
||||||
and self.sig.return_annotation is not inspect.Signature.empty
|
|
||||||
):
|
|
||||||
return self.sig.return_annotation
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def make_set_closure_cell():
|
|
||||||
"""Return a function of two arguments (cell, value) which sets
|
|
||||||
the value stored in the closure cell `cell` to `value`.
|
|
||||||
"""
|
|
||||||
# pypy makes this easy. (It also supports the logic below, but
|
|
||||||
# why not do the easy/fast thing?)
|
|
||||||
if PYPY:
|
|
||||||
|
|
||||||
def set_closure_cell(cell, value):
|
|
||||||
cell.__setstate__((value,))
|
|
||||||
|
|
||||||
return set_closure_cell
|
|
||||||
|
|
||||||
# Otherwise gotta do it the hard way.
|
|
||||||
|
|
||||||
# Create a function that will set its first cellvar to `value`.
|
|
||||||
def set_first_cellvar_to(value):
|
|
||||||
x = value
|
|
||||||
return
|
|
||||||
|
|
||||||
# This function will be eliminated as dead code, but
|
|
||||||
# not before its reference to `x` forces `x` to be
|
|
||||||
# represented as a closure cell rather than a local.
|
|
||||||
def force_x_to_be_a_cell(): # pragma: no cover
|
|
||||||
return x
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Extract the code object and make sure our assumptions about
|
|
||||||
# the closure behavior are correct.
|
|
||||||
co = set_first_cellvar_to.__code__
|
|
||||||
if co.co_cellvars != ("x",) or co.co_freevars != ():
|
|
||||||
raise AssertionError # pragma: no cover
|
|
||||||
|
|
||||||
# Convert this code object to a code object that sets the
|
|
||||||
# function's first _freevar_ (not cellvar) to the argument.
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
|
|
||||||
def set_closure_cell(cell, value):
|
|
||||||
cell.cell_contents = value
|
|
||||||
|
|
||||||
else:
|
|
||||||
args = [co.co_argcount]
|
|
||||||
args.append(co.co_kwonlyargcount)
|
|
||||||
args.extend(
|
|
||||||
[
|
|
||||||
co.co_nlocals,
|
|
||||||
co.co_stacksize,
|
|
||||||
co.co_flags,
|
|
||||||
co.co_code,
|
|
||||||
co.co_consts,
|
|
||||||
co.co_names,
|
|
||||||
co.co_varnames,
|
|
||||||
co.co_filename,
|
|
||||||
co.co_name,
|
|
||||||
co.co_firstlineno,
|
|
||||||
co.co_lnotab,
|
|
||||||
# These two arguments are reversed:
|
|
||||||
co.co_cellvars,
|
|
||||||
co.co_freevars,
|
|
||||||
]
|
|
||||||
)
|
|
||||||
set_first_freevar_code = types.CodeType(*args)
|
|
||||||
|
|
||||||
def set_closure_cell(cell, value):
|
|
||||||
# Create a function using the set_first_freevar_code,
|
|
||||||
# whose first closure cell is `cell`. Calling it will
|
|
||||||
# change the value of that cell.
|
|
||||||
setter = types.FunctionType(
|
|
||||||
set_first_freevar_code, {}, "setter", (), (cell,)
|
|
||||||
)
|
|
||||||
# And call it to set the cell.
|
|
||||||
setter(value)
|
|
||||||
|
|
||||||
# Make sure it works on this interpreter:
|
|
||||||
def make_func_with_cell():
|
|
||||||
x = None
|
|
||||||
|
|
||||||
def func():
|
|
||||||
return x # pragma: no cover
|
|
||||||
|
|
||||||
return func
|
|
||||||
|
|
||||||
cell = make_func_with_cell().__closure__[0]
|
|
||||||
set_closure_cell(cell, 100)
|
|
||||||
if cell.cell_contents != 100:
|
|
||||||
raise AssertionError # pragma: no cover
|
|
||||||
|
|
||||||
except Exception:
|
|
||||||
return just_warn
|
|
||||||
else:
|
|
||||||
return set_closure_cell
|
|
||||||
|
|
||||||
|
|
||||||
set_closure_cell = make_set_closure_cell()
|
|
||||||
|
|
||||||
# Thread-local global to track attrs instances which are already being repr'd.
|
|
||||||
# This is needed because there is no other (thread-safe) way to pass info
|
|
||||||
# about the instances that are already being repr'd through the call stack
|
|
||||||
# in order to ensure we don't perform infinite recursion.
|
|
||||||
#
|
|
||||||
# For instance, if an instance contains a dict which contains that instance,
|
|
||||||
# we need to know that we're already repr'ing the outside instance from within
|
|
||||||
# the dict's repr() call.
|
|
||||||
#
|
|
||||||
# This lives here rather than in _make.py so that the functions in _make.py
|
|
||||||
# don't have a direct reference to the thread-local in their globals dict.
|
|
||||||
# If they have such a reference, it breaks cloudpickle.
|
|
||||||
repr_context = threading.local()
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
class VersionInfo:
|
|
||||||
@property
|
|
||||||
def year(self) -> int: ...
|
|
||||||
@property
|
|
||||||
def minor(self) -> int: ...
|
|
||||||
@property
|
|
||||||
def micro(self) -> int: ...
|
|
||||||
@property
|
|
||||||
def releaselevel(self) -> str: ...
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
from typing import Callable, Optional, TypeVar, overload
|
|
||||||
|
|
||||||
from . import _ConverterType
|
|
||||||
|
|
||||||
_T = TypeVar("_T")
|
|
||||||
|
|
||||||
def pipe(*validators: _ConverterType) -> _ConverterType: ...
|
|
||||||
def optional(converter: _ConverterType) -> _ConverterType: ...
|
|
||||||
@overload
|
|
||||||
def default_if_none(default: _T) -> _ConverterType: ...
|
|
||||||
@overload
|
|
||||||
def default_if_none(*, factory: Callable[[], _T]) -> _ConverterType: ...
|
|
||||||
def to_bool(val: str) -> bool: ...
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from typing import Any
|
|
||||||
|
|
||||||
class FrozenError(AttributeError):
|
|
||||||
msg: str = ...
|
|
||||||
|
|
||||||
class FrozenInstanceError(FrozenError): ...
|
|
||||||
class FrozenAttributeError(FrozenError): ...
|
|
||||||
class AttrsAttributeNotFoundError(ValueError): ...
|
|
||||||
class NotAnAttrsClassError(ValueError): ...
|
|
||||||
class DefaultAlreadySetError(RuntimeError): ...
|
|
||||||
class UnannotatedAttributeError(RuntimeError): ...
|
|
||||||
class PythonTooOldError(RuntimeError): ...
|
|
||||||
|
|
||||||
class NotCallableError(TypeError):
|
|
||||||
msg: str = ...
|
|
||||||
value: Any = ...
|
|
||||||
def __init__(self, msg: str, value: Any) -> None: ...
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
from typing import Any, Union
|
|
||||||
|
|
||||||
from . import Attribute, _FilterType
|
|
||||||
|
|
||||||
def include(*what: Union[type, Attribute[Any]]) -> _FilterType[Any]: ...
|
|
||||||
def exclude(*what: Union[type, Attribute[Any]]) -> _FilterType[Any]: ...
|
|
||||||
19
lib/spack/external/_vendoring/attr/setters.pyi
vendored
19
lib/spack/external/_vendoring/attr/setters.pyi
vendored
@@ -1,19 +0,0 @@
|
|||||||
from typing import Any, NewType, NoReturn, TypeVar, cast
|
|
||||||
|
|
||||||
from . import Attribute, _OnSetAttrType
|
|
||||||
|
|
||||||
_T = TypeVar("_T")
|
|
||||||
|
|
||||||
def frozen(
|
|
||||||
instance: Any, attribute: Attribute[Any], new_value: Any
|
|
||||||
) -> NoReturn: ...
|
|
||||||
def pipe(*setters: _OnSetAttrType) -> _OnSetAttrType: ...
|
|
||||||
def validate(instance: Any, attribute: Attribute[_T], new_value: _T) -> _T: ...
|
|
||||||
|
|
||||||
# convert is allowed to return Any, because they can be chained using pipe.
|
|
||||||
def convert(
|
|
||||||
instance: Any, attribute: Attribute[Any], new_value: Any
|
|
||||||
) -> Any: ...
|
|
||||||
|
|
||||||
_NoOpType = NewType("_NoOpType", object)
|
|
||||||
NO_OP: _NoOpType
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
from typing import (
|
|
||||||
Any,
|
|
||||||
AnyStr,
|
|
||||||
Callable,
|
|
||||||
Container,
|
|
||||||
ContextManager,
|
|
||||||
Iterable,
|
|
||||||
List,
|
|
||||||
Mapping,
|
|
||||||
Match,
|
|
||||||
Optional,
|
|
||||||
Pattern,
|
|
||||||
Tuple,
|
|
||||||
Type,
|
|
||||||
TypeVar,
|
|
||||||
Union,
|
|
||||||
overload,
|
|
||||||
)
|
|
||||||
|
|
||||||
from . import _ValidatorType
|
|
||||||
from . import _ValidatorArgType
|
|
||||||
|
|
||||||
_T = TypeVar("_T")
|
|
||||||
_T1 = TypeVar("_T1")
|
|
||||||
_T2 = TypeVar("_T2")
|
|
||||||
_T3 = TypeVar("_T3")
|
|
||||||
_I = TypeVar("_I", bound=Iterable)
|
|
||||||
_K = TypeVar("_K")
|
|
||||||
_V = TypeVar("_V")
|
|
||||||
_M = TypeVar("_M", bound=Mapping)
|
|
||||||
|
|
||||||
def set_disabled(run: bool) -> None: ...
|
|
||||||
def get_disabled() -> bool: ...
|
|
||||||
def disabled() -> ContextManager[None]: ...
|
|
||||||
|
|
||||||
# To be more precise on instance_of use some overloads.
|
|
||||||
# If there are more than 3 items in the tuple then we fall back to Any
|
|
||||||
@overload
|
|
||||||
def instance_of(type: Type[_T]) -> _ValidatorType[_T]: ...
|
|
||||||
@overload
|
|
||||||
def instance_of(type: Tuple[Type[_T]]) -> _ValidatorType[_T]: ...
|
|
||||||
@overload
|
|
||||||
def instance_of(
|
|
||||||
type: Tuple[Type[_T1], Type[_T2]]
|
|
||||||
) -> _ValidatorType[Union[_T1, _T2]]: ...
|
|
||||||
@overload
|
|
||||||
def instance_of(
|
|
||||||
type: Tuple[Type[_T1], Type[_T2], Type[_T3]]
|
|
||||||
) -> _ValidatorType[Union[_T1, _T2, _T3]]: ...
|
|
||||||
@overload
|
|
||||||
def instance_of(type: Tuple[type, ...]) -> _ValidatorType[Any]: ...
|
|
||||||
def provides(interface: Any) -> _ValidatorType[Any]: ...
|
|
||||||
def optional(
|
|
||||||
validator: Union[_ValidatorType[_T], List[_ValidatorType[_T]]]
|
|
||||||
) -> _ValidatorType[Optional[_T]]: ...
|
|
||||||
def in_(options: Container[_T]) -> _ValidatorType[_T]: ...
|
|
||||||
def and_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ...
|
|
||||||
def matches_re(
|
|
||||||
regex: Union[Pattern[AnyStr], AnyStr],
|
|
||||||
flags: int = ...,
|
|
||||||
func: Optional[
|
|
||||||
Callable[[AnyStr, AnyStr, int], Optional[Match[AnyStr]]]
|
|
||||||
] = ...,
|
|
||||||
) -> _ValidatorType[AnyStr]: ...
|
|
||||||
def deep_iterable(
|
|
||||||
member_validator: _ValidatorArgType[_T],
|
|
||||||
iterable_validator: Optional[_ValidatorType[_I]] = ...,
|
|
||||||
) -> _ValidatorType[_I]: ...
|
|
||||||
def deep_mapping(
|
|
||||||
key_validator: _ValidatorType[_K],
|
|
||||||
value_validator: _ValidatorType[_V],
|
|
||||||
mapping_validator: Optional[_ValidatorType[_M]] = ...,
|
|
||||||
) -> _ValidatorType[_M]: ...
|
|
||||||
def is_callable() -> _ValidatorType[_T]: ...
|
|
||||||
def lt(val: _T) -> _ValidatorType[_T]: ...
|
|
||||||
def le(val: _T) -> _ValidatorType[_T]: ...
|
|
||||||
def ge(val: _T) -> _ValidatorType[_T]: ...
|
|
||||||
def gt(val: _T) -> _ValidatorType[_T]: ...
|
|
||||||
def max_len(length: int) -> _ValidatorType[_T]: ...
|
|
||||||
def min_len(length: int) -> _ValidatorType[_T]: ...
|
|
||||||
70
lib/spack/external/_vendoring/attrs/__init__.py
vendored
70
lib/spack/external/_vendoring/attrs/__init__.py
vendored
@@ -1,70 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
from attr import (
|
|
||||||
NOTHING,
|
|
||||||
Attribute,
|
|
||||||
Factory,
|
|
||||||
__author__,
|
|
||||||
__copyright__,
|
|
||||||
__description__,
|
|
||||||
__doc__,
|
|
||||||
__email__,
|
|
||||||
__license__,
|
|
||||||
__title__,
|
|
||||||
__url__,
|
|
||||||
__version__,
|
|
||||||
__version_info__,
|
|
||||||
assoc,
|
|
||||||
cmp_using,
|
|
||||||
define,
|
|
||||||
evolve,
|
|
||||||
field,
|
|
||||||
fields,
|
|
||||||
fields_dict,
|
|
||||||
frozen,
|
|
||||||
has,
|
|
||||||
make_class,
|
|
||||||
mutable,
|
|
||||||
resolve_types,
|
|
||||||
validate,
|
|
||||||
)
|
|
||||||
from attr._next_gen import asdict, astuple
|
|
||||||
|
|
||||||
from . import converters, exceptions, filters, setters, validators
|
|
||||||
|
|
||||||
|
|
||||||
__all__ = [
|
|
||||||
"__author__",
|
|
||||||
"__copyright__",
|
|
||||||
"__description__",
|
|
||||||
"__doc__",
|
|
||||||
"__email__",
|
|
||||||
"__license__",
|
|
||||||
"__title__",
|
|
||||||
"__url__",
|
|
||||||
"__version__",
|
|
||||||
"__version_info__",
|
|
||||||
"asdict",
|
|
||||||
"assoc",
|
|
||||||
"astuple",
|
|
||||||
"Attribute",
|
|
||||||
"cmp_using",
|
|
||||||
"converters",
|
|
||||||
"define",
|
|
||||||
"evolve",
|
|
||||||
"exceptions",
|
|
||||||
"Factory",
|
|
||||||
"field",
|
|
||||||
"fields_dict",
|
|
||||||
"fields",
|
|
||||||
"filters",
|
|
||||||
"frozen",
|
|
||||||
"has",
|
|
||||||
"make_class",
|
|
||||||
"mutable",
|
|
||||||
"NOTHING",
|
|
||||||
"resolve_types",
|
|
||||||
"setters",
|
|
||||||
"validate",
|
|
||||||
"validators",
|
|
||||||
]
|
|
||||||
66
lib/spack/external/_vendoring/attrs/__init__.pyi
vendored
66
lib/spack/external/_vendoring/attrs/__init__.pyi
vendored
@@ -1,66 +0,0 @@
|
|||||||
from typing import (
|
|
||||||
Any,
|
|
||||||
Callable,
|
|
||||||
Dict,
|
|
||||||
Mapping,
|
|
||||||
Optional,
|
|
||||||
Sequence,
|
|
||||||
Tuple,
|
|
||||||
Type,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Because we need to type our own stuff, we have to make everything from
|
|
||||||
# attr explicitly public too.
|
|
||||||
from attr import __author__ as __author__
|
|
||||||
from attr import __copyright__ as __copyright__
|
|
||||||
from attr import __description__ as __description__
|
|
||||||
from attr import __email__ as __email__
|
|
||||||
from attr import __license__ as __license__
|
|
||||||
from attr import __title__ as __title__
|
|
||||||
from attr import __url__ as __url__
|
|
||||||
from attr import __version__ as __version__
|
|
||||||
from attr import __version_info__ as __version_info__
|
|
||||||
from attr import _FilterType
|
|
||||||
from attr import assoc as assoc
|
|
||||||
from attr import Attribute as Attribute
|
|
||||||
from attr import cmp_using as cmp_using
|
|
||||||
from attr import converters as converters
|
|
||||||
from attr import define as define
|
|
||||||
from attr import evolve as evolve
|
|
||||||
from attr import exceptions as exceptions
|
|
||||||
from attr import Factory as Factory
|
|
||||||
from attr import field as field
|
|
||||||
from attr import fields as fields
|
|
||||||
from attr import fields_dict as fields_dict
|
|
||||||
from attr import filters as filters
|
|
||||||
from attr import frozen as frozen
|
|
||||||
from attr import has as has
|
|
||||||
from attr import make_class as make_class
|
|
||||||
from attr import mutable as mutable
|
|
||||||
from attr import NOTHING as NOTHING
|
|
||||||
from attr import resolve_types as resolve_types
|
|
||||||
from attr import setters as setters
|
|
||||||
from attr import validate as validate
|
|
||||||
from attr import validators as validators
|
|
||||||
|
|
||||||
# TODO: see definition of attr.asdict/astuple
|
|
||||||
def asdict(
|
|
||||||
inst: Any,
|
|
||||||
recurse: bool = ...,
|
|
||||||
filter: Optional[_FilterType[Any]] = ...,
|
|
||||||
dict_factory: Type[Mapping[Any, Any]] = ...,
|
|
||||||
retain_collection_types: bool = ...,
|
|
||||||
value_serializer: Optional[
|
|
||||||
Callable[[type, Attribute[Any], Any], Any]
|
|
||||||
] = ...,
|
|
||||||
tuple_keys: bool = ...,
|
|
||||||
) -> Dict[str, Any]: ...
|
|
||||||
|
|
||||||
# TODO: add support for returning NamedTuple from the mypy plugin
|
|
||||||
def astuple(
|
|
||||||
inst: Any,
|
|
||||||
recurse: bool = ...,
|
|
||||||
filter: Optional[_FilterType[Any]] = ...,
|
|
||||||
tuple_factory: Type[Sequence[Any]] = ...,
|
|
||||||
retain_collection_types: bool = ...,
|
|
||||||
) -> Tuple[Any, ...]: ...
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
from attr.converters import * # noqa
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
from attr.exceptions import * # noqa
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
from attr.filters import * # noqa
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
from attr.setters import * # noqa
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
from attr.validators import * # noqa
|
|
||||||
202
lib/spack/external/_vendoring/distro/LICENSE
vendored
202
lib/spack/external/_vendoring/distro/LICENSE
vendored
@@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user