-
Notifications
You must be signed in to change notification settings - Fork 895
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4183 from YosysHQ/krys/refactor-workflows
CI Improvements
- Loading branch information
Showing
9 changed files
with
296 additions
and
301 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
name: Build environment setup | ||
description: Configure build env for Yosys builds | ||
runs: | ||
using: composite | ||
steps: | ||
- 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 python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev | ||
- name: Install macOS Dependencies | ||
if: runner.os == 'macOS' | ||
shell: bash | ||
run: | | ||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install bison flex gawk libffi pkg-config bash autoconf | ||
- 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
name: Build and run tests | ||
|
||
on: [push, pull_request] | ||
|
||
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' | ||
|
||
build-yosys: | ||
name: Reusable build | ||
runs-on: ${{ matrix.os }} | ||
needs: pre_job | ||
if: needs.pre_job.outputs.should_skip != 'true' | ||
env: | ||
CC: clang | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest] | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Build | ||
shell: bash | ||
run: | | ||
mkdir build | ||
cd build | ||
make -f ../Makefile config-$CC | ||
make -f ../Makefile -j$procs | ||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Compress build | ||
shell: bash | ||
run: | | ||
cd build | ||
tar -cvf ../build.tar share/ yosys yosys-* | ||
- name: Store build artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build-${{ matrix.os }} | ||
path: build.tar | ||
retention-days: 1 | ||
|
||
test-yosys: | ||
name: Run tests | ||
runs-on: ${{ matrix.os }} | ||
needs: [build-yosys, pre_job] | ||
if: needs.pre_job.outputs.should_skip != 'true' | ||
env: | ||
CC: clang | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest] | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- 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 }}-${{ 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$procs | ||
make install | ||
- name: Download build artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-${{ matrix.os }} | ||
|
||
- name: Uncompress build | ||
shell: bash | ||
run: | ||
tar -xvf build.tar | ||
|
||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Run tests | ||
shell: bash | ||
run: | | ||
make -j$procs test TARGETS= EXTRA_TARGETS= CONFIG=$CC | ||
- name: Report errors | ||
if: ${{ failure() }} | ||
shell: bash | ||
run: | | ||
find tests/**/*.err -print -exec cat {} \; | ||
test-docs: | ||
name: Run docs tests | ||
runs-on: ${{ matrix.os }} | ||
needs: [build-yosys, pre_job] | ||
if: needs.pre_job.outputs.should_skip != 'true' | ||
env: | ||
CC: clang | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest] | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Download build artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-${{ matrix.os }} | ||
|
||
- name: Uncompress build | ||
shell: bash | ||
run: | ||
tar -xvf build.tar | ||
|
||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Run tests | ||
shell: bash | ||
run: | | ||
make -C docs test -j${{ env.procs }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
name: Compiler testing | ||
|
||
on: [push, pull_request] | ||
|
||
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-compile: | ||
runs-on: ${{ matrix.os }} | ||
needs: pre_job | ||
if: needs.pre_job.outputs.should_skip != 'true' | ||
env: | ||
CXXFLAGS: ${{ startsWith(matrix.compiler, 'gcc') && '-Wp,-D_GLIBCXX_ASSERTIONS' || ''}} | ||
CC_SHORT: ${{ startsWith(matrix.compiler, 'gcc') && 'gcc' || 'clang' }} | ||
strategy: | ||
matrix: | ||
os: | ||
- ubuntu-latest | ||
compiler: | ||
# oldest supported | ||
- 'clang-14' | ||
- 'gcc-10' | ||
# newest | ||
- 'clang' | ||
- 'gcc' | ||
include: | ||
# macOS | ||
- os: macos-13 | ||
compiler: 'clang' | ||
# oldest clang not available on ubuntu-latest | ||
- os: ubuntu-22.04 | ||
compiler: 'clang-11' | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Setup Cpp | ||
uses: aminya/setup-cpp@v1 | ||
with: | ||
compiler: ${{ matrix.compiler }} | ||
|
||
- name: Tool versions | ||
shell: bash | ||
run: | | ||
$CC --version | ||
$CXX --version | ||
# minimum standard | ||
- name: Build C++11 | ||
shell: bash | ||
run: | | ||
make config-$CC_SHORT | ||
make -j$procs CXXSTD=c++11 compile-only | ||
# maximum standard, only on newest compilers | ||
- name: Build C++20 | ||
if: ${{ matrix.compiler == 'clang' || matrix.compiler == 'gcc'}} | ||
shell: bash | ||
run: | | ||
make config-$CC_SHORT | ||
make -j$procs CXXSTD=c++20 compile-only |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.