diff --git a/DEPS b/DEPS index 696d8aeda9d..8edb7c18a91 100644 --- a/DEPS +++ b/DEPS @@ -179,7 +179,7 @@ vars = { "stream_channel_rev": "0ce7ab69c3a2ab83cdeb9dc60e1bacbb83abc165", "string_scanner_rev": "da9142cf9809e7e1364144b8193ec60d87f0a4b8", "sync_http_rev": "8233f74cd8a87707c13beceb59b56bca41b52966", - "tar_rev": "3c68cba8e51c569428222b9185469249206172c6", # external package, review all rolls. disable rev_sdk_deps.dart, + "tar_rev": "3c68cba8e51c569428222b9185469249206172c6", "term_glyph_rev": "1b28285a7e818b8e87c4d2119d968c5b36d73c7a", "test_rev": "8191a355cefe5e6073e597d139bfb46e4b00c493", "test_descriptor_rev": "030193dfdfbf85930eae8536909c546151da9e9c", diff --git a/tools/rev_sdk_deps.dart b/tools/rev_sdk_deps.dart index 223dfcc6d22..1536d49886b 100644 --- a/tools/rev_sdk_deps.dart +++ b/tools/rev_sdk_deps.dart @@ -9,9 +9,18 @@ import 'dart:convert'; import 'dart:io'; +import 'package:cli_util/cli_logging.dart'; import 'package:path/path.dart' as path; import 'package:pool/pool.dart' as pool; +/// The following set of packages should be individually reviewed. +/// +/// Generally, they are from repos that are not Dart team owned, and we want to +/// ensure that we consistently review all changes from those repos. +const Set individuallyReviewedPackages = { + 'tar', +}; + void main(List args) async { // Validate we're running from the repo root. if (!File('README.dart-sdk').existsSync() || !File('DEPS').existsSync()) { @@ -36,7 +45,7 @@ void main(List args) async { final gitPool = pool.Pool(10); - final depsToRev = Map.fromEntries( + final revDepsToCommits = Map.fromEntries( (await Future.wait( deps.map((dep) { return gitPool.withResource(() async { @@ -53,14 +62,24 @@ void main(List args) async { }), ); - if (depsToRev.isEmpty) { + if (revDepsToCommits.isEmpty) { print('No new revisions.'); return; } - final depsToRevNames = depsToRev.keys.map((e) => e.name).join(', '); + final separateReviewDeps = revDepsToCommits.keys + .where((dep) => individuallyReviewedPackages.contains(dep.name)) + .toList(); + revDepsToCommits + .removeWhere((dep, _) => individuallyReviewedPackages.contains(dep.name)); + + final depsToRevNames = revDepsToCommits.keys.map((e) => e.name).join(', '); print('Move moving forward revisions for: $depsToRevNames.'); + if (separateReviewDeps.isNotEmpty) { + print('(additional, individually reviewed updates are also available for: ' + '${separateReviewDeps.map((dep) => dep.name).join(', ')})'); + } print(''); print('Commit message:'); print(''); @@ -69,7 +88,7 @@ void main(List args) async { print('Revisions updated by `dart tools/rev_sdk_deps.dart`.'); print(''); - for (var entry in depsToRev.entries) { + for (var entry in revDepsToCommits.entries) { final dep = entry.key; final commit = entry.value; @@ -89,6 +108,19 @@ void main(List args) async { print(''); } + + if (separateReviewDeps.isNotEmpty) { + final boldText = Ansi(true) + .emphasized('Note: updates are also available for additional packages'); + print('$boldText; these require individual review.\nPlease ensure that the ' + 'review for these changes is thorough. To roll them:'); + print(''); + for (var dep in separateReviewDeps) { + print('${dep.name} from ${dep.url}:'); + print(' dart tools/manage_deps.dart bump third_party/pkg/${dep.name}'); + print(''); + } + } } // By convention, pinned deps are deps with an eol comment.