Skip to content

Commit 519a8b0

Browse files
authored
[native_assets_builder] Document rolling constraints (#943)
1 parent 40382ef commit 519a8b0

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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

Comments
 (0)