From 581e48d8511f97e517f9925ee56cdc09885a0935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Barto=C5=88?= Date: Wed, 15 Jan 2025 12:44:48 +0100 Subject: [PATCH] Add workflow doing comparative testing of toolchain branches accross multiple targets --- .../workflows/build-and-test-toolchain.yml | 22 +++++- .github/workflows/test-toolschains.yml | 75 +++++++++++++++++++ 2 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/test-toolschains.yml diff --git a/.github/workflows/build-and-test-toolchain.yml b/.github/workflows/build-and-test-toolchain.yml index ac429d1765..5b6c718e0d 100644 --- a/.github/workflows/build-and-test-toolchain.yml +++ b/.github/workflows/build-and-test-toolchain.yml @@ -1,7 +1,6 @@ name: Build and test main toolchain on: - pull_request: workflow_dispatch: inputs: binutils_branch: @@ -60,6 +59,8 @@ on: gcc_test_filter: type: string +run-name: Build and test ${{ inputs.arch }}-${{ inputs.platform }}-${{ inputs.crt }} toolchain + env: BINUTILS_BRANCH: ${{ inputs.binutils_branch || 'woarm64' }} GCC_BRANCH: ${{ inputs.gcc_branch || 'woarm64' }} @@ -73,6 +74,8 @@ env: MODULE: ${{ inputs.gcc_module || '' }} FILTER: ${{ inputs.gcc_test_filter || '' }} + DISTRO: Ubuntu-22.04 + TOOLCHAIN_PATH: ~/work/install CCACHE: 1 @@ -83,7 +86,8 @@ env: jobs: build-and-test-toolchain: name: Build and test toolchain - runs-on: [Windows, ARM64, WSL] + runs-on: | + ${{ (inputs.arch == 'x86_64') && ((inputs.platform == 'pc-linux') && 'ubuntu-latest' || 'windows-latest') || fromJson('["Windows", "ARM64"]') }} env: WSLENV: BINUTILS_BRANCH:GCC_BRANCH:MINGW_BRANCH:ARCH:PLATFORM:CRT:TAG:MODULE:FILTER:CCACHE:RUN_BOOTSTRAP:UPDATE_SOURCES:GITHUB_OUTPUT/p:GITHUB_STEP_SUMMARY/p @@ -95,12 +99,24 @@ jobs: run: | Write-Output "timestamp=$((Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"))" >> "$env:GITHUB_OUTPUT" + - name: Install winget + if: false + uses: Cyberboss/install-winget@v1 + - name: Install WSL if: false + uses: Ubuntu/WSL/.github/actions/wsl-install@main + with: + distro: ${{ env.DISTRO }} + + - name: Install WSL + if: inputs.platform == 'w64-mingw32' run: | - wsl --install --enable-wsl1 --no-launch --distribution Ubuntu-22.04 + wsl --set-default-version 1 + wsl --install --no-launch --distribution ${{ env.DISTRO }} - name: Clean up previous build + if: inputs.arch != 'x86_64' run: | wsl whoami wsl rm -rf ~/work diff --git a/.github/workflows/test-toolschains.yml b/.github/workflows/test-toolschains.yml new file mode 100644 index 0000000000..8b61678991 --- /dev/null +++ b/.github/workflows/test-toolschains.yml @@ -0,0 +1,75 @@ +name: Comparative test of toolchain branches accross multiple targets + +on: + pull_request: + workflow_dispatch: + inputs: + binutils_branch_baseline: + description: 'Baseline Binutils branch' + required: false + default: 'upstream' + binutils_branch_changes: + description: 'Changes Binutils branch' + required: false + default: 'upstream' + gcc_branch_baseline: + description: 'Baseline GCC branch' + required: false + default: 'upstream' + gcc_branch_changes: + description: 'Changes GCC branch' + required: false + default: 'upstream' + mingw_branch_baseline: + description: 'Baseline MinGW branch' + required: false + default: 'upstream' + mingw_branch_changes: + description: 'Changes MinGW branch' + required: false + default: 'upstream' + workflow_call: + inputs: + binutils_branch_baseline: + type: string + binutils_branch_changes: + type: string + gcc_branch_baseline: + type: string + gcc_branch_changes: + type: string + mingw_branch_baseline: + type: string + mingw_branch_changes: + type: string + +jobs: + + build-and-test-toolchains: + name: Build and test toolchains + + strategy: + fail-fast: false + matrix: + arch: [aarch64, x86_64] + platform: [w64-mingw32, pc-linux-gnu] + crt: [ucrt, libc] + exclude: + - arch: x86_64 + platform: pc-linux-gnu + - platform: w64-mingw32 + crt: libc + - platform: pc-linux-gnu + crt: ucrt + + uses: ./.github/workflows/test-toolchain.yml + with: + binutils_branch_baseline: ${{ inputs.binutils_branch_baseline }} + binutils_branch_changes: ${{ inputs.binutils_branch_changes }} + gcc_branch_baseline: ${{ inputs.gcc_branch_baseline }} + gcc_branch_changes: ${{ inputs.gcc_branch_changes }} + mingw_branch_baseline: ${{ inputs.mingw_branch_baseline }} + mingw_branch_changes: ${{ inputs.mingw_branch_changes }} + arch: ${{ matrix.arch }} + platform: ${{ matrix.platform }} + crt: ${{ matrix.crt }}