From 08ffae87bc27794ac950fbe4035a08cc25e7fb43 Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sat, 2 May 2026 13:49:59 -0700 Subject: [PATCH 1/5] CI: migrate a Linux job to Github Actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cirrus CI is being shutdown:¹ Cirrus CI will shut down effective Monday, June 1, 2026. So we need to migrate to something else. The best option at present seems to be Github Actions. This change effectively downgrades the compiler in use GCC 14.1 → GCC 13.2, but this seems acceptable. ¹ https://cirruslabs.org/ --- .cirrus.yml | 11 ----------- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.cirrus.yml b/.cirrus.yml index 7fb480a..1a740f1 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -14,17 +14,6 @@ task: install_script: python3 --version && pkg upgrade -y && pkg install -y cmake py311-pytest vim test_script: uname -sr && env cmake -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: Linux - container: - image: gcc:14.1 - environment: - DEBIAN_FRONTEND: noninteractive - CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=undefined -fuse-ld=gold - LC_ALL: C.UTF-8 - UBSAN_OPTIONS: print_stacktrace=1 - install_script: apt-get update && apt-get install --no-install-recommends -y cmake python3-pytest vim xxd - test_script: uname -sr && env && cmake -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: Linux, shared libraries container: image: gcc:14.1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f95ebce --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,26 @@ +name: Github Actions CI +permissions: {} +on: + pull_request: + branches: + - main +jobs: + linux: + name: Linux + runs-on: ubuntu-24.04 + env: + DEBIAN_FRONTEND: noninteractive + CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=address,undefined + UBSAN_OPTIONS: print_stacktrace=1 + steps: + - run: uname -rms + - run: python3 --version + - run: sudo apt-get update + - run: sudo apt-get install --no-install-recommends -y python3-pytest vim xxd + - run: echo "cloning ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + - run: git clone --no-checkout -- ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} wd + - run: cd wd && git fetch -- origin ${{ github.event.pull_request.head.sha }} && git checkout FETCH_HEAD + - run: cmake -B build -S wd + - run: cmake --build build + - run: cmake --build build --target check + - run: sudo cmake --install build From 8b8a41764c854f69d5cce9be209a6cb1a3d376b1 Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sat, 2 May 2026 14:16:02 -0700 Subject: [PATCH 2/5] CI: migrate Linux shared libraries job --- .cirrus.yml | 11 ----------- .github/workflows/ci.yml | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 1a740f1..c070031 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -14,17 +14,6 @@ task: install_script: python3 --version && pkg upgrade -y && pkg install -y cmake py311-pytest vim test_script: uname -sr && env cmake -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: Linux, shared libraries - container: - image: gcc:14.1 - environment: - DEBIAN_FRONTEND: noninteractive - CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=undefined -fuse-ld=gold - LC_ALL: C.UTF-8 - UBSAN_OPTIONS: print_stacktrace=1 - install_script: apt-get update && apt-get install --no-install-recommends -y cmake python3-pytest vim xxd - test_script: uname -sr && env && cmake -DBUILD_SHARED_LIBS=ON -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: Linux, release build container: image: gcc:14.1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f95ebce..224136a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,3 +24,23 @@ jobs: - run: cmake --build build - run: cmake --build build --target check - run: sudo cmake --install build + + linux_shared: + name: Linux, shared libraries + runs-on: ubuntu-24.04 + env: + DEBIAN_FRONTEND: noninteractive + CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=address,undefined + UBSAN_OPTIONS: print_stacktrace=1 + steps: + - run: uname -rms + - run: python3 --version + - run: sudo apt-get update + - run: sudo apt-get install --no-install-recommends -y python3-pytest vim xxd + - run: echo "cloning ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + - run: git clone --no-checkout -- ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} wd + - run: cd wd && git fetch -- origin ${{ github.event.pull_request.head.sha }} && git checkout FETCH_HEAD + - run: cmake -DBUILD_SHARED_LIBS=ON -B build -S wd + - run: cmake --build build + - run: cmake --build build --target check + - run: sudo cmake --install build From 7fda5ee4f71d93ebb0f4b97bb54c9ea85ea5c7bc Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sat, 2 May 2026 14:16:55 -0700 Subject: [PATCH 3/5] CI: migrate Linux release build job --- .cirrus.yml | 11 ----------- .github/workflows/ci.yml | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index c070031..58fea5d 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -14,17 +14,6 @@ task: install_script: python3 --version && pkg upgrade -y && pkg install -y cmake py311-pytest vim test_script: uname -sr && env cmake -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: Linux, release build - container: - image: gcc:14.1 - environment: - DEBIAN_FRONTEND: noninteractive - CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=undefined -fuse-ld=gold - LC_ALL: C.UTF-8 - UBSAN_OPTIONS: print_stacktrace=1 - install_script: apt-get update && apt-get install --no-install-recommends -y cmake python3-pytest vim xxd - test_script: uname -sr && env && cmake -DCMAKE_BUILD_TYPE=Release -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: macOS macos_instance: image: ghcr.io/cirruslabs/macos-sonoma-base:latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 224136a..6ecf90a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,3 +44,23 @@ jobs: - run: cmake --build build - run: cmake --build build --target check - run: sudo cmake --install build + + linux_release: + name: Linux, release build + runs-on: ubuntu-24.04 + env: + DEBIAN_FRONTEND: noninteractive + CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=address,undefined + UBSAN_OPTIONS: print_stacktrace=1 + steps: + - run: uname -rms + - run: python3 --version + - run: sudo apt-get update + - run: sudo apt-get install --no-install-recommends -y python3-pytest vim xxd + - run: echo "cloning ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + - run: git clone --no-checkout -- ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} wd + - run: cd wd && git fetch -- origin ${{ github.event.pull_request.head.sha }} && git checkout FETCH_HEAD + - run: cmake -DCMAKE_BUILD_TYPE=Release -B build -S wd + - run: cmake --build build + - run: cmake --build build --target check + - run: sudo cmake --install build From 0faf2527aa9cfb823af63f8087a4b03e359f3cef Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sat, 2 May 2026 14:19:04 -0700 Subject: [PATCH 4/5] CI: migrate macOS job --- .cirrus.yml | 9 --------- .github/workflows/ci.yml | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 58fea5d..ab793bf 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -14,15 +14,6 @@ task: install_script: python3 --version && pkg upgrade -y && pkg install -y cmake py311-pytest vim test_script: uname -sr && env cmake -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - name: macOS - macos_instance: - image: ghcr.io/cirruslabs/macos-sonoma-base:latest - environment: - CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=undefined - UBSAN_OPTIONS: print_stacktrace=1 - install_script: brew update && brew install python3 && python3 -m pip install --break-system-packages pytest - test_script: uname -sr && env && cmake -B build -S . && cmake --build build && cmake --build build --target check && sudo cmake --install build - - name: clang-format container: image: silkeh/clang:15 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ecf90a..5717d8b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,3 +64,21 @@ jobs: - run: cmake --build build - run: cmake --build build --target check - run: sudo cmake --install build + + macos: + name: macOS + runs-on: macos-26-intel + env: + CFLAGS: -Werror -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=address,undefined + UBSAN_OPTIONS: print_stacktrace=1 + steps: + - run: uname -rms + - run: python3 --version + - run: env PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip install pytest + - run: echo "cloning ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + - run: git clone --no-checkout -- ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} wd + - run: cd wd && git fetch -- origin ${{ github.event.pull_request.head.sha }} && git checkout FETCH_HEAD + - run: cmake -B build -S wd + - run: cmake --build build + - run: cmake --build build --target check + - run: sudo cmake --install build From efc22d96dd9592326eaa4f2c0c95e087da01d908 Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sat, 2 May 2026 14:20:33 -0700 Subject: [PATCH 5/5] CI: migrate clang-format job --- .cirrus.yml | 6 ------ .github/workflows/ci.yml | 10 ++++++++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index ab793bf..77d8202 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -13,9 +13,3 @@ task: UBSAN_OPTIONS: print_stacktrace=1 install_script: python3 --version && pkg upgrade -y && pkg install -y cmake py311-pytest vim test_script: uname -sr && env cmake -B build -S . && cmake --build build && cmake --build build --target check && cmake --install build - - - name: clang-format - container: - image: silkeh/clang:15 - install_script: apt-get update && apt-get install --no-install-recommends -y git - test_script: git ls-files -z '**/*.c' '**/*.h' | xargs -0 -- clang-format --dry-run --style=file --Werror diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5717d8b..0f8c77a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,3 +82,13 @@ jobs: - run: cmake --build build - run: cmake --build build --target check - run: sudo cmake --install build + + clang_format: + name: clang-format + runs-on: ubuntu-22.04 + steps: + - run: uname -rms + - run: echo "cloning ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" + - run: git clone --no-checkout -- ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} wd + - run: cd wd && git fetch -- origin ${{ github.event.pull_request.head.sha }} && git checkout FETCH_HEAD + - run: cd wd && git ls-files -z '**/*.c' '**/*.h' | xargs -0 -- clang-format-15 --dry-run --style=file --Werror