feat: dependency bootstrap and patch workflow#5
Conversation
- Add third_party layout with .gitmodules (tim2tox, chat-uikit-flutter) - Add bootstrap_deps.dart, refresh_sdk_patch.sh, test_bootstrap_smoke.sh, verify_bootstrap_local.sh - Docs: DEPENDENCY_BOOTSTRAP, DEPENDENCY_LAYOUT, PATCH_MAINTENANCE, BUILD_AND_DEPLOY updates - Update .gitignore, pubspec.yaml, run_toxee*.sh, build_all.sh, analyze.yml, README - Update Podfile.lock and pubspec.lock Made-with: Cursor
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bf420608bd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
| final lockFile = File('$repoRoot/third_party/tim2tox/tool/tencent_cloud_chat_sdk.lock.json'); | ||
| if (!lockFile.existsSync()) { | ||
| stderr.writeln('bootstrap_deps: missing third_party/tim2tox/tool/tencent_cloud_chat_sdk.lock.json (init submodules first)'); | ||
| exit(1); |
There was a problem hiding this comment.
Initialize submodules before reading tim2tox lock file
The bootstrap script reads third_party/tim2tox/tool/tencent_cloud_chat_sdk.lock.json before running any git submodule or clone step, so a fresh clone (where third_party/tim2tox does not exist yet) exits immediately and never performs the intended initialization. This breaks the documented first-run flow and CI jobs that call dart run tool/bootstrap_deps.dart on a clean checkout.
Useful? React with 👍 / 👎.
| final entries = tempDir.listSync().whereType<FileSystemEntity>().toList(); | ||
| if (entries.length == 1 && entries.first is Directory) { |
There was a problem hiding this comment.
Ignore archive file when detecting extracted SDK root
After extraction, entries is collected from the same temp directory that still contains sdk.tar.gz, so the entries.length == 1 flattening branch is never taken for normal pub tarballs. The code then copies the extracted top-level directory (for example package/) as a nested folder under third_party/tencent_cloud_chat_sdk, leaving pubspec.yaml in the wrong place and causing the generated path override to point at a non-package root.
Useful? React with 👍 / 👎.
Made-with: Cursor