blob: 3ac8ceb72e67116f418f7d518f4764a80eb7d986 [file] [log] [blame]
# Builds the libtock_runtime entry point assembly, making sure the source code
# and compiled library match. Outputs the library file as an artifact in case
# users have a different toolchain version that produces a slightly different
# library.
name: assembly
# We want to run this on all pull requests. Additionally, Bors needs workflows
# to run on the `staging` and `trying` branches to block merges on them.
on:
pull_request:
push:
branches:
- staging
- trying
jobs:
assembly:
# Using ubuntu-latest can cause breakage when ubuntu-latest is updated to
# point at a new Ubuntu version. Instead, explicitly specify the version, so
# we can update when we need to. This *could* break if we don't update it
# until support for 20.04 is dropped, but it is likely we'll have a reason
# to update to a newer Ubuntu before then anyway.
runs-on: ubuntu-20.04
steps:
# Clones a single commit from the libtock-rs repository. The commit cloned
# is a merge commit between the PR's target branch and the PR's source.
# We'll later add another commit (the pre-merge target branch) to the
# repository.
- name: Clone repository
uses: actions/checkout@v2.3.0
# Build the entry point assembly.
- name: Build assembly
run: |
sudo apt-get install binutils-riscv64-linux-gnu
core/runtime/asm/assemble.sh
# Publish the built assembly library.
- name: Upload assembly library
uses: actions/upload-artifact@v2
with:
name: assembly
path: core/runtime/asm/*.a
# The main goal of this is to verify the built library matches the PR's
# library, although this check has the secondary benefit of catching any
# intermediate files left behind by assemble.sh
- name: Check assembly library diff
run: git diff --quiet