Skip to content

Include the full path for Perfetto assets #4585

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 55 additions & 58 deletions packages/devtools_app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,68 +91,65 @@ flutter:
# since directory support is not available for assets under `packages/`.
# See (https://github.com/flutter/flutter/issues/112019).
# TODO(kenz): investigate whether we really need all these assets for the trace viewer.
- packages/perfetto_compiled/dist/index.html
- packages/perfetto_compiled/dist/service_worker.js
- packages/perfetto_compiled/dist/service_worker.js.map
- packages/perfetto_compiled/dist/devtools/devtools_dark.css
- packages/perfetto_compiled/dist/devtools/devtools_light.css
- packages/perfetto_compiled/dist/devtools/devtools_shared.css
- packages/perfetto_compiled/dist/devtools/devtools_theme_handler.js
- packages/perfetto_compiled/dist/index.html
- packages/perfetto_compiled/dist/service_worker.js
- packages/perfetto_compiled/dist/service_worker.js.map
- packages/perfetto_compiled/dist/controller_bundle.js
- packages/perfetto_compiled/dist/controller_bundle.js.map
- packages/perfetto_compiled/dist/engine_bundle.js
- packages/perfetto_compiled/dist/engine_bundle.js.map
- packages/perfetto_compiled/dist/frontend_bundle.js
- packages/perfetto_compiled/dist/frontend_bundle.js.map
- packages/perfetto_compiled/dist/manifest.json
- packages/perfetto_compiled/dist/perfetto.css
- packages/perfetto_compiled/dist/trace_processor.wasm
- packages/perfetto_compiled/dist/traceconv.wasm
- packages/perfetto_compiled/dist/traceconv_bundle.js
- packages/perfetto_compiled/dist/traceconv_bundle.js.map
# The below entries are actually under
# `perfetto_compiled/dist/<perfetto-version-number>/assets/`, but the
# version number is omitted here so that we don't have to update these
# paths for each version update. We can do this because of the
# asset variant support (https://docs.flutter.dev/development/ui/assets-and-images#asset-variants).
- packages/perfetto_compiled/dist/brand.png
- packages/perfetto_compiled/dist/catapult_trace_viewer.html
- packages/perfetto_compiled/dist/catapult_trace_viewer.js
- packages/perfetto_compiled/dist/favicon.png
- packages/perfetto_compiled/dist/logo-3d.png
- packages/perfetto_compiled/dist/logo-128.png
- packages/perfetto_compiled/dist/MaterialIcons.woff2
- packages/perfetto_compiled/dist/Raleway-Regular.woff2
- packages/perfetto_compiled/dist/Raleway-Thin.woff2
- packages/perfetto_compiled/dist/rec_atrace.png
- packages/perfetto_compiled/dist/rec_battery_counters.png
- packages/perfetto_compiled/dist/rec_board_voltage.png
- packages/perfetto_compiled/dist/rec_cpu_coarse.png
- packages/perfetto_compiled/dist/rec_cpu_fine.png
- packages/perfetto_compiled/dist/rec_cpu_freq.png
- packages/perfetto_compiled/dist/rec_cpu_voltage.png
- packages/perfetto_compiled/dist/rec_frame_timeline.png
- packages/perfetto_compiled/dist/rec_ftrace.png
- packages/perfetto_compiled/dist/rec_gpu_mem_total.png
- packages/perfetto_compiled/dist/rec_java_heap_dump.png
- packages/perfetto_compiled/dist/rec_lmk.png
- packages/perfetto_compiled/dist/rec_logcat.png
- packages/perfetto_compiled/dist/rec_long_trace.png
- packages/perfetto_compiled/dist/rec_mem_hifreq.png
- packages/perfetto_compiled/dist/rec_meminfo.png
- packages/perfetto_compiled/dist/rec_native_heap_profiler.png
- packages/perfetto_compiled/dist/rec_one_shot.png
- packages/perfetto_compiled/dist/rec_ps_stats.png
- packages/perfetto_compiled/dist/rec_ring_buf.png
- packages/perfetto_compiled/dist/rec_syscalls.png
- packages/perfetto_compiled/dist/rec_vmstat.png
- packages/perfetto_compiled/dist/Roboto-100.woff2
- packages/perfetto_compiled/dist/Roboto-300.woff2
- packages/perfetto_compiled/dist/Roboto-400.woff2
- packages/perfetto_compiled/dist/Roboto-500.woff2
- packages/perfetto_compiled/dist/RobotoCondensed-Light.woff2
- packages/perfetto_compiled/dist/RobotoCondensed-Regular.woff2
- packages/perfetto_compiled/dist/RobotoMono-Regular.woff2
# The version number for all the Perfetto asset paths below is updated by running the
# ./tool/update_perfetto.sh script.
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/controller_bundle.js
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/controller_bundle.js.map
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/engine_bundle.js
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/engine_bundle.js.map
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/frontend_bundle.js
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/frontend_bundle.js.map
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/manifest.json
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/perfetto.css
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/trace_processor.wasm
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/traceconv.wasm
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/traceconv_bundle.js
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/traceconv_bundle.js.map
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/brand.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/catapult_trace_viewer.html
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/catapult_trace_viewer.js
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/favicon.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/logo-3d.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/logo-128.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/MaterialIcons.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Raleway-Regular.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Raleway-Thin.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_atrace.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_battery_counters.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_board_voltage.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_coarse.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_fine.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_freq.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_cpu_voltage.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_frame_timeline.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_ftrace.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_gpu_mem_total.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_java_heap_dump.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_lmk.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_logcat.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_long_trace.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_mem_hifreq.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_meminfo.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_native_heap_profiler.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_one_shot.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_ps_stats.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_ring_buf.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_syscalls.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/rec_vmstat.png
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-100.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-300.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-400.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/Roboto-500.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/RobotoCondensed-Light.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/RobotoCondensed-Regular.woff2
- packages/perfetto_compiled/dist/v29.0-3a9f96aec/assets/RobotoMono-Regular.woff2

fonts:
- family: Roboto
Expand Down
8 changes: 8 additions & 0 deletions tool/update_perfetto.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,12 @@ rm -rf _perfetto
# TODO(kenz): we should verify that every file name under dist/ is included in devtools_app/pubspec.yaml until
# https://github.com/flutter/flutter/issues/112019 is resolved.

popd

pushd $DEVTOOLS_DIR

// Verify that all the perfetto assets are included in the devtools_app pubspec.yaml, and that the assets
// paths are updated to the new version number.
dart ./tool/update_perfetto_assets.dart

popd
70 changes: 70 additions & 0 deletions tool/update_perfetto_assets.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// Copyright 2022 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:io';

void main(List<String> args) {
final mainDevToolsDirectory = Directory.current;
if (!mainDevToolsDirectory.path.endsWith('/devtools')) {
throw Exception(
'Please execute this script from your top level '
'\'devtools/\' directory. Running the `update_perfetto.sh` script will'
'automatically do this.',
);
}

final perfettoDistDir = Directory.fromUri(
Uri.parse(
'${mainDevToolsDirectory.path}/third_party/packages/perfetto_compiled/lib/dist'),
);

// Find the new perfetto version number.
String newVersionNumber = '';
final versionRegExp = RegExp(r'v\d+[.]\d+-[0-9a-fA-F]+');
final entities = perfettoDistDir.listSync();
for (FileSystemEntity entity in entities) {
final path = entity.path;
final match = versionRegExp.firstMatch(path);
if (match != null) {
newVersionNumber = path.split('/').last;
print('New Perfetto version: $newVersionNumber');
break;
}
}

if (newVersionNumber.isEmpty) {
throw Exception(
'Error updating Perfetto assets: could not find Perfetto version number '
'from entities: ${entities.map((e) => e.path).toList()}',
);
}

final pubspec = File.fromUri(
Uri.parse(
'${mainDevToolsDirectory.path}/packages/devtools_app/pubspec.yaml'),
);

// TODO(kenz): Ensure the pubspec.yaml contains an entry for each file in
// [perfettoDistDir].

final perfettoAssetRegExp = RegExp(
r'(?<prefix>^.*packages\/perfetto_compiled\/dist\/)(?<version>v\d+[.]\d+-[0-9a-fA-F]+)(?<suffix>\/.*$)');
final lines = pubspec.readAsLinesSync();
for (int i = 0; i < lines.length; i++) {
final line = lines[i];
final match = perfettoAssetRegExp.firstMatch(line);
if (match != null) {
final prefix = match.namedGroup('prefix')!;
final suffix = match.namedGroup('suffix')!;
lines[i] = '$prefix$newVersionNumber$suffix';
}
}

print(
'Updating devtools_app/pubspec.yaml for new Perfetto version'
'$newVersionNumber',
);
final pubspecLinesAsString = lines.join('\n');
pubspec.writeAsStringSync(pubspecLinesAsString);
}