Fix #631 #378
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: snmalloc CI for Morello | |
on: | |
# Triggers the workflow on push or pull request events but only for the main branch | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
inputs: | |
bootenv_label: | |
description: "Morello host environment" | |
type: string | |
required: true | |
default: "benchmark" | |
runqueue_label: | |
description: "Morello runner queue (production or test scripts?)" | |
required: true | |
type: choice | |
options: | |
- "msr-morello" | |
- "msr-morello-test" | |
jobs: | |
# UNIX-like, but with some needed TLC for the moment, so not folded in to the main unixlike CI. | |
# Morello can't easily self-host since it mixes purecap and hybrid build tools. | |
# We point cmake at the LLVM Clang frontend explicitly lest it pick up the more magic wrappers. | |
morello: | |
strategy: | |
matrix: | |
# Build each combination of OS and release/debug variants | |
os: [ "morello" ] | |
build-type: [ Release, Debug ] | |
caps: [ Hybrid, Purecap ] | |
include: | |
- os: "morello" | |
caps: Hybrid | |
dependencies: >- | |
llvm-localbase cmake ninja | |
cmake-flags: > | |
-DCMAKE_CXX_COMPILER=/usr/local64/bin/clang++ | |
-DCMAKE_C_COMPILER=/usr/local64/bin/clang | |
-DCMAKE_CXX_FLAGS='-march=morello -Xclang -morello-vararg=new' | |
-DCMAKE_C_FLAGS='-march=morello -Xclang -morello-vararg=new' | |
- os: "morello" | |
caps: Purecap | |
dependencies: >- | |
llvm-localbase cmake ninja | |
cmake-flags: > | |
-DCMAKE_CXX_COMPILER=/usr/local64/bin/clang++ | |
-DCMAKE_C_COMPILER=/usr/local64/bin/clang | |
-DCMAKE_CXX_FLAGS='-march=morello -mabi=purecap -Xclang -morello-vararg=new' | |
-DCMAKE_C_FLAGS='-march=morello -mabi=purecap -Xclang -morello-vararg=new' | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
# Morello needs special handling to get picked up by our self-hosted runners | |
# When/if we do integrate this back into the unixlike matrix above, we could | |
# say something like:: | |
# runs-on: >- | |
# ${{ (matrix.os == 'morello' && fromJSON('["self-hosted", "msr-morello", "benchmark"]')) | |
# || matrix.os }} | |
# to dispatch dynamically. | |
runs-on: >- | |
${{ fromJSON(format( | |
'[ "self-hosted", "{0}", "{1}" ]', | |
inputs.runqueue_label || 'msr-morello', | |
inputs.bootenv_label || 'benchmark' )) }} | |
name: ${{ matrix.os }} ${{ matrix.build-type }} ${{ matrix.caps }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install build dependencies | |
run: | | |
su -l root -c "pkg64 install -y ${{ matrix.dependencies }}" | |
- name: Log environment details | |
run: | | |
uname -a | |
mount | |
- name: Configure CMake | |
run: > | |
cmake | |
-B ${{github.workspace}}/build | |
-DCMAKE_BUILD_TYPE=${{matrix.build-type}} | |
-G Ninja ${{ matrix.cmake-flags }} | |
${{ matrix.extra-cmake-flags }} | |
# Build with a nice ninja status line | |
- name: Build | |
working-directory: ${{github.workspace}}/build | |
run: | | |
NINJA_STATUS="%p [%f:%s/%t] %o/s, %es" ninja | |
- name: Test file size of binaries is sane | |
working-directory: ${{github.workspace}}/build | |
run: | | |
ls -l func-first_operation-fast ; [ $(ls -l func-first_operation-fast | awk '{ print $5}') -lt 10000000 ] | |
# If the tests are enabled for this job, run them | |
- name: Test | |
if: ${{ matrix.build-only != 'yes' }} | |
working-directory: ${{github.workspace}}/build | |
run: | | |
ctest --output-on-failure -j 4 -C ${{ matrix.build-type }} --timeout 400 |