From f83d06538bdc5041a6c5d0c6cfdfe644f61f8131 Mon Sep 17 00:00:00 2001 From: yhirose Date: Mon, 7 Sep 2026 17:52:59 -0400 Subject: [PATCH] Track Homebrew's clang-format version instead of a fixed pin The previous commit pinned CI and the pre-commit hook to a fixed clang-format 23.1.0, but the maintainer develops on macOS against whatever version `brew` currently installs, which changes over time as Homebrew updates the formula. style-check now runs on macos-latest and installs clang-format via `brew install`, so it tracks the same moving target the maintainer's Mac does. The pre-commit hook switches from pre-commit's own pinned mirror to a local hook that shells out to the system clang-format, so a local commit and CI both go through the same Homebrew-installed binary rather than two independently versioned copies. Trade-off: this reintroduces the non-determinism a fixed pin avoids -- a commit's style-check result can now change over time as Homebrew updates the formula -- but that mirrors how the maintainer already develops, which is the point. Also install coreutils in CI: the style_check Makefile target needs grealpath's --relative-to, which the macOS-native realpath lacks. --- .github/workflows/test.yaml | 9 ++++++--- .pre-commit-config.yaml | 11 ++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 27ed77d8..a8d317ac 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -31,7 +31,10 @@ env: jobs: style-check: - runs-on: ubuntu-latest + # Uses the macOS runner's pre-installed Homebrew so clang-format tracks + # whatever version `brew install clang-format` currently resolves to on + # the maintainer's own Mac, instead of a version pinned in this file. + runs-on: macos-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name continue-on-error: true steps: @@ -39,8 +42,8 @@ jobs: uses: actions/checkout@v4 - name: install clang-format run: | - pipx install clang-format==23.1.0 - echo "$HOME/.local/bin" >> "$GITHUB_PATH" + brew update + brew install clang-format coreutils - name: run style check run: | clang-format --version diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f7a86657..f6ccb48a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,12 @@ repos: - - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v23.1.0 # CIのstyle-checkと同じバージョンに揃える + - repo: local hooks: - id: clang-format + name: clang-format + # Uses whatever `clang-format` resolves to on PATH (the Homebrew + # install on macOS) instead of a version pinned here, so it tracks + # the same version CI installs via `brew install clang-format`. + entry: clang-format + language: system files: ^(httplib\.h|(example|fuzzing|test)/[^/]+\.(cpp|cc|h))$ - args: [-i] # インプレースで修正 \ No newline at end of file + args: [-i]