From aa470ccb4745452e45cb290ff5590f2f09424c5f Mon Sep 17 00:00:00 2001 From: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com> Date: Tue, 6 Feb 2024 18:31:53 +1300 Subject: [PATCH] ci: Unify test-*.yml Also rename `build-artifact` to use `matrix.os` for compatibility with testing across OS. --- .../{test-linux.yml => test-build.yml} | 53 +++++++--- .github/workflows/test-macos.yml | 97 ------------------- 2 files changed, 38 insertions(+), 112 deletions(-) rename .github/workflows/{test-linux.yml => test-build.yml} (80%) delete mode 100644 .github/workflows/test-macos.yml diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-build.yml similarity index 80% rename from .github/workflows/test-linux.yml rename to .github/workflows/test-build.yml index c6088fd09..ec132e7c1 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-build.yml @@ -1,4 +1,4 @@ -name: Build and run tests (Linux) +name: Build and run tests on: pull_request: @@ -23,10 +23,10 @@ jobs: # only run on push *or* pull_request, not both concurrent_skipping: 'same_content_newer' - build-linux: + build-yosys: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' - runs-on: ${{ matrix.os.id }} + runs-on: ${{ matrix.os }} env: CC: ${{ matrix.compiler }} CXX: ${{ matrix.compiler }} @@ -34,9 +34,9 @@ jobs: strategy: matrix: os: - - { id: ubuntu-20.04, name: focal } + - ubuntu-20.04 + - macos-13 compiler: - - 'clang' - 'clang-12' - 'gcc-11' cpp_std: @@ -45,21 +45,34 @@ jobs: - 'c++17' - 'c++20' include: - # Limit the older compilers to C++11 mode - - os: { id: ubuntu-20.04, name: focal } + # Build for testing + - os: ubuntu-20.04 + compiler: 'clang' + cpp_std: 'c++11' + # Limited testing for older compilers + - os: ubuntu-20.04 compiler: 'clang-11' cpp_std: 'c++11' - - os: { id: ubuntu-20.04, name: focal } + - os: ubuntu-20.04 compiler: 'gcc-10' cpp_std: 'c++11' + # Add os_name + - os: ubuntu-20.04 + os_name: focal fail-fast: false steps: - - name: Install Dependencies + - name: Install Linux Dependencies + if: runner.os == 'Linux' shell: bash run: | sudo apt-get update sudo apt-get install gperf build-essential bison flex libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot pkg-config python python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev + - name: Install macOS Dependencies + if: runner.os == 'macOS' + run: | + brew install bison flex gawk libffi pkg-config bash + - name: Setup GCC if: startsWith(matrix.compiler, 'gcc') shell: bash @@ -78,18 +91,28 @@ jobs: wget https://apt.llvm.org/llvm-snapshot.gpg.key sudo apt-key add llvm-snapshot.gpg.key rm llvm-snapshot.gpg.key - sudo apt-add-repository "deb https://apt.llvm.org/${{ matrix.os.name }}/ llvm-toolchain-${{ matrix.os.name }} main" + sudo apt-add-repository "deb https://apt.llvm.org/${{ matrix.os_name }}/ llvm-toolchain-${{ matrix.os_name }} main" sudo apt-get update CXX=${CC/#clang/clang++} sudo apt-get install $CC $CXX echo "CXX=$CXX" >> $GITHUB_ENV - - name: Runtime environment + - name: Linux runtime environment + if: runner.os == 'Linux' shell: bash run: | echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH echo "procs=$(nproc)" >> $GITHUB_ENV + - name: macOS runtime environment + if: runner.os == 'macOS' + shell: bash + run: | + echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH + echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH + echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH + echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV + - name: Tool versions shell: bash run: | @@ -123,13 +146,13 @@ jobs: if: (matrix.cpp_std == 'c++11') && (matrix.compiler == 'clang') uses: actions/upload-artifact@v4 with: - name: build-artifact + name: build-${{ matrix.os }} path: build.tar retention-days: 1 - test-linux: + test-yosys: name: Run tests - needs: build-linux + needs: build-yosys runs-on: ${{ matrix.os }} env: CC: clang @@ -181,7 +204,7 @@ jobs: - name: Download build artifact uses: actions/download-artifact@v4 with: - name: build-artifact + name: build-${{ matrix.os }} - name: Uncompress build shell: bash diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml deleted file mode 100644 index ed63c8f35..000000000 --- a/.github/workflows/test-macos.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: Build and run tests (macOS) - -on: - pull_request: - branches: - - master - push: - branches: - - master - -jobs: - pre_job: - runs-on: ubuntu-latest - outputs: - should_skip: ${{ steps.skip_check.outputs.should_skip }} - steps: - - id: skip_check - uses: fkirc/skip-duplicate-actions@v5 - with: - paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' - # cancel previous builds if a new commit is pushed - cancel_others: 'true' - # only run on push *or* pull_request, not both - concurrent_skipping: 'same_content_newer' - - test-macos: - needs: pre_job - if: needs.pre_job.outputs.should_skip != 'true' - runs-on: ${{ matrix.os.id }} - strategy: - matrix: - os: - - { id: macos-13, name: 'Ventura' } - cpp_std: - - 'c++11' - fail-fast: false - steps: - - name: Install Dependencies - run: | - HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install bison flex gawk libffi pkg-config bash - - - name: Runtime environment - shell: bash - env: - WORKSPACE: ${{ github.workspace }} - run: | - echo "GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV - echo "$GITHUB_WORKSPACE/.local/bin" >> $GITHUB_PATH - echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH - echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH - echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV - - - name: Tool versions - shell: bash - run: | - cc --version - - - name: Checkout Yosys - uses: actions/checkout@v4 - with: - submodules: true - - name: Get iverilog - shell: bash - run: | - git clone https://github.com/steveicarus/iverilog.git - cd iverilog - echo "IVERILOG_GIT=$(git rev-parse HEAD)" >> $GITHUB_ENV - - - name: Cache iverilog - id: cache-iverilog - uses: actions/cache@v4 - with: - path: .local/ - key: ${{ matrix.os.id }}-${{ env.IVERILOG_GIT }} - - - name: Build iverilog - if: steps.cache-iverilog.outputs.cache-hit != 'true' - shell: bash - run: | - mkdir -p $GITHUB_WORKSPACE/.local/ - cd iverilog - autoconf - CC=gcc CXX=g++ ./configure --prefix=$GITHUB_WORKSPACE/.local/ - make -j${{ env.procs }} - make install - - - name: Build yosys - shell: bash - run: | - make config-clang - make -j${{ env.procs }} CXXSTD=${{ matrix.cpp_std }} CC=cc CXX=cc LD=cc - - - name: Run tests - if: matrix.cpp_std == 'c++11' - shell: bash - run: | - make -j${{ env.procs }} test CXXSTD=${{ matrix.cpp_std }} CC=cc CXX=cc LD=cc