зеркало из https://github.com/microsoft/snmalloc.git
103 строки
3.8 KiB
YAML
103 строки
3.8 KiB
YAML
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 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 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
|