summaryrefslogblamecommitdiff
path: root/.github/workflows/bootstrap.yml
blob: fdfcf0fd57ed70480389316ff5303e2ee601888a (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:
  fedora-clingo-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
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
        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.4
          spack bootstrap disable github-actions-v0.3
          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
        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
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
        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.4
          spack bootstrap disable github-actions-v0.3
          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"
    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
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
        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@8ade135a41bc03ea155e62e844d188df1ea18608
        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
      - name: Bootstrap clingo
        run: |
          source share/spack/setup-env.sh
          spack bootstrap disable github-actions-v0.4
          spack bootstrap disable github-actions-v0.3
          spack external find cmake bison
          spack -d solve zlib
          tree ~/.spack/bootstrap/store/

  macos-clingo-sources:
    runs-on: macos-latest
    steps:
      - name: Install dependencies
        run: |
          brew install cmake bison@2.7 tree
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
      - name: Bootstrap clingo
        run: |
          source share/spack/setup-env.sh
          export PATH=/usr/local/opt/bison@2.7/bin:$PATH
          spack bootstrap disable github-actions-v0.4
          spack bootstrap disable github-actions-v0.3
          spack external find --not-buildable cmake bison
          spack -d solve zlib
          tree ~/.spack/bootstrap/store/

  macos-clingo-binaries:
    runs-on: ${{ matrix.macos-version }}
    strategy:
      matrix:
        macos-version: ['macos-11', 'macos-12']
    steps:
      - name: Install dependencies
        run: |
          brew install tree
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
      - name: Bootstrap clingo
        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
          done

  ubuntu-clingo-binaries:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
        with:
          fetch-depth: 0
      - name: Setup repo
        run: |
          git --version
          . .github/workflows/setup_git.sh
      - name: Bootstrap clingo
        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
            if (($not_found)) ; then
              echo Required python version $ver not found in runner!
              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@8ade135a41bc03ea155e62e844d188df1ea18608
        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 spack-install
          spack -d gpg list
          tree ~/.spack/bootstrap/store/

  ubuntu-gnupg-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 patchelf gfortran git gzip \
              make patch unzip xz-utils python3 python3-dev tree \
              gawk
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
        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 solve zlib
          spack bootstrap disable github-actions-v0.4
          spack bootstrap disable github-actions-v0.3
          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@8ade135a41bc03ea155e62e844d188df1ea18608
      - name: Bootstrap GnuPG
        run: |
          source share/spack/setup-env.sh
          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@8ade135a41bc03ea155e62e844d188df1ea18608
      - name: Bootstrap GnuPG
        run: |
          source share/spack/setup-env.sh
          spack solve zlib
          spack bootstrap disable github-actions-v0.4
          spack bootstrap disable github-actions-v0.3
          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