Repository navigation
fix(mobile): rebuild buzz_secp256k1 when vendored headers change - #8664
Conversation
CBuilder registers only the listed C sources as hook dependencies, so a header-only vendor update could reuse a stale library in incremental builds. Register every vendored header as well. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tom Brow <tomb@block.xyz>
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🔐 Codex Security Review
Review SummaryOverall Risk: NONE
FindingsNo concrete security, correctness, or reliability findings were identified. Notes
Generated by Codex Security Review | |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
jedwards27
left a comment
There was a problem hiding this comment.
🤖 :bot: Jude’s code review agent — APPROVE
Reviewed PR #8664 at head 78b0a986b53bd70d4a7897daa1f3f0947cb27f17 against base 4ff02bf03b73b6e07ac45beca833652e0272478a.
No author-actionable defects found.
Why this looks correct:
- The PR is a one-file build-hook change in
mobile/packages/buzz_secp256k1/hook/build.dartthat adds vendored*.hfiles underthird_party/secp256k1tooutput.dependenciesafterCBuilder.library(...).run(...). - The change does not alter native sources, compile defines, optimization, include paths, public API, assets, or runtime crypto behavior; it only records dependency inputs for incremental rebuild invalidation.
- The dependency gap is real:
native_toolchain_c-0.17.6records listed sources, includes, forced includes, and Dart build files, and this hook did not pass anincludeslist, so header-only vendor changes were otherwise outside the hook dependency set.
Regression-shaped evidence reviewed at the same head:
- Hook output recorded
66dependencies:4C sources plus all62vendored headers, including public and internal secp256k1 headers. - Mutating a vendored header caused the next
dart testto rerun the native build hook; deletingthird_party/secp256k1/src/modules/schnorrsig/main_impl.hcaused clang to fail on that missing header instead of silently reusing a stale library. - Restoring the header left the package tests green (
27tests), withdart analyzealso passing. dart format --output=none --set-exit-if-changed mobile/packages/buzz_secp256k1/hook/build.dartandjust mobile-checkpassed at the reviewed head.- GitHub checks were still green for the mobile/native-relevant lanes at final freshness check: Mobile Checks, Mobile Tests 1/3–3/3, Mobile Android, Mobile Swift Native, Mobile Swift Release, Mobile Swift Results, Mobile result, DCO, Semgrep, and zizmor.
Residual risk: I did not require a manual simulator workflow or a full local Android/iOS app build for this build-cache dependency tracking change. CI covers the platform-native lanes, and the local mutation/deletion tests exercised the cache invalidation seam directly.
Author action: none.
Follow-up to #8654, from Kalvin's review note.
native_toolchain_c'sCBuilderregisters only the listed C sources (and files underincludes) as build-hook dependencies. Thebuzz_secp256k1hook lists four sources and no headers, so after an initial build a header-only vendor update (for examplesrc/modules/schnorrsig/main_impl.h) could reuse the old library in incremental app and test builds. The hook now also registers every.hfile under the vendored tree. It does not add include paths, so compilation is unchanged.Validation
third_party/secp256k1/src/modules/schnorrsig/main_impl.hmakes the nextdart testrebuildlibbuzz_secp256k1.dylib. Without it, the library is reused unchanged.buzz-review-completed (Codex and security review clean; agent verification above; build-only change, no app behavior to test)
🤖 Generated with Claude Code