From e64c680b6069c2910385d55b23644b485453b06f Mon Sep 17 00:00:00 2001 From: Paulo Matos Date: Tue, 5 May 2020 14:40:01 +0200 Subject: [PATCH] Move static analysis jobs to their own CI file to split workflows (#3157) Move jobs doing static analysis to its own workflow. RacketCGC is needed so perform a speed build (takes 3mins) before the static analysis on each job that requires it. --- .github/workflows/ci-push.yml | 167 ------------------ .../workflows/scanbuild_static-analysis.yml | 153 ++++++++++++++++ 2 files changed, 153 insertions(+), 167 deletions(-) create mode 100644 .github/workflows/scanbuild_static-analysis.yml diff --git a/.github/workflows/ci-push.yml b/.github/workflows/ci-push.yml index 230725b8c6..97783b6bc4 100644 --- a/.github/workflows/ci-push.yml +++ b/.github/workflows/ci-push.yml @@ -452,170 +452,3 @@ jobs: run: raco pkg install --auto db-test - name: Run db tests run: raco test -l tests/db/all-tests - -# -# Jobs to scan-build racket -# - scanbuild-racketcgc: - - runs-on: ubuntu-latest - container: pmatos/scan-build:latest - - steps: - - uses: actions/checkout@v1 - with: - fetch-depth: 100 - - name: Install dependencies - run: | - apt-get update - apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ - - name: Configure - working-directory: ./racket/src - run: > - ./configure - CFLAGS="-O0 -g" - --disable-strip - --prefix=${{ runner.temp }}/racketcgc - --enable-werror - --enable-cify - --enable-cgcdefault - --enable-jit - --enable-foreign - --enable-places - --enable-futures - --enable-float - --enable-pthread - --disable-docs - - name: Scan Build - working-directory: ./racket/src - run: | - export cpus=$(grep -c ^processor /proc/cpuinfo) - scan-build -o ../../racketcgc-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1)) - - name: Tarballing - run: tar -cvjf racketcgc-report-${{ github.sha }}.tar.bz2 racketcgc-report - - uses: actions/upload-artifact@v1 - if: always() - with: - name: scanbuild-cgc-${{ github.sha }} - path: racketcgc-report-${{ github.sha }}.tar.bz2 - - scanbuild-racket3m: - - runs-on: ubuntu-latest - container: pmatos/scan-build:latest - needs: build-racketcgc - - env: - RUNNER_TEMP: "/__w/_temp" - - steps: - - name: Workaround temp issues - run: | - mkdir -p ${{ runner.temp }} - cd ${{ runner.temp }}/.. - rmdir ${{ runner.temp }} - ln -s ${RUNNER_TEMP} ${{ runner.temp }} - - uses: actions/checkout@v1 - with: - fetch-depth: 100 - - name: Install dependencies - run: | - apt-get update - apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ - - uses: actions/download-artifact@v1 - with: - name: racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha }} - path: ${{ runner.temp }} - - name: Untar - working-directory: ${{ runner.temp }} - run: tar -xvjf racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha }}.tar.bz2 - - name: Configure - working-directory: ./racket/src - run: > - ./configure - CFLAGS="-O0 -g" - --disable-strip - --prefix=${RUNNER_TEMP}/racket3m - --enable-racket=${RUNNER_TEMP}/racketcgc/bin/racket - --enable-werror - --enable-cify - --enable-jit - --enable-foreign - --enable-places - --enable-futures - --enable-float - --enable-pthread - --disable-docs - - name: Scan Build - working-directory: ./racket/src - run: | - export cpus=$(grep -c ^processor /proc/cpuinfo) - scan-build -o ../../racket3m-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1)) - - name: Tarballing - run: tar -cvjf racket3m-report-${{ github.sha }}.tar.bz2 racket3m-report - - uses: actions/upload-artifact@v1 - if: always() - with: - name: scanbuild-3m-${{ github.sha }} - path: racket3m-report-${{ github.sha }}.tar.bz2 - - scanbuild-racketcs: - - runs-on: ubuntu-18.04 - container: pmatos/scan-build:latest - needs: build-racketcgc - - env: - RUNNER_TEMP: "/__w/_temp" - - steps: - - name: Workaround temp issues - run: | - mkdir -p ${{ runner.temp }} - cd ${{ runner.temp }}/.. - rmdir ${{ runner.temp }} - ln -s ${RUNNER_TEMP} ${{ runner.temp }} - - uses: actions/checkout@v1 - with: - fetch-depth: 100 - - name: Install pkg dependencies - run: | - apt update - apt install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git uuid-dev - - uses: actions/download-artifact@v1 - with: - name: racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha }} - path: ${{ runner.temp }} - - name: Untar - working-directory: ${{ runner.temp }} - run: tar -xvjf racketcgc-ubuntu-18.04-cify-x64_git${{ github.sha}}.tar.bz2 - - name: Checking out ChezScheme - working-directory: ./racket/src - run: git clone --depth=1 --recurse-submodules -j3 https://github.com/racket/ChezScheme - - name: Configuring Racket CS - working-directory: ./racket/src - env: - CC: ${{ matrix.cc }} - run: > - ./configure - CFLAGS="-O0 -g" - --prefix=${RUNNER_TEMP}/racketcs - $RACKET_EXTRA_CONFIGURE_ARGS - --enable-racket=${RUNNER_TEMP}/racketcgc/bin/racket - --enable-compress - --disable-docs - --enable-pthread - --enable-csdefault - --enable-csonly - - name: Building - working-directory: ./racket/src - run: | - export cpus=$(grep -c ^processor /proc/cpuinfo) - scan-build -o ../../racketcs-report -analyzer-config 'crosscheck-with-z3=true' make -j $((cpus+1)) - - name: Tarballing - run: tar -cvjf racketcs-report-${{ github.sha }}.tar.bz2 racketcs-report - - uses: actions/upload-artifact@v1 - if: always() - with: - name: scanbuild-cs-${{ github.sha }} - path: racketcs-report-${{ github.sha }}.tar.bz2 diff --git a/.github/workflows/scanbuild_static-analysis.yml b/.github/workflows/scanbuild_static-analysis.yml new file mode 100644 index 0000000000..32e4449be8 --- /dev/null +++ b/.github/workflows/scanbuild_static-analysis.yml @@ -0,0 +1,153 @@ +name: LLVM Static Analysis + +on: [push, pull_request] + +jobs: + +# +# Jobs to scan-build racket +# + scanbuild-racketcgc: + + runs-on: ubuntu-latest + container: pmatos/scan-build:latest + + steps: + - name: Install dependencies + run: | + apt-get update + apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git + - uses: actions/checkout@v2 + with: + fetch-depth: 100 + - name: Configure + working-directory: ./racket/src + run: > + ./configure + CFLAGS="-O0 -g" + --disable-strip + --prefix=${{ runner.temp }}/racketcgc + --enable-werror + --enable-cify + --enable-cgcdefault + --enable-jit + --enable-foreign + --enable-places + --enable-futures + --enable-float + --enable-pthread + --disable-docs + - name: Scan Build + working-directory: ./racket/src + run: | + export cpus=$(grep -c ^processor /proc/cpuinfo) + scan-build -o ../../racketcgc-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1)) + - name: Tarballing + run: tar -cvjf racketcgc-report-${{ github.sha }}.tar.bz2 racketcgc-report + - uses: actions/upload-artifact@v1 + if: always() + with: + name: scanbuild-cgc-${{ github.sha }} + path: racketcgc-report-${{ github.sha }}.tar.bz2 + + scanbuild-racket3m: + + runs-on: ubuntu-latest + container: pmatos/scan-build:latest + + steps: + - name: Install dependencies + run: | + apt-get update + apt-get install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git + - uses: actions/checkout@v2 + with: + fetch-depth: 100 + - name: Speed build and install racketcgc + working-directory: ./racket/src + run: | + ./configure --enable-cgcdefault --prefix=/usr + export cpus=$(grep -c ^processor /proc/cpuinfo) + make -j$((cpus+1)) + make -j$((cpus+1)) install + - name: Clean repo + run: git clean -xdf + - name: Configure + working-directory: ./racket/src + run: > + ./configure + CFLAGS="-O0 -g" + --disable-strip + --enable-racket=/usr/bin/racket + --enable-werror + --enable-cify + --enable-jit + --enable-foreign + --enable-places + --enable-futures + --enable-float + --enable-pthread + --disable-docs + - name: Scan Build + working-directory: ./racket/src + run: | + export cpus=$(grep -c ^processor /proc/cpuinfo) + scan-build -o ../../racket3m-report -analyzer-config 'crosscheck-with-z3=true' make -j$((cpus + 1)) + - name: Tarballing + run: tar -cvjf racket3m-report-${{ github.sha }}.tar.bz2 racket3m-report + - uses: actions/upload-artifact@v1 + if: always() + with: + name: scanbuild-3m-${{ github.sha }} + path: racket3m-report-${{ github.sha }}.tar.bz2 + + scanbuild-racketcs: + + runs-on: ubuntu-18.04 + container: pmatos/scan-build:latest + + steps: + - name: Install pkg dependencies + run: | + apt update + apt install -y libffi-dev unzip python libxml2-dev libfindbin-libs-perl make gcc g++ git uuid-dev git + - uses: actions/checkout@v2 + with: + fetch-depth: 100 + - name: Speed build and install racketcgc + working-directory: ./racket/src + run: | + ./configure --enable-cgcdefault --prefix=/usr + export cpus=$(grep -c ^processor /proc/cpuinfo) + make -j$((cpus+1)) + make -j$((cpus+1)) install + - name: Clean repo + run: git clean -xdf + - name: Checking out ChezScheme + working-directory: ./racket/src + run: git clone --depth=1 --recurse-submodules -j3 https://github.com/racket/ChezScheme + - name: Configuring Racket CS + working-directory: ./racket/src + env: + CC: ${{ matrix.cc }} + run: > + ./configure + CFLAGS="-O0 -g" + --enable-racket=/usr/bin/racket + --enable-compress + --disable-docs + --enable-pthread + --enable-csdefault + --enable-csonly + - name: Building + working-directory: ./racket/src + run: | + export cpus=$(grep -c ^processor /proc/cpuinfo) + scan-build -o ../../racketcs-report -analyzer-config 'crosscheck-with-z3=true' make -j $((cpus+1)) + - name: Tarballing + run: tar -cvjf racketcs-report-${{ github.sha }}.tar.bz2 racketcs-report + - uses: actions/upload-artifact@v1 + if: always() + with: + name: scanbuild-cs-${{ github.sha }} + path: racketcs-report-${{ github.sha }}.tar.bz2