From 39140160f08cab17cdbba10d9bc3be6687c36486 Mon Sep 17 00:00:00 2001 From: godofredoc Date: Sat, 19 Feb 2022 22:24:02 -0800 Subject: [PATCH 1/3] GN targets to create flutter_web_sdk. (#31556) --- build/archives/BUILD.gn | 7 ++++- common/config.gni | 22 +++++++------ web_sdk/BUILD.gn | 69 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 10 deletions(-) diff --git a/build/archives/BUILD.gn b/build/archives/BUILD.gn index b5fda38018087..c052a35e0f844 100644 --- a/build/archives/BUILD.gn +++ b/build/archives/BUILD.gn @@ -1,7 +1,7 @@ import("//flutter/build/zip_bundle.gni") zip_bundle("artifacts") { - output = "$host_os-$target_cpu/artifacts.zip" + output = "$host_os_cpu_name/artifacts.zip" deps = [ "//flutter/flutter_frontend_server:frontend_server", "//flutter/lib/snapshot:generate_snapshot_bin", @@ -82,3 +82,8 @@ if (build_engine_artifacts && flutter_prebuilt_dart_sdk) { [ "$root_out_dir/zip_archives/dart-sdk-$prebuilt_dart_sdk_config" ] } } + +# Archives Flutter Web SDK +group("flutter_web_sdk") { + deps = [ "//flutter/web_sdk:flutter_web_sdk_archive" ] +} diff --git a/common/config.gni b/common/config.gni index dd4c2a60da4aa..18b8fa63850af 100644 --- a/common/config.gni +++ b/common/config.gni @@ -66,7 +66,18 @@ if (is_ios || is_mac) { flutter_cflags_objcc_arc = flutter_cflags_objc_arc } -# prebuilt Dart SDK location +# A combo of host os name and cpu is used in several locations to +# generate the names of the archived artifacts. +_host_os_name = host_os +if (_host_os_name == "mac") { + _host_os_name = "macos" +} else if (_host_os_name == "win" || _host_os_name == "winuwp") { + _host_os_name = "windows" +} + +host_os_cpu_name = "$_host_os_name-$host_cpu" + +# Prebuilt Dart SDK location if (flutter_prebuilt_dart_sdk) { _target_os_name = target_os @@ -76,15 +87,8 @@ if (flutter_prebuilt_dart_sdk) { _target_os_name = "windows" } - _host_os_name = host_os - if (_host_os_name == "mac") { - _host_os_name = "macos" - } else if (_host_os_name == "win" || _host_os_name == "winuwp") { - _host_os_name = "windows" - } - _target_prebuilt_dart_sdk_config = "$_target_os_name-$target_cpu" - _host_prebuilt_dart_sdk_config = "$_host_os_name-$host_cpu" + _host_prebuilt_dart_sdk_config = "$host_os_cpu_name" _target_prebuilt_dart_sdk_archive = "//flutter/prebuilts/dartsdk-$_target_prebuilt_dart_sdk_config-release.zip" _host_prebuilt_dart_sdk_archive = "//flutter/prebuilts/dartsdk-$_host_prebuilt_dart_sdk_config-release.zip" diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index 55260ebaf0433..70b3b1236767f 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//flutter/build/zip_bundle.gni") import("//flutter/common/config.gni") import("//third_party/dart/build/dart/dart_action.gni") @@ -256,6 +257,8 @@ _dartdevc("flutter_dartdevc_kernel_sdk") { outputs = [ "$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js", "$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js.map", + "$root_out_dir/flutter_web_sdk/kernel/legacy/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/legacy/dart_sdk.js.map", ] args = [ @@ -300,6 +303,8 @@ _dartdevc("flutter_dartdevc_canvaskit_kernel_sdk") { outputs = [ "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit/dart_sdk.js", "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit/dart_sdk.js.map", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit/dart_sdk.js.map", ] args = [ @@ -346,6 +351,8 @@ _dartdevc("flutter_dartdevc_canvaskit_html_kernel_sdk") { outputs = [ "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit-html/dart_sdk.js", "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit-html/dart_sdk.js.map", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit-html/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit-html/dart_sdk.js.map", ] args = [ @@ -392,6 +399,8 @@ _dartdevc("flutter_dartdevc_kernel_sdk_sound") { outputs = [ "$root_out_dir/flutter_web_sdk/kernel/amd-sound/dart_sdk.js", "$root_out_dir/flutter_web_sdk/kernel/amd-sound/dart_sdk.js.map", + "$root_out_dir/flutter_web_sdk/kernel/legacy-sound/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/legacy-sound/dart_sdk.js.map", ] args = [ @@ -437,6 +446,8 @@ _dartdevc("flutter_dartdevc_canvaskit_kernel_sdk_sound") { outputs = [ "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit-sound/dart_sdk.js", "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit-sound/dart_sdk.js.map", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit-sound/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit-sound/dart_sdk.js.map", ] args = [ @@ -483,6 +494,8 @@ _dartdevc("flutter_dartdevc_canvaskit_html_kernel_sdk_sound") { outputs = [ "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit-html-sound/dart_sdk.js", "$root_out_dir/flutter_web_sdk/kernel/amd-canvaskit-html-sound/dart_sdk.js.map", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit-html-sound/dart_sdk.js", + "$root_out_dir/flutter_web_sdk/kernel/legacy-canvaskit-html-sound/dart_sdk.js.map", ] args = [ @@ -551,3 +564,59 @@ _kernel_worker("flutter_dartdevc_kernel_sdk_outline_sound") { "dart:_engine", ] } + +# Archives Flutter Web SDK +zip_bundle("flutter_web_sdk_archive") { + output = "flutter-web-sdk-${host_os_cpu_name}.zip" + deps = [ + ":flutter_dartdevc_canvaskit_html_kernel_sdk", + ":flutter_dartdevc_canvaskit_html_kernel_sdk_sound", + ":flutter_dartdevc_canvaskit_kernel_sdk", + ":flutter_dartdevc_canvaskit_kernel_sdk_sound", + ":flutter_dartdevc_kernel_sdk", + ":flutter_dartdevc_kernel_sdk_outline", + ":flutter_dartdevc_kernel_sdk_outline_sound", + ":flutter_dartdevc_kernel_sdk_sound", + ":web_engine_sources", + ":web_ui_library", + ":web_ui_sources", + ] + sources = get_target_outputs(":flutter_dartdevc_canvaskit_html_kernel_sdk") + sources += + get_target_outputs(":flutter_dartdevc_canvaskit_html_kernel_sdk_sound") + sources += get_target_outputs(":flutter_dartdevc_canvaskit_kernel_sdk") + sources += get_target_outputs(":flutter_dartdevc_canvaskit_kernel_sdk_sound") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_outline") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_outline_sound") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_sound") + sources += get_target_outputs(":web_ui_library") + tmp_files = [] + foreach(source, sources) { + tmp_files += [ + { + source = source + destination = rebase_path(source, "$root_build_dir") + }, + ] + } + foreach(source, web_ui_sources) { + rebased_path = rebase_path(source, "//flutter/lib/web_ui/lib") + tmp_files += [ + { + source = source + destination = "flutter_web_sdk/lib/ui/$rebased_path" + }, + ] + } + foreach(source, web_engine_sources) { + rebased_path = rebase_path(source, "//flutter/lib/web_ui/lib/src") + tmp_files += [ + { + source = source + destination = "flutter_web_sdk/lib/_engine/$rebased_path" + }, + ] + } + files = tmp_files +} From d3760509dd2433befda8e9505c5ffec09bc93a51 Mon Sep 17 00:00:00 2001 From: godofredoc Date: Tue, 22 Feb 2022 13:59:09 -0800 Subject: [PATCH 2/3] Fix gn problem impacting fuchsia builds. (#31615) --- build/archives/BUILD.gn | 6 ++- web_sdk/BUILD.gn | 105 +++++++++++++++++++++------------------- 2 files changed, 58 insertions(+), 53 deletions(-) diff --git a/build/archives/BUILD.gn b/build/archives/BUILD.gn index c052a35e0f844..672a08d9ddaaf 100644 --- a/build/archives/BUILD.gn +++ b/build/archives/BUILD.gn @@ -84,6 +84,8 @@ if (build_engine_artifacts && flutter_prebuilt_dart_sdk) { } # Archives Flutter Web SDK -group("flutter_web_sdk") { - deps = [ "//flutter/web_sdk:flutter_web_sdk_archive" ] +if (!is_fuchsia) { + group("flutter_web_sdk") { + deps = [ "//flutter/web_sdk:flutter_web_sdk_archive" ] + } } diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index 70b3b1236767f..96688bbad0e26 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -566,57 +566,60 @@ _kernel_worker("flutter_dartdevc_kernel_sdk_outline_sound") { } # Archives Flutter Web SDK -zip_bundle("flutter_web_sdk_archive") { - output = "flutter-web-sdk-${host_os_cpu_name}.zip" - deps = [ - ":flutter_dartdevc_canvaskit_html_kernel_sdk", - ":flutter_dartdevc_canvaskit_html_kernel_sdk_sound", - ":flutter_dartdevc_canvaskit_kernel_sdk", - ":flutter_dartdevc_canvaskit_kernel_sdk_sound", - ":flutter_dartdevc_kernel_sdk", - ":flutter_dartdevc_kernel_sdk_outline", - ":flutter_dartdevc_kernel_sdk_outline_sound", - ":flutter_dartdevc_kernel_sdk_sound", - ":web_engine_sources", - ":web_ui_library", - ":web_ui_sources", - ] - sources = get_target_outputs(":flutter_dartdevc_canvaskit_html_kernel_sdk") - sources += - get_target_outputs(":flutter_dartdevc_canvaskit_html_kernel_sdk_sound") - sources += get_target_outputs(":flutter_dartdevc_canvaskit_kernel_sdk") - sources += get_target_outputs(":flutter_dartdevc_canvaskit_kernel_sdk_sound") - sources += get_target_outputs(":flutter_dartdevc_kernel_sdk") - sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_outline") - sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_outline_sound") - sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_sound") - sources += get_target_outputs(":web_ui_library") - tmp_files = [] - foreach(source, sources) { - tmp_files += [ - { - source = source - destination = rebase_path(source, "$root_build_dir") - }, - ] - } - foreach(source, web_ui_sources) { - rebased_path = rebase_path(source, "//flutter/lib/web_ui/lib") - tmp_files += [ - { - source = source - destination = "flutter_web_sdk/lib/ui/$rebased_path" - }, - ] - } - foreach(source, web_engine_sources) { - rebased_path = rebase_path(source, "//flutter/lib/web_ui/lib/src") - tmp_files += [ - { - source = source - destination = "flutter_web_sdk/lib/_engine/$rebased_path" - }, +if (!is_fuchsia) { + zip_bundle("flutter_web_sdk_archive") { + output = "flutter-web-sdk-${host_os_cpu_name}.zip" + deps = [ + ":flutter_dartdevc_canvaskit_html_kernel_sdk", + ":flutter_dartdevc_canvaskit_html_kernel_sdk_sound", + ":flutter_dartdevc_canvaskit_kernel_sdk", + ":flutter_dartdevc_canvaskit_kernel_sdk_sound", + ":flutter_dartdevc_kernel_sdk", + ":flutter_dartdevc_kernel_sdk_outline", + ":flutter_dartdevc_kernel_sdk_outline_sound", + ":flutter_dartdevc_kernel_sdk_sound", + ":web_engine_sources", + ":web_ui_library", + ":web_ui_sources", ] + sources = get_target_outputs(":flutter_dartdevc_canvaskit_html_kernel_sdk") + sources += + get_target_outputs(":flutter_dartdevc_canvaskit_html_kernel_sdk_sound") + sources += get_target_outputs(":flutter_dartdevc_canvaskit_kernel_sdk") + sources += + get_target_outputs(":flutter_dartdevc_canvaskit_kernel_sdk_sound") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_outline") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_outline_sound") + sources += get_target_outputs(":flutter_dartdevc_kernel_sdk_sound") + sources += get_target_outputs(":web_ui_library") + tmp_files = [] + foreach(source, sources) { + tmp_files += [ + { + source = source + destination = rebase_path(source, "$root_build_dir") + }, + ] + } + foreach(source, web_ui_sources) { + rebased_path = rebase_path(source, "//flutter/lib/web_ui/lib") + tmp_files += [ + { + source = source + destination = "flutter_web_sdk/lib/ui/$rebased_path" + }, + ] + } + foreach(source, web_engine_sources) { + rebased_path = rebase_path(source, "//flutter/lib/web_ui/lib/src") + tmp_files += [ + { + source = source + destination = "flutter_web_sdk/lib/_engine/$rebased_path" + }, + ] + } + files = tmp_files } - files = tmp_files } From 0fa2fd1d275a2a793dd9a45712a10dc5f95bc9aa Mon Sep 17 00:00:00 2001 From: godofredoc Date: Wed, 23 Feb 2022 19:35:20 -0800 Subject: [PATCH 3/3] Generate fonts in the expected location. (#31575) * Generate fonts in the expected location. Fonts-subset is generated directly in out/../zip_archives but the final destination is expected to be inside a folder like linux-x64. This PR generates the file directly in the expected path. Bug: https://github.com/flutter/flutter/issues/81855 * Fix font zip tests. * Revert changes to run_tests.py * Update host_os_cpu_name variable to report darwin for mac. * Fix variable names. * Calculate prebuilts path using mac instead of darwin. * Add platform to fontset path. * Fix platforms map. * Add debugging. * Add win32 to the map of artifact locations. * Use full_platform_name instead of host_os_name. * Use x32 for windows font binaries. * Fix paths for debug version in windows. * Use x64 for win32. * Remove additional logging. * Add linux2 to map of platforms. --- build/archives/BUILD.gn | 2 +- common/config.gni | 21 ++++++++++++++------- tools/font-subset/BUILD.gn | 2 +- tools/font-subset/test.py | 17 +++++++++++++++-- web_sdk/BUILD.gn | 2 +- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/build/archives/BUILD.gn b/build/archives/BUILD.gn index 672a08d9ddaaf..1afec65862c16 100644 --- a/build/archives/BUILD.gn +++ b/build/archives/BUILD.gn @@ -1,7 +1,7 @@ import("//flutter/build/zip_bundle.gni") zip_bundle("artifacts") { - output = "$host_os_cpu_name/artifacts.zip" + output = "$full_platform_name/artifacts.zip" deps = [ "//flutter/flutter_frontend_server:frontend_server", "//flutter/lib/snapshot:generate_snapshot_bin", diff --git a/common/config.gni b/common/config.gni index 18b8fa63850af..45e3cc962e5fb 100644 --- a/common/config.gni +++ b/common/config.gni @@ -68,14 +68,14 @@ if (is_ios || is_mac) { # A combo of host os name and cpu is used in several locations to # generate the names of the archived artifacts. -_host_os_name = host_os -if (_host_os_name == "mac") { - _host_os_name = "macos" -} else if (_host_os_name == "win" || _host_os_name == "winuwp") { - _host_os_name = "windows" +_platform_name = host_os +if (_platform_name == "mac") { + _platform_name = "darwin" +} else if (_platform_name == "win" || _platform_name == "winuwp") { + _platform_name = "windows" } -host_os_cpu_name = "$_host_os_name-$host_cpu" +full_platform_name = "$_platform_name-$host_cpu" # Prebuilt Dart SDK location @@ -87,8 +87,15 @@ if (flutter_prebuilt_dart_sdk) { _target_os_name = "windows" } + _host_os_name = host_os + if (_host_os_name == "mac") { + _host_os_name = "macos" + } else if (_host_os_name == "win" || _host_os_name == "winuwp") { + _host_os_name = "windows" + } + _target_prebuilt_dart_sdk_config = "$_target_os_name-$target_cpu" - _host_prebuilt_dart_sdk_config = "$host_os_cpu_name" + _host_prebuilt_dart_sdk_config = "$_host_os_name-$host_cpu" _target_prebuilt_dart_sdk_archive = "//flutter/prebuilts/dartsdk-$_target_prebuilt_dart_sdk_config-release.zip" _host_prebuilt_dart_sdk_archive = "//flutter/prebuilts/dartsdk-$_host_prebuilt_dart_sdk_config-release.zip" diff --git a/tools/font-subset/BUILD.gn b/tools/font-subset/BUILD.gn index c6c1486a150ac..ef647fff5702d 100644 --- a/tools/font-subset/BUILD.gn +++ b/tools/font-subset/BUILD.gn @@ -41,7 +41,7 @@ generated_file("_font-subset-license") { } zip_bundle("font-subset") { - output = "font-subset.zip" + output = "${full_platform_name}/font-subset.zip" font_subset_bin = "font-subset" if (is_win) { diff --git a/tools/font-subset/test.py b/tools/font-subset/test.py index 977dec352be44..fe49e67465e25 100755 --- a/tools/font-subset/test.py +++ b/tools/font-subset/test.py @@ -14,6 +14,19 @@ import sys from zipfile import ZipFile + +# Dictionary to map the platform name to the output directory +# of the font artifacts. +PLATFORM_2_PATH = { + 'darwin': 'darwin-x64', + 'linux': 'linux-x64', + 'linux2': 'linux-x64', + 'cygwin': 'windows-x64', + 'win': 'windows-x64', + 'win32': 'windows-x64', +} + + SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, '..', '..', '..')) MATERIAL_TTF = os.path.join(SCRIPT_DIR, 'fixtures', 'MaterialIcons-Regular.ttf') @@ -21,10 +34,10 @@ EXE = '.exe' if IS_WINDOWS else '' BAT = '.bat' if IS_WINDOWS else '' FONT_SUBSET = os.path.join(SRC_DIR, 'out', 'host_debug', 'font-subset' + EXE) -FONT_SUBSET_ZIP = os.path.join(SRC_DIR, 'out', 'host_debug', 'zip_archives', 'font-subset.zip') +FONT_SUBSET_ZIP = os.path.join(SRC_DIR, 'out', 'host_debug', 'zip_archives', PLATFORM_2_PATH.get(sys.platform, ''), 'font-subset.zip') if not os.path.isfile(FONT_SUBSET): FONT_SUBSET = os.path.join(SRC_DIR, 'out', 'host_debug_unopt', 'font-subset' + EXE) - FONT_SUBSET_ZIP = os.path.join(SRC_DIR, 'out', 'host_debug_unopt', 'zip_archives', 'font-subset.zip') + FONT_SUBSET_ZIP = os.path.join(SRC_DIR, 'out', 'host_debug_unopt', 'zip_archives', PLATFORM_2_PATH.get(sys.platform, ''), 'font-subset.zip') if not os.path.isfile(FONT_SUBSET): raise Exception('Could not locate font-subset%s in host_debug or host_debug_unopt - build before running this script.' % EXE) diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index 96688bbad0e26..d285b7e1f9bae 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -568,7 +568,7 @@ _kernel_worker("flutter_dartdevc_kernel_sdk_outline_sound") { # Archives Flutter Web SDK if (!is_fuchsia) { zip_bundle("flutter_web_sdk_archive") { - output = "flutter-web-sdk-${host_os_cpu_name}.zip" + output = "flutter-web-sdk-${full_platform_name}.zip" deps = [ ":flutter_dartdevc_canvaskit_html_kernel_sdk", ":flutter_dartdevc_canvaskit_html_kernel_sdk_sound",