Skip to content

Commit f6cfb25

Browse files
dnfieldmingwandroid
authored andcommitted
Handle git dependencies, roll packages to get transitive deps of flutter_gallery (flutter#61064)
1 parent 6ade392 commit f6cfb25

File tree

2 files changed

+62
-20
lines changed

2 files changed

+62
-20
lines changed

dev/benchmarks/macrobenchmarks/pubspec.yaml

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,55 @@ dependencies:
3131
collection: 1.14.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3232
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3333
crypto: 2.1.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
34+
cupertino_icons: 0.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3435
file: 5.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
36+
flare_dart: 2.3.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
37+
flare_flutter: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
38+
flutter_localized_locales: 1.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
39+
flutter_staggered_grid_view: 0.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
40+
google_fonts: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
41+
http: 0.12.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
42+
http_parser: 3.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3543
intl: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3644
json_rpc_2: 2.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3745
matcher: 0.12.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3846
meta: 1.1.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
47+
package_info: 0.4.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
3948
path: 1.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
49+
path_provider: 1.6.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
50+
path_provider_linux: 0.0.1+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
51+
path_provider_macos: 0.0.4+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
52+
path_provider_platform_interface: 1.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
53+
pedantic: 1.9.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
54+
platform: 2.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
55+
platform_detect: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
56+
plugin_platform_interface: 1.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
57+
process: 3.0.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4058
pub_semver: 1.4.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
59+
rally_assets: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
60+
scoped_model: 1.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
61+
shared_preferences: 0.5.7+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
62+
shared_preferences_macos: 0.0.1+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
63+
shared_preferences_platform_interface: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
64+
shared_preferences_web: 0.1.2+7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
65+
shrine_images: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4166
source_span: 1.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4267
stack_trace: 1.9.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4368
stream_channel: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
69+
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4470
sync_http: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4571
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4672
typed_data: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
73+
url_launcher: 5.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
74+
url_launcher_linux: 0.0.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
75+
url_launcher_macos: 0.0.1+7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
76+
url_launcher_platform_interface: 1.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
77+
url_launcher_web: 0.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4778
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4879
vm_service_client: 0.2.6+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
4980
web_socket_channel: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
5081
webdriver: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
82+
xdg_directories: 0.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
5183

5284
dev_dependencies:
5385
flutter_test:
@@ -63,9 +95,7 @@ dev_dependencies:
6395
fake_async: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
6496
glob: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
6597
html: 0.14.0+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
66-
http: 0.12.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
6798
http_multi_server: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
68-
http_parser: 3.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
6999
io: 0.3.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
70100
js: 0.6.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
71101
logging: 0.11.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
@@ -74,15 +104,13 @@ dev_dependencies:
74104
node_io: 1.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
75105
node_preamble: 1.4.12 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
76106
package_config: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
77-
pedantic: 1.9.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
78107
pool: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
79108
shelf: 0.7.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
80109
shelf_packages_handler: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
81110
shelf_static: 0.2.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
82111
shelf_web_socket: 0.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
83112
source_map_stack_trace: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
84113
source_maps: 0.10.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
85-
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
86114
test_api: 0.2.17 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
87115
test_core: 0.3.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
88116
vm_service: 4.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
@@ -262,4 +290,4 @@ flutter:
262290
fonts:
263291
- asset: packages/flutter_gallery_assets/fonts/GalleryIcons.ttf
264292

265-
# PUBSPEC CHECKSUM: da1d
293+
# PUBSPEC CHECKSUM: 3b08

packages/flutter_tools/lib/src/commands/update_packages.dart

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,9 @@ enum DependencyKind {
483483
// A dependency that was "normal", but for which we later found a "path" or
484484
// "sdk" dependency in the dependency_overrides section.
485485
overridden,
486+
487+
// A depdendency that uses git.
488+
git,
486489
}
487490

488491
/// This is the string we output next to each of our autogenerated transitive
@@ -546,7 +549,8 @@ class PubspecYaml {
546549
// the dependency. So we track what is the "current" (or "last") dependency
547550
// that we are dealing with using this variable.
548551
PubspecDependency lastDependency;
549-
for (final String line in lines) {
552+
for (int index = 0; index < lines.length; index += 1) {
553+
String line = lines[index];
550554
if (lastDependency == null) {
551555
// First we look to see if we're transitioning to a new top-level section.
552556
// The PubspecHeader.parse static method can recognize those headers.
@@ -644,23 +648,23 @@ class PubspecYaml {
644648
//
645649
// Try to parse the line by giving it to the last PubspecDependency
646650
// object we created. If parseLock fails to recognize the line, it will
647-
// throw. If it does recognize the line but decides it's one we don't
648-
// care about (specifically, "git:" dependencies), it'll return false.
651+
// throw. If it does recognize the line and needs the following lines in
652+
// its lockLine, it'll return false.
649653
// Otherwise it returns true.
650654
//
651655
// If it returns true, then it will have updated itself internally to
652656
// store the information from this line.
653657
if (!lastDependency.parseLock(line, filename, lockIsOverride: section == Section.dependencyOverrides)) {
654-
// Ok we're dealing with some "git:" dependency. Let's pretend we
655-
// never saw it. In practice this is only used for the flutter gallery
656-
// assets dependency which we don't care about especially since it has
657-
// no subdependencies and it's pinned by git hash.
658-
//
659-
// Remove the PubspecDependency entry we had for it and replace it
660-
// with a PubspecLine entry, and add such an entry for this line.
661-
result.removeLast();
662-
result.add(PubspecLine(lastDependency.line));
663-
result.add(PubspecLine(line));
658+
// Ok we're dealing with some "git:" dependency. Consume lines until
659+
// we are out of the git dependency, and stuff them into the lock
660+
// line.
661+
lastDependency._lockLine = line;
662+
lastDependency._lockIsOverride = section == Section.dependencyOverrides;
663+
do {
664+
index += 1;
665+
line = lines[index];
666+
lastDependency._lockLine += '\n$line';
667+
} while (line.startsWith(' '));
664668
}
665669
// We're done with this special dependency, so reset back to null so
666670
// we'll go in the top section next time instead.
@@ -1121,7 +1125,7 @@ class PubspecDependency extends PubspecLine {
11211125
/// If parse decided we were a two-line dependency, this is called to parse the second line.
11221126
/// We throw if we couldn't parse this line.
11231127
/// We return true if we parsed it and stored the line in lockLine.
1124-
/// We return false if we parsed it but want to forget the whole thing.
1128+
/// We return false if we parsed it and it's a git dependency that needs the next few lines.
11251129
bool parseLock(String line, String pubspecPath, { @required bool lockIsOverride }) {
11261130
assert(lockIsOverride != null);
11271131
assert(kind == DependencyKind.unknown);
@@ -1136,7 +1140,8 @@ class PubspecDependency extends PubspecLine {
11361140
_lockTarget = line.substring(_sdkPrefix.length, line.length);
11371141
_kind = DependencyKind.sdk;
11381142
} else if (line.startsWith(_gitPrefix)) {
1139-
// We're a git: dependency. Return false so we'll be forgotten.
1143+
// We're a git: dependency. We'll have to get the next few lines.
1144+
_kind = DependencyKind.git;
11401145
return false;
11411146
} else {
11421147
throw 'Could not parse additional details for dependency $name; line was: "$line"';
@@ -1191,6 +1196,15 @@ class PubspecDependency extends PubspecLine {
11911196
dependencies.writeln(' sdk: $lockTarget');
11921197
}
11931198
break;
1199+
case DependencyKind.git:
1200+
if (_lockIsOverride) {
1201+
dependencies.writeln(' $name: any');
1202+
overrides.writeln(' $name:');
1203+
overrides.writeln(lockLine);
1204+
} else {
1205+
dependencies.writeln(' $name:');
1206+
dependencies.writeln(lockLine);
1207+
}
11941208
}
11951209
}
11961210
}

0 commit comments

Comments
 (0)