summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md42
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.yml58
-rw-r--r--.github/ISSUE_TEMPLATE/build_error.md43
-rw-r--r--.github/ISSUE_TEMPLATE/build_error.yml64
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml1
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md33
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.yml41
-rw-r--r--.github/actions/add-maintainers-as-reviewers/Dockerfile6
-rwxr-xr-x.github/actions/add-maintainers-as-reviewers/entrypoint.py85
-rw-r--r--.github/dependabot.yml7
-rw-r--r--.github/workflows/bootstrap.yml161
-rw-r--r--.github/workflows/build-containers.yml72
-rw-r--r--.github/workflows/linux_build_tests.yaml65
-rw-r--r--.github/workflows/linux_unit_tests.yaml150
-rw-r--r--.github/workflows/macos_unit_tests.yaml44
-rw-r--r--.github/workflows/style_and_docs.yaml65
-rw-r--r--.github/workflows/unit_tests.yaml367
17 files changed, 771 insertions, 533 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 9a568285ea..0000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-name: "\U0001F41E Bug report"
-about: Report a bug in the core of Spack (command not working as expected, etc.)
-labels: "bug,triage"
----
-
-<!-- Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
-Example: "I ran `spack find` to list all the installed packages and ..." -->
-
-### Steps to reproduce the issue
-
-```console
-$ spack <command1> <spec>
-$ spack <command2> <spec>
-...
-```
-
-### Error Message
-
-<!-- If Spack reported an error, provide the error message. If it did not report an error but the output appears incorrect, provide the incorrect output. If there was no error message and no output but the result is incorrect, describe how it does not match what you expect. -->
-```console
-$ spack --debug --stacktrace <command>
-```
-
-### Information on your system
-
-<!-- Please include the output of `spack debug report` -->
-
-<!-- If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well. -->
-
-### Additional information
-
-<!-- These boxes can be checked by replacing [ ] with [x] or by clicking them after submitting the issue. -->
-- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform
-- [ ] I have searched the issues of this repo and believe this is not a duplicate
-- [ ] I have run the failing commands in debug mode and reported the output
-
-<!-- We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
-
-If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
-
-Other than that, thanks for taking the time to contribute to Spack! -->
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000000..e94915f017
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,58 @@
+name: "\U0001F41E Bug report"
+description: Report a bug in the core of Spack (command not working as expected, etc.)
+labels: [bug, triage]
+body:
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Steps to reproduce
+ description: |
+ Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
+ Example: "I ran `spack find` to list all the installed packages and ..."
+ placeholder: |
+ ```console
+ $ spack <command1> <spec>
+ $ spack <command2> <spec>
+ ...
+ ```
+ validations:
+ required: true
+ - type: textarea
+ id: error
+ attributes:
+ label: Error message
+ description: |
+ If Spack reported an error, provide the error message. If it did not report an error but the output appears incorrect, provide the incorrect output. If there was no error message and no output but the result is incorrect, describe how it does not match what you expect.
+ placeholder: |
+ ```console
+ $ spack --debug --stacktrace <command>
+ ```
+ - type: textarea
+ id: information
+ attributes:
+ label: Information on your system
+ description: Please include the output of `spack debug report`
+ validations:
+ required: true
+ - type: markdown
+ attributes:
+ value: |
+ If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well.
+ - type: checkboxes
+ id: checks
+ attributes:
+ label: General information
+ options:
+ - label: I have run `spack debug report` and reported the version of Spack/Python/Platform
+ required: true
+ - label: I have searched the issues of this repo and believe this is not a duplicate
+ required: true
+ - label: I have run the failing commands in debug mode and reported the output
+ required: true
+ - type: markdown
+ attributes:
+ value: |
+ We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
+ If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on [our Slack](https://slack.spack.io/) first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
+
+ Other than that, thanks for taking the time to contribute to Spack!
diff --git a/.github/ISSUE_TEMPLATE/build_error.md b/.github/ISSUE_TEMPLATE/build_error.md
deleted file mode 100644
index d26db233d3..0000000000
--- a/.github/ISSUE_TEMPLATE/build_error.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-name: "\U0001F4A5 Build error"
-about: Some package in Spack didn't build correctly
-title: "Installation issue: "
-labels: "build-error"
----
-
-<!-- Thanks for taking the time to report this build failure. To proceed with the report please:
-
-1. Title the issue "Installation issue: <name-of-the-package>".
-2. Provide the information required below.
-
-We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively! -->
-
-### Steps to reproduce the issue
-
-<!-- Fill in the exact spec you are trying to build and the relevant part of the error message -->
-```console
-$ spack install <spec>
-...
-```
-
-### Information on your system
-
-<!-- Please include the output of `spack debug report` -->
-
-<!-- If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well. -->
-
-### Additional information
-
-<!-- Please upload the following files. They should be present in the stage directory of the failing build. Also upload any config.log or similar file if one exists. -->
-* [spack-build-out.txt]()
-* [spack-build-env.txt]()
-
-<!-- Some packages have maintainers who have volunteered to debug build failures. Run `spack maintainers <name-of-the-package>` and @mention them here if they exist. -->
-
-### General information
-
-<!-- These boxes can be checked by replacing [ ] with [x] or by clicking them after submitting the issue. -->
-- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform
-- [ ] I have run `spack maintainers <name-of-the-package>` and @mentioned any maintainers
-- [ ] I have uploaded the build log and environment files
-- [ ] I have searched the issues of this repo and believe this is not a duplicate
diff --git a/.github/ISSUE_TEMPLATE/build_error.yml b/.github/ISSUE_TEMPLATE/build_error.yml
new file mode 100644
index 0000000000..cf5d867ffe
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/build_error.yml
@@ -0,0 +1,64 @@
+name: "\U0001F4A5 Build error"
+description: Some package in Spack didn't build correctly
+title: "Installation issue: "
+labels: [build-error]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to report this build failure. To proceed with the report please:
+ 1. Title the issue `Installation issue: <name-of-the-package>`.
+ 2. Provide the information required below.
+
+ We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Steps to reproduce the issue
+ description: |
+ Fill in the exact spec you are trying to build and the relevant part of the error message
+ placeholder: |
+ ```console
+ $ spack install <spec>
+ ...
+ ```
+ validations:
+ required: true
+ - type: textarea
+ id: information
+ attributes:
+ label: Information on your system
+ description: Please include the output of `spack debug report`
+ validations:
+ required: true
+ - type: markdown
+ attributes:
+ value: |
+ If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well.
+ - type: textarea
+ id: additional_information
+ attributes:
+ label: Additional information
+ description: |
+ Please upload the following files:
+ * **`spack-build-out.txt`**
+ * **`spack-build-env.txt`**
+
+ They should be present in the stage directory of the failing build. Also upload any `config.log` or similar file if one exists.
+ - type: markdown
+ attributes:
+ value: |
+ Some packages have maintainers who have volunteered to debug build failures. Run `spack maintainers <name-of-the-package>` and **@mention** them here if they exist.
+ - type: checkboxes
+ id: checks
+ attributes:
+ label: General information
+ options:
+ - label: I have run `spack debug report` and reported the version of Spack/Python/Platform
+ required: true
+ - label: I have run `spack maintainers <name-of-the-package>` and **@mentioned** any maintainers
+ required: true
+ - label: I have uploaded the build log and environment files
+ required: true
+ - label: I have searched the issues of this repo and believe this is not a duplicate
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..a49eab2f6b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: true \ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index b6e5e27e6f..0000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-name: "\U0001F38A Feature request"
-about: Suggest adding a feature that is not yet in Spack
-labels: feature
-
----
-
-<!--*Please add a concise summary of your suggestion here.*-->
-
-### Rationale
-
-<!--*Is your feature request related to a problem? Please describe it!*-->
-
-### Description
-
-<!--*Describe the solution you'd like and the alternatives you have considered.*-->
-
-
-### Additional information
-<!--*Add any other context about the feature request here.*-->
-
-
-### General information
-
-- [ ] I have run `spack --version` and reported the version of Spack
-- [ ] I have searched the issues of this repo and believe this is not a duplicate
-
-
-
-<!--If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
-
-Other than that, thanks for taking the time to contribute to Spack!
---> \ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000000..a247d9395a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,41 @@
+name: "\U0001F38A Feature request"
+description: Suggest adding a feature that is not yet in Spack
+labels: [feature]
+body:
+ - type: textarea
+ id: summary
+ attributes:
+ label: Summary
+ description: Please add a concise summary of your suggestion here.
+ validations:
+ required: true
+ - type: textarea
+ id: rationale
+ attributes:
+ label: Rationale
+ description: Is your feature request related to a problem? Please describe it!
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Describe the solution you'd like and the alternatives you have considered.
+ - type: textarea
+ id: additional_information
+ attributes:
+ label: Additional information
+ description: Add any other context about the feature request here.
+ - type: checkboxes
+ id: checks
+ attributes:
+ label: General information
+ options:
+ - label: I have run `spack --version` and reported the version of Spack
+ required: true
+ - label: I have searched the issues of this repo and believe this is not a duplicate
+ required: true
+ - type: markdown
+ attributes:
+ value: |
+ If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on [our Slack](https://slack.spack.io/) first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
+
+ Other than that, thanks for taking the time to contribute to Spack!
diff --git a/.github/actions/add-maintainers-as-reviewers/Dockerfile b/.github/actions/add-maintainers-as-reviewers/Dockerfile
deleted file mode 100644
index 9370cfed83..0000000000
--- a/.github/actions/add-maintainers-as-reviewers/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM python:3.7-alpine
-
-RUN pip install pygithub
-
-ADD entrypoint.py /entrypoint.py
-ENTRYPOINT ["/entrypoint.py"]
diff --git a/.github/actions/add-maintainers-as-reviewers/entrypoint.py b/.github/actions/add-maintainers-as-reviewers/entrypoint.py
deleted file mode 100755
index aa89fcd468..0000000000
--- a/.github/actions/add-maintainers-as-reviewers/entrypoint.py
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2013-2020 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)
-
-"""Maintainer review action.
-
-This action checks which packages have changed in a PR, and adds their
-maintainers to the pull request for review.
-"""
-
-import json
-import os
-import re
-import subprocess
-
-from github import Github
-
-
-def spack(*args):
- """Run the spack executable with arguments, and return the output split.
-
- This does just enough to run `spack pkg` and `spack maintainers`, the
- two commands used by this action.
- """
- github_workspace = os.environ['GITHUB_WORKSPACE']
- spack = os.path.join(github_workspace, 'bin', 'spack')
- output = subprocess.check_output([spack] + list(args))
- split = re.split(r'\s*', output.decode('utf-8').strip())
- return [s for s in split if s]
-
-
-def main():
- # get these first so that we'll fail early
- token = os.environ['GITHUB_TOKEN']
- event_path = os.environ['GITHUB_EVENT_PATH']
-
- with open(event_path) as file:
- data = json.load(file)
-
- # make sure it's a pull_request event
- assert 'pull_request' in data
-
- # only request reviews on open, edit, or reopen
- action = data['action']
- if action not in ('opened', 'edited', 'reopened'):
- return
-
- # get data from the event payload
- pr_data = data['pull_request']
- base_branch_name = pr_data['base']['ref']
- full_repo_name = pr_data['base']['repo']['full_name']
- pr_number = pr_data['number']
- requested_reviewers = pr_data['requested_reviewers']
- author = pr_data['user']['login']
-
- # get a list of packages that this PR modified
- changed_pkgs = spack(
- 'pkg', 'changed', '--type', 'ac', '%s...' % base_branch_name)
-
- # get maintainers for all modified packages
- maintainers = set()
- for pkg in changed_pkgs:
- pkg_maintainers = set(spack('maintainers', pkg))
- maintainers |= pkg_maintainers
-
- # remove any maintainers who are already on the PR, and the author,
- # as you can't review your own PR)
- maintainers -= set(requested_reviewers)
- maintainers -= set([author])
-
- if not maintainers:
- return
-
- # request reviews from each maintainer
- gh = Github(token)
- repo = gh.get_repo(full_repo_name)
- pr = repo.get_pull(pr_number)
- pr.create_review_request(list(maintainers))
-
-
-if __name__ == "__main__":
- main()
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..2c7d170839
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+ # Maintain dependencies for GitHub Actions
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml
new file mode 100644
index 0000000000..ac2215a768
--- /dev/null
+++ b/.github/workflows/bootstrap.yml
@@ -0,0 +1,161 @@
+name: Bootstrapping
+
+on:
+ pull_request:
+ branches:
+ - develop
+ - releases/**
+ paths-ignore:
+ # Don't run if we only modified packages in the
+ # built-in repository or documentation
+ - 'var/spack/repos/builtin/**'
+ - '!var/spack/repos/builtin/packages/clingo-bootstrap/**'
+ - '!var/spack/repos/builtin/packages/python/**'
+ - '!var/spack/repos/builtin/packages/re2c/**'
+ - 'lib/spack/docs/**'
+ schedule:
+ # nightly at 2:16 AM
+ - cron: '16 2 * * *'
+
+jobs:
+
+ fedora-sources:
+ runs-on: ubuntu-latest
+ container: "fedora:latest"
+ steps:
+ - name: Install dependencies
+ run: |
+ dnf install -y \
+ bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
+ make patch unzip which xz python3 python3-devel tree \
+ cmake bison bison-devel libstdc++-static
+ - uses: actions/checkout@v2
+ - name: Setup repo and non-root user
+ run: |
+ git --version
+ git fetch --unshallow
+ . .github/workflows/setup_git.sh
+ useradd spack-test
+ chown -R spack-test .
+ - name: Bootstrap clingo
+ shell: runuser -u spack-test -- bash {0}
+ run: |
+ source share/spack/setup-env.sh
+ spack bootstrap untrust github-actions
+ spack external find cmake bison
+ spack -d solve zlib
+ tree ~/.spack/bootstrap/store/
+
+ ubuntu-sources:
+ runs-on: ubuntu-latest
+ container: "ubuntu:latest"
+ steps:
+ - name: Install dependencies
+ env:
+ DEBIAN_FRONTEND: noninteractive
+ run: |
+ apt-get update -y && apt-get upgrade -y
+ apt-get install -y \
+ bzip2 curl file g++ gcc gfortran git gnupg2 gzip \
+ make patch unzip xz-utils python3 python3-dev tree \
+ cmake bison
+ - uses: actions/checkout@v2
+ - name: Setup repo and non-root user
+ run: |
+ git --version
+ git fetch --unshallow
+ . .github/workflows/setup_git.sh
+ useradd -m spack-test
+ chown -R spack-test .
+ - name: Bootstrap clingo
+ shell: runuser -u spack-test -- bash {0}
+ run: |
+ source share/spack/setup-env.sh
+ spack bootstrap untrust github-actions
+ spack external find cmake bison
+ spack -d solve zlib
+ tree ~/.spack/bootstrap/store/
+
+ opensuse-sources:
+ runs-on: ubuntu-latest
+ container: "opensuse/tumbleweed:latest"
+ steps:
+ - name: Install dependencies
+ run: |
+ zypper update -y
+ zypper install -y \
+ bzip2 curl file gcc-c++ gcc gcc-fortran tar git gpg2 gzip \
+ make patch unzip which xz python3 python3-devel tree \
+ cmake bison
+ - uses: actions/checkout@v2
+ - name: Setup repo and non-root user
+ run: |
+ git --version
+ git fetch --unshallow
+ . .github/workflows/setup_git.sh
+ - name: Bootstrap clingo
+ run: |
+ source share/spack/setup-env.sh
+ spack bootstrap untrust github-actions
+ spack external find cmake bison
+ spack -d solve zlib
+ tree ~/.spack/bootstrap/store/
+
+ macos-sources:
+ runs-on: macos-latest
+ steps:
+ - name: Install dependencies
+ run: |
+ brew install cmake bison@2.7 tree
+ - uses: actions/checkout@v2
+ - name: Bootstrap clingo
+ run: |
+ source share/spack/setup-env.sh
+ export PATH=/usr/local/opt/bison@2.7/bin:$PATH
+ spack bootstrap untrust github-actions
+ spack external find --not-buildable cmake bison
+ spack -d solve zlib
+ tree ~/.spack/bootstrap/store/
+
+ macos-clingo-binaries:
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ python-version: ['3.5', '3.6', '3.7', '3.8', '3.9']
+ steps:
+ - name: Install dependencies
+ run: |
+ brew install tree
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Bootstrap clingo
+ run: |
+ source share/spack/setup-env.sh
+ spack bootstrap untrust spack-install
+ spack -d solve zlib
+ tree ~/.spack/bootstrap/store/
+
+
+ ubuntu-clingo-binaries:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ['2.7', '3.5', '3.6', '3.7', '3.8', '3.9']
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Setup repo and non-root user
+ run: |
+ git --version
+ git fetch --unshallow
+ . .github/workflows/setup_git.sh
+ - name: Bootstrap clingo
+ run: |
+ source share/spack/setup-env.sh
+ spack bootstrap untrust spack-install
+ spack -d solve zlib
+ tree ~/.spack/bootstrap/store/
diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml
new file mode 100644
index 0000000000..d2dd2d825e
--- /dev/null
+++ b/.github/workflows/build-containers.yml
@@ -0,0 +1,72 @@
+name: Build & Deploy Docker Containers
+on:
+ # Build new Spack develop containers nightly.
+ schedule:
+ - cron: '34 0 * * *'
+ # Let's also build & tag Spack containers on releases.
+ release:
+ types: [published]
+
+jobs:
+ deploy-images:
+ runs-on: ubuntu-latest
+ strategy:
+ # Even if one container fails to build we still want the others
+ # to continue their builds.
+ fail-fast: false
+ # A matrix of Dockerfile paths, associated tags, and which architectures
+ # they support.
+ matrix:
+ dockerfile: [[amazon-linux, amazonlinux-2.dockerfile, 'linux/amd64,linux/arm64'],
+ [centos7, centos-7.dockerfile, 'linux/amd64,linux/arm64'],
+ [leap15, leap-15.dockerfile, 'linux/amd64,linux/arm64'],
+ [ubuntu-xenial, ubuntu-1604.dockerfile, 'linux/amd64,linux/arm64'],
+ [ubuntu-bionic, ubuntu-1804.dockerfile, 'linux/amd64,linux/arm64']]
+ name: Build ${{ matrix.dockerfile[0] }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Set Container Tag Normal (Nightly)
+ run: |
+ container="ghcr.io/spack/${{ matrix.dockerfile[0]}}:latest"
+ echo "container=${container}" >> $GITHUB_ENV
+ echo "versioned=${container}" >> $GITHUB_ENV
+
+ # On a new release create a container with the same tag as the release.
+ - name: Set Container Tag on Release
+ if: github.event_name == 'release'
+ run: |
+ versioned="ghcr.io/spack/${{matrix.dockerfile[0]}}:${GITHUB_REF##*/}"
+ echo "versioned=${versioned}" >> $GITHUB_ENV
+
+ - name: Check ${{ matrix.dockerfile[1] }} Exists
+ run: |
+ printf "Preparing to build ${{ env.container }} from ${{ matrix.dockerfile[1] }}"
+ if [ ! -f "share/spack/docker/${{ matrix.dockerfile[1]}}" ]; then
+ printf "Dockerfile ${{ matrix.dockerfile[0]}} does not exist"
+ exit 1;
+ fi
+
+ - name: Log in to GitHub Container Registry
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Build & Deploy ${{ matrix.dockerfile[1] }}
+ uses: docker/build-push-action@v2
+ with:
+ file: share/spack/docker/${{matrix.dockerfile[1]}}
+ platforms: ${{ matrix.dockerfile[2] }}
+ push: true
+ tags: |
+ ${{ env.container }}
+ ${{ env.versioned }}
diff --git a/.github/workflows/linux_build_tests.yaml b/.github/workflows/linux_build_tests.yaml
deleted file mode 100644
index 0a2946f63f..0000000000
--- a/.github/workflows/linux_build_tests.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-name: linux builds
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
- paths-ignore:
- # Don't run if we only modified packages in the built-in repository
- - 'var/spack/repos/builtin/**'
- - '!var/spack/repos/builtin/packages/lz4/**'
- - '!var/spack/repos/builtin/packages/mpich/**'
- - '!var/spack/repos/builtin/packages/tut/**'
- - '!var/spack/repos/builtin/packages/py-setuptools/**'
- - '!var/spack/repos/builtin/packages/openjpeg/**'
- - '!var/spack/repos/builtin/packages/r-rcpp/**'
- - '!var/spack/repos/builtin/packages/ruby-rake/**'
- # Don't run if we only modified documentation
- - 'lib/spack/docs/**'
-
-jobs:
- build:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- package:
- - lz4 # MakefilePackage
- - mpich~fortran # AutotoolsPackage
- - tut # WafPackage
- - py-setuptools # PythonPackage
- - openjpeg # CMakePackage
- - r-rcpp # RPackage
- - ruby-rake # RubyPackage
- steps:
- - uses: actions/checkout@v2
- - uses: actions/cache@v2
- with:
- path: ~/.ccache
- key: ccache-build-${{ matrix.package }}
- restore-keys: |
- ccache-build-${{ matrix.package }}
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install System Packages
- run: |
- sudo apt-get update
- sudo apt-get -yqq install ccache gfortran perl perl-base r-base r-base-core r-base-dev ruby findutils openssl libssl-dev libpciaccess-dev
- R --version
- perl --version
- ruby --version
- - name: Copy Configuration
- run: |
- ccache -M 300M && ccache -z
- # Set up external deps for build tests, b/c they take too long to compile
- cp share/spack/qa/configuration/*.yaml etc/spack/
- - name: Run the build test
- run: |
- . share/spack/setup-env.sh
- SPEC=${{ matrix.package }} share/spack/qa/run-build-tests
- ccache -s
diff --git a/.github/workflows/linux_unit_tests.yaml b/.github/workflows/linux_unit_tests.yaml
deleted file mode 100644
index f21f9cd0ab..0000000000
--- a/.github/workflows/linux_unit_tests.yaml
+++ /dev/null
@@ -1,150 +0,0 @@
-name: linux tests
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
-jobs:
- unittests:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9]
- concretizer: ['original', 'clingo']
-
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: ${{ matrix.python-version }}
- - name: Install System packages
- run: |
- sudo apt-get -y update
- # Needed for unit tests
- sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial
- sudo apt-get install -y ninja-build patchelf
- # Needed for kcov
- sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
- sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools codecov coverage
- - name: Setup git configuration
- run: |
- # Need this for the git tests to succeed.
- git --version
- . .github/workflows/setup_git.sh
- - name: Install kcov for bash script coverage
- env:
- KCOV_VERSION: 34
- run: |
- KCOV_ROOT=$(mktemp -d)
- wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
- tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
- mkdir -p ${KCOV_ROOT}/build
- cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
- make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
- - name: Bootstrap clingo from sources
- if: ${{ matrix.concretizer == 'clingo' }}
- run: |
- . share/spack/setup-env.sh
- spack external find --not-buildable cmake bison
- spack -v solve zlib
- - name: Run unit tests
- env:
- COVERAGE: true
- SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
- run: |
- share/spack/qa/run-unit-tests
- coverage combine
- coverage xml
- - uses: codecov/codecov-action@v1
- with:
- flags: unittests,linux,${{ matrix.concretizer }}
- shell:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install System packages
- run: |
- sudo apt-get -y update
- # Needed for shell tests
- sudo apt-get install -y coreutils csh zsh tcsh fish dash bash
- # Needed for kcov
- sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
- sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools codecov coverage
- - name: Setup git configuration
- run: |
- # Need this for the git tests to succeed.
- git --version
- . .github/workflows/setup_git.sh
- - name: Install kcov for bash script coverage
- env:
- KCOV_VERSION: 38
- run: |
- KCOV_ROOT=$(mktemp -d)
- wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
- tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
- mkdir -p ${KCOV_ROOT}/build
- cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
- make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
- - name: Run shell tests
- env:
- COVERAGE: true
- run: |
- share/spack/qa/run-shell-tests
- - uses: codecov/codecov-action@v1
- with:
- flags: shelltests,linux
-
- centos6:
- # Test for Python2.6 run on Centos 6
- runs-on: ubuntu-latest
- container: spack/github-actions:centos6
- steps:
- - name: Run unit tests
- env:
- HOME: /home/spack-test
- run: |
- whoami && echo $HOME && cd $HOME
- git clone https://github.com/spack/spack.git && cd spack
- git fetch origin ${{ github.ref }}:test-branch
- git checkout test-branch
- share/spack/qa/run-unit-tests
-
- clingo-cffi:
- # Test for the clingo based solver (using clingo-cffi)
- runs-on: ubuntu-latest
- container: spack/github-actions:clingo-cffi
- steps:
- - name: Run unit tests
- run: |
- whoami && echo PWD=$PWD && echo HOME=$HOME && echo SPACK_TEST_SOLVER=$SPACK_TEST_SOLVER
- python3 -c "import clingo; print(hasattr(clingo.Symbol, '_rep'), clingo.__version__)"
- git clone https://github.com/spack/spack.git && cd spack
- git fetch origin ${{ github.ref }}:test-branch
- git checkout test-branch
- . share/spack/setup-env.sh
- spack compiler find
- spack solve mpileaks%gcc
- coverage run $(which spack) unit-test -v
- coverage combine
- coverage xml
- - uses: codecov/codecov-action@v1
- with:
- flags: unittests,linux,clingo
diff --git a/.github/workflows/macos_unit_tests.yaml b/.github/workflows/macos_unit_tests.yaml
deleted file mode 100644
index 29caaa2e08..0000000000
--- a/.github/workflows/macos_unit_tests.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-name: macos tests
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
-jobs:
- build:
- runs-on: macos-latest
- strategy:
- matrix:
- python-version: [3.8]
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: ${{ matrix.python-version }}
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools
- pip install --upgrade codecov coverage
- pip install --upgrade flake8 pep8-naming
- - name: Setup Homebrew packages
- run: |
- brew install dash fish gcc gnupg2 kcov
- - name: Run unit tests
- run: |
- git --version
- . .github/workflows/setup_git.sh
- . share/spack/setup-env.sh
- coverage run $(which spack) unit-test
- coverage combine
- coverage xml
- - uses: codecov/codecov-action@v1
- with:
- file: ./coverage.xml
- flags: unittests,macos
diff --git a/.github/workflows/style_and_docs.yaml b/.github/workflows/style_and_docs.yaml
deleted file mode 100644
index 5abedab784..0000000000
--- a/.github/workflows/style_and_docs.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-name: style and docs
-
-on:
- push:
- branches:
- - develop
- - releases/**
- pull_request:
- branches:
- - develop
- - releases/**
-jobs:
- validate:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install Python Packages
- run: |
- pip install --upgrade pip
- pip install --upgrade vermin
- - name: Minimum Version (Spack's Core)
- run: vermin --backport argparse -t=2.6- -t=3.5- -v lib/spack/spack/ lib/spack/llnl/ bin/
- - name: Minimum Version (Repositories)
- run: vermin --backport argparse -t=2.6- -t=3.5- -v var/spack/repos
- flake8:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools flake8
- - name: Setup git configuration
- run: |
- # Need this for the git tests to succeed.
- git --version
- . .github/workflows/setup_git.sh
- - name: Run flake8 tests
- run: |
- share/spack/qa/run-flake8-tests
- documentation:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- with:
- python-version: 3.9
- - name: Install System packages
- run: |
- sudo apt-get -y update
- sudo apt-get install -y coreutils ninja-build graphviz
- - name: Install Python packages
- run: |
- pip install --upgrade pip six setuptools
- pip install --upgrade -r lib/spack/docs/requirements.txt
- - name: Build documentation
- run: |
- share/spack/qa/run-doc-tests
diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml
new file mode 100644
index 0000000000..b6a3d58934
--- /dev/null
+++ b/.github/workflows/unit_tests.yaml
@@ -0,0 +1,367 @@
+name: linux tests
+
+on:
+ push:
+ branches:
+ - develop
+ - releases/**
+ pull_request:
+ branches:
+ - develop
+ - releases/**
+jobs:
+ # Validate that the code can be run on all the Python versions
+ # supported by Spack
+ validate:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install Python Packages
+ run: |
+ pip install --upgrade pip
+ pip install --upgrade vermin
+ - name: vermin (Spack's Core)
+ run: vermin --backport argparse --violations --backport typing -t=2.6- -t=3.5- -vvv lib/spack/spack/ lib/spack/llnl/ bin/
+ - name: vermin (Repositories)
+ run: vermin --backport argparse --violations --backport typing -t=2.6- -t=3.5- -vvv var/spack/repos
+ # Run style checks on the files that have been changed
+ style:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools types-six
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ . .github/workflows/setup_git.sh
+ - name: Run style tests
+ run: |
+ share/spack/qa/run-style-tests
+ # Build the documentation
+ documentation:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ sudo apt-get install -y coreutils ninja-build graphviz
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools
+ pip install --upgrade -r lib/spack/docs/requirements.txt
+ - name: Build documentation
+ run: |
+ share/spack/qa/run-doc-tests
+
+ # Check which files have been updated by the PR
+ changes:
+ runs-on: ubuntu-latest
+ # Set job outputs to values from filter step
+ outputs:
+ core: ${{ steps.filter.outputs.core }}
+ packages: ${{ steps.filter.outputs.packages }}
+ with_coverage: ${{ steps.coverage.outputs.with_coverage }}
+ steps:
+ - uses: actions/checkout@v2
+ if: ${{ github.event_name == 'push' }}
+ with:
+ fetch-depth: 0
+ # For pull requests it's not necessary to checkout the code
+ - uses: dorny/paths-filter@v2
+ id: filter
+ with:
+ # See https://github.com/dorny/paths-filter/issues/56 for the syntax used below
+ filters: |
+ core:
+ - './!(var/**)/**'
+ packages:
+ - 'var/**'
+ # Some links for easier reference:
+ #
+ # "github" context: https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context
+ # job outputs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs
+ # setting environment variables from earlier steps: https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
+ #
+ - id: coverage
+ # Run the subsequent jobs with coverage if core has been modified,
+ # regardless of whether this is a pull request or a push to a branch
+ run: |
+ echo Core changes: ${{ steps.filter.outputs.core }}
+ echo Event name: ${{ github.event_name }}
+ if [ "${{ steps.filter.outputs.core }}" == "true" ]
+ then
+ echo "::set-output name=with_coverage::true"
+ else
+ echo "::set-output name=with_coverage::false"
+ fi
+
+ # Run unit tests with different configurations on linux
+ unittests:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9]
+ concretizer: ['original', 'clingo']
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ # Needed for unit tests
+ sudo apt-get -y install \
+ coreutils cvs gfortran graphviz gnupg2 mercurial ninja-build \
+ patchelf cmake bison libbison-dev kcov
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools codecov coverage[toml]
+ # ensure style checks are not skipped in unit tests for python >= 3.6
+ # note that true/false (i.e., 1/0) are opposite in conditions in python and bash
+ if python -c 'import sys; sys.exit(not sys.version_info >= (3, 6))'; then
+ pip install --upgrade flake8 isort>=4.3.5 mypy>=0.900 black
+ fi
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ . .github/workflows/setup_git.sh
+ - name: Bootstrap clingo
+ if: ${{ matrix.concretizer == 'clingo' }}
+ env:
+ SPACK_PYTHON: python
+ run: |
+ . share/spack/setup-env.sh
+ spack bootstrap untrust spack-install
+ spack -v solve zlib
+ - name: Run unit tests (full suite with coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ SPACK_PYTHON: python
+ COVERAGE: true
+ SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
+ run: |
+ share/spack/qa/run-unit-tests
+ coverage combine
+ coverage xml
+ - name: Run unit tests (reduced suite without coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ env:
+ SPACK_PYTHON: python
+ ONLY_PACKAGES: true
+ SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
+ run: |
+ share/spack/qa/run-unit-tests
+ - uses: codecov/codecov-action@v2.1.0
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ flags: unittests,linux,${{ matrix.concretizer }}
+ # Test shell integration
+ shell:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ # Needed for shell tests
+ sudo apt-get install -y coreutils kcov csh zsh tcsh fish dash bash
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools codecov coverage[toml]
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ . .github/workflows/setup_git.sh
+ - name: Run shell tests (without coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ run: |
+ share/spack/qa/run-shell-tests
+ - name: Run shell tests (with coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ COVERAGE: true
+ run: |
+ share/spack/qa/run-shell-tests
+ - uses: codecov/codecov-action@v2.1.0
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ flags: shelltests,linux
+ # Test for Python2.6 run on Centos 6
+ centos6:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ container: spack/github-actions:centos6
+ steps:
+ - name: Run unit tests (full test-suite)
+ # The CentOS 6 container doesn't run with coverage, but
+ # under the same conditions it runs the full test suite
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ HOME: /home/spack-test
+ SPACK_TEST_SOLVER: original
+ run: |
+ whoami && echo $HOME && cd $HOME
+ git clone https://github.com/spack/spack.git && cd spack
+ git fetch origin ${{ github.ref }}:test-branch
+ git checkout test-branch
+ bin/spack unit-test -x
+ - name: Run unit tests (only package tests)
+ if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ env:
+ HOME: /home/spack-test
+ ONLY_PACKAGES: true
+ SPACK_TEST_SOLVER: original
+ run: |
+ whoami && echo $HOME && cd $HOME
+ git clone https://github.com/spack/spack.git && cd spack
+ git fetch origin ${{ github.ref }}:test-branch
+ git checkout test-branch
+ bin/spack unit-test -x -m "not maybeslow" -k "package_sanity"
+
+ # Test RHEL8 UBI with platform Python. This job is run
+ # only on PRs modifying core Spack
+ rhel8-platform-python:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ container: registry.access.redhat.com/ubi8/ubi
+ steps:
+ - name: Install dependencies
+ run: |
+ dnf install -y \
+ bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
+ make patch tcl unzip which xz
+ - uses: actions/checkout@v2
+ - name: Setup repo and non-root user
+ run: |
+ git --version
+ git fetch --unshallow
+ . .github/workflows/setup_git.sh
+ useradd spack-test
+ chown -R spack-test .
+ - name: Run unit tests
+ shell: runuser -u spack-test -- bash {0}
+ run: |
+ source share/spack/setup-env.sh
+ spack -d solve zlib
+ spack unit-test -k 'not cvs and not svn and not hg' -x --verbose
+ # Test for the clingo based solver (using clingo-cffi)
+ clingo-cffi:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install System packages
+ run: |
+ sudo apt-get -y update
+ # Needed for unit tests
+ sudo apt-get -y install \
+ coreutils cvs gfortran graphviz gnupg2 mercurial ninja-build \
+ patchelf kcov
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools codecov coverage[toml] clingo
+ - name: Setup git configuration
+ run: |
+ # Need this for the git tests to succeed.
+ git --version
+ . .github/workflows/setup_git.sh
+ - name: Run unit tests (full suite with coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ env:
+ COVERAGE: true
+ SPACK_TEST_SOLVER: clingo
+ run: |
+ share/spack/qa/run-unit-tests
+ coverage combine
+ coverage xml
+ - name: Run unit tests (reduced suite without coverage)
+ if: ${{ needs.changes.outputs.with_coverage == 'false' }}
+ env:
+ ONLY_PACKAGES: true
+ SPACK_TEST_SOLVER: clingo
+ run: |
+ share/spack/qa/run-unit-tests
+ - uses: codecov/codecov-action@v2.1.0
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ flags: unittests,linux,clingo
+ # Run unit tests on MacOS
+ build:
+ needs: [ validate, style, documentation, changes ]
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ python-version: [3.8]
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install Python packages
+ run: |
+ pip install --upgrade pip six setuptools
+ pip install --upgrade codecov coverage[toml]
+ - name: Setup Homebrew packages
+ run: |
+ brew install dash fish gcc gnupg2 kcov
+ - name: Run unit tests
+ env:
+ SPACK_TEST_SOLVER: clingo
+ run: |
+ git --version
+ . .github/workflows/setup_git.sh
+ . share/spack/setup-env.sh
+ $(which spack) bootstrap untrust spack-install
+ $(which spack) solve zlib
+ if [ "${{ needs.changes.outputs.with_coverage }}" == "true" ]
+ then
+ coverage run $(which spack) unit-test -x
+ coverage combine
+ coverage xml
+ # Delete the symlink going from ./lib/spack/docs/_spack_root back to
+ # the initial directory, since it causes ELOOP errors with codecov/actions@2
+ rm lib/spack/docs/_spack_root
+ else
+ echo "ONLY PACKAGE RECIPES CHANGED [skipping coverage]"
+ $(which spack) unit-test -x -m "not maybeslow" -k "package_sanity"
+ fi
+ - uses: codecov/codecov-action@v2.1.0
+ if: ${{ needs.changes.outputs.with_coverage == 'true' }}
+ with:
+ files: ./coverage.xml
+ flags: unittests,macos