3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-06-29 12:08:51 +00:00

Merge pull request #5988 from YosysHQ/ccache

CI cleanups and improvements
This commit is contained in:
Miodrag Milanović 2026-06-26 09:13:43 +00:00 committed by GitHub
commit 0af18fa273
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 96 additions and 53 deletions

View file

@ -33,21 +33,21 @@ runs:
# and docs/source/getting_started/installation.rst to match. # and docs/source/getting_started/installation.rst to match.
- name: Linux common dependencies - name: Linux common dependencies
if: runner.os == 'Linux' if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.0 uses: awalsh128/cache-apt-pkgs-action@v1.6.1
with: with:
packages: gawk git make python3 packages: gawk git make python3
version: ${{ inputs.runs-on }}-commonys version: ${{ inputs.runs-on }}-commonys
- name: Linux build dependencies - name: Linux build dependencies
if: runner.os == 'Linux' && inputs.get-build-deps == 'true' if: runner.os == 'Linux' && inputs.get-build-deps == 'true'
uses: awalsh128/cache-apt-pkgs-action@v1.6.0 uses: awalsh128/cache-apt-pkgs-action@v1.6.1
with: with:
packages: bison clang flex libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev zlib1g-dev libgtest-dev libgmock-dev packages: bison clang flex libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev zlib1g-dev libgtest-dev libgmock-dev
version: ${{ inputs.runs-on }}-buildys version: ${{ inputs.runs-on }}-buildys
- name: Linux docs dependencies - name: Linux docs dependencies
if: runner.os == 'Linux' && inputs.get-docs-deps == 'true' if: runner.os == 'Linux' && inputs.get-docs-deps == 'true'
uses: awalsh128/cache-apt-pkgs-action@v1.6.0 uses: awalsh128/cache-apt-pkgs-action@v1.6.1
with: with:
packages: graphviz xdot packages: graphviz xdot
version: ${{ inputs.runs-on }}-docsys version: ${{ inputs.runs-on }}-docsys
@ -70,7 +70,7 @@ runs:
shell: bash shell: bash
run: | run: |
echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH
echo "$(brew --prefix llvm@20)/bin" >> $GITHUB_PATH echo "$(brew --prefix llvm)/bin" >> $GITHUB_PATH
echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH
echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV

View file

@ -11,7 +11,7 @@ runs:
steps: steps:
- name: iverilog Linux deps - name: iverilog Linux deps
if: steps.restore-iverilog.outputs.cache-hit != 'true' && runner.os == 'Linux' if: steps.restore-iverilog.outputs.cache-hit != 'true' && runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.0 uses: awalsh128/cache-apt-pkgs-action@v1.6.1
with: with:
packages: autoconf gperf make gcc g++ bison flex libbz2-dev packages: autoconf gperf make gcc g++ bison flex libbz2-dev
version: ${{ inputs.runs-on }}-iverilog version: ${{ inputs.runs-on }}-iverilog
@ -40,7 +40,7 @@ runs:
make -j$procs make -j$procs
make install make install
- uses: actions/cache/restore@v4 - uses: actions/cache/restore@v6
id: restore-iverilog id: restore-iverilog
with: with:
path: .local/ path: .local/
@ -62,7 +62,7 @@ runs:
run: | run: |
iverilog -V iverilog -V
- uses: actions/cache/save@v4 - uses: actions/cache/save@v6
id: save-iverilog id: save-iverilog
if: steps.restore-iverilog.outputs.cache-hit != 'true' if: steps.restore-iverilog.outputs.cache-hit != 'true'
with: with:

View file

@ -3,7 +3,7 @@ name: "CodeQL"
on: on:
workflow_dispatch: workflow_dispatch:
schedule: schedule:
- cron: '0 3 * * *' - cron: '0 3 * * 6'
jobs: jobs:
analyze: analyze:
@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false

View file

@ -15,7 +15,7 @@ jobs:
steps: steps:
- id: skip_check - id: skip_check
if: ${{ github.event_name != 'merge_group' }} if: ${{ github.event_name != 'merge_group' }}
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
# don't run on documentation changes # don't run on documentation changes
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
@ -37,13 +37,22 @@ jobs:
needs: [pre_job] needs: [pre_job]
if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
- name: Setup MSVC - name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1 uses: TheMrMilchmann/setup-msvc-dev@v4
with:
arch: x64
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.23
with:
key: vs-build
restore-keys: |
vs-build-
- name: Install flex/bison - name: Install flex/bison
shell: pwsh shell: pwsh
@ -57,8 +66,9 @@ jobs:
- name: Configure CMake - name: Configure CMake
run: > run: >
cmake -S . -B build cmake -S . -B build
-A x64 -G Ninja
-DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
-DYOSYS_COMPILER_LAUNCHER=ccache
- name: Build - name: Build
run: > run: >
@ -72,7 +82,7 @@ jobs:
needs: [pre_job] needs: [pre_job]
if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true'
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
@ -85,6 +95,11 @@ jobs:
install: >- install: >-
base-devel base-devel
bison
flex
gawk
diffutils
make
mingw-w64-x86_64-toolchain mingw-w64-x86_64-toolchain
mingw-w64-x86_64-cmake mingw-w64-x86_64-cmake
mingw-w64-x86_64-gtest mingw-w64-x86_64-gtest
@ -93,13 +108,14 @@ jobs:
mingw-w64-x86_64-tcl mingw-w64-x86_64-tcl
mingw-w64-x86_64-libffi mingw-w64-x86_64-libffi
mingw-w64-x86_64-git mingw-w64-x86_64-git
mingw-w64-x86_64-ccache
msys2-install: >- - name: ccache
bison uses: hendrikmuhs/ccache-action@v1.2.23
flex with:
gawk key: mingw-build
diffutils restore-keys: |
make mingw-build-
- name: Build Yosys - name: Build Yosys
shell: msys2 {0} shell: msys2 {0}
@ -107,7 +123,7 @@ jobs:
set -e set -e
procs=$(nproc) procs=$(nproc)
rm -rf build rm -rf build
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DYOSYS_COMPILER_LAUNCHER=ccache
cmake --build build -j${procs} cmake --build build -j${procs}
ctest --test-dir build/tests/unit --output-on-failure ctest --test-dir build/tests/unit --output-on-failure
@ -117,10 +133,18 @@ jobs:
if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.23
with:
key: wasi-build
restore-keys: |
wasi-build-
- name: Build - name: Build
run: | run: |
WASI_VER=33 WASI_VER=33
@ -140,7 +164,7 @@ jobs:
make install) make install)
export PATH=${WASI_SDK_PATH}/bin:$(pwd)/flex-prefix/bin:${PATH} export PATH=${WASI_SDK_PATH}/bin:$(pwd)/flex-prefix/bin:${PATH}
cmake -B build -DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_PATH}/share/cmake/wasi-sdk-p1.cmake -DCMAKE_BUILD_TYPE=Release . cmake -B build -DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_PATH}/share/cmake/wasi-sdk-p1.cmake -DCMAKE_BUILD_TYPE=Release -DYOSYS_COMPILER_LAUNCHER=ccache .
cmake --build build -j$(nproc) cmake --build build -j$(nproc)
nix-build: nix-build:
@ -153,7 +177,7 @@ jobs:
os: [ubuntu-latest, macos-latest] os: [ubuntu-latest, macos-latest]
fail-fast: false fail-fast: false
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false

View file

@ -18,7 +18,7 @@ jobs:
docs_export: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/docs-preview') || startsWith(github.ref, 'refs/tags/') }} docs_export: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/docs-preview') || startsWith(github.ref, 'refs/tags/') }}
steps: steps:
- id: skip_check - id: skip_check
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
paths_ignore: '["**/README.md"]' paths_ignore: '["**/README.md"]'
# don't cancel in case we're updating docs # don't cancel in case we're updating docs
@ -46,7 +46,7 @@ jobs:
runs-on: [self-hosted, linux, x64, fast] runs-on: [self-hosted, linux, x64, fast]
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
submodules: true submodules: true
@ -72,7 +72,7 @@ jobs:
cmake --build build --target docs-prepare -j$procs cmake --build build --target docs-prepare -j$procs
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: cmd-ref-${{ github.sha }} name: cmd-ref-${{ github.sha }}
path: | path: |

View file

@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository with submodules - name: Checkout repository with submodules
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
submodules: 'recursive' submodules: 'recursive'
persist-credentials: false persist-credentials: false

View file

@ -15,7 +15,7 @@ jobs:
steps: steps:
- id: skip_check - id: skip_check
if: ${{ github.event_name != 'merge_group' }} if: ${{ github.event_name != 'merge_group' }}
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
# don't run on documentation changes # don't run on documentation changes
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
@ -38,7 +38,7 @@ jobs:
steps: steps:
- id: skip_check - id: skip_check
if: ${{ github.event_name != 'merge_group' }} if: ${{ github.event_name != 'merge_group' }}
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
# don't run on readme changes # don't run on readme changes
paths_ignore: '["**/README.md"]' paths_ignore: '["**/README.md"]'
@ -68,7 +68,7 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
@ -79,11 +79,18 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
get-build-deps: true get-build-deps: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.23
with:
key: test-build-${{ matrix.os }}
restore-keys: |
test-build-${{ matrix.os }}-
- name: Build - name: Build
shell: bash shell: bash
run: | run: |
rm -rf build rm -rf build
cmake -B build . -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release cmake -B build . -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DYOSYS_COMPILER_LAUNCHER=ccache
cmake --build build -j$procs cmake --build build -j$procs
ctest --test-dir build/tests/unit ctest --test-dir build/tests/unit
@ -117,7 +124,7 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
@ -166,7 +173,7 @@ jobs:
os: [ubuntu-latest] os: [ubuntu-latest]
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
@ -204,7 +211,7 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
@ -246,7 +253,7 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
@ -276,7 +283,7 @@ jobs:
cmake --build build --target docs-${{ matrix.docs-target }} -j$procs cmake --build build --target docs-${{ matrix.docs-target }} -j$procs
- name: Store docs build artifact - name: Store docs build artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: docs-build-${{ matrix.docs-target }} name: docs-build-${{ matrix.docs-target }}
path: docs/build/ path: docs/build/

View file

@ -15,7 +15,7 @@ jobs:
steps: steps:
- id: skip_check - id: skip_check
if: ${{ github.event_name != 'merge_group' }} if: ${{ github.event_name != 'merge_group' }}
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
# don't run on documentation changes # don't run on documentation changes
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
@ -49,16 +49,13 @@ jobs:
- 'clang-22' - 'clang-22'
- 'gcc-16' - 'gcc-16'
include: include:
# macOS x86
- os: macos-15-intel
compiler: 'clang-22'
# macOS arm # macOS arm
- os: macos-latest - os: macos-latest
compiler: 'clang-22' compiler: 'clang-22'
fail-fast: false fail-fast: false
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
@ -69,6 +66,13 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
get-build-deps: true get-build-deps: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.23
with:
key: test-compile-${{ matrix.os }}-${{ matrix.compiler }}
restore-keys: |
test-compile-${{ matrix.os }}-${{ matrix.compiler }}-
- name: Setup Cpp - name: Setup Cpp
uses: aminya/setup-cpp@v1 uses: aminya/setup-cpp@v1
with: with:
@ -91,7 +95,7 @@ jobs:
shell: bash shell: bash
run: | run: |
rm -rf build rm -rf build
cmake -B build -DCMAKE_CXX_STANDARD=20 . --fresh cmake -B build -DCMAKE_CXX_STANDARD=20 -DYOSYS_COMPILER_LAUNCHER=ccache . --fresh
cmake --build build --target yosys -j$procs cmake --build build --target yosys -j$procs
# maximum standard, only on newest compilers # maximum standard, only on newest compilers
@ -100,7 +104,7 @@ jobs:
shell: bash shell: bash
run: | run: |
rm -rf build rm -rf build
cmake -B build -DCMAKE_CXX_STANDARD=26 . --fresh cmake -B build -DCMAKE_CXX_STANDARD=26 -DYOSYS_COMPILER_LAUNCHER=ccache . --fresh
cmake --build build --target yosys -j$procs cmake --build build --target yosys -j$procs
test-compile-result: test-compile-result:

View file

@ -15,7 +15,7 @@ jobs:
steps: steps:
- id: skip_check - id: skip_check
if: ${{ github.event_name != 'merge_group' }} if: ${{ github.event_name != 'merge_group' }}
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
# don't run on documentation changes # don't run on documentation changes
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
@ -47,7 +47,7 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v5 uses: actions/checkout@v7
with: with:
submodules: true submodules: true
persist-credentials: false persist-credentials: false
@ -60,13 +60,21 @@ jobs:
get-test-deps: true get-test-deps: true
get-iverilog: true get-iverilog: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.23
with:
key: test-san-${{ matrix.os }}
restore-keys: |
test-san-${{ matrix.os }}-
- name: Build - name: Build
shell: bash shell: bash
run: | run: |
rm -rf build rm -rf build
cmake -B build . \ cmake -B build . \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_BUILD_TYPE=Sanitize -DSANITIZE=${{ matrix.sanitizer }} -DCMAKE_BUILD_TYPE=Sanitize -DSANITIZE=${{ matrix.sanitizer }} \
-DYOSYS_COMPILER_LAUNCHER=ccache
cmake --build build -j$procs cmake --build build -j$procs
- name: Log yosys-config output - name: Log yosys-config output

View file

@ -9,7 +9,7 @@ jobs:
runs-on: [self-hosted, linux, x64, fast] runs-on: [self-hosted, linux, x64, fast]
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
submodules: true submodules: true

View file

@ -15,7 +15,7 @@ jobs:
steps: steps:
- id: skip_check - id: skip_check
if: ${{ github.event_name != 'merge_group' }} if: ${{ github.event_name != 'merge_group' }}
uses: fkirc/skip-duplicate-actions@v5 uses: mmicko/skip-duplicate-actions@master
with: with:
# don't run on documentation changes # don't run on documentation changes
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
@ -37,7 +37,7 @@ jobs:
runs-on: [self-hosted, linux, x64, fast] runs-on: [self-hosted, linux, x64, fast]
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
submodules: true submodules: true
@ -70,7 +70,7 @@ jobs:
cmake --build build --target install cmake --build build --target install
- name: Checkout SBY - name: Checkout SBY
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
repository: 'YosysHQ/sby' repository: 'YosysHQ/sby'
path: 'sby' path: 'sby'
@ -125,7 +125,7 @@ jobs:
runs-on: [self-hosted, linux, x64, fast] runs-on: [self-hosted, linux, x64, fast]
steps: steps:
- name: Checkout Yosys - name: Checkout Yosys
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
persist-credentials: false persist-credentials: false
submodules: true submodules: true

View file

@ -47,7 +47,7 @@ jobs:
name: Build Wheels | ${{ matrix.os.name }} | ${{ matrix.os.archs }} name: Build Wheels | ${{ matrix.os.name }} | ${{ matrix.os.archs }}
runs-on: ${{ matrix.os.runner }} runs-on: ${{ matrix.os.runner }}
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v7
with: with:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true