name: Bootstrapping on: # This Workflow can be triggered manually workflow_dispatch: workflow_call: schedule: # nightly at 2:16 AM - cron: '16 2 * * *' concurrency: group: bootstrap-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} cancel-in-progress: true jobs: distros-clingo-sources: runs-on: ubuntu-latest container: ${{ matrix.image }} strategy: matrix: image: ["fedora:latest", "opensuse/leap:latest"] steps: - name: Setup Fedora if: ${{ matrix.image == 'fedora:latest' }} run: | dnf install -y \ 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: Setup OpenSUSE if: ${{ matrix.image == 'opensuse/leap:latest' }} 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@692973e3d937129bcbf40652eb9f2f61becf3332 with: fetch-depth: 0 - name: Bootstrap clingo 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/ clingo-sources: runs-on: ${{ matrix.runner }} strategy: matrix: runner: ['macos-13', 'macos-14', "ubuntu-latest", "windows-latest"] steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' && matrix.runner != 'windows-latest' }} run: | brew install cmake bison tree - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: fetch-depth: 0 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 with: python-version: "3.12" - name: Bootstrap clingo env: SETUP_SCRIPT_EXT: ${{ matrix.runner == 'windows-latest' && 'ps1' || 'sh' }} SETUP_SCRIPT_SOURCE: ${{ matrix.runner == 'windows-latest' && './' || 'source ' }} USER_SCOPE_PARENT_DIR: ${{ matrix.runner == 'windows-latest' && '$env:userprofile' || '$HOME' }} VALIDATE_LAST_EXIT: ${{ matrix.runner == 'windows-latest' && './share/spack/qa/validate_last_exit.ps1' || '' }} run: | ${{ env.SETUP_SCRIPT_SOURCE }}share/spack/setup-env.${{ env.SETUP_SCRIPT_EXT }} 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 ${{ env.VALIDATE_LAST_EXIT }} tree ${{ env.USER_SCOPE_PARENT_DIR }}/.spack/bootstrap/store/ gnupg-sources: runs-on: ${{ matrix.runner }} strategy: matrix: runner: [ 'macos-13', 'macos-14', "ubuntu-latest" ] steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' }} run: | brew install tree gawk sudo rm -rf $(command -v gpg gpg2) - name: Setup Ubuntu if: ${{ matrix.runner == 'ubuntu-latest' }} run: sudo rm -rf $(command -v gpg gpg2 patchelf) - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: fetch-depth: 0 - 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 spack -d gpg list tree ~/.spack/bootstrap/store/ from-binaries: runs-on: ${{ matrix.runner }} strategy: matrix: runner: ['macos-13', 'macos-14', "ubuntu-latest", "windows-latest"] steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' && matrix.runner != 'windows-latest'}} run: | brew install tree # Remove GnuPG since we want to bootstrap it sudo rm -rf /usr/local/bin/gpg - name: Setup Ubuntu if: ${{ matrix.runner == 'ubuntu-latest' }} run: | sudo rm -rf $(which gpg) $(which gpg2) $(which patchelf) - name: Setup Windows if: ${{ matrix.runner == 'windows-latest' }} run: | Remove-Item -Path (Get-Command gpg).Path Remove-Item -Path (Get-Command file).Path - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 with: fetch-depth: 0 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 with: python-version: | 3.8 3.9 3.10 3.11 3.12 - name: Set bootstrap sources env: SETUP_SCRIPT_EXT: ${{ matrix.runner == 'windows-latest' && 'ps1' || 'sh' }} SETUP_SCRIPT_SOURCE: ${{ matrix.runner == 'windows-latest' && './' || 'source ' }} run: | ${{ env.SETUP_SCRIPT_SOURCE }}share/spack/setup-env.${{ env.SETUP_SCRIPT_EXT }} spack bootstrap disable github-actions-v0.4 - name: Disable from source bootstrap if: ${{ matrix.runner != 'windows-latest' }} run: | source share/spack/setup-env.sh spack bootstrap disable spack-install - name: Bootstrap clingo # No binary clingo on Windows yet if: ${{ matrix.runner != 'windows-latest' }} run: | set -e for ver in '3.8' '3.9' '3.10' '3.11' '3.12' ; do not_found=1 ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)" 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/bin/bootstrap-test.sh export PATH="$old_path" fi fi if (($not_found)) ; then echo Required python version $ver not found in runner! exit 1 fi done - name: Bootstrap GnuPG env: SETUP_SCRIPT_EXT: ${{ matrix.runner == 'windows-latest' && 'ps1' || 'sh' }} SETUP_SCRIPT_SOURCE: ${{ matrix.runner == 'windows-latest' && './' || 'source ' }} USER_SCOPE_PARENT_DIR: ${{ matrix.runner == 'windows-latest' && '$env:userprofile' || '$HOME' }} VALIDATE_LAST_EXIT: ${{ matrix.runner == 'windows-latest' && './share/spack/qa/validate_last_exit.ps1' || '' }} run: | ${{ env.SETUP_SCRIPT_SOURCE }}share/spack/setup-env.${{ env.SETUP_SCRIPT_EXT }} spack -d gpg list ${{ env.VALIDATE_LAST_EXIT }} tree ${{ env.USER_SCOPE_PARENT_DIR }}/.spack/bootstrap/store/ - name: Bootstrap File env: SETUP_SCRIPT_EXT: ${{ matrix.runner == 'windows-latest' && 'ps1' || 'sh' }} SETUP_SCRIPT_SOURCE: ${{ matrix.runner == 'windows-latest' && './' || 'source ' }} USER_SCOPE_PARENT_DIR: ${{ matrix.runner == 'windows-latest' && '$env:userprofile' || '$HOME' }} VALIDATE_LAST_EXIT: ${{ matrix.runner == 'windows-latest' && './share/spack/qa/validate_last_exit.ps1' || '' }} run: | ${{ env.SETUP_SCRIPT_SOURCE }}share/spack/setup-env.${{ env.SETUP_SCRIPT_EXT }} spack -d python share/spack/qa/bootstrap-file.py ${{ env.VALIDATE_LAST_EXIT }} tree ${{ env.USER_SCOPE_PARENT_DIR }}/.spack/bootstrap/store/