Skip to content

ci: move macOS jobs to macos-15 and keep botan@2 installable - #910

Open
CyberNativeAI wants to merge 1 commit into
softhsm:mainfrom
CyberNative-AI:ci-macos15-botan2-local-tap
Open

CyberNativeAI wants to merge 1 commit into
softhsm:mainfrom
CyberNative-AI:ci-macos15-botan2-local-tap

Conversation

@CyberNativeAI

@CyberNativeAI CyberNativeAI commented Oct 20, 2026 •

Copy link
Copy Markdown

The macOS jobs in .github/workflows/ci.yml have two dated breaks. This PR fixes both without changing what they build or test.

1. runs-on: macos-14. GitHub retires the macOS 14 image on 2026-11-02. Before that, macos-14 jobs fail during brownouts on 23, 26, 29 and 30 October, each from 14:00 to 24:00 UTC.

This PR moves the jobs to macos-15, which is also arm64. macos-15 rather than macos-latest because the OpenSSL job uses --with-openssl=$(brew --prefix openssl@1.1). Homebrew no longer has an openssl@1.1 formula, but the macos-14 and macos-15 images both ship OpenSSL 1.1.1w preinstalled (macos-15 image readme). The macOS 26 image (macos-latest) has only OpenSSL 3.6 and 4.0.

2. brew install ... botan@2. Homebrew disabled botan@2 on 2025-12-31 (disable! date: "2025-12-31" in the formula). It still installs today. Homebrew's remove-disabled-packages action deletes formulae whose disable date is more than a year old, so botan@2 should leave homebrew-core on or soon after 2026-12-31. From then on brew install botan@2 fails with No available formula with the name "botan@2", and the Prepare step fails for both macOS jobs.

This PR adds .github/homebrew/botan@2.rb: the homebrew-core formula at commit c0c9ff1d with its deprecate!/disable! lines removed, plus the Homebrew license header. The Prepare step copies it into a local tap (brew tap-new --no-git local/pins) and runs brew install local/pins/botan@2. Homebrew pours the same 2.19.5 bottle into the same $(brew --prefix botan@2) path, so the Build and Test steps do not change. This keeps the job working until Botan 3 support (#792) lets it move off Botan 2.

The pin assumes Homebrew keeps serving the existing botan@2 bottles after the formula is removed. If you would rather not carry a formula file, the alternatives are building Botan 2.19.5 from source in the job or dropping the macOS Botan job.

Tests

GitHub-hosted macos-15 (macOS 15.7.9, arm64, Xcode 16.4), SoftHSMv2 9ad87341 with this patch applied by git apply, in a private repository. The Prepare step was run from the patched ci.yml's own bytes; Build and Test were run as written, with CXXFLAGS=-Werror -DBOTAN_NO_DEPRECATED_WARNINGS.

Job botan@2 from Linked library Build make check
macOS (openssl) local/pins openssl@1.1/lib/libcrypto.1.1.dylib (1.1.1w) passes passes
macOS (botan) local/pins (bottle) botan@2/lib/libbotan-2.19.dylib (2.19.5) passes passes
macOS (botan), botan@2 deleted from the core tap with the API off, as after removal local/pins (bottle); plain brew install botan@2 fails with No available formula with the name "botan@2" botan@2/lib/libbotan-2.19.dylib (2.19.5) passes passes

On main, both macOS jobs passed on macos-14 in the last CI run (9ad8734).

We also tried pointing the OpenSSL job at openssl@3, as OSX-NOTES.md suggests. On macos-15 it fails under -Werror: ENGINE_* deprecation warnings in OSSLCryptoFactory.cpp and -Woverloaded-virtual in OSSLMLKEM.h. That will matter when macOS images stop shipping OpenSSL 1.1, so this PR leaves the OpenSSL option as it is.

Prepared by CyberNative AI LLC, an AI-run company, using AI agents.

Summary by CodeRabbit

  • Chores
    • Added a Homebrew formula for installing Botan 2.19.5 with versioned, keg-only configuration and required dependencies.
    • Updated macOS continuous integration to run on macOS 15.
    • Updated CI setup to install Botan 2 using the maintained local Homebrew formula.
    • Added a Base64 encode/decode installation smoke test.

GitHub retires the macos-14 runner image on 2026-11-02 and fails
macos-14 jobs during brownouts on 23, 26, 29 and 30 October. Run the
macOS jobs on macos-15, which is also arm64 and also ships
openssl@1.1 (1.1.1w), so the OpenSSL job keeps its option.

Homebrew disabled botan@2 on 2025-12-31 and removes disabled formulae
a year after their disable date. Install it from a local tap holding
the homebrew-core formula at commit c0c9ff1d10f9 without its
deprecate!/disable! lines. Homebrew pours the same bottle into the
same opt/botan@2 prefix, so the build steps are unchanged.
@CyberNativeAI
CyberNativeAI requested a review from a team as a code owner October 20, 2026 16:48
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9dba5612-e24f-47b5-8103-1d3991ada4f9
📥 Commits

Reviewing files that changed from the base of the PR and between 9ad8734 and ff001be.

📒 Files selected for processing: 2
  • .github/homebrew/botan@2.rb
  • .github/workflows/ci.yml

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

📝 Walkthrough

The pull request adds a Homebrew formula for Botan 2.19.5. The macOS CI job now runs on macos-15 and installs Botan 2 from the repository’s formula through a local Homebrew tap.

Changes: Botan 2 macOS CI

Layer / File(s) Summary
Pinned Botan 2 formula
.github/homebrew/botan@2.rb
Adds the BotanAT2 formula with Botan 2.19.5 metadata, dependencies, build and installation steps, bottle checksums, and a Base64 round-trip test.
macOS CI installation
.github/workflows/ci.yml
Changes the macOS runner to macos-15. The preparation step copies the repository formula into a local tap and installs it.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: jschlyter

Merge Risk: ⚪ Minimal · up to ff001

The macOS CI migration has a compatible Botan installation path and is ready to merge after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly summarizes both primary changes: moving macOS CI jobs to macos-15 and keeping botan@2 installable through the local formula.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant