|
| 1 | +`package:native_assets_builder` and `package:native_assets_cli/native_assets_cli_internal.dart` are used in [`package:dartdev`] and [`package:flutter_tools`]. |
| 2 | + |
| 3 | +Dartdev and Flutter Tools are the commandline interfaces for `dart ...` and `flutter ...` commands. |
| 4 | + |
| 5 | +## Downstream builds |
| 6 | + |
| 7 | +Both Dartdev and Flutter Tools are built in open source, and inside g3. |
| 8 | + |
| 9 | +* Dartdev as part of the Dart SDK build on the [Dart CI]. |
| 10 | +* Dartdev as part of the g3 build (see CBuild comments on CLs on [Gerrit]). |
| 11 | +* Flutter Tools as part of the workflows on GitHub. |
| 12 | +* Flutter Tools as part of the g3 build (see the "Google testing" workflow on PRs on GitHub). |
| 13 | + |
| 14 | +The versions used in these different places are as follows: |
| 15 | + |
| 16 | +* The Dart SDK uses pinned dependencies in [DEPS], the current hash is in `native_rev`. |
| 17 | +* The Flutter build on GitHub ussed published dependencies in [its `pubspec.yaml`]. |
| 18 | +* The g3 build uses the pinned dependencies that are rolled in from the Dart SDK. **Both for Dartdev _and_ Flutter Tools**. |
| 19 | + |
| 20 | +## Rolling |
| 21 | + |
| 22 | +The above means the following. |
| 23 | + |
| 24 | +1. The DEPS in the Dart SDK can only be rolled forward as much as is still compatible with the published deps currently used in Flutter Tools. |
| 25 | +2. Flutter Tools can only be rolled forward as much as is still compatible with with the deps pinned in the Dart SDK. |
| 26 | + |
| 27 | +So, any breaking change must be done in the following way: |
| 28 | + |
| 29 | +1. Introduce a new API. |
| 30 | +2. Release a new version to pub (minor version). |
| 31 | +3. Roll that version into Dart SDK, and migrate uses in the Dart SDK. |
| 32 | +4. Wait for that Dart version to roll into g3. |
| 33 | +5. Update the dependencies to Flutter Tools, and migrate uses. |
| 34 | +6. Get the Flutter PR reviewed. |
| 35 | +7. Wait for the Flutter PR to roll into g3. |
| 36 | +8. Only then, remove the old API. |
| 37 | +9. Release a new version to pub (major version, old API removed). |
| 38 | +10. Roll both in to Dart/Flutter. |
| 39 | + |
| 40 | +The roll status can be seen on internal corp links only: |
| 41 | + |
| 42 | +* Dart roll to g3: https://dart-in-g3-qa-prod.corp.google.com/dg3/Home#/cbuild |
| 43 | +* Flutter roll to g3: https://frob.corp.google.com/ |
| 44 | + |
| 45 | +[`package:dartdev`]: https://github.com/dart-lang/sdk/tree/main/pkg/dartdev |
| 46 | +[`package:flutter_tools`]: https://github.com/flutter/flutter/tree/master/packages/flutter_tools |
| 47 | +[Dart CI]: https://ci.chromium.org/p/dart/g/be/console?reload=300 |
| 48 | +[Gerrit]: https://dart-review.googlesource.com/ |
| 49 | +[DEPS]: https://github.com/dart-lang/sdk/blob/main/DEPS |
| 50 | +[its `pubspec.yaml`]: https://github.com/flutter/flutter/blob/master/packages/flutter_tools/pubspec.yaml |
0 commit comments