summaryrefslogblamecommitdiff
path: root/.github/workflows/bootstrap.yml
blob: 25e74d38bcdffb1ffbf3d561136328bb6b58a63a (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                   

                                           
                



                        
            
                                                                                             

                          
     
                         
                          



                                                        
          

                                                  

                          
                                                                 

                                                                    

                                                         
              




                                                                                                                  
                         
                      
                                                                       

                        
                              

                                         
                                                     
                                                     



                                         



                                 
                                                                           
          
                         
                                                                                        
              
                                       
                      
                                                                       

                        
                                                                           
             
                                
                              



                                                                                                          
              
                                                                                         
                                                     
                                                     
                                                         
                             
                                                                       
 




                                                           
          

                                                   
              

                                            

                                                   
                                                        
                      
                                                                       
             

                             

                                         
                          
                                                     
                                                     
                           
                                        
 

                                 

             
                                                         
          

                                                   

                           



                                                      
              
                                                                  
                      
                                                                       
             
                        








                                                                           
              


                                                     

                              

                                                          

                                                                                                      
                                         
                                     













                                                                              
                             

                                         


                                        
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@a5ac7e51b41094c92402da3b24376905380afc29
        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@a5ac7e51b41094c92402da3b24376905380afc29
        with:
          fetch-depth: 0
      - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d
        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' }}
        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
          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@a5ac7e51b41094c92402da3b24376905380afc29
        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"]
    steps:
      - name: Setup macOS
        if: ${{ matrix.runner != 'ubuntu-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: Checkout
        uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
        with:
          fetch-depth: 0
      - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d
        with:
          python-version: |
            3.8
            3.9
            3.10
            3.11
            3.12
      - name: Set bootstrap sources
        run: |
          source share/spack/setup-env.sh
          spack bootstrap disable github-actions-v0.4
          spack bootstrap disable spack-install
      - name: Bootstrap clingo
        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/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
        run: |
          source share/spack/setup-env.sh
          spack -d gpg list
          tree ~/.spack/bootstrap/store/