name: Test extra build flows on: pull_request: merge_group: #push: # branches: [ main ] workflow_dispatch: jobs: pre_job: runs-on: ubuntu-latest outputs: should_skip: ${{ steps.set_output.outputs.should_skip }} steps: - id: skip_check if: ${{ github.event_name != 'merge_group' }} uses: fkirc/skip-duplicate-actions@v5 with: # don't run on documentation changes paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' # cancel previous builds if a new commit is pushed # but never cancel main cancel_others: ${{ github.ref != 'refs/heads/main' }} - id: set_output run: | if [ "${{ github.event_name }}" = "merge_group" ]; then echo "should_skip=false" >> $GITHUB_OUTPUT else echo "should_skip=${{ steps.skip_check.outputs.should_skip }}" >> $GITHUB_OUTPUT fi # vs-prep: # name: Prepare Visual Studio build # runs-on: ubuntu-latest # needs: [pre_job] # if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' # steps: # - uses: actions/checkout@v5 # with: # submodules: true # persist-credentials: false # - run: sudo apt-get install libfl-dev # - name: Build # run: make vcxsrc YOSYS_COMPILER="Visual Studio" VCX_DIR_NAME=yosys-win32-vcxsrc-latest # - uses: actions/upload-artifact@v7 # with: # name: vcxsrc # path: yosys-win32-vcxsrc-latest.zip # # vs-build: # name: Visual Studio build # runs-on: windows-latest # needs: [vs-prep, pre_job] # if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' # steps: # - uses: actions/download-artifact@v8 # with: # name: vcxsrc # path: . # - name: unzip # run: unzip yosys-win32-vcxsrc-latest.zip # - name: setup-msbuild # uses: microsoft/setup-msbuild@v2 # - name: MSBuild # working-directory: yosys-win32-vcxsrc-latest # run: msbuild YosysVS.sln /p:PlatformToolset=v142 /p:Configuration=Release /p:WindowsTargetPlatformVersion=10.0.26100.0 wasi-build: name: WASI build needs: pre_job if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 with: submodules: true persist-credentials: false - name: Build run: | WASI_VER=33 WASI_SDK=wasi-sdk-${WASI_VER}.0-x86_64-linux WASI_SDK_URL=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VER}/${WASI_SDK}.tar.gz if ! [ -d ${WASI_SDK} ]; then curl -L ${WASI_SDK_URL} | tar xzf -; fi WASI_SDK_PATH=$(pwd)/${WASI_SDK} FLEX_VER=2.6.4 FLEX=flex-${FLEX_VER} FLEX_URL=https://github.com/westes/flex/releases/download/v${FLEX_VER}/${FLEX}.tar.gz if ! [ -d ${FLEX} ]; then curl -L ${FLEX_URL} | tar xzf -; fi mkdir -p flex-build (cd flex-build && ../${FLEX}/configure --prefix=$(pwd)/../flex-prefix && make && make install) 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 --build build -j$(nproc) nix-build: name: "Build nix flake" needs: pre_job if: (github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') && needs.pre_job.outputs.should_skip != 'true' runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest] fail-fast: false steps: - uses: actions/checkout@v5 with: submodules: true persist-credentials: false - uses: cachix/install-nix-action@v31 with: install_url: https://releases.nixos.org/nix/nix-2.30.0/install - run: nix build .?submodules=1 -L extra-builds-result: runs-on: ubuntu-latest needs: # - vs-build - wasi-build - nix-build if: always() steps: - name: Check results run: | echo "Needs results: ${{ join(needs.*.result, ',') }}" if [[ "${{ join(needs.*.result, ',') }}" == *failure* ]] || \ [[ "${{ join(needs.*.result, ',') }}" == *cancelled* ]]; then echo "Some jobs failed or were cancelled" exit 1 fi - run: echo "All good"