From 0f20c479e75d0cbc66410d16af6726f9ff98e5b4 Mon Sep 17 00:00:00 2001 From: "Sean T. Allen" Date: Fri, 11 Aug 2023 15:46:41 +0000 Subject: [PATCH] Move aarch64 CI from native on Cirrus to QEMU on GitHub Actions --- .ci-dockerfiles/cross-aarch64/Dockerfile | 2 +- .github/workflows/pr.yml | 49 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/.ci-dockerfiles/cross-aarch64/Dockerfile b/.ci-dockerfiles/cross-aarch64/Dockerfile index 22ecd6b0fd..a8005dd5e9 100644 --- a/.ci-dockerfiles/cross-aarch64/Dockerfile +++ b/.ci-dockerfiles/cross-aarch64/Dockerfile @@ -1,4 +1,4 @@ -FROM ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230115 +FROM ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230807 ARG CROSS_TRIPLE=aarch64-unknown-linux-gnu ARG CROSS_CC=aarch64-linux-gnu-gcc diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2697a6ad82..299f6d2020 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -286,3 +286,52 @@ jobs: run: make cross-libponyrt config=release CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm" - name: Test with Release Cross-Compiled Runtime run: make test-cross-ci config=release PONYPATH=../armv7-a/release cross_triple=arm-unknown-linux-gnueabihf cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabihf-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabihf/libc" + + aarch64-linux: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - image: ponylang/ponyc-ci-cross-aarch64:20230811 + name: aarch64 Linux glibc + + name: ${{ matrix.name }} + container: + image: ${{ matrix.image }} + options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Restore Libs Cache + id: restore-libs + uses: actions/cache/restore@v3 + with: + path: build/libs + key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} + - name: Build Libs + if: steps.restore-libs.outputs.cache-hit != 'true' + run: make libs build_flags=-j8 + - name: Save Libs Cache + if: steps.restore-libs.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: build/libs + key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} + - name: Build Debug Runtime + run: | + make configure config=debug + make build config=debug + - name: Build Debug Cross-Compiled Runtime + run: make cross-libponyrt config=debug CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ arch=armv8-a cross_cflags="-march=armv8-a -mtune=cortex-a53" cross_lflags="-O3;-march=aarch64" + - name: Test with Debug Cross-Compiled Runtime + run: make test-cross-ci config=debug PONYPATH=../armv8-a/debug cross_triple=aarch64-unknown-linux-gnu cross_arch=armv8-a cross_cpu=cortex-a53 cross_linker=aarch64-linux-gnu-gcc cross_runner="qemu-aarch64-static -cpu cortex-a53 -L /usr/local/aarch64-linux-gnu/libc" + - name: Build Release Runtime + run: | + make configure config=release + make build config=release + - name: Build Release Cross-Compiled Runtime + run: make cross-libponyrt config=release CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ arch=armv8-a cross_cflags="-march=armv8-a -mtune=cortex-a53" cross_lflags="-O3;-march=aarch64" + - name: Test with Release Cross-Compiled Runtime + run: make test-cross-ci config=release PONYPATH=../armv8-a/release cross_triple=aarch64-unknown-linux-gnu cross_arch=armv8-a cross_cpu=cortex-a53 cross_linker=aarch64-linux-gnu-gcc cross_runner="qemu-aarch64-static -cpu cortex-a53 -L /usr/local/aarch64-linux-gnu/libc"