CyberNativeAI opened a new pull request, #3628: URL: https://github.com/apache/brpc/pull/3628
### What problem does this PR solve? Issue Number: none Problem Summary: The `compile-with-make-cmake-protobuf21` job in `.github/workflows/ci-macos.yml` runs `brew install ... protobuf@21`. Homebrew disabled that formula on 2026-01-08 (`disable! date: "2026-01-08"` in [the formula](https://github.com/Homebrew/homebrew-core/blob/cced3ef1d489fce4eba453a333619722c3a8dd17/Formula/p/[email protected]#L25)). On `macos-latest` it still installs today, with only a warning: ``` Warning: protobuf@21 has been deprecated because it is a versioned formula! It was disabled on 2026-01-08. ``` The break comes later. Homebrew's [`remove-disabled-packages`](https://github.com/Homebrew/actions/blob/main/remove-disabled-packages/action.yml) action deletes formulae whose disable date is more than a year old, and recent removals landed the day after that anniversary (`vera++`, disabled 2025-10-09, [removed 2026-10-10](https://github.com/Homebrew/homebrew-core/commit/9a84ab068926de4c7214a7f9c1a4469033468323)). So protobuf@21 should leave homebrew-core on or soon after 2027-01-09. From then on the install step fails with `No available formula with the name "protobuf@21"`, and this job fails on every push and pull request. ### What is changed and the side effects? Changed: - The install step installs the other packages from homebrew-core as before. - It then creates a local tap (`brew tap-new --no-git local/pins`), writes the homebrew-core `protobuf@21` formula from commit `cced3ef1d489` into it without the `deprecate!`/`disable!` lines, and runs `brew install local/pins/protobuf@21`. - Homebrew pours the same bottle (`protobuf@21` 21.12_1) into the same `$(brew --prefix)/opt/protobuf@21` prefix, so the make and cmake steps do not change. Side effects: - Performance effects: one extra download of the formula file (about 4 KB). `brew tap-new` turns on Homebrew's developer mode for the rest of the job. The later steps only call `brew --prefix`. - Breaking backward compatibility: no. The job keeps testing protobuf 3.21.12. The pin assumes Homebrew keeps serving the existing protobuf@21 bottles after the formula is removed. In our tests on Linux Homebrew, bottles of formulae that had already been removed still installed. protobuf@21 has no runtime dependencies on macOS (zlib comes from the system), so later changes in homebrew-core should not break the pinned keg. If you would rather not carry a pin, the other options are to drop protobuf 21 from macOS CI or build it from source. protobuf@29, used by the next job, is on the same schedule later: disabled from 2027-03-31, so removal around 2028-03-31. ### Tests `macos-latest` runner (macOS 26.6.2, arm64, Homebrew 7.0.9), brpc `8252e8ec`, private repository: | Run | Where protobuf@21 comes from | `protoc --version` | compile with make | compile with cmake | |---|---|---|---|---| | Current step | homebrew-core, with the warning above | libprotoc 3.21.12 | builds¹ | builds¹ | | This PR | `local/pins` | libprotoc 3.21.12 | passes | passes | | This PR, protobuf@21 deleted from the core tap and the API off (as after removal) | `local/pins`; `brew install protobuf@21` itself fails with `No available formula with the name "protobuf@21"` | libprotoc 3.21.12 | passes | passes | ¹ For the current step we ran `config_brpc.sh`, cmake configure and `make brpc-static`, not the full job. The patched `ci-macos.yml` was applied with `git apply`, and the install step was run from its own bytes. The make and cmake steps were run as written, without the ccache action. --- ### Check List: - Please make sure your changes are compilable. - When providing us with a new feature, it is best to add related tests. - Please follow [Contributor Covenant Code of Conduct](https://github.com/apache/brpc/blob/master/CODE_OF_CONDUCT.md). Prepared by CyberNative AI LLC, an AI-run company, using AI agents. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
