diff options
Diffstat (limited to '.github/workflows/bootstrap.yml')
-rw-r--r-- | .github/workflows/bootstrap.yml | 367 |
1 files changed, 107 insertions, 260 deletions
diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index 21c1b2f0ba..90b31a098a 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -13,221 +13,141 @@ concurrency: cancel-in-progress: true jobs: - fedora-clingo-sources: + distros-clingo-sources: runs-on: ubuntu-latest - container: "fedora:latest" + container: ${{ matrix.image }} + strategy: + matrix: + image: ["fedora:latest", "opensuse/leap:latest"] steps: - - name: Install dependencies + - name: Setup Fedora + if: ${{ matrix.image == 'fedora:latest' }} run: | dnf install -y \ - bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ + bzip2 curl file gcc-c++ gcc gcc-gfortran git gzip \ make patch unzip which xz python3 python3-devel tree \ cmake bison bison-devel libstdc++-static - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - with: - fetch-depth: 0 - - name: Setup non-root user - run: | - # See [1] below - git config --global --add safe.directory /__w/spack/spack - useradd spack-test && mkdir -p ~spack-test - chown -R spack-test . ~spack-test - - name: Setup repo - shell: runuser -u spack-test -- bash {0} - run: | - git --version - . .github/workflows/setup_git.sh - - name: Bootstrap clingo - shell: runuser -u spack-test -- bash {0} - run: | - source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 - spack external find cmake bison - spack -d solve zlib - tree ~/.spack/bootstrap/store/ - - ubuntu-clingo-sources: - runs-on: ubuntu-latest - container: "ubuntu:latest" - steps: - - name: Install dependencies - env: - DEBIAN_FRONTEND: noninteractive + - name: Setup OpenSUSE + if: ${{ matrix.image == 'opensuse/leap:latest' }} 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 \ + # Harden CI by applying the workaround described here: https://www.suse.com/support/kb/doc/?id=000019505 + zypper update -y || 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 - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - name: Setup non-root user - run: | - # See [1] below - git config --global --add safe.directory /__w/spack/spack - useradd spack-test && mkdir -p ~spack-test - chown -R spack-test . ~spack-test - - name: Setup repo - shell: runuser -u spack-test -- bash {0} - run: | - git --version - . .github/workflows/setup_git.sh - name: Bootstrap clingo - shell: runuser -u spack-test -- bash {0} run: | source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find cmake bison spack -d solve zlib tree ~/.spack/bootstrap/store/ - ubuntu-clingo-binaries-and-patchelf: - runs-on: ubuntu-latest - container: "ubuntu:latest" + clingo-sources: + runs-on: ${{ matrix.runner }} + strategy: + matrix: + runner: ['macos-13', 'macos-14', "ubuntu-latest"] steps: - - name: Install dependencies - env: - DEBIAN_FRONTEND: noninteractive + - name: Setup macOS + if: ${{ matrix.runner != 'ubuntu-latest' }} 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 + brew install cmake bison tree - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - name: Setup non-root user - run: | - # See [1] below - git config --global --add safe.directory /__w/spack/spack - useradd spack-test && mkdir -p ~spack-test - chown -R spack-test . ~spack-test - - name: Setup repo - shell: runuser -u spack-test -- bash {0} - run: | - git --version - . .github/workflows/setup_git.sh - - name: Bootstrap clingo - shell: runuser -u spack-test -- bash {0} - run: | - source share/spack/setup-env.sh - spack -d solve zlib - tree ~/.spack/bootstrap/store/ - - opensuse-clingo-sources: - runs-on: ubuntu-latest - container: "opensuse/leap:latest" - steps: - - name: Install dependencies - run: | - # Harden CI by applying the workaround described here: https://www.suse.com/support/kb/doc/?id=000019505 - zypper update -y || 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 - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: - fetch-depth: 0 - - name: Setup repo - run: | - # See [1] below - git config --global --add safe.directory /__w/spack/spack - git --version - . .github/workflows/setup_git.sh + python-version: "3.12" - name: Bootstrap clingo run: | source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 - spack external find cmake bison + spack external find --not-buildable cmake bison spack -d solve zlib - tree ~/.spack/bootstrap/store/ + tree $HOME/.spack/bootstrap/store/ - macos-clingo-sources: - runs-on: macos-latest + gnupg-sources: + runs-on: ${{ matrix.runner }} + strategy: + matrix: + runner: [ 'macos-13', 'macos-14', "ubuntu-latest" ] steps: - - name: Install dependencies + - name: Setup macOS + if: ${{ matrix.runner != 'ubuntu-latest' }} + run: brew install tree gawk + - name: Remove system executables run: | - brew install cmake bison@2.7 tree + while [ -n "$(command -v gpg gpg2 patchelf)" ]; do + sudo rm $(command -v gpg gpg2 patchelf) + done - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # @v2 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: - python-version: "3.12" - - name: Bootstrap clingo + fetch-depth: 0 + - name: Bootstrap GnuPG run: | source share/spack/setup-env.sh - export PATH=/usr/local/opt/bison@2.7/bin:$PATH + spack solve zlib + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 - spack external find --not-buildable cmake bison - spack -d solve zlib + spack -d gpg list tree ~/.spack/bootstrap/store/ - macos-clingo-binaries: - runs-on: ${{ matrix.macos-version }} + from-binaries: + runs-on: ${{ matrix.runner }} strategy: matrix: - macos-version: ['macos-11', 'macos-12'] + runner: ['macos-13', 'macos-14', "ubuntu-latest"] steps: - - name: Install dependencies - run: | - brew install tree - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - - name: Bootstrap clingo + - name: Setup macOS + if: ${{ matrix.runner != 'ubuntu-latest' }} + run: brew install tree + - name: Remove system executables run: | - set -ex - for ver in '3.7' '3.8' '3.9' '3.10' '3.11' ; do - not_found=1 - ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)" - echo "Testing $ver_dir" - if [[ -d "$ver_dir" ]] ; then - if $ver_dir/python --version ; then - export PYTHON="$ver_dir/python" - not_found=0 - old_path="$PATH" - export PATH="$ver_dir:$PATH" - ./bin/spack-tmpconfig -b ./.github/workflows/bootstrap-test.sh - export PATH="$old_path" - fi - fi - # NOTE: test all pythons that exist, not all do on 12 + while [ -n "$(command -v gpg gpg2 patchelf)" ]; do + sudo rm $(command -v gpg gpg2 patchelf) done - - ubuntu-clingo-binaries: - runs-on: ubuntu-20.04 - steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - name: Setup repo + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b + with: + python-version: | + 3.8 + 3.9 + 3.10 + 3.11 + 3.12 + 3.13 + - name: Set bootstrap sources run: | - git --version - . .github/workflows/setup_git.sh + source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.5 + spack bootstrap disable spack-install - name: Bootstrap clingo run: | - set -ex - for ver in '3.7' '3.8' '3.9' '3.10' '3.11' ; do + set -e + for ver in '3.8' '3.9' '3.10' '3.11' '3.12' '3.13'; do not_found=1 ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)" - echo "Testing $ver_dir" if [[ -d "$ver_dir" ]] ; then + echo "Testing $ver_dir" if $ver_dir/python --version ; then export PYTHON="$ver_dir/python" not_found=0 old_path="$PATH" export PATH="$ver_dir:$PATH" - ./bin/spack-tmpconfig -b ./.github/workflows/bootstrap-test.sh + ./bin/spack-tmpconfig -b ./.github/workflows/bin/bootstrap-test.sh export PATH="$old_path" fi fi @@ -236,122 +156,49 @@ jobs: exit 1 fi done - - ubuntu-gnupg-binaries: - 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 patchelf gfortran git gzip \ - make patch unzip xz-utils python3 python3-dev tree - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - with: - fetch-depth: 0 - - name: Setup non-root user - run: | - # See [1] below - git config --global --add safe.directory /__w/spack/spack - useradd spack-test && mkdir -p ~spack-test - chown -R spack-test . ~spack-test - - name: Setup repo - shell: runuser -u spack-test -- bash {0} - run: | - git --version - . .github/workflows/setup_git.sh - name: Bootstrap GnuPG - shell: runuser -u spack-test -- bash {0} run: | source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.4 - spack bootstrap disable spack-install spack -d gpg list - tree ~/.spack/bootstrap/store/ + tree $HOME/.spack/bootstrap/store/ + - name: Bootstrap File + run: | + source share/spack/setup-env.sh + spack -d python share/spack/qa/bootstrap-file.py + tree $HOME/.spack/bootstrap/store/ - ubuntu-gnupg-sources: - runs-on: ubuntu-latest - container: "ubuntu:latest" + windows: + runs-on: "windows-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 patchelf gfortran git gzip \ - make patch unzip xz-utils python3 python3-dev tree \ - gawk - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - name: Setup non-root user - run: | - # See [1] below - git config --global --add safe.directory /__w/spack/spack - useradd spack-test && mkdir -p ~spack-test - chown -R spack-test . ~spack-test - - name: Setup repo - shell: runuser -u spack-test -- bash {0} + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b + with: + python-version: "3.12" + - name: Setup Windows run: | - git --version - . .github/workflows/setup_git.sh - - name: Bootstrap GnuPG - shell: runuser -u spack-test -- bash {0} + Remove-Item -Path (Get-Command gpg).Path + Remove-Item -Path (Get-Command file).Path + - name: Bootstrap clingo run: | - source share/spack/setup-env.sh - spack solve zlib + ./share/spack/setup-env.ps1 + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 - spack -d gpg list - tree ~/.spack/bootstrap/store/ - - macos-gnupg-binaries: - runs-on: macos-latest - steps: - - name: Install dependencies - run: | - brew install tree - # Remove GnuPG since we want to bootstrap it - sudo rm -rf /usr/local/bin/gpg - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - - name: Bootstrap GnuPG - run: | - source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.4 - spack bootstrap disable spack-install - spack -d gpg list - tree ~/.spack/bootstrap/store/ - - macos-gnupg-sources: - runs-on: macos-latest - steps: - - name: Install dependencies - run: | - brew install gawk tree - # Remove GnuPG since we want to bootstrap it - sudo rm -rf /usr/local/bin/gpg - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + spack external find --not-buildable cmake bison + spack -d solve zlib + ./share/spack/qa/validate_last_exit.ps1 + tree $env:userprofile/.spack/bootstrap/store/ - name: Bootstrap GnuPG run: | - source share/spack/setup-env.sh - spack solve zlib - spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 + ./share/spack/setup-env.ps1 spack -d gpg list - tree ~/.spack/bootstrap/store/ - - -# [1] Distros that have patched git to resolve CVE-2022-24765 (e.g. Ubuntu patching v2.25.1) -# introduce breaking behaviorso we have to set `safe.directory` in gitconfig ourselves. -# See: -# - https://github.blog/2022-04-12-git-security-vulnerability-announced/ -# - https://github.com/actions/checkout/issues/760 -# - http://changelogs.ubuntu.com/changelogs/pool/main/g/git/git_2.25.1-1ubuntu3.3/changelog + ./share/spack/qa/validate_last_exit.ps1 + tree $env:userprofile/.spack/bootstrap/store/ + - name: Bootstrap File + run: | + ./share/spack/setup-env.ps1 + spack -d python share/spack/qa/bootstrap-file.py + ./share/spack/qa/validate_last_exit.ps1 + tree $env:userprofile/.spack/bootstrap/store/ |