Build and test main toolchain #173
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
name: Build and test main toolchain | |
on: | |
workflow_dispatch: | |
inputs: | |
binutils_branch: | |
description: 'Binutils branch to build' | |
required: false | |
default: 'woarm64' | |
gcc_branch: | |
description: 'GCC branch to build' | |
required: false | |
default: 'woarm64' | |
mingw_branch: | |
description: 'MinGW branch to build' | |
required: false | |
default: 'woarm64' | |
arch: | |
description: 'Architecture to build for' | |
required: false | |
default: 'x86_64' | |
platform: | |
description: 'Platform to build for' | |
required: false | |
default: 'w64-mingw32' | |
crt: | |
description: 'C runtime to build for' | |
required: false | |
default: 'msvcrt' | |
tag: | |
description: 'Tag to use for the artifact' | |
required: true | |
gcc_module: | |
description: 'GCC module to test' | |
required: false | |
default: '' | |
gcc_test_filter: | |
description: 'GCC test filter' | |
required: false | |
default: '' | |
workflow_call: | |
inputs: | |
binutils_branch: | |
type: string | |
gcc_branch: | |
type: string | |
mingw_branch: | |
type: string | |
arch: | |
type: string | |
platform: | |
type: string | |
crt: | |
type: string | |
tag: | |
type: string | |
gcc_module: | |
type: string | |
gcc_test_filter: | |
type: string | |
env: | |
BINUTILS_BRANCH: ${{ inputs.binutils_branch || 'woarm64' }} | |
GCC_BRANCH: ${{ inputs.gcc_branch || 'woarm64' }} | |
MINGW_BRANCH: ${{ inputs.mingw_branch || 'woarm64' }} | |
ARCH: ${{ inputs.arch || 'aarch64' }} | |
PLATFORM: ${{ inputs.platform || 'w64-mingw32' }} | |
CRT: ${{ inputs.crt || 'msvcrt' }} | |
TAG: ${{ inputs.tag || 'test' }} | |
MODULE: ${{ inputs.gcc_module || '' }} | |
FILTER: ${{ inputs.gcc_test_filter || '' }} | |
CCACHE: 1 | |
RUN_BOOTSTRAP: 1 | |
UPDATE_SOURCES: 1 | |
jobs: | |
build-and-test-toolchain: | |
name: Build and test toolchain | |
runs-on: [Windows, ARM64, WSL] | |
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 | |
defaults: | |
run: | |
shell: wsl-bash {0} | |
steps: | |
- name: Get cache key | |
id: get-cache-key | |
shell: powershell | |
run: | | |
Write-Output "timestamp=$((Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"))" >> "$env:GITHUB_OUTPUT" | |
- name: Setup WSL | |
uses: Windows-on-ARM-Experiments/setup-wsl@master | |
with: | |
distribution: Ubuntu-24.04 | |
use-cache: false | |
additional-packages: | |
git | |
- name: Checkout repository | |
run: | | |
git clone --depth=1 ${{ github.server_url }}/${{ github.repository }}.git -b ${{ github.head_ref || github.ref_name || 'main' }} ~/work | |
- name: Get WSL paths | |
id: get-wsl-paths | |
run: | | |
source ~/work/.github/scripts/config.sh | |
mkdir -p $BUILD_PATH | |
mkdir -p $CCACHE_DIR_PATH | |
mkdir -p $ARTIFACT_PATH | |
echo "build-path-win=`wslpath -w $BUILD_PATH`" >> $GITHUB_OUTPUT | |
echo "ccache-dir-path-win=`wslpath -w $CCACHE_DIR_PATH`" >> $GITHUB_OUTPUT | |
echo "artifact-path-win=`wslpath -w $ARTIFACT_PATH`" >> $GITHUB_OUTPUT | |
echo "artifact-path-wsl=$ARTIFACT_PATH" >> $GITHUB_OUTPUT | |
- name: Restore Ccache | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ steps.get-wsl-paths.outputs.ccache-dir-path-win }} | |
key: build-and-test-gcc-ccache-${{ steps.get-cache-key.outputs.timestamp }} | |
restore-keys: build-and-test-gcc-ccache- | |
- name: Build toolchain | |
run: | | |
~/work/.github/scripts/build.sh | |
- name: Save Ccache | |
if: always() | |
uses: actions/cache/save@v4 | |
with: | |
path: ${{ steps.get-wsl-paths.outputs.ccache-dir-path-win }} | |
key: build-and-test-gcc-ccache-${{ steps.get-cache-key.outputs.timestamp }} | |
- name: Execute GCC tests | |
run: | | |
~/work/.github/scripts/toolchain/execute-gcc-tests.sh "gcc-tests-${{ env.TAG }}" \ | |
"${{ env.MODULE }}" "${{ env.FILTER }}" | |
- name: Create summary | |
run: | | |
~/work/.github/scripts/toolchain/create-gcc-summary.sh " \ | |
${{ steps.get-wsl-paths.outputs.artifact-path-wsl }}/gcc-tests-${{ env.TAG }}" >> \ | |
${{ steps.get-wsl-paths.outputs.artifact-path-wsl }}/gcc-tests-${{ env.TAG }}/summary.md | |
cat ${{ steps.get-wsl-paths.outputs.artifact-path-wsl }}/gcc-tests-${{ env.TAG }}/summary.md >> $GITHUB_STEP_SUMMARY | |
- name: Group test failures | |
run: | | |
~/work/.github/scripts/toolchain/group-gcc-test-failures.sh "gcc-tests-${{ env.TAG }}" >> $GITHUB_STEP_SUMMARY | |
- name: Upload build folder | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build | |
retention-days: 1 | |
path: ${{ steps.get-wsl-paths.outputs.build-path-win }} | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: gcc-tests-${{ env.TAG }} | |
path: ${{ steps.get-wsl-paths.outputs.artifact-path-win }}\gcc-tests-${{ env.TAG }} | |
retention-days: 30 |