Skip to content

Build and test main toolchain #173

Build and test main toolchain

Build and test main toolchain #173

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