Skip to content

refactor: split shorebird C API consumption (engine side of updater #350)#138

Merged
eseidel merged 2 commits intoshorebird/devfrom
es/updater-split-c-api
May 4, 2026
Merged

refactor: split shorebird C API consumption (engine side of updater #350)#138
eseidel merged 2 commits intoshorebird/devfrom
es/updater-split-c-api

Conversation

@eseidel
Copy link
Copy Markdown

@eseidel eseidel commented May 2, 2026

Summary

Engine-side companion to shorebirdtech/updater#350, which splits library/src/c_api into dart and engine submodules and replaces the combined updater.h with updater_dart.h + updater_engine.h.

The follow-up checklist on flutter#350 listed three drops; I also dropped shorebird_update for the same reason (the symbol no longer exists post-flutter#350). Worth confirming in review.

Why

Two commits, kept separate so each is easy to re-review:

  1. The include + exports change, written before Explicitly dispose heavy C++ objects flutter/flutter#350 landed.
  2. The updater_rev bump, added now that Explicitly dispose heavy C++ objects flutter/flutter#350 is on updater main at 34509fca3c.

Test plan

  • Wait for Explicitly dispose heavy C++ objects flutter/flutter#350 to merge, then bump updater_rev in DEPS to its merge SHA.
  • Local engine build (Android target) — verify libflutter.so links and the dropped exports cause no missing-symbol errors at link or runtime.
  • Smoke test: build a shorebird preview app against this engine and confirm patch download + reporting still work.

Coordination

shorebirdtech/updater#350 landed at 34509fca3c; this PR is no longer blocked.

@eseidel eseidel requested a review from bdero May 2, 2026 18:47
@eseidel
Copy link
Copy Markdown
Author

eseidel commented May 2, 2026

Will need update after updater#350 lands

@eseidel eseidel marked this pull request as ready for review May 4, 2026 22:50
eseidel added 2 commits May 4, 2026 16:00
…lutter#350)

Switch shell/common/shorebird/updater.cc to include updater_engine.h
instead of the combined updater.h, which is removed in updater flutter#350.

Drop ghost entries from android_exports.lst:

- shorebird_active_path, shorebird_active_patch_number: never existed
  in the Rust crate (already dead before flutter#350).
- shorebird_check_for_update, shorebird_update: removed in updater flutter#350,
  replaced by shorebird_check_for_downloadable_update and
  shorebird_update_with_result respectively.

Coordinated with shorebirdtech/updater#350. The DEPS updater_rev bump
is intentionally not included here -- it should land together with the
final commit of flutter#350 once the merge order is settled.
@eseidel eseidel force-pushed the es/updater-split-c-api branch from cff3893 to 44d6e9a Compare May 4, 2026 23:01
@eseidel eseidel merged commit be89e40 into shorebird/dev May 4, 2026
8 checks passed
@eseidel eseidel deleted the es/updater-split-c-api branch May 4, 2026 23:11
bdero added a commit that referenced this pull request May 7, 2026
Upstream commit be89e40 (#138) split the updater C API into
separate engine and dart cbindgen configs (cbindgen_engine.toml /
cbindgen_dart.toml) and removed the combined cbindgen.toml, but the
companion shell/common/shorebird/BUILD.gn change to update the
declared inputs was not landed. Without this fix, the iOS engine
build fails with:
  ninja: error: '../../flutter/third_party/updater/library/cbindgen.toml',
  needed by 'gen/flutter/shell/common/shorebird/rust_updater_<...>.stamp',
  missing and no known rule to make it

Worth landing upstream as a follow-up on #138.
bdero added a commit that referenced this pull request May 7, 2026
…split (#140)

PR #138 (refactor: split shorebird C API consumption) switched
shell/common/shorebird/updater.cc to the new updater_engine.h header,
and the matching DEPS bump pulled the updater repo state where the
combined library/cbindgen.toml has been replaced with separate
library/cbindgen_dart.toml and library/cbindgen_engine.toml.

The build_rust_updater action's declared inputs were not updated to
match, so iOS engine builds on shorebird/dev fail with:

  ninja: error: '../../flutter/third_party/updater/library/cbindgen.toml',
  needed by 'gen/flutter/shell/common/shorebird/rust_updater_<...>.stamp',
  missing and no known rule to make it

This action only runs in shorebird-runtime engine builds, which the
periodic _build_engine workflow exercises but no per-PR CI job does,
so the regression went unnoticed.

Replace the missing input with the two split tomls.
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.

2 participants