From ec98ce9bae197450f7e717b16b2446a598859e0b Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Thu, 17 Feb 2022 13:11:08 -0800 Subject: [PATCH 01/20] Add WASM target in gn. Rolls to latest version of ICU which supports building with WASM. Adds emsdk to DEPS to get the emscripten toolchain working. --- DEPS | 17 ++++++++++- tools/activate_emsdk.py | 32 +++++++++++++++++++ tools/gn | 68 ++++++++++++++++++++++++++++------------- 3 files changed, 94 insertions(+), 23 deletions(-) create mode 100644 tools/activate_emsdk.py diff --git a/DEPS b/DEPS index e3ba12d6acd6c..569ee325d74b5 100644 --- a/DEPS +++ b/DEPS @@ -33,6 +33,9 @@ vars = { # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. 'canvaskit_cipd_instance': '8MSYGWVWzrTJIoVL00ZquruZs-weuwLBy1kt1AawJiIC', + # Activate the Emscripten SDK by default. + 'activate_emsdk': True, + # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the # Dart SDK's DEPS file for that revision of Dart. The DEPS file for @@ -155,7 +158,7 @@ deps = { # Chromium-style dependencies. 'src/third_party/icu': - Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '2e0f2989441ec2f55abec30f48e89981dbac2c34', + Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '1fa4e3959ec6637182b7318ac1d382799454806d', 'src/third_party/khronos': Var('chromium_git') + '/chromium/src/third_party/khronos.git' + '@' + '7122230e90547962e0f0c627f62eeed3c701f275', @@ -368,6 +371,9 @@ deps = { 'src/third_party/colorama/src': Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', + 'src/third_party/emsdk': + Var('skia_git') + '/external/github.com/emscripten-core/emsdk.git' + '@' + 'fc645b7626ebf86530dbd82fbece74d457e7ae07', + 'src/third_party/expat': Var('chromium_git') + '/external/github.com/libexpat/libexpat.git' + '@' + 'a28238bdeebc087071777001245df1876a11f5ee', @@ -739,6 +745,15 @@ hooks = [ Var('fuchsia_sdk_path'), ] }, + { + 'name': 'Activate Emscripten SDK', + 'pattern': '.', + 'condition': 'activate_emsdk', + 'action': [ + 'python3', + 'src/flutter/tools/activate_emsdk.py', + ] + }, { 'name': 'Setup githooks', 'pattern': '.', diff --git a/tools/activate_emsdk.py b/tools/activate_emsdk.py new file mode 100644 index 0000000000000..c6c67e6e09a88 --- /dev/null +++ b/tools/activate_emsdk.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +# Copyright 2022 Google LLC +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import subprocess +import sys + +EMSDK_ROOT = os.path.join('src', 'third_party', 'emsdk') + +EMSDK_PATH = os.path.join(EMSDK_ROOT, 'emsdk.py') + +EMSDK_VERSION = '3.1.3' + +def main(): + try: + subprocess.check_call([sys.executable, EMSDK_PATH, 'install', EMSDK_VERSION]) + except subprocess.CalledProcessError: + print ('Failed to install emsdk') + return 1 + try: + subprocess.check_call([sys.executable, EMSDK_PATH, 'activate', EMSDK_VERSION]) + except subprocess.CalledProcessError: + print ('Failed to activate emsdk') + return 1 + + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file diff --git a/tools/gn b/tools/gn index abf28364d9712..09b788c152e8b 100755 --- a/tools/gn +++ b/tools/gn @@ -147,15 +147,21 @@ def to_gn_args(args): gn_args['skia_use_wuffs'] = True gn_args['skia_use_expat'] = args.target_os == 'android' gn_args['skia_use_fontconfig'] = args.enable_fontconfig - gn_args['flutter_use_fontconfig'] = args.enable_fontconfig - gn_args['flutter_enable_skshaper'] = args.enable_skshaper + if args.target_os != 'wasm': + gn_args['flutter_use_fontconfig'] = args.enable_fontconfig + gn_args['flutter_enable_skshaper'] = args.enable_skshaper if args.enable_skshaper: gn_args['skia_use_icu'] = True - gn_args['flutter_always_use_skshaper'] = args.always_use_skshaper + if args.target_os != 'wasm': + gn_args['flutter_always_use_skshaper'] = args.always_use_skshaper + else: + gn_args['skia_use_harfbuzz'] = True + gn_args['icu_use_data_file'] = False if args.target_os == 'winuwp': gn_args['skia_enable_winuwp'] = True gn_args['is_official_build'] = True # Disable Skia test utilities. - gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. + if args.target_os != 'wasm': + gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. gn_args['is_debug'] = args.unoptimized gn_args['android_full_debug'] = args.target_os == 'android' and args.unoptimized if args.clang is None: @@ -165,6 +171,8 @@ def to_gn_args(args): if args.target_os == 'android' or args.target_os == 'ios': gn_args['skia_gl_standard'] = 'gles' + elif args.target_os == 'wasm': + gn_args['skia_gl_standard'] = 'webgl' else: # We explicitly don't want to pick GL because we run GLES tests using SwiftShader. gn_args['skia_gl_standard'] = '' @@ -172,7 +180,8 @@ def to_gn_args(args): if not sys.platform.startswith(('cygwin', 'win')): gn_args['use_clang_static_analyzer'] = args.clang_static_analyzer - gn_args['embedder_for_target'] = args.embedder_for_target + if args.target_os != 'wasm': + gn_args['embedder_for_target'] = args.embedder_for_target gn_args['enable_coverage'] = args.coverage @@ -198,19 +207,23 @@ def to_gn_args(args): gn_args['use_ios_simulator'] = False elif args.target_os == 'fuchsia': gn_args['target_os'] = 'fuchsia' + elif args.target_os == 'wasm': + gn_args['target_os'] = 'wasm' elif args.target_os == 'winuwp': gn_args['target_os'] = 'winuwp' elif args.target_os is not None: gn_args['target_os'] = args.target_os - gn_args['dart_lib_export_symbols'] = False + if args.target_os != 'wasm': + gn_args['dart_lib_export_symbols'] = False - if runtime_mode == 'debug': - gn_args['dart_runtime_mode'] = 'develop' - elif runtime_mode == 'jit_release': - gn_args['dart_runtime_mode'] = 'release'; - else: - gn_args['dart_runtime_mode'] = runtime_mode + if args.target_os != 'wasm': + if runtime_mode == 'debug': + gn_args['dart_runtime_mode'] = 'develop' + elif runtime_mode == 'jit_release': + gn_args['dart_runtime_mode'] = 'release'; + else: + gn_args['dart_runtime_mode'] = runtime_mode if args.dart_debug: gn_args['dart_debug'] = True @@ -232,6 +245,8 @@ def to_gn_args(args): gn_args['target_cpu'] = args.linux_cpu elif args.target_os == 'fuchsia': gn_args['target_cpu'] = args.fuchsia_cpu + elif args.target_os == 'wasm': + gn_args['target_cpu'] = 'wasm' elif args.target_os == 'win': gn_args['target_cpu'] = args.windows_cpu else: @@ -241,7 +256,8 @@ def to_gn_args(args): # DBC is not supported anymore. if args.interpreter: raise Exception('--interpreter is no longer needed on any supported platform.') - gn_args['dart_target_arch'] = gn_args['target_cpu'] + if args.target_os != 'wasm': + gn_args['dart_target_arch'] = gn_args['target_cpu'] if sys.platform.startswith(('cygwin', 'win')) and args.target_os != 'win': if 'target_cpu' in gn_args: @@ -255,7 +271,8 @@ def to_gn_args(args): if gn_args['target_cpu'] == 'x86': gn_args['host_cpu'] = 'x86' - gn_args['flutter_runtime_mode'] = runtime_mode + if args.target_os != 'wasm': + gn_args['flutter_runtime_mode'] = runtime_mode if args.target_sysroot: gn_args['target_sysroot'] = args.target_sysroot @@ -303,7 +320,7 @@ def to_gn_args(args): # attributes in release modes till the toolchain is updated. gn_args['skia_enable_api_available_macro'] = args.runtime_mode != "release" - if sys.platform == 'darwin' and args.target_os not in ['android', 'fuchsia']: + if sys.platform == 'darwin' and args.target_os not in ['android', 'fuchsia', 'wasm']: # OpenGL is deprecated on macOS > 10.11. # This is not necessarily needed but enabling this until we have a way to # build a macOS metal only shell and a gl only shell. @@ -314,7 +331,7 @@ def to_gn_args(args): # Enable Vulkan on all platforms except for Android and iOS. This is just # to save on mobile binary size, as there's no reason the Vulkan embedder # features can't work on these platforms. - if args.target_os not in ['android', 'ios']: + if args.target_os not in ['android', 'ios', 'wasm']: gn_args['skia_use_vulkan'] = True gn_args['shell_enable_vulkan'] = True # Disable VMA's use of std::shared_mutex in environments where the @@ -359,14 +376,17 @@ def to_gn_args(args): # dart_platform_sdk=True means exclude web-related files, e.g. dart2js, # dartdevc, web SDK kernel and source files. gn_args['dart_platform_sdk'] = not args.full_dart_sdk - gn_args['full_dart_sdk'] = args.full_dart_sdk + + if args.target_os != 'wasm': + gn_args['full_dart_sdk'] = args.full_dart_sdk # Desktop embeddings can have more dependencies than the engine library, # which can be problematic in some build environments (e.g., building on # Linux will bring in pkg-config dependencies at generation time). These # flags allow preventing those those targets from being part of the build # tree. - gn_args['enable_desktop_embeddings'] = not args.disable_desktop_embeddings + if args.target_os != 'wasm': + gn_args['enable_desktop_embeddings'] = not args.disable_desktop_embeddings if args.build_glfw_shell is not None: gn_args['build_glfw_shell'] = args.build_glfw_shell @@ -396,11 +416,13 @@ def to_gn_args(args): sys.exit(1) gn_args['enable_vulkan_validation_layers'] = True - gn_args['dart_version_git_info'] = not args.no_dart_version_git_info + if args.target_os != 'wasm': + gn_args['dart_version_git_info'] = not args.no_dart_version_git_info # Overrides whether Boring SSL is compiled with system as. Only meaningful # on Android. - gn_args['bssl_use_clang_integrated_as'] = True + if args.target_os != 'wasm': + gn_args['bssl_use_clang_integrated_as'] = True # Enable pointer compression on 64-bit mobile targets. if args.target_os in ['android', 'ios'] and gn_args['target_cpu'] in ['x64' , 'arm64']: @@ -414,7 +436,8 @@ def to_gn_args(args): gn_args['fuchsia_target_api_level'] = int(f.read().strip()) # Impeller flags. - gn_args['impeller_enable_playground'] = args.enable_impeller_playground + if args.target_os != 'wasm': + gn_args['impeller_enable_playground'] = args.enable_impeller_playground return gn_args @@ -435,7 +458,7 @@ def parse_args(args): parser.add_argument('--full-dart-debug', default=False, action='store_true', help='Implies --dart-debug ' + 'and also disables optimizations in the Dart VM making it easier to step through VM code in the debugger.') - parser.add_argument('--target-os', type=str, choices=['android', 'ios', 'mac', 'linux', 'fuchsia', 'win', 'winuwp']) + parser.add_argument('--target-os', type=str, choices=['android', 'ios', 'mac', 'linux', 'fuchsia', 'wasm', 'win', 'winuwp']) parser.add_argument('--android', dest='target_os', action='store_const', const='android') parser.add_argument('--android-cpu', type=str, choices=['arm', 'x64', 'x86', 'arm64'], default='arm') parser.add_argument('--ios', dest='target_os', action='store_const', const='ios') @@ -445,6 +468,7 @@ def parse_args(args): parser.add_argument('--simulator', action='store_true', default=False) parser.add_argument('--linux', dest='target_os', action='store_const', const='linux') parser.add_argument('--fuchsia', dest='target_os', action='store_const', const='fuchsia') + parser.add_argument('--wasm', dest='target_os', action='store_const', const='wasm') parser.add_argument('--winuwp', dest='target_os', action='store_const', const='winuwp') parser.add_argument('--linux-cpu', type=str, choices=['x64', 'x86', 'arm64', 'arm']) From f9e231b732335d79375adff36b3a7671e0a7fbd0 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 2 Mar 2022 16:39:00 -0800 Subject: [PATCH 02/20] Update felt to build CanvasKit locally --- DEPS | 7 +- lib/web_ui/dev/build.dart | 61 ++++++++++++++--- lib/web_ui/dev/environment.dart | 7 ++ lib/web_ui/dev/steps/compile_tests_step.dart | 71 +++++++++++++++----- 4 files changed, 117 insertions(+), 29 deletions(-) diff --git a/DEPS b/DEPS index 569ee325d74b5..a04de2e0d8e2d 100644 --- a/DEPS +++ b/DEPS @@ -33,8 +33,11 @@ vars = { # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. 'canvaskit_cipd_instance': '8MSYGWVWzrTJIoVL00ZquruZs-weuwLBy1kt1AawJiIC', - # Activate the Emscripten SDK by default. - 'activate_emsdk': True, + # Do not activate the Emscripten SDK by default. + # This prevents us from downloading the Emscripten toolchain for builds + # which do not build for the web. This toolchain is needed to build CanvasKit + # for the web engine. + 'activate_emsdk': False, # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/lib/web_ui/dev/build.dart b/lib/web_ui/dev/build.dart index 459dc19582276..30a2f14bccbf4 100644 --- a/lib/web_ui/dev/build.dart +++ b/lib/web_ui/dev/build.dart @@ -16,12 +16,18 @@ import 'utils.dart'; class BuildCommand extends Command with ArgUtils { BuildCommand() { argParser.addFlag( - 'watch', - defaultsTo: false, - abbr: 'w', - help: 'Run the build in watch mode so it rebuilds whenever a change' - 'is made. Disabled by default.', - ); + 'watch', + defaultsTo: false, + abbr: 'w', + help: 'Run the build in watch mode so it rebuilds whenever a change is ' + 'made. Disabled by default.', + ); + argParser.addFlag( + 'build-canvaskit', + defaultsTo: false, + help: 'Build CanvasKit locally instead of getting it from CIPD. Disabled ' + 'by default.', + ); } @override @@ -32,12 +38,14 @@ class BuildCommand extends Command with ArgUtils { bool get isWatchMode => boolArg('watch'); + bool get buildCanvasKit => boolArg('build-canvaskit'); + @override FutureOr run() async { final FilePath libPath = FilePath.fromWebUi('lib'); final Pipeline buildPipeline = Pipeline(steps: [ - GnPipelineStep(), - NinjaPipelineStep(), + GnPipelineStep(buildCanvasKit), + NinjaPipelineStep(buildCanvasKit), ]); await buildPipeline.run(); @@ -60,16 +68,21 @@ class BuildCommand extends Command with ArgUtils { /// Not safe to interrupt as it may leave the `out/` directory in a corrupted /// state. GN is pretty quick though, so it's OK to not support interruption. class GnPipelineStep extends ProcessStep { + GnPipelineStep(this.buildCanvasKit); + @override String get description => 'gn'; @override bool get isSafeToInterrupt => false; + /// Whether or not to build CanvasKit. + final bool buildCanvasKit; + @override Future createProcess() { print('Running gn...'); - return startProcess( + Future gnProcess = startProcess( path.join(environment.flutterDirectory.path, 'tools', 'gn'), [ '--unopt', @@ -77,6 +90,17 @@ class GnPipelineStep extends ProcessStep { '--full-dart-sdk', ], ); + if (buildCanvasKit) { + gnProcess = gnProcess.then((_) { + return startProcess( + path.join(environment.flutterDirectory.path, 'tools', 'gn'), + [ + '--wasm', + ], + ); + }); + } + return gnProcess; } } @@ -84,21 +108,38 @@ class GnPipelineStep extends ProcessStep { /// /// Can be safely interrupted. class NinjaPipelineStep extends ProcessStep { + NinjaPipelineStep(this.buildCanvasKit); + @override String get description => 'ninja'; @override bool get isSafeToInterrupt => true; + /// Whether or not to build CanvasKit. + final bool buildCanvasKit; + @override Future createProcess() { print('Running autoninja...'); - return startProcess( + Future ninjaProcess = startProcess( 'autoninja', [ '-C', environment.hostDebugUnoptDir.path, ], ); + if (buildCanvasKit) { + ninjaProcess = ninjaProcess.then((_) { + return startProcess( + 'autoninja', + [ + '-C', + environment.canvasKitOutDir.path, + ], + ); + }); + } + return ninjaProcess; } } diff --git a/lib/web_ui/dev/environment.dart b/lib/web_ui/dev/environment.dart index 792ea23daf01f..7fe5f90834b06 100644 --- a/lib/web_ui/dev/environment.dart +++ b/lib/web_ui/dev/environment.dart @@ -25,6 +25,8 @@ class Environment { io.Directory(pathlib.join(engineSrcDir.path, 'out')); final io.Directory hostDebugUnoptDir = io.Directory(pathlib.join(outDir.path, 'host_debug_unopt')); + final io.Directory canvasKitOutDir = + io.Directory(pathlib.join(outDir.path, 'wasm_debug')); final io.Directory dartSdkDir = io.Directory(pathlib.join(hostDebugUnoptDir.path, 'dart-sdk')); final io.Directory webUiRootDir = io.Directory( @@ -49,6 +51,7 @@ class Environment { engineToolsDir: engineToolsDir, outDir: outDir, hostDebugUnoptDir: hostDebugUnoptDir, + canvasKitOutDir: canvasKitOutDir, dartSdkDir: dartSdkDir, ); } @@ -60,6 +63,7 @@ class Environment { required this.engineToolsDir, required this.outDir, required this.hostDebugUnoptDir, + required this.canvasKitOutDir, required this.dartSdkDir, }); @@ -83,6 +87,9 @@ class Environment { /// The "host_debug_unopt" build of the Dart SDK. final io.Directory hostDebugUnoptDir; + /// The output directory for the build of CanvasKit. + final io.Directory canvasKitOutDir; + /// The root of the Dart SDK. final io.Directory dartSdkDir; diff --git a/lib/web_ui/dev/steps/compile_tests_step.dart b/lib/web_ui/dev/steps/compile_tests_step.dart index dcca07251c532..10e9c10cb1672 100644 --- a/lib/web_ui/dev/steps/compile_tests_step.dart +++ b/lib/web_ui/dev/steps/compile_tests_step.dart @@ -110,7 +110,8 @@ Future copySkiaTestImages() async { 'images', )); - for (final io.File imageFile in testImagesDir.listSync(recursive: true).whereType()) { + for (final io.File imageFile + in testImagesDir.listSync(recursive: true).whereType()) { final io.File destination = io.File(pathlib.join( environment.webUiBuildDir.path, 'test_images', @@ -122,6 +123,11 @@ Future copySkiaTestImages() async { } Future copyCanvasKitFiles() async { + // If CanvasKit has been built locally, use that instead of the CIPD version. + final io.File localCanvasKitWasm = + io.File(pathlib.join(environment.canvasKitOutDir.path, 'canvaskit.wasm')); + final bool builtLocalCanvasKit = localCanvasKitWasm.existsSync(); + final io.Directory canvasKitDir = io.Directory(pathlib.join( environment.engineSrcDir.path, 'third_party', @@ -129,23 +135,53 @@ Future copyCanvasKitFiles() async { 'canvaskit', )); - final Iterable canvasKitFiles = canvasKitDir - .listSync(recursive: true, followLinks: true) - .whereType(); + Iterable canvasKitFiles; + if (builtLocalCanvasKit) { + canvasKitFiles = [ + localCanvasKitWasm, + io.File(pathlib.join(environment.canvasKitOutDir.path, 'canvaskit.js')), + ]; + } else { + canvasKitFiles = canvasKitDir + .listSync(recursive: true, followLinks: true) + .whereType(); + } final io.Directory targetDir = io.Directory(pathlib.join( environment.webUiBuildDir.path, 'canvaskit', )); - for (final io.File file in canvasKitFiles) { - final String relativePath = pathlib.relative(file.path, from: canvasKitDir.path); - final io.File targetFile = io.File(pathlib.join( - targetDir.path, - relativePath, - )); - await targetFile.create(recursive: true); - await file.copy(targetFile.path); + // If we have a local canvaskit build, then copy canvaskit.js and + // canvaskit.wasm to the output dir and the "profiling" sub-directory. + if (builtLocalCanvasKit) { + print('Copying CanvasKit from local build'); + for (final io.File file in canvasKitFiles) { + final io.File normalTargetFile = io.File(pathlib.join( + targetDir.path, + pathlib.basename(file.path), + )); + final io.File profileTargetFile = io.File(pathlib.join( + targetDir.path, + 'profiling', + pathlib.basename(file.path), + )); + await normalTargetFile.create(recursive: true); + await profileTargetFile.create(recursive: true); + await file.copy(normalTargetFile.path); + await file.copy(profileTargetFile.path); + } + } else { + for (final io.File file in canvasKitFiles) { + final String relativePath = + pathlib.relative(file.path, from: canvasKitDir.path); + final io.File targetFile = io.File(pathlib.join( + targetDir.path, + relativePath, + )); + await targetFile.create(recursive: true); + await file.copy(targetFile.path); + } } } @@ -184,7 +220,8 @@ Future compileTests(List testFiles) async { } // Maximum number of concurrent dart2js processes to use. -const int _dart2jsConcurrency = int.fromEnvironment('FELT_DART2JS_CONCURRENCY', defaultValue: 8); +const int _dart2jsConcurrency = + int.fromEnvironment('FELT_DART2JS_CONCURRENCY', defaultValue: 8); final Pool _dart2jsPool = Pool(_dart2jsConcurrency); @@ -221,15 +258,15 @@ Future _compileTestsInParallel({ /// directory before test are build. See [_copyFilesFromTestToBuild]. /// /// Later the extra files will be deleted in [_cleanupExtraFilesUnderTestDir]. -Future compileUnitTest(FilePath input, { required bool forCanvasKit }) async { +Future compileUnitTest(FilePath input, + {required bool forCanvasKit}) async { final String targetFileName = pathlib.join( environment.webUiBuildDir.path, '${input.relativeToWebUi}.browser_test.dart.js', ); final io.Directory directoryToTarget = io.Directory(pathlib.join( - environment.webUiBuildDir.path, - pathlib.dirname(input.relativeToWebUi))); + environment.webUiBuildDir.path, pathlib.dirname(input.relativeToWebUi))); if (!directoryToTarget.existsSync()) { directoryToTarget.createSync(recursive: true); @@ -340,7 +377,7 @@ Future buildHostPage() async { if (exitCode != 0) { throw ToolExit( 'Failed to compile ${hostDartFile.path}. Compiler ' - 'exited with exit code $exitCode', + 'exited with exit code $exitCode', exitCode: exitCode, ); } From 97f626ebcf7dc14ba3959ad808a47bd42b174429 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 4 Mar 2022 10:22:25 -0800 Subject: [PATCH 03/20] Move CanvasKit building logic to //flutter/BUILD.gn --- BUILD.gn | 127 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 67 insertions(+), 60 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 0f6245a2577e5..f15c64bed0270 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -45,14 +45,6 @@ if (flutter_prebuilt_dart_sdk) { } } -# Flutter SDK artifacts should only be built when either doing host builds, or -# for cross-compiled desktop targets. -# TODO: We can't build the engine artifacts for arm (32-bit) right now; -# see https://github.com/flutter/flutter/issues/74322 -_build_engine_artifacts = - current_toolchain == host_toolchain || - (is_linux && !is_chromeos && current_cpu != "arm") || is_mac - group("dart_sdk") { if (build_engine_artifacts) { if (flutter_prebuilt_dart_sdk) { @@ -66,69 +58,84 @@ group("dart_sdk") { group("flutter") { testonly = true - # Compile the engine. - public_deps = [ - ":unittests", - "//flutter/shell/platform/embedder:flutter_engine", - "//flutter/sky", - ] - - # Ensure the example for a sample embedder compiles. - if (build_embedder_examples) { - public_deps += [ - "//flutter/examples/glfw", - "//flutter/examples/vulkan_glfw", + # If building for WASM, only build CanvasKit. + if (is_wasm) { + deps = [ + "//third_party/skia/modules/canvaskit:canvaskit" + ] + } else { + # Flutter SDK artifacts should only be built when either doing host builds, or + # for cross-compiled desktop targets. + # TODO: We can't build the engine artifacts for arm (32-bit) right now; + # see https://github.com/flutter/flutter/issues/74322 + _build_engine_artifacts = + current_toolchain == host_toolchain || + (is_linux && !is_chromeos && current_cpu != "arm") || is_mac + + # Compile the engine. + public_deps = [ + ":unittests", + "//flutter/shell/platform/embedder:flutter_engine", + "//flutter/sky", ] - } - - # If enbaled, compile the SDK / snapshot. - if (!is_fuchsia) { - public_deps += [ "//flutter/lib/snapshot:generate_snapshot_bins" ] - if (_build_engine_artifacts) { + # Ensure the example for a sample embedder compiles. + if (build_embedder_examples) { public_deps += [ - ":dart_sdk", - "//flutter/flutter_frontend_server:frontend_server", - - # This must be listed explicitly for desktop cross-builds since - # //flutter/lib/snapshot:generate_snapshot_bin will only build - # gen_snapshot for the host and not the target. - "//third_party/dart/runtime/bin:gen_snapshot", + "//flutter/examples/glfw", + "//flutter/examples/vulkan_glfw", ] + } + + # If enbaled, compile the SDK / snapshot. + if (!is_fuchsia) { + public_deps += [ "//flutter/lib/snapshot:generate_snapshot_bins" ] + + if (_build_engine_artifacts) { + public_deps += [ + ":dart_sdk", + "//flutter/flutter_frontend_server:frontend_server", + + # This must be listed explicitly for desktop cross-builds since + # //flutter/lib/snapshot:generate_snapshot_bin will only build + # gen_snapshot for the host and not the target. + "//third_party/dart/runtime/bin:gen_snapshot", + ] - if (full_dart_sdk) { - public_deps += [ "//flutter/web_sdk" ] + if (full_dart_sdk) { + public_deps += [ "//flutter/web_sdk" ] + } } } - } - if (_build_engine_artifacts) { - public_deps += [ - "//flutter/shell/testing", - "//flutter/tools/const_finder", - "//flutter/tools/font-subset", - ] - } + if (_build_engine_artifacts) { + public_deps += [ + "//flutter/shell/testing", + "//flutter/tools/const_finder", + "//flutter/tools/font-subset", + ] + } - # Compile all benchmark targets if enabled. - if (enable_unittests && !is_win) { - public_deps += [ - "//flutter/display_list:display_list_benchmarks", - "//flutter/fml:fml_benchmarks", - "//flutter/lib/ui:ui_benchmarks", - "//flutter/shell/common:shell_benchmarks", - "//flutter/third_party/txt:txt_benchmarks", - ] - } + # Compile all benchmark targets if enabled. + if (enable_unittests && !is_win) { + public_deps += [ + "//flutter/display_list:display_list_benchmarks", + "//flutter/fml:fml_benchmarks", + "//flutter/lib/ui:ui_benchmarks", + "//flutter/shell/common:shell_benchmarks", + "//flutter/third_party/txt:txt_benchmarks", + ] + } - if ((flutter_runtime_mode == "debug" || flutter_runtime_mode == "profile") && - (is_ios || is_android)) { - public_deps += [ "//flutter/testing/scenario_app" ] - } + if ((flutter_runtime_mode == "debug" || flutter_runtime_mode == "profile") && + (is_ios || is_android)) { + public_deps += [ "//flutter/testing/scenario_app" ] + } - if (is_android && flutter_runtime_mode == "profile" && - current_cpu == "arm64") { - public_deps += [ "//flutter/testing/android_background_image" ] + if (is_android && flutter_runtime_mode == "profile" && + current_cpu == "arm64") { + public_deps += [ "//flutter/testing/android_background_image" ] + } } } From 08040f52b40c51be70949ed345a090eeea2267e7 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 4 Mar 2022 10:23:33 -0800 Subject: [PATCH 04/20] Format --- BUILD.gn | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index f15c64bed0270..30f6d99872318 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -60,9 +60,7 @@ group("flutter") { # If building for WASM, only build CanvasKit. if (is_wasm) { - deps = [ - "//third_party/skia/modules/canvaskit:canvaskit" - ] + deps = [ "//third_party/skia/modules/canvaskit:canvaskit" ] } else { # Flutter SDK artifacts should only be built when either doing host builds, or # for cross-compiled desktop targets. @@ -127,8 +125,8 @@ group("flutter") { ] } - if ((flutter_runtime_mode == "debug" || flutter_runtime_mode == "profile") && - (is_ios || is_android)) { + if ((flutter_runtime_mode == "debug" || + flutter_runtime_mode == "profile") && (is_ios || is_android)) { public_deps += [ "//flutter/testing/scenario_app" ] } From 8aa41b6561c99aed3268d5266f379614f11e3b84 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 4 Mar 2022 16:37:44 -0800 Subject: [PATCH 05/20] Make new BUILD.gn file for CanvasKit in Flutter --- lib/web_ui/BUILD.gn | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lib/web_ui/BUILD.gn diff --git a/lib/web_ui/BUILD.gn b/lib/web_ui/BUILD.gn new file mode 100644 index 0000000000000..88735d09948c4 --- /dev/null +++ b/lib/web_ui/BUILD.gn @@ -0,0 +1,7 @@ +# Copyright 2022 The Flutter Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +group("canvaskit") { + deps = [ "//third_party/skia/modules/canvaskit" ] +} \ No newline at end of file From afac75a1470578772639994a26294b036a66f07c Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 4 Mar 2022 16:38:41 -0800 Subject: [PATCH 06/20] Format --- lib/web_ui/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web_ui/BUILD.gn b/lib/web_ui/BUILD.gn index 88735d09948c4..955753e35c29e 100644 --- a/lib/web_ui/BUILD.gn +++ b/lib/web_ui/BUILD.gn @@ -4,4 +4,4 @@ group("canvaskit") { deps = [ "//third_party/skia/modules/canvaskit" ] -} \ No newline at end of file +} From 73409fbf34d2ce61476765934aac19e667b5cfb4 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 7 Mar 2022 14:31:41 -0800 Subject: [PATCH 07/20] Roll buildroot --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 5eb593c541458..0b6088c3ff0c9 100644 --- a/DEPS +++ b/DEPS @@ -113,7 +113,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + 'e4cee118fc80c7cd3b8f8959aa02747a67c38a63', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '8b48804feb575fb91a10c36aabad5f8913b086a6', 'src/flutter/impeller': Var('github_git') + '/flutter/impeller' + '@' + 'c1abf6ed09c8dbf090434355be431329586c8bc6', From 87d9db5d94f6fd76f79b243d41c284a96a21cf6d Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 7 Mar 2022 16:57:03 -0800 Subject: [PATCH 08/20] Add documentation, checkout to //buildtools --- DEPS | 9 +++-- lib/web_ui/README.md | 53 +++++++++++++++++++++++++++++ tools/activate_emsdk.py | 1 + tools/gn | 75 ++++++++++++++++++----------------------- 4 files changed, 93 insertions(+), 45 deletions(-) diff --git a/DEPS b/DEPS index da3c8373208a8..275afddd141a1 100644 --- a/DEPS +++ b/DEPS @@ -33,11 +33,11 @@ vars = { # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. 'canvaskit_cipd_instance': '8MSYGWVWzrTJIoVL00ZquruZs-weuwLBy1kt1AawJiIC', - # Do not activate the Emscripten SDK by default. + # Do not download the Emscripten SDK by default. # This prevents us from downloading the Emscripten toolchain for builds # which do not build for the web. This toolchain is needed to build CanvasKit # for the web engine. - 'activate_emsdk': False, + 'download_emsdk': False, # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the @@ -574,6 +574,11 @@ deps = { 'dep_type': 'cipd', }, + 'src/buildtools/emsdk': { + 'url': Var('skia_git') + '/external/github.com/emscripten-core/emsdk.git' + '@' + 'fc645b7626ebf86530dbd82fbece74d457e7ae07', + 'condition': 'download_emsdk', + }, + # Clang on mac and linux are expected to typically be the same revision. # They are separated out so that the autoroller can more easily manage them. 'src/buildtools/mac-x64/clang': { diff --git a/lib/web_ui/README.md b/lib/web_ui/README.md index af677010d0038..e104d3d2b72ab 100644 --- a/lib/web_ui/README.md +++ b/lib/web_ui/README.md @@ -220,6 +220,59 @@ environment variable: FELT_USE_SNAPSHOT=false felt ``` +## Building CanvasKit + +To build CanvasKit locally, you must first set up your gclient config to +activate the Emscripten SDK, which is the toolchain used to build CanvasKit. +To do this, replace the contents of your .gclient file at the root of the +project (i.e. in the parent directory of the `src` directory) with: + +``` +solutions = [ + { + "managed": False, + "name": "src/flutter", + "url": "git@github.com:/engine.git", + "custom_deps": {}, + "deps_file": "DEPS", + "safesync_url": "", + "custom_vars": { + "download_emsdk": True, + }, + }, +] +``` + +Now run `gclient sync` and it should pull in the Emscripten SDK and activate it. + +To build CanvasKit with `felt`, run: + +``` +felt build --build-canvaskit +``` + +This will build CanvasKit in `out/wasm_debug`. If you now run + +``` +felt test +``` + +it will detect that you have built CanvasKit and use that instead of the one +from CIPD to run the tests against. + +### Upgrading the Emscripten SDK for the CanvasKit build + +The version of the Emscripten SDK should be kept up to date with the version +used in the Skia build. That version can be found in +`third_party/skia/bin/activate-emsdk`. It will probably also be necessary to +roll the dependency on `third_party/emsdk` in DEPS to the same version as in +`third_party/skia/DEPS`. + +Once you know the version for the Emscripten SDK, change the line in +`tools/activate_emsdk.py` which defines `EMSDK_VERSION` to match Skia. + + + [1]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment [2]: https://github.com/flutter/engine/blob/main/lib/web_ui/dev/browser_lock.yaml [3]: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html diff --git a/tools/activate_emsdk.py b/tools/activate_emsdk.py index c6c67e6e09a88..e2774356421a2 100644 --- a/tools/activate_emsdk.py +++ b/tools/activate_emsdk.py @@ -13,6 +13,7 @@ EMSDK_PATH = os.path.join(EMSDK_ROOT, 'emsdk.py') +# See lib/web_ui/README.md for instructions on updating the EMSDK version. EMSDK_VERSION = '3.1.3' def main(): diff --git a/tools/gn b/tools/gn index 09b788c152e8b..5c67cbfee3a66 100755 --- a/tools/gn +++ b/tools/gn @@ -147,9 +147,40 @@ def to_gn_args(args): gn_args['skia_use_wuffs'] = True gn_args['skia_use_expat'] = args.target_os == 'android' gn_args['skia_use_fontconfig'] = args.enable_fontconfig + + # Flutter-specific arguments which don't apply for a CanvasKit build. if args.target_os != 'wasm': gn_args['flutter_use_fontconfig'] = args.enable_fontconfig gn_args['flutter_enable_skshaper'] = args.enable_skshaper + gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. + gn_args['embedder_for_target'] = args.embedder_for_target + gn_args['dart_lib_export_symbols'] = False + gn_args['dart_target_arch'] = gn_args['target_cpu'] + gn_args['flutter_runtime_mode'] = runtime_mode + gn_args['full_dart_sdk'] = args.full_dart_sdk + gn_args['dart_version_git_info'] = not args.no_dart_version_git_info + + if runtime_mode == 'debug': + gn_args['dart_runtime_mode'] = 'develop' + elif runtime_mode == 'jit_release': + gn_args['dart_runtime_mode'] = 'release'; + else: + gn_args['dart_runtime_mode'] = runtime_mode + + # Desktop embeddings can have more dependencies than the engine library, + # which can be problematic in some build environments (e.g., building on + # Linux will bring in pkg-config dependencies at generation time). These + # flags allow preventing those those targets from being part of the build + # tree. + gn_args['enable_desktop_embeddings'] = not args.disable_desktop_embeddings + + # Overrides whether Boring SSL is compiled with system as. Only meaningful + # on Android. + gn_args['bssl_use_clang_integrated_as'] = True + + # Impeller flags. + gn_args['impeller_enable_playground'] = args.enable_impeller_playground + if args.enable_skshaper: gn_args['skia_use_icu'] = True if args.target_os != 'wasm': @@ -160,8 +191,6 @@ def to_gn_args(args): if args.target_os == 'winuwp': gn_args['skia_enable_winuwp'] = True gn_args['is_official_build'] = True # Disable Skia test utilities. - if args.target_os != 'wasm': - gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. gn_args['is_debug'] = args.unoptimized gn_args['android_full_debug'] = args.target_os == 'android' and args.unoptimized if args.clang is None: @@ -180,9 +209,6 @@ def to_gn_args(args): if not sys.platform.startswith(('cygwin', 'win')): gn_args['use_clang_static_analyzer'] = args.clang_static_analyzer - if args.target_os != 'wasm': - gn_args['embedder_for_target'] = args.embedder_for_target - gn_args['enable_coverage'] = args.coverage if args.operator_new_alignment is not None: @@ -214,17 +240,6 @@ def to_gn_args(args): elif args.target_os is not None: gn_args['target_os'] = args.target_os - if args.target_os != 'wasm': - gn_args['dart_lib_export_symbols'] = False - - if args.target_os != 'wasm': - if runtime_mode == 'debug': - gn_args['dart_runtime_mode'] = 'develop' - elif runtime_mode == 'jit_release': - gn_args['dart_runtime_mode'] = 'release'; - else: - gn_args['dart_runtime_mode'] = runtime_mode - if args.dart_debug: gn_args['dart_debug'] = True @@ -256,8 +271,6 @@ def to_gn_args(args): # DBC is not supported anymore. if args.interpreter: raise Exception('--interpreter is no longer needed on any supported platform.') - if args.target_os != 'wasm': - gn_args['dart_target_arch'] = gn_args['target_cpu'] if sys.platform.startswith(('cygwin', 'win')) and args.target_os != 'win': if 'target_cpu' in gn_args: @@ -271,9 +284,6 @@ def to_gn_args(args): if gn_args['target_cpu'] == 'x86': gn_args['host_cpu'] = 'x86' - if args.target_os != 'wasm': - gn_args['flutter_runtime_mode'] = runtime_mode - if args.target_sysroot: gn_args['target_sysroot'] = args.target_sysroot gn_args['custom_sysroot'] = args.target_sysroot @@ -377,16 +387,6 @@ def to_gn_args(args): # dartdevc, web SDK kernel and source files. gn_args['dart_platform_sdk'] = not args.full_dart_sdk - if args.target_os != 'wasm': - gn_args['full_dart_sdk'] = args.full_dart_sdk - - # Desktop embeddings can have more dependencies than the engine library, - # which can be problematic in some build environments (e.g., building on - # Linux will bring in pkg-config dependencies at generation time). These - # flags allow preventing those those targets from being part of the build - # tree. - if args.target_os != 'wasm': - gn_args['enable_desktop_embeddings'] = not args.disable_desktop_embeddings if args.build_glfw_shell is not None: gn_args['build_glfw_shell'] = args.build_glfw_shell @@ -416,13 +416,6 @@ def to_gn_args(args): sys.exit(1) gn_args['enable_vulkan_validation_layers'] = True - if args.target_os != 'wasm': - gn_args['dart_version_git_info'] = not args.no_dart_version_git_info - - # Overrides whether Boring SSL is compiled with system as. Only meaningful - # on Android. - if args.target_os != 'wasm': - gn_args['bssl_use_clang_integrated_as'] = True # Enable pointer compression on 64-bit mobile targets. if args.target_os in ['android', 'ios'] and gn_args['target_cpu'] in ['x64' , 'arm64']: @@ -435,15 +428,11 @@ def to_gn_args(args): with open(os.path.join(os.path.dirname(__file__), 'fuchsia/target_api_level')) as f: gn_args['fuchsia_target_api_level'] = int(f.read().strip()) - # Impeller flags. - if args.target_os != 'wasm': - gn_args['impeller_enable_playground'] = args.enable_impeller_playground - return gn_args def parse_args(args): args = args[1:] - parser = argparse.ArgumentParser(description='A script run` gn gen`.') + parser = argparse.ArgumentParser(description='A script to run `gn gen`.') parser.add_argument('--unoptimized', default=False, action='store_true') From 61e077a136d5535a7a6d6fd7cdf35c8320ba6e47 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Tue, 8 Mar 2022 16:05:43 -0800 Subject: [PATCH 09/20] Fix gn for non-WASM builds. Update buildroot DEP --- DEPS | 2 +- tools/gn | 66 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/DEPS b/DEPS index 275afddd141a1..36a4bc546f135 100644 --- a/DEPS +++ b/DEPS @@ -113,7 +113,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '8b48804feb575fb91a10c36aabad5f8913b086a6', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '62cbfa53ab84c5bc3700d0ef15aed3af8101660e', 'src/flutter/impeller': Var('github_git') + '/flutter/impeller' + '@' + 'c1abf6ed09c8dbf090434355be431329586c8bc6', diff --git a/tools/gn b/tools/gn index 5c67cbfee3a66..2bba655ef2f7e 100755 --- a/tools/gn +++ b/tools/gn @@ -148,39 +148,6 @@ def to_gn_args(args): gn_args['skia_use_expat'] = args.target_os == 'android' gn_args['skia_use_fontconfig'] = args.enable_fontconfig - # Flutter-specific arguments which don't apply for a CanvasKit build. - if args.target_os != 'wasm': - gn_args['flutter_use_fontconfig'] = args.enable_fontconfig - gn_args['flutter_enable_skshaper'] = args.enable_skshaper - gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. - gn_args['embedder_for_target'] = args.embedder_for_target - gn_args['dart_lib_export_symbols'] = False - gn_args['dart_target_arch'] = gn_args['target_cpu'] - gn_args['flutter_runtime_mode'] = runtime_mode - gn_args['full_dart_sdk'] = args.full_dart_sdk - gn_args['dart_version_git_info'] = not args.no_dart_version_git_info - - if runtime_mode == 'debug': - gn_args['dart_runtime_mode'] = 'develop' - elif runtime_mode == 'jit_release': - gn_args['dart_runtime_mode'] = 'release'; - else: - gn_args['dart_runtime_mode'] = runtime_mode - - # Desktop embeddings can have more dependencies than the engine library, - # which can be problematic in some build environments (e.g., building on - # Linux will bring in pkg-config dependencies at generation time). These - # flags allow preventing those those targets from being part of the build - # tree. - gn_args['enable_desktop_embeddings'] = not args.disable_desktop_embeddings - - # Overrides whether Boring SSL is compiled with system as. Only meaningful - # on Android. - gn_args['bssl_use_clang_integrated_as'] = True - - # Impeller flags. - gn_args['impeller_enable_playground'] = args.enable_impeller_playground - if args.enable_skshaper: gn_args['skia_use_icu'] = True if args.target_os != 'wasm': @@ -268,6 +235,39 @@ def to_gn_args(args): # Building host artifacts gn_args['target_cpu'] = 'x64' + # Flutter-specific arguments which don't apply for a CanvasKit build. + if args.target_os != 'wasm': + gn_args['flutter_use_fontconfig'] = args.enable_fontconfig + gn_args['flutter_enable_skshaper'] = args.enable_skshaper + gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. + gn_args['embedder_for_target'] = args.embedder_for_target + gn_args['dart_lib_export_symbols'] = False + gn_args['dart_target_arch'] = gn_args['target_cpu'] + gn_args['flutter_runtime_mode'] = runtime_mode + gn_args['full_dart_sdk'] = args.full_dart_sdk + gn_args['dart_version_git_info'] = not args.no_dart_version_git_info + + if runtime_mode == 'debug': + gn_args['dart_runtime_mode'] = 'develop' + elif runtime_mode == 'jit_release': + gn_args['dart_runtime_mode'] = 'release'; + else: + gn_args['dart_runtime_mode'] = runtime_mode + + # Desktop embeddings can have more dependencies than the engine library, + # which can be problematic in some build environments (e.g., building on + # Linux will bring in pkg-config dependencies at generation time). These + # flags allow preventing those those targets from being part of the build + # tree. + gn_args['enable_desktop_embeddings'] = not args.disable_desktop_embeddings + + # Overrides whether Boring SSL is compiled with system as. Only meaningful + # on Android. + gn_args['bssl_use_clang_integrated_as'] = True + + # Impeller flags. + gn_args['impeller_enable_playground'] = args.enable_impeller_playground + # DBC is not supported anymore. if args.interpreter: raise Exception('--interpreter is no longer needed on any supported platform.') From 45cb40e5cc9f2cc97ce5ec9573bd6797c08f4ba6 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 9 Mar 2022 12:35:43 -0800 Subject: [PATCH 10/20] Touch up DEPS --- DEPS | 3 --- tools/activate_emsdk.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 36a4bc546f135..ba718a021c978 100644 --- a/DEPS +++ b/DEPS @@ -374,9 +374,6 @@ deps = { 'src/third_party/colorama/src': Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', - 'src/third_party/emsdk': - Var('skia_git') + '/external/github.com/emscripten-core/emsdk.git' + '@' + 'fc645b7626ebf86530dbd82fbece74d457e7ae07', - 'src/third_party/expat': Var('chromium_git') + '/external/github.com/libexpat/libexpat.git' + '@' + 'a28238bdeebc087071777001245df1876a11f5ee', diff --git a/tools/activate_emsdk.py b/tools/activate_emsdk.py index e2774356421a2..91a05a5a2c1ba 100644 --- a/tools/activate_emsdk.py +++ b/tools/activate_emsdk.py @@ -9,7 +9,7 @@ import subprocess import sys -EMSDK_ROOT = os.path.join('src', 'third_party', 'emsdk') +EMSDK_ROOT = os.path.join('src', 'buildtools', 'emsdk') EMSDK_PATH = os.path.join(EMSDK_ROOT, 'emsdk.py') From b4e89fb996896a0d08283a53bf1cb3b5b22d7b0e Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 9 Mar 2022 12:44:45 -0800 Subject: [PATCH 11/20] Fix DEPS condition --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index ba718a021c978..c56e9d4e1e8db 100644 --- a/DEPS +++ b/DEPS @@ -753,7 +753,7 @@ hooks = [ { 'name': 'Activate Emscripten SDK', 'pattern': '.', - 'condition': 'activate_emsdk', + 'condition': 'download_emsdk', 'action': [ 'python3', 'src/flutter/tools/activate_emsdk.py', From fd288db6b04dd5b5ad5f2f12721892b7feef69f3 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 9 Mar 2022 16:54:54 -0800 Subject: [PATCH 12/20] Fix licenses check --- BUILD.gn | 125 ++++++++++++++--------------- tools/licenses/lib/filesystem.dart | 1 + 2 files changed, 61 insertions(+), 65 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 30f6d99872318..2864da23246f4 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -31,6 +31,14 @@ config("export_dynamic_symbols") { } } +# Flutter SDK artifacts should only be built when either doing host builds, or +# for cross-compiled desktop targets. +# TODO: We can't build the engine artifacts for arm (32-bit) right now; +# see https://github.com/flutter/flutter/issues/74322 +_build_engine_artifacts = + current_toolchain == host_toolchain || + (is_linux && !is_chromeos && current_cpu != "arm") || is_mac + if (flutter_prebuilt_dart_sdk) { copy_trees("_copy_trees") { sources = [ @@ -58,82 +66,69 @@ group("dart_sdk") { group("flutter") { testonly = true - # If building for WASM, only build CanvasKit. - if (is_wasm) { - deps = [ "//third_party/skia/modules/canvaskit:canvaskit" ] - } else { - # Flutter SDK artifacts should only be built when either doing host builds, or - # for cross-compiled desktop targets. - # TODO: We can't build the engine artifacts for arm (32-bit) right now; - # see https://github.com/flutter/flutter/issues/74322 - _build_engine_artifacts = - current_toolchain == host_toolchain || - (is_linux && !is_chromeos && current_cpu != "arm") || is_mac - - # Compile the engine. - public_deps = [ - ":unittests", - "//flutter/shell/platform/embedder:flutter_engine", - "//flutter/sky", - ] + # Compile the engine. + public_deps = [ + ":unittests", + "//flutter/shell/platform/embedder:flutter_engine", + "//flutter/sky", + ] - # Ensure the example for a sample embedder compiles. - if (build_embedder_examples) { - public_deps += [ - "//flutter/examples/glfw", - "//flutter/examples/vulkan_glfw", - ] - } + # Ensure the example for a sample embedder compiles. + if (build_embedder_examples) { + public_deps += [ + "//flutter/examples/glfw", + "//flutter/examples/vulkan_glfw", + ] + } - # If enbaled, compile the SDK / snapshot. - if (!is_fuchsia) { - public_deps += [ "//flutter/lib/snapshot:generate_snapshot_bins" ] + # If enbaled, compile the SDK / snapshot. + if (!is_fuchsia) { + public_deps += [ "//flutter/lib/snapshot:generate_snapshot_bins" ] - if (_build_engine_artifacts) { - public_deps += [ - ":dart_sdk", - "//flutter/flutter_frontend_server:frontend_server", + if (_build_engine_artifacts) { + public_deps += [ + ":dart_sdk", + "//flutter/flutter_frontend_server:frontend_server", - # This must be listed explicitly for desktop cross-builds since - # //flutter/lib/snapshot:generate_snapshot_bin will only build - # gen_snapshot for the host and not the target. - "//third_party/dart/runtime/bin:gen_snapshot", - ] + # This must be listed explicitly for desktop cross-builds since + # //flutter/lib/snapshot:generate_snapshot_bin will only build + # gen_snapshot for the host and not the target. + "//third_party/dart/runtime/bin:gen_snapshot", + ] - if (full_dart_sdk) { - public_deps += [ "//flutter/web_sdk" ] - } + if (full_dart_sdk) { + public_deps += [ "//flutter/web_sdk" ] } } + } - if (_build_engine_artifacts) { - public_deps += [ - "//flutter/shell/testing", - "//flutter/tools/const_finder", - "//flutter/tools/font-subset", - ] - } + if (_build_engine_artifacts) { + public_deps += [ + "//flutter/shell/testing", + "//flutter/tools/const_finder", + "//flutter/tools/font-subset", + ] + } - # Compile all benchmark targets if enabled. - if (enable_unittests && !is_win) { - public_deps += [ - "//flutter/display_list:display_list_benchmarks", - "//flutter/fml:fml_benchmarks", - "//flutter/lib/ui:ui_benchmarks", - "//flutter/shell/common:shell_benchmarks", - "//flutter/third_party/txt:txt_benchmarks", - ] - } + # Compile all benchmark targets if enabled. + if (enable_unittests && !is_win) { + public_deps += [ + "//flutter/display_list:display_list_benchmarks", + "//flutter/fml:fml_benchmarks", + "//flutter/lib/ui:ui_benchmarks", + "//flutter/shell/common:shell_benchmarks", + "//flutter/third_party/txt:txt_benchmarks", + ] + } - if ((flutter_runtime_mode == "debug" || - flutter_runtime_mode == "profile") && (is_ios || is_android)) { - public_deps += [ "//flutter/testing/scenario_app" ] - } + if ((flutter_runtime_mode == "debug" || + flutter_runtime_mode == "profile") && (is_ios || is_android)) { + public_deps += [ "//flutter/testing/scenario_app" ] + } - if (is_android && flutter_runtime_mode == "profile" && - current_cpu == "arm64") { - public_deps += [ "//flutter/testing/android_background_image" ] - } + if (is_android && flutter_runtime_mode == "profile" && + current_cpu == "arm64") { + public_deps += [ "//flutter/testing/android_background_image" ] } } diff --git a/tools/licenses/lib/filesystem.dart b/tools/licenses/lib/filesystem.dart index 4cd01fcdc8fa0..a95b5f1bd06f3 100644 --- a/tools/licenses/lib/filesystem.dart +++ b/tools/licenses/lib/filesystem.dart @@ -130,6 +130,7 @@ FileType identifyFile(String name, Reader reader) { // Giant data files case 'icudtl_dat.S': case 'icudtl.dat': + case 'icudtl.dat.hash': return FileType.binary; } switch (path.extension(name)) { From 8c22f1badee04c14c5d028a84b24d6db0099fe81 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 9 Mar 2022 16:55:50 -0800 Subject: [PATCH 13/20] Fix formatting --- BUILD.gn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 2864da23246f4..114d60646e8b5 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -121,8 +121,8 @@ group("flutter") { ] } - if ((flutter_runtime_mode == "debug" || - flutter_runtime_mode == "profile") && (is_ios || is_android)) { + if ((flutter_runtime_mode == "debug" || flutter_runtime_mode == "profile") && + (is_ios || is_android)) { public_deps += [ "//flutter/testing/scenario_app" ] } From f3ae30f67dc2aaceb5756a8413f58ba83fdbaa94 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Thu, 10 Mar 2022 13:55:51 -0800 Subject: [PATCH 14/20] update licenses --- ci/licenses_golden/licenses_third_party | 14 ++++++++++++-- ci/licenses_golden/tool_signature | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index ea123b44c58bc..256b69f2d103a 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 7bda71dc439dc0a18ac558267dc64a9c +Signature: 76f8e89738b27c991d5a58a2a6b3a907 UNUSED LICENSES: @@ -4309,7 +4309,7 @@ POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: angle -ORIGIN: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.c + ../../../fuchsia/sdk/linux/LICENSE +ORIGIN: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.c + ../../../fuchsia/sdk/mac/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.c FILE: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.h @@ -18087,6 +18087,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -18216,6 +18217,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -18355,6 +18357,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -18489,6 +18492,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -18622,6 +18626,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -18760,6 +18765,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -18894,6 +18900,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -19027,6 +19034,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -19133,6 +19141,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch @@ -19306,6 +19315,7 @@ FILE: ../../../third_party/icu/android_small/icudtl_extra.dat FILE: ../../../third_party/icu/cast/brkitr.patch FILE: ../../../third_party/icu/cast/icudtl.dat FILE: ../../../third_party/icu/chromeos/icudtl.dat +FILE: ../../../third_party/icu/chromeos/icudtl.dat.hash FILE: ../../../third_party/icu/common/icudtb.dat FILE: ../../../third_party/icu/common/icudtl.dat FILE: ../../../third_party/icu/flutter/brkitr.patch diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index f26ca839cfbda..541172051341a 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 270842a9eb9687ced20abdf5f131bafd +Signature: 5efe7843d99ba138e2bb7dac2441b5b8 From 77bceed73b804d006a0b8511296a23dae862880a Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Thu, 10 Mar 2022 15:09:38 -0800 Subject: [PATCH 15/20] Update licenses --- ci/licenses_golden/licenses_flutter | 34 +++++--------------- ci/licenses_golden/licenses_skia | 49 ++++++++++++++++++++++++----- 2 files changed, 49 insertions(+), 34 deletions(-) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 77cd371f9113d..c1c1f6a9b0621 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -402,8 +402,6 @@ FILE: ../../../flutter/impeller/base/allocation.cc FILE: ../../../flutter/impeller/base/allocation.h FILE: ../../../flutter/impeller/base/backend_cast.h FILE: ../../../flutter/impeller/base/base.h -FILE: ../../../flutter/impeller/base/comparable.cc -FILE: ../../../flutter/impeller/base/comparable.h FILE: ../../../flutter/impeller/base/config.h FILE: ../../../flutter/impeller/base/promise.cc FILE: ../../../flutter/impeller/base/promise.h @@ -428,22 +426,10 @@ FILE: ../../../flutter/impeller/display_list/display_list_dispatcher.cc FILE: ../../../flutter/impeller/display_list/display_list_dispatcher.h FILE: ../../../flutter/impeller/display_list/display_list_unittests.cc FILE: ../../../flutter/impeller/docs/shader_pipeline.png -FILE: ../../../flutter/impeller/entity/contents/clip_contents.cc -FILE: ../../../flutter/impeller/entity/contents/clip_contents.h -FILE: ../../../flutter/impeller/entity/contents/content_context.cc -FILE: ../../../flutter/impeller/entity/contents/content_context.h -FILE: ../../../flutter/impeller/entity/contents/contents.cc -FILE: ../../../flutter/impeller/entity/contents/contents.h -FILE: ../../../flutter/impeller/entity/contents/linear_gradient_contents.cc -FILE: ../../../flutter/impeller/entity/contents/linear_gradient_contents.h -FILE: ../../../flutter/impeller/entity/contents/solid_color_contents.cc -FILE: ../../../flutter/impeller/entity/contents/solid_color_contents.h -FILE: ../../../flutter/impeller/entity/contents/solid_stroke_contents.cc -FILE: ../../../flutter/impeller/entity/contents/solid_stroke_contents.h -FILE: ../../../flutter/impeller/entity/contents/text_contents.cc -FILE: ../../../flutter/impeller/entity/contents/text_contents.h -FILE: ../../../flutter/impeller/entity/contents/texture_contents.cc -FILE: ../../../flutter/impeller/entity/contents/texture_contents.h +FILE: ../../../flutter/impeller/entity/content_context.cc +FILE: ../../../flutter/impeller/entity/content_context.h +FILE: ../../../flutter/impeller/entity/contents.cc +FILE: ../../../flutter/impeller/entity/contents.h FILE: ../../../flutter/impeller/entity/entity.cc FILE: ../../../flutter/impeller/entity/entity.h FILE: ../../../flutter/impeller/entity/entity_pass.cc @@ -476,7 +462,6 @@ FILE: ../../../flutter/impeller/fixtures/test_texture.vert FILE: ../../../flutter/impeller/fixtures/types.h FILE: ../../../flutter/impeller/geometry/color.cc FILE: ../../../flutter/impeller/geometry/color.h -FILE: ../../../flutter/impeller/geometry/constants.cc FILE: ../../../flutter/impeller/geometry/constants.h FILE: ../../../flutter/impeller/geometry/geometry_unittests.cc FILE: ../../../flutter/impeller/geometry/geometry_unittests.h @@ -505,8 +490,6 @@ FILE: ../../../flutter/impeller/geometry/type_traits.cc FILE: ../../../flutter/impeller/geometry/type_traits.h FILE: ../../../flutter/impeller/geometry/vector.cc FILE: ../../../flutter/impeller/geometry/vector.h -FILE: ../../../flutter/impeller/image/backends/skia/compressed_image_skia.cc -FILE: ../../../flutter/impeller/image/backends/skia/compressed_image_skia.h FILE: ../../../flutter/impeller/image/compressed_image.cc FILE: ../../../flutter/impeller/image/compressed_image.h FILE: ../../../flutter/impeller/image/decompressed_image.cc @@ -559,6 +542,8 @@ FILE: ../../../flutter/impeller/renderer/command.cc FILE: ../../../flutter/impeller/renderer/command.h FILE: ../../../flutter/impeller/renderer/command_buffer.cc FILE: ../../../flutter/impeller/renderer/command_buffer.h +FILE: ../../../flutter/impeller/renderer/comparable.cc +FILE: ../../../flutter/impeller/renderer/comparable.h FILE: ../../../flutter/impeller/renderer/context.cc FILE: ../../../flutter/impeller/renderer/context.h FILE: ../../../flutter/impeller/renderer/device_buffer.cc @@ -602,6 +587,8 @@ FILE: ../../../flutter/impeller/renderer/shader_types.cc FILE: ../../../flutter/impeller/renderer/shader_types.h FILE: ../../../flutter/impeller/renderer/surface.cc FILE: ../../../flutter/impeller/renderer/surface.h +FILE: ../../../flutter/impeller/renderer/tessellator.cc +FILE: ../../../flutter/impeller/renderer/tessellator.h FILE: ../../../flutter/impeller/renderer/texture.cc FILE: ../../../flutter/impeller/renderer/texture.h FILE: ../../../flutter/impeller/renderer/texture_descriptor.cc @@ -612,11 +599,6 @@ FILE: ../../../flutter/impeller/renderer/vertex_buffer_builder.cc FILE: ../../../flutter/impeller/renderer/vertex_buffer_builder.h FILE: ../../../flutter/impeller/renderer/vertex_descriptor.cc FILE: ../../../flutter/impeller/renderer/vertex_descriptor.h -FILE: ../../../flutter/impeller/tessellator/c/tessellator.cc -FILE: ../../../flutter/impeller/tessellator/c/tessellator.h -FILE: ../../../flutter/impeller/tessellator/dart/lib/tessellator.dart -FILE: ../../../flutter/impeller/tessellator/tessellator.cc -FILE: ../../../flutter/impeller/tessellator/tessellator.h FILE: ../../../flutter/impeller/typographer/backends/skia/text_frame_skia.cc FILE: ../../../flutter/impeller/typographer/backends/skia/text_frame_skia.h FILE: ../../../flutter/impeller/typographer/backends/skia/text_render_context_skia.cc diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0283476338b07..734fa85a4febd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 90fef1e8cf0c47274670b889cca02cb3 +Signature: bc287973323fd28c3cf7f9372e408b18 UNUSED LICENSES: @@ -651,8 +651,17 @@ FILE: ../../../third_party/skia/BUILD.bazel FILE: ../../../third_party/skia/CQ_COMMITTERS FILE: ../../../third_party/skia/DEPS FILE: ../../../third_party/skia/DIR_METADATA -FILE: ../../../third_party/skia/OWNERS.android FILE: ../../../third_party/skia/WORKSPACE.bazel +FILE: ../../../third_party/skia/animations/checkbox.xml +FILE: ../../../third_party/skia/animations/chest#1.jpg +FILE: ../../../third_party/skia/animations/fire#1.jpg +FILE: ../../../third_party/skia/animations/images#1.xml +FILE: ../../../third_party/skia/animations/jet#1.jpg +FILE: ../../../third_party/skia/animations/lines#1.xml +FILE: ../../../third_party/skia/animations/movie#1.xml +FILE: ../../../third_party/skia/animations/paths#1.xml +FILE: ../../../third_party/skia/animations/redcross#1.jpg +FILE: ../../../third_party/skia/animations/text#1.xml FILE: ../../../third_party/skia/bazel/BUILD.bazel FILE: ../../../third_party/skia/bazel/cc_binary_with_flags.bzl FILE: ../../../third_party/skia/bazel/common_config_settings/BUILD.bazel @@ -754,6 +763,16 @@ FILE: ../../../third_party/skia/experimental/tskit/package.json FILE: ../../../third_party/skia/experimental/tskit/tsconfig.json FILE: ../../../third_party/skia/experimental/wasm-hello-world/BUILD.bazel FILE: ../../../third_party/skia/experimental/wasm-hello-world/hello_world.html +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/cpu.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/anim.mskp +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/index.html +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger/sample.skp +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/externs.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/fonts/NotoMono-Regular.ttf +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/gpu.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/helper.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/karma.conf.js +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/package.json FILE: ../../../third_party/skia/experimental/webgpu-bazel/example/index.html FILE: ../../../third_party/skia/experimental/webgpu-bazel/src/BUILD FILE: ../../../third_party/skia/gm/BUILD.bazel @@ -784,7 +803,6 @@ FILE: ../../../third_party/skia/include/private/BUILD.bazel FILE: ../../../third_party/skia/include/private/chromium/BUILD.bazel FILE: ../../../third_party/skia/include/sksl/BUILD.bazel FILE: ../../../third_party/skia/include/svg/BUILD.bazel -FILE: ../../../third_party/skia/include/third_party/BUILD.bazel FILE: ../../../third_party/skia/include/utils/BUILD.bazel FILE: ../../../third_party/skia/include/utils/mac/BUILD.bazel FILE: ../../../third_party/skia/infra/bots/BUILD.bazel @@ -1892,6 +1910,7 @@ FILE: ../../../third_party/skia/bench/StreamBench.cpp FILE: ../../../third_party/skia/bench/SwizzleBench.cpp FILE: ../../../third_party/skia/bench/TileImageFilterBench.cpp FILE: ../../../third_party/skia/bench/VertexColorSpaceBench.cpp +FILE: ../../../third_party/skia/experimental/xps_to_png/xps_to_png.cs FILE: ../../../third_party/skia/fuzz/Fuzz.cpp FILE: ../../../third_party/skia/fuzz/Fuzz.h FILE: ../../../third_party/skia/fuzz/FuzzGradients.cpp @@ -3247,7 +3266,7 @@ FILE: ../../../third_party/skia/src/effects/imagefilters/SkComposeImageFilter.cp FILE: ../../../third_party/skia/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkDropShadowImageFilter.cpp FILE: ../../../third_party/skia/src/effects/imagefilters/SkTileImageFilter.cpp -FILE: ../../../third_party/skia/src/gpu/Blend.h +FILE: ../../../third_party/skia/src/gpu/GrBlend.h FILE: ../../../third_party/skia/src/gpu/GrCaps.h FILE: ../../../third_party/skia/src/gpu/GrGeometryProcessor.h FILE: ../../../third_party/skia/src/gpu/GrPaint.cpp @@ -3326,6 +3345,7 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/BulkRectBench.cpp FILE: ../../../third_party/skia/bench/DDLRecorderBench.cpp FILE: ../../../third_party/skia/bench/SkSLBench.cpp +FILE: ../../../third_party/skia/experimental/wasm-skp-debugger/debugger_bindings.cpp FILE: ../../../third_party/skia/gm/asyncrescaleandread.cpp FILE: ../../../third_party/skia/gm/crbug_908646.cpp FILE: ../../../third_party/skia/gm/crbug_946965.cpp @@ -3445,6 +3465,7 @@ FILE: ../../../third_party/skia/bench/PathOpsBench.cpp FILE: ../../../third_party/skia/bench/PolyUtilsBench.cpp FILE: ../../../third_party/skia/bench/ShaderMaskFilterBench.cpp FILE: ../../../third_party/skia/bench/TypefaceBench.cpp +FILE: ../../../third_party/skia/experimental/pvg/draw_msg.proto FILE: ../../../third_party/skia/fuzz/FuzzCommon.cpp FILE: ../../../third_party/skia/fuzz/FuzzPathMeasure.cpp FILE: ../../../third_party/skia/fuzz/FuzzRegionOp.cpp @@ -4182,6 +4203,21 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/FindCubicConvex180ChopsBench.cpp FILE: ../../../third_party/skia/bench/GlyphQuadFillBench.cpp FILE: ../../../third_party/skia/bench/TessellateBench.cpp +FILE: ../../../third_party/skia/experimental/skrive/include/SkRive.h +FILE: ../../../third_party/skia/experimental/skrive/src/Artboard.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Color.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Component.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Drawable.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Ellipse.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Node.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Paint.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Rectangle.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/Shape.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/SkRive.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/reader/BinaryReader.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/reader/JsonReader.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/reader/StreamReader.cpp +FILE: ../../../third_party/skia/experimental/skrive/src/reader/StreamReader.h FILE: ../../../third_party/skia/fuzz/FuzzSkParagraph.cpp FILE: ../../../third_party/skia/gm/3d.cpp FILE: ../../../third_party/skia/gm/bc1_transparency.cpp @@ -6091,8 +6127,6 @@ FILE: ../../../third_party/skia/experimental/graphite/src/UploadTask.h FILE: ../../../third_party/skia/experimental/graphite/src/mtl/MtlSampler.h FILE: ../../../third_party/skia/experimental/graphite/src/mtl/MtlSampler.mm FILE: ../../../third_party/skia/gm/bug12866.cpp -FILE: ../../../third_party/skia/include/core/SkAlphaType.h -FILE: ../../../third_party/skia/include/core/SkColorType.h FILE: ../../../third_party/skia/include/private/SkUniquePaintParamsID.h FILE: ../../../third_party/skia/src/core/SkBuiltInCodeSnippetID.h FILE: ../../../third_party/skia/src/core/SkDebugUtils.h @@ -6100,8 +6134,6 @@ FILE: ../../../third_party/skia/src/core/SkKeyHelpers.cpp FILE: ../../../third_party/skia/src/core/SkKeyHelpers.h FILE: ../../../third_party/skia/src/core/SkPaintParamsKey.cpp FILE: ../../../third_party/skia/src/core/SkPaintParamsKey.h -FILE: ../../../third_party/skia/src/core/SkPipelineData.cpp -FILE: ../../../third_party/skia/src/core/SkPipelineData.h FILE: ../../../third_party/skia/src/core/SkSLTypeShared.h FILE: ../../../third_party/skia/src/core/SkShaderCodeDictionary.cpp FILE: ../../../third_party/skia/src/core/SkShaderCodeDictionary.h @@ -6178,6 +6210,7 @@ FILE: ../../../third_party/skia/src/gpu/ops/PathStencilCoverOp.h FILE: ../../../third_party/skia/src/gpu/ops/PathTessellateOp.cpp FILE: ../../../third_party/skia/src/gpu/ops/PathTessellateOp.h FILE: ../../../third_party/skia/src/gpu/tessellate/AffineMatrix.h +FILE: ../../../third_party/skia/src/gpu/tessellate/PatchWriter.cpp FILE: ../../../third_party/skia/src/gpu/tessellate/PatchWriter.h FILE: ../../../third_party/skia/src/gpu/tessellate/PathCurveTessellator.cpp FILE: ../../../third_party/skia/src/gpu/tessellate/PathCurveTessellator.h From a10d261bf02f70cadeefba00cf72297e98a2c44c Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 14 Mar 2022 13:28:31 -0700 Subject: [PATCH 16/20] Update licenses --- ci/licenses_golden/licenses_flutter | 34 ++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index c1c1f6a9b0621..77cd371f9113d 100755 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -402,6 +402,8 @@ FILE: ../../../flutter/impeller/base/allocation.cc FILE: ../../../flutter/impeller/base/allocation.h FILE: ../../../flutter/impeller/base/backend_cast.h FILE: ../../../flutter/impeller/base/base.h +FILE: ../../../flutter/impeller/base/comparable.cc +FILE: ../../../flutter/impeller/base/comparable.h FILE: ../../../flutter/impeller/base/config.h FILE: ../../../flutter/impeller/base/promise.cc FILE: ../../../flutter/impeller/base/promise.h @@ -426,10 +428,22 @@ FILE: ../../../flutter/impeller/display_list/display_list_dispatcher.cc FILE: ../../../flutter/impeller/display_list/display_list_dispatcher.h FILE: ../../../flutter/impeller/display_list/display_list_unittests.cc FILE: ../../../flutter/impeller/docs/shader_pipeline.png -FILE: ../../../flutter/impeller/entity/content_context.cc -FILE: ../../../flutter/impeller/entity/content_context.h -FILE: ../../../flutter/impeller/entity/contents.cc -FILE: ../../../flutter/impeller/entity/contents.h +FILE: ../../../flutter/impeller/entity/contents/clip_contents.cc +FILE: ../../../flutter/impeller/entity/contents/clip_contents.h +FILE: ../../../flutter/impeller/entity/contents/content_context.cc +FILE: ../../../flutter/impeller/entity/contents/content_context.h +FILE: ../../../flutter/impeller/entity/contents/contents.cc +FILE: ../../../flutter/impeller/entity/contents/contents.h +FILE: ../../../flutter/impeller/entity/contents/linear_gradient_contents.cc +FILE: ../../../flutter/impeller/entity/contents/linear_gradient_contents.h +FILE: ../../../flutter/impeller/entity/contents/solid_color_contents.cc +FILE: ../../../flutter/impeller/entity/contents/solid_color_contents.h +FILE: ../../../flutter/impeller/entity/contents/solid_stroke_contents.cc +FILE: ../../../flutter/impeller/entity/contents/solid_stroke_contents.h +FILE: ../../../flutter/impeller/entity/contents/text_contents.cc +FILE: ../../../flutter/impeller/entity/contents/text_contents.h +FILE: ../../../flutter/impeller/entity/contents/texture_contents.cc +FILE: ../../../flutter/impeller/entity/contents/texture_contents.h FILE: ../../../flutter/impeller/entity/entity.cc FILE: ../../../flutter/impeller/entity/entity.h FILE: ../../../flutter/impeller/entity/entity_pass.cc @@ -462,6 +476,7 @@ FILE: ../../../flutter/impeller/fixtures/test_texture.vert FILE: ../../../flutter/impeller/fixtures/types.h FILE: ../../../flutter/impeller/geometry/color.cc FILE: ../../../flutter/impeller/geometry/color.h +FILE: ../../../flutter/impeller/geometry/constants.cc FILE: ../../../flutter/impeller/geometry/constants.h FILE: ../../../flutter/impeller/geometry/geometry_unittests.cc FILE: ../../../flutter/impeller/geometry/geometry_unittests.h @@ -490,6 +505,8 @@ FILE: ../../../flutter/impeller/geometry/type_traits.cc FILE: ../../../flutter/impeller/geometry/type_traits.h FILE: ../../../flutter/impeller/geometry/vector.cc FILE: ../../../flutter/impeller/geometry/vector.h +FILE: ../../../flutter/impeller/image/backends/skia/compressed_image_skia.cc +FILE: ../../../flutter/impeller/image/backends/skia/compressed_image_skia.h FILE: ../../../flutter/impeller/image/compressed_image.cc FILE: ../../../flutter/impeller/image/compressed_image.h FILE: ../../../flutter/impeller/image/decompressed_image.cc @@ -542,8 +559,6 @@ FILE: ../../../flutter/impeller/renderer/command.cc FILE: ../../../flutter/impeller/renderer/command.h FILE: ../../../flutter/impeller/renderer/command_buffer.cc FILE: ../../../flutter/impeller/renderer/command_buffer.h -FILE: ../../../flutter/impeller/renderer/comparable.cc -FILE: ../../../flutter/impeller/renderer/comparable.h FILE: ../../../flutter/impeller/renderer/context.cc FILE: ../../../flutter/impeller/renderer/context.h FILE: ../../../flutter/impeller/renderer/device_buffer.cc @@ -587,8 +602,6 @@ FILE: ../../../flutter/impeller/renderer/shader_types.cc FILE: ../../../flutter/impeller/renderer/shader_types.h FILE: ../../../flutter/impeller/renderer/surface.cc FILE: ../../../flutter/impeller/renderer/surface.h -FILE: ../../../flutter/impeller/renderer/tessellator.cc -FILE: ../../../flutter/impeller/renderer/tessellator.h FILE: ../../../flutter/impeller/renderer/texture.cc FILE: ../../../flutter/impeller/renderer/texture.h FILE: ../../../flutter/impeller/renderer/texture_descriptor.cc @@ -599,6 +612,11 @@ FILE: ../../../flutter/impeller/renderer/vertex_buffer_builder.cc FILE: ../../../flutter/impeller/renderer/vertex_buffer_builder.h FILE: ../../../flutter/impeller/renderer/vertex_descriptor.cc FILE: ../../../flutter/impeller/renderer/vertex_descriptor.h +FILE: ../../../flutter/impeller/tessellator/c/tessellator.cc +FILE: ../../../flutter/impeller/tessellator/c/tessellator.h +FILE: ../../../flutter/impeller/tessellator/dart/lib/tessellator.dart +FILE: ../../../flutter/impeller/tessellator/tessellator.cc +FILE: ../../../flutter/impeller/tessellator/tessellator.h FILE: ../../../flutter/impeller/typographer/backends/skia/text_frame_skia.cc FILE: ../../../flutter/impeller/typographer/backends/skia/text_frame_skia.h FILE: ../../../flutter/impeller/typographer/backends/skia/text_render_context_skia.cc From 6f265f5f58cab77dee0e3ff0542fa8cdbc7c1a57 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 14 Mar 2022 14:25:07 -0700 Subject: [PATCH 17/20] Update licenses --- ci/licenses_golden/licenses_third_party | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 0263a7b30de42..e57698fb0dbe2 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: a07a673451b5ad6413349fcdfeaff66f +Signature: b30343ab114cc1be004c17014fd11d08 UNUSED LICENSES: @@ -4309,7 +4309,7 @@ POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: angle -ORIGIN: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.c + ../../../fuchsia/sdk/mac/LICENSE +ORIGIN: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.c + ../../../fuchsia/sdk/linux/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.c FILE: ../../../third_party/angle/src/common/fuchsia_egl/fuchsia_egl.h From d0fa2f47147298a128c7e806e266d74e07721b40 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 14 Mar 2022 15:24:12 -0700 Subject: [PATCH 18/20] Update licenses --- ci/licenses_golden/licenses_third_party | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index de74ae01bc051..4dbc7a9fdcdc7 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 80ac7a3b149c4cac0af4058b3b4a4bb6 +Signature: 63800bcd154af7272865369dc774c2c4 UNUSED LICENSES: From 6528034036a8d6cc8c2739c2fba26306615dfa12 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Tue, 15 Mar 2022 16:33:18 -0700 Subject: [PATCH 19/20] Clean up logic and undo formatting --- lib/web_ui/dev/steps/compile_tests_step.dart | 44 ++++++++------------ 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/lib/web_ui/dev/steps/compile_tests_step.dart b/lib/web_ui/dev/steps/compile_tests_step.dart index 10e9c10cb1672..a1c048d0d80ad 100644 --- a/lib/web_ui/dev/steps/compile_tests_step.dart +++ b/lib/web_ui/dev/steps/compile_tests_step.dart @@ -110,8 +110,7 @@ Future copySkiaTestImages() async { 'images', )); - for (final io.File imageFile - in testImagesDir.listSync(recursive: true).whereType()) { + for (final io.File imageFile in testImagesDir.listSync(recursive: true).whereType()) { final io.File destination = io.File(pathlib.join( environment.webUiBuildDir.path, 'test_images', @@ -128,34 +127,16 @@ Future copyCanvasKitFiles() async { io.File(pathlib.join(environment.canvasKitOutDir.path, 'canvaskit.wasm')); final bool builtLocalCanvasKit = localCanvasKitWasm.existsSync(); - final io.Directory canvasKitDir = io.Directory(pathlib.join( - environment.engineSrcDir.path, - 'third_party', - 'web_dependencies', + final io.Directory targetDir = io.Directory(pathlib.join( + environment.webUiBuildDir.path, 'canvaskit', )); - Iterable canvasKitFiles; if (builtLocalCanvasKit) { - canvasKitFiles = [ + final List canvasKitFiles = [ localCanvasKitWasm, io.File(pathlib.join(environment.canvasKitOutDir.path, 'canvaskit.js')), ]; - } else { - canvasKitFiles = canvasKitDir - .listSync(recursive: true, followLinks: true) - .whereType(); - } - - final io.Directory targetDir = io.Directory(pathlib.join( - environment.webUiBuildDir.path, - 'canvaskit', - )); - - // If we have a local canvaskit build, then copy canvaskit.js and - // canvaskit.wasm to the output dir and the "profiling" sub-directory. - if (builtLocalCanvasKit) { - print('Copying CanvasKit from local build'); for (final io.File file in canvasKitFiles) { final io.File normalTargetFile = io.File(pathlib.join( targetDir.path, @@ -172,6 +153,17 @@ Future copyCanvasKitFiles() async { await file.copy(profileTargetFile.path); } } else { + final io.Directory canvasKitDir = io.Directory(pathlib.join( + environment.engineSrcDir.path, + 'third_party', + 'web_dependencies', + 'canvaskit', + )); + + final Iterable canvasKitFiles = canvasKitDir + .listSync(recursive: true, followLinks: true) + .whereType(); + for (final io.File file in canvasKitFiles) { final String relativePath = pathlib.relative(file.path, from: canvasKitDir.path); @@ -220,8 +212,7 @@ Future compileTests(List testFiles) async { } // Maximum number of concurrent dart2js processes to use. -const int _dart2jsConcurrency = - int.fromEnvironment('FELT_DART2JS_CONCURRENCY', defaultValue: 8); +const int _dart2jsConcurrency = int.fromEnvironment('FELT_DART2JS_CONCURRENCY', defaultValue: 8); final Pool _dart2jsPool = Pool(_dart2jsConcurrency); @@ -266,7 +257,8 @@ Future compileUnitTest(FilePath input, ); final io.Directory directoryToTarget = io.Directory(pathlib.join( - environment.webUiBuildDir.path, pathlib.dirname(input.relativeToWebUi))); + environment.webUiBuildDir.path, + pathlib.dirname(input.relativeToWebUi))); if (!directoryToTarget.existsSync()) { directoryToTarget.createSync(recursive: true); From c19295c09333aa2a7514384a33cb1be2aa346abf Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Tue, 15 Mar 2022 16:35:50 -0700 Subject: [PATCH 20/20] Undo formatting --- lib/web_ui/dev/steps/compile_tests_step.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/web_ui/dev/steps/compile_tests_step.dart b/lib/web_ui/dev/steps/compile_tests_step.dart index a1c048d0d80ad..bfc85f5ef3186 100644 --- a/lib/web_ui/dev/steps/compile_tests_step.dart +++ b/lib/web_ui/dev/steps/compile_tests_step.dart @@ -249,8 +249,7 @@ Future _compileTestsInParallel({ /// directory before test are build. See [_copyFilesFromTestToBuild]. /// /// Later the extra files will be deleted in [_cleanupExtraFilesUnderTestDir]. -Future compileUnitTest(FilePath input, - {required bool forCanvasKit}) async { +Future compileUnitTest(FilePath input, {required bool forCanvasKit}) async { final String targetFileName = pathlib.join( environment.webUiBuildDir.path, '${input.relativeToWebUi}.browser_test.dart.js',