Fix rare termination logic failures that could result in early shutdown #2801
Workflow file for this run
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: PR | |
on: pull_request | |
concurrency: | |
group: pr-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
superlinter: | |
name: Lint bash, docker, markdown, and yaml | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Lint codebase | |
uses: docker://github/super-linter:v3.8.3 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
VALIDATE_ALL_CODEBASE: true | |
VALIDATE_BASH: true | |
VALIDATE_DOCKERFILE: true | |
VALIDATE_MD: true | |
VALIDATE_YAML: true | |
validate-musl-docker-latest-image-builds: | |
name: Validate musl Docker image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/latest/x86-64-unknown-linux-musl/Dockerfile ." | |
validate-gnu-docker-latest-image-builds: | |
name: Validate GNU Docker image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile ." | |
validate-windows-docker-latest-image-builds: | |
name: Validate Windows Docker image builds | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Docker build | |
run: "docker build --pull .dockerfiles/latest/x86-64-pc-windows-msvc" | |
validate-musl-docker-release-image-builds: | |
name: Validate musl Docker release image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/release/x86-64-unknown-linux-musl/Dockerfile ." | |
validate-gnu-docker-release-image-builds: | |
name: Validate GNU Docker release image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile ." | |
validate-windows-docker-release-image-builds: | |
name: Validate Windows Docker release image builds | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Docker build | |
run: "docker build --pull .dockerfiles/release/x86-64-pc-windows-msvc" | |
verify-changelog: | |
name: Verify CHANGELOG is valid | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/ponylang/changelog-tool:release | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Verify CHANGELOG | |
run: changelog-tool verify | |
x86_64-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 | |
name: x86-64 Linux glibc | |
debugger: lldb | |
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-musl-builder:20241203 | |
name: x86-64 Linux musl | |
debugger: lldb | |
name: ${{ matrix.name }} | |
container: | |
image: ${{ matrix.image }} | |
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure arch=x86-64 config=debug | |
make build config=debug | |
- name: Test with Debug Runtime | |
run: make test-ci config=debug usedebugger='${{ matrix.debugger }}' | |
- name: Build Release Runtime | |
run: | | |
make configure arch=x86-64 config=release | |
make build config=release | |
- name: Test with Release Runtime | |
run: make test-ci config=release usedebugger='${{ matrix.debugger }}' | |
riscv64-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ghcr.io/ponylang/ponyc-ci-cross-riscv64:20240427 | |
name: riscv64 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@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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=riscv64-linux-gnu-gcc-10 CXX=riscv64-linux-gnu-g++-10 arch=rv64gc cross_cflags="-march=rv64gc -mtune=rocket" cross_lflags="-march=riscv64" | |
- name: Test with Debug Cross-Compiled Runtime | |
run: make test-cross-ci config=debug PONYPATH=../rv64gc/debug cross_triple=riscv64-unknown-linux-gnu cross_arch=rv64gc cross_cpu=generic-rv64 cross_linker=riscv64-linux-gnu-gcc-10 cross_ponyc_args='--abi=lp64d --features=+m,+a,+f,+d,+c --link-ldcmd=bfd' cross_runner="qemu-riscv64 -L /usr/riscv64-linux-gnu/lib/" | |
- 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=riscv64-linux-gnu-gcc-10 CXX=riscv64-linux-gnu-g++-10 arch=rv64gc cross_cflags="-march=rv64gc -mtune=rocket" cross_lflags="-march=riscv64" | |
- name: Test with Release Cross-Compiled Runtime | |
run: make test-cross-ci config=release PONYPATH=../rv64gc/release cross_triple=riscv64-unknown-linux-gnu cross_arch=rv64gc cross_cpu=generic-rv64 cross_linker=riscv64-linux-gnu-gcc-10 cross_ponyc_args='--abi=lp64d --features=+m,+a,+f,+d,+c --link-ldcmd=bfd' cross_runner="qemu-riscv64 -L /usr/riscv64-linux-gnu/lib/" | |
arm-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ghcr.io/ponylang/ponyc-ci-cross-arm:20240427 | |
name: arm 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@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm" | |
- name: Test with Debug Cross-Compiled Runtime | |
run: make test-cross-ci config=debug PONYPATH=../armv7-a/debug cross_triple=arm-unknown-linux-gnueabi cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabi-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabi/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=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-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-gnueabi cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabi-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabi/libc" | |
armhf-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ghcr.io/ponylang/ponyc-ci-cross-armhf:20240427 | |
name: armhf 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@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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=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 Debug Cross-Compiled Runtime | |
run: make test-cross-ci config=debug PONYPATH=../armv7-a/debug 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" | |
- 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=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: ghcr.io/ponylang/ponyc-ci-cross-aarch64:20240427 | |
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@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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" | |
x86_64-macos: | |
runs-on: macos-13 | |
name: x86-64 Apple Darwin | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-x86-macos-13-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-x86-macos-13-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure arch=x86-64 config=debug | |
make build config=debug | |
- name: Test with Debug Runtime | |
run: make test-ci config=debug | |
- name: Build Release Runtime | |
run: | | |
make configure arch=x86-64 config=release | |
make build config=release | |
- name: Test with Release Runtime | |
run: make test-ci config=release | |
arm64-macos: | |
runs-on: macos-14 | |
name: arm64 Apple Darwin | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-arm64-macos-14-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-arm64-macos-14-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure arch=armv8 config=debug | |
make build config=debug | |
- name: Test with Debug Runtime | |
run: make test-ci config=debug | |
- name: Build Release Runtime | |
run: | | |
make configure arch=armv8 config=release | |
make build config=release | |
- name: Test with Release Runtime | |
run: make test-ci config=release | |
x86_64-windows: | |
runs-on: windows-2022 | |
defaults: | |
run: | |
shell: pwsh | |
name: x86-64 Windows MSVC | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.1.1 | |
- name: Install Dependencies | |
run: | | |
function msys() { C:\msys64\usr\bin\bash.exe @('-lc') + @Args }; msys ' '; msys 'pacman --noconfirm -Syuu'; msys 'pacman --noconfirm -Syuu'; msys 'pacman --noconfirm -S --needed base-devel mingw-w64-x86_64-lldb'; msys 'pacman --noconfirm -Scc' | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-windows-2022-${{ hashFiles('make.ps1', 'CMakeLists.txt', 'lib/CMakeLists.txt') }} | |
- name: Build Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: .\make.ps1 -Command libs | |
- name: Save Libs Cache | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v4 | |
with: | |
path: build/libs | |
key: libs-windows-2022-${{ hashFiles('make.ps1', 'CMakeLists.txt', 'lib/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
.\make.ps1 -Command configure -Config Debug | |
.\make.ps1 -Command build -Config Debug | |
- name: Test with Debug Runtime | |
run: .\make.ps1 -Command test -Config Debug -Uselldb yes | |
- name: Build Release Runtime | |
run: | | |
.\make.ps1 -Command configure -Config Release | |
.\make.ps1 -Command build -Config Release | |
- name: Test with Release Runtime | |
run: .\make.ps1 -Command test -Config Release -Uselldb yes | |
use_directives: | |
runs-on: ubuntu-latest | |
needs: x86_64-linux | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 | |
debugger: lldb | |
directives: dtrace | |
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 | |
debugger: lldb | |
directives: pool_memalign | |
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 | |
debugger: lldb | |
directives: runtimestats | |
name: use ${{ matrix.directives }} | |
container: | |
image: ${{ matrix.image }} | |
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.1.1 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/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@v4 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure arch=x86-64 config=debug use=${{ matrix.directives }} | |
make build config=debug | |
- name: Test with Debug Runtime | |
run: make test-ci config=debug usedebugger='${{ matrix.debugger }}' | |
- name: Build Release Runtime | |
run: | | |
make configure arch=x86-64 config=release use=${{ matrix.directives }} | |
make build config=release | |
- name: Test with Release Runtime | |
run: make test-ci config=release usedebugger='${{ matrix.debugger }}' |