Skip to content

Commit 290250d

Browse files
kenzieschmollCoderDake
authored andcommitted
Include the full path for Perfetto assets (flutter#4585)
* Include the full path for Perfetto assets * fix * review comments
1 parent 905bd99 commit 290250d

File tree

3 files changed

+133
-58
lines changed

3 files changed

+133
-58
lines changed

packages/devtools_app/pubspec.yaml

Lines changed: 55 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -91,68 +91,65 @@ flutter:
9191
# since directory support is not available for assets under `packages/`.
9292
# See (https://github.com/flutter/flutter/issues/112019).
9393
# TODO(kenz): investigate whether we really need all these assets for the trace viewer.
94+
- packages/perfetto_compiled/dist/index.html
95+
- packages/perfetto_compiled/dist/service_worker.js
96+
- packages/perfetto_compiled/dist/service_worker.js.map
9497
- packages/perfetto_compiled/dist/devtools/devtools_dark.css
9598
- packages/perfetto_compiled/dist/devtools/devtools_light.css
9699
- packages/perfetto_compiled/dist/devtools/devtools_shared.css
97100
- packages/perfetto_compiled/dist/devtools/devtools_theme_handler.js
98-
- packages/perfetto_compiled/dist/index.html
99-
- packages/perfetto_compiled/dist/service_worker.js
100-
- packages/perfetto_compiled/dist/service_worker.js.map
101-
- packages/perfetto_compiled/dist/controller_bundle.js
102-
- packages/perfetto_compiled/dist/controller_bundle.js.map
103-
- packages/perfetto_compiled/dist/engine_bundle.js
104-
- packages/perfetto_compiled/dist/engine_bundle.js.map
105-
- packages/perfetto_compiled/dist/frontend_bundle.js
106-
- packages/perfetto_compiled/dist/frontend_bundle.js.map
107-
- packages/perfetto_compiled/dist/manifest.json
108-
- packages/perfetto_compiled/dist/perfetto.css
109-
- packages/perfetto_compiled/dist/trace_processor.wasm
110-
- packages/perfetto_compiled/dist/traceconv.wasm
111-
- packages/perfetto_compiled/dist/traceconv_bundle.js
112-
- packages/perfetto_compiled/dist/traceconv_bundle.js.map
113-
# The below entries are actually under
114-
# `perfetto_compiled/dist/<perfetto-version-number>/assets/`, but the
115-
# version number is omitted here so that we don't have to update these
116-
# paths for each version update. We can do this because of the
117-
# asset variant support (https://docs.flutter.dev/development/ui/assets-and-images#asset-variants).
118-
- packages/perfetto_compiled/dist/brand.png
119-
- packages/perfetto_compiled/dist/catapult_trace_viewer.html
120-
- packages/perfetto_compiled/dist/catapult_trace_viewer.js
121-
- packages/perfetto_compiled/dist/favicon.png
122-
- packages/perfetto_compiled/dist/logo-3d.png
123-
- packages/perfetto_compiled/dist/logo-128.png
124-
- packages/perfetto_compiled/dist/MaterialIcons.woff2
125-
- packages/perfetto_compiled/dist/Raleway-Regular.woff2
126-
- packages/perfetto_compiled/dist/Raleway-Thin.woff2
127-
- packages/perfetto_compiled/dist/rec_atrace.png
128-
- packages/perfetto_compiled/dist/rec_battery_counters.png
129-
- packages/perfetto_compiled/dist/rec_board_voltage.png
130-
- packages/perfetto_compiled/dist/rec_cpu_coarse.png
131-
- packages/perfetto_compiled/dist/rec_cpu_fine.png
132-
- packages/perfetto_compiled/dist/rec_cpu_freq.png
133-
- packages/perfetto_compiled/dist/rec_cpu_voltage.png
134-
- packages/perfetto_compiled/dist/rec_frame_timeline.png
135-
- packages/perfetto_compiled/dist/rec_ftrace.png
136-
- packages/perfetto_compiled/dist/rec_gpu_mem_total.png
137-
- packages/perfetto_compiled/dist/rec_java_heap_dump.png
138-
- packages/perfetto_compiled/dist/rec_lmk.png
139-
- packages/perfetto_compiled/dist/rec_logcat.png
140-
- packages/perfetto_compiled/dist/rec_long_trace.png
141-
- packages/perfetto_compiled/dist/rec_mem_hifreq.png
142-
- packages/perfetto_compiled/dist/rec_meminfo.png
143-
- packages/perfetto_compiled/dist/rec_native_heap_profiler.png
144-
- packages/perfetto_compiled/dist/rec_one_shot.png
145-
- packages/perfetto_compiled/dist/rec_ps_stats.png
146-
- packages/perfetto_compiled/dist/rec_ring_buf.png
147-
- packages/perfetto_compiled/dist/rec_syscalls.png
148-
- packages/perfetto_compiled/dist/rec_vmstat.png
149-
- packages/perfetto_compiled/dist/Roboto-100.woff2
150-
- packages/perfetto_compiled/dist/Roboto-300.woff2
151-
- packages/perfetto_compiled/dist/Roboto-400.woff2
152-
- packages/perfetto_compiled/dist/Roboto-500.woff2
153-
- packages/perfetto_compiled/dist/RobotoCondensed-Light.woff2
154-
- packages/perfetto_compiled/dist/RobotoCondensed-Regular.woff2
155-
- packages/perfetto_compiled/dist/RobotoMono-Regular.woff2
101+
# The version number for all the Perfetto asset paths below is updated by running the
102+
# ./tool/update_perfetto.sh script.
103+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/controller_bundle.js
104+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/controller_bundle.js.map
105+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/engine_bundle.js
106+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/engine_bundle.js.map
107+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/frontend_bundle.js
108+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/frontend_bundle.js.map
109+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/manifest.json
110+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/perfetto.css
111+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/trace_processor.wasm
112+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/traceconv.wasm
113+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/traceconv_bundle.js
114+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/traceconv_bundle.js.map
115+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/brand.png
116+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/catapult_trace_viewer.html
117+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/catapult_trace_viewer.js
118+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/favicon.png
119+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/logo-3d.png
120+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/logo-128.png
121+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/MaterialIcons.woff2
122+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Raleway-Regular.woff2
123+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Raleway-Thin.woff2
124+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_atrace.png
125+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_battery_counters.png
126+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_board_voltage.png
127+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_coarse.png
128+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_fine.png
129+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_freq.png
130+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_voltage.png
131+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_frame_timeline.png
132+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_ftrace.png
133+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_gpu_mem_total.png
134+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_java_heap_dump.png
135+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_lmk.png
136+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_logcat.png
137+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_long_trace.png
138+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_mem_hifreq.png
139+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_meminfo.png
140+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_native_heap_profiler.png
141+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_one_shot.png
142+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_ps_stats.png
143+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_ring_buf.png
144+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_syscalls.png
145+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_vmstat.png
146+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-100.woff2
147+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-300.woff2
148+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-400.woff2
149+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-500.woff2
150+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/RobotoCondensed-Light.woff2
151+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/RobotoCondensed-Regular.woff2
152+
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/RobotoMono-Regular.woff2
156153

157154
fonts:
158155
- family: Roboto

tool/update_perfetto.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,12 @@ rm -rf _perfetto
5555
# TODO(kenz): we should verify that every file name under dist/ is included in devtools_app/pubspec.yaml until
5656
# https://github.com/flutter/flutter/issues/112019 is resolved.
5757

58+
popd
59+
60+
pushd $DEVTOOLS_DIR
61+
62+
// Verify that all the perfetto assets are included in the devtools_app pubspec.yaml, and that the assets
63+
// paths are updated to the new version number.
64+
dart ./tool/update_perfetto_assets.dart
65+
5866
popd

tool/update_perfetto_assets.dart

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright 2022 The Chromium Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'dart:io';
6+
7+
void main(List<String> args) {
8+
final mainDevToolsDirectory = Directory.current;
9+
if (!mainDevToolsDirectory.path.endsWith('/devtools')) {
10+
throw Exception(
11+
'Please execute this script from your top level '
12+
'\'devtools/\' directory. Running the `update_perfetto.sh` script will'
13+
'automatically do this.',
14+
);
15+
}
16+
17+
final perfettoDistDir = Directory.fromUri(
18+
Uri.parse(
19+
'${mainDevToolsDirectory.path}/third_party/packages/perfetto_compiled/lib/dist'),
20+
);
21+
22+
// Find the new perfetto version number.
23+
String newVersionNumber = '';
24+
final versionRegExp = RegExp(r'v\d+[.]\d+-[0-9a-fA-F]+');
25+
final entities = perfettoDistDir.listSync();
26+
for (FileSystemEntity entity in entities) {
27+
final path = entity.path;
28+
final match = versionRegExp.firstMatch(path);
29+
if (match != null) {
30+
newVersionNumber = path.split('/').last;
31+
print('New Perfetto version: $newVersionNumber');
32+
break;
33+
}
34+
}
35+
36+
if (newVersionNumber.isEmpty) {
37+
throw Exception(
38+
'Error updating Perfetto assets: could not find Perfetto version number '
39+
'from entities: ${entities.map((e) => e.path).toList()}',
40+
);
41+
}
42+
43+
final pubspec = File.fromUri(
44+
Uri.parse(
45+
'${mainDevToolsDirectory.path}/packages/devtools_app/pubspec.yaml'),
46+
);
47+
48+
// TODO(kenz): Ensure the pubspec.yaml contains an entry for each file in
49+
// [perfettoDistDir].
50+
51+
final perfettoAssetRegExp = RegExp(
52+
r'(?<prefix>^.*packages\/perfetto_compiled\/dist\/)(?<version>v\d+[.]\d+-[0-9a-fA-F]+)(?<suffix>\/.*$)');
53+
final lines = pubspec.readAsLinesSync();
54+
for (int i = 0; i < lines.length; i++) {
55+
final line = lines[i];
56+
final match = perfettoAssetRegExp.firstMatch(line);
57+
if (match != null) {
58+
final prefix = match.namedGroup('prefix')!;
59+
final suffix = match.namedGroup('suffix')!;
60+
lines[i] = '$prefix$newVersionNumber$suffix';
61+
}
62+
}
63+
64+
print(
65+
'Updating devtools_app/pubspec.yaml for new Perfetto version'
66+
'$newVersionNumber',
67+
);
68+
final pubspecLinesAsString = lines.join('\n');
69+
pubspec.writeAsStringSync(pubspecLinesAsString);
70+
}

0 commit comments

Comments
 (0)