From f0bf49559444e3ee66d9d208d4b25ec2d442b8e6 Mon Sep 17 00:00:00 2001 From: John McDole Date: Wed, 18 Dec 2024 12:18:06 -0800 Subject: [PATCH] Trigger Build Part Deux (#160481) Hello, Monorepo Part Deux - after adding commit to datastore. --- .ci.yaml | 16 +++- .github/labeler.yml | 3 +- bin/internal/README.md | 20 +--- bin/internal/engine.realm | 0 bin/internal/engine.version | 1 - bin/internal/update_dart_sdk.ps1 | 43 +++++++-- bin/internal/update_dart_sdk.sh | 39 ++++++-- engine/src/.clang-format | 8 ++ engine/src/.vscode/settings.json | 20 ---- engine/src/flutter/.ci.yaml | 8 -- .../flutter/third_party/boringssl/BUILD.gn | 93 +++++++++++++++++++ 11 files changed, 188 insertions(+), 63 deletions(-) delete mode 100644 bin/internal/engine.realm delete mode 100644 bin/internal/engine.version create mode 100644 engine/src/.clang-format delete mode 100644 engine/src/.vscode/settings.json create mode 100644 engine/src/flutter/third_party/boringssl/BUILD.gn diff --git a/.ci.yaml b/.ci.yaml index fd48900dc5..ba8ad211f1 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -802,12 +802,14 @@ targets: - name: Linux fuchsia_precache recipe: flutter/flutter_drone timeout: 60 + presubmit: false properties: shard: fuchsia_precache tags: > ["framework", "hostonly", "shard", "linux"] runIf: - - bin/internal/engine.version + - engine/** + - DEPS - .ci.yaml - name: Linux gradle_desugar_classes_test @@ -962,6 +964,7 @@ targets: - name: Linux build_android_host_app_with_module_source recipe: devicelab/devicelab_drone timeout: 60 + presubmit: false properties: dependencies: >- [ @@ -1156,7 +1159,8 @@ targets: tags: > ["framework", "hostonly", "shard", "linux"] runIf: - - bin/internal/engine.version + - engine/** + - DEPS - .ci.yaml - name: Linux tool_integration_tests_1_6 @@ -2606,7 +2610,8 @@ targets: # presubmit during engine rolls. This test is the *only* automated e2e # test for external textures for the engine, it should never break. runIf: - - bin/internal/engine.version + - engine/** + - DEPS - .ci.yaml properties: tags: > @@ -2621,7 +2626,8 @@ targets: # presubmit during engine rolls. This test is the *only* automated e2e # test for external textures for the engine, it should never break. runIf: - - bin/internal/engine.version + - engine/** + - DEPS - .ci.yaml properties: tags: > @@ -4111,6 +4117,7 @@ targets: - name: Mac build_android_host_app_with_module_source recipe: devicelab/devicelab_drone timeout: 60 + presubmit: false properties: dependencies: >- [ @@ -5791,6 +5798,7 @@ targets: - name: Windows build_android_host_app_with_module_source recipe: devicelab/devicelab_drone timeout: 60 + presubmit: false properties: dependencies: >- [ diff --git a/.github/labeler.yml b/.github/labeler.yml index 35c9165ecd..2b57f9bc91 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -63,7 +63,8 @@ engine: - changed-files: - any-glob-to-any-file: - - bin/internal/engine.version + - DEPS + - engine/**/* - docs/engine/**/* 'f: cupertino': diff --git a/bin/internal/README.md b/bin/internal/README.md index 8e7047f9d2..dcb88130ce 100644 --- a/bin/internal/README.md +++ b/bin/internal/README.md @@ -1,23 +1,11 @@ -## Flutter SDK dependency versions +# Flutter SDK dependency versions The files in this directory specifies pinned versions of various dependencies of the flutter SDK. -The `bin/internal/engine.version` file controls which version of the -Flutter engine to use. The file contains the commit hash of a commit -in the repository. That hash must -have successfully been compiled on - and had its artifacts -(the binaries that run on Android and iOS, the compiler, etc) -successfully uploaded to Google Cloud Storage. - -The `/bin/internal/engine.merge_method` file controls how we merge a -pull request created by the engine auto-roller. If it's `squash`, -there's only one commit for a pull request no matter how many engine -commits there are inside that pull request. If it's `rebase`, the -number of commits in the framework is equal to the number of engine -commits in the pull request. The latter method makes it easier to -detect regressions but costs more test resources. +The `bin/internal/engine.version` file controls where to find compiled artifacts +of the engine. These artifacts are compiled in the Merge Queue for every commit +in the flutter repository. The `bin/internal/flutter_packages.version` file specifies the version of the `flutter/packages` repository to be used for testing. The diff --git a/bin/internal/engine.realm b/bin/internal/engine.realm deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/bin/internal/engine.version b/bin/internal/engine.version deleted file mode 100644 index e6e7770a6b..0000000000 --- a/bin/internal/engine.version +++ /dev/null @@ -1 +0,0 @@ -6a75cb6a6a57ae5a05309a43f0fba6cd50c65752 diff --git a/bin/internal/update_dart_sdk.ps1 b/bin/internal/update_dart_sdk.ps1 index dd7cafa53b..5f3c6ee2bb 100644 --- a/bin/internal/update_dart_sdk.ps1 +++ b/bin/internal/update_dart_sdk.ps1 @@ -20,14 +20,45 @@ $cachePath = "$flutterRoot\bin\cache" $dartSdkPath = "$cachePath\dart-sdk" $dartSdkLicense = "$cachePath\LICENSE.dart_sdk_archive.md" $engineStamp = "$cachePath\engine-dart-sdk.stamp" -$engineRealm = (Get-Content "$flutterRoot\bin\internal\engine.realm") +$engineRealm = "" -if (Test-Path "$flutterRoot\bin\internal\engine.version") { - $engineVersion = (Get-Content "$flutterRoot\bin\internal\engine.version") -} else { +# Test for fusion repository +if ((Test-Path "$flutterRoot\DEPS" -PathType Leaf) -and (Test-Path "$flutterRoot\engine\src\.gn" -PathType Leaf)) { # Calculate the engine hash from tracked git files. - $lsTree = ((git ls-tree -r HEAD engine DEPS) | Out-String).Replace("`r`n", "`n") - $engineVersion = (Get-FileHash -InputStream ([System.IO.MemoryStream] [System.Text.Encoding]::UTF8.GetBytes($lsTree)) -Algorithm SHA1 | ForEach-Object { $_.Hash }).ToLower() + $branch = (git -C "$flutterRoot" rev-parse --abbrev-ref HEAD) + if ($null -eq $Env:LUCI_CONTEXT) { + $engineVersion = (git -C "$flutterRoot" merge-base HEAD upstream/master) + } + else { + $engineVersion = (git -C "$flutterRoot" rev-parse HEAD) + } + + if (($branch -ne "stable" -and $branch -ne "beta")) { + # Write the engine version out so downstream tools know what to look for. + $utf8NoBom = New-Object System.Text.UTF8Encoding($false) + [System.IO.File]::WriteAllText("$flutterRoot\bin\internal\engine.version", $engineVersion, $utf8NoBom) + + # The realm on CI is passed in. + if ($Env:FLUTTER_REALM) { + [System.IO.File]::WriteAllText("$flutterRoot\bin\internal\engine.realm", $Env:FLUTTER_REALM, $utf8NoBom) + $engineRealm = "$Env:FLUTTER_REALM" + } + else { + if (Test-Path -Path "$flutterRoot\bin\internal\engine.realm") { + $engineRealm = (Get-Content "$flutterRoot\bin\internal\engine.realm") + } + } + } + else { + # Release branch - these files will exist + $engineVersion = (Get-Content "$flutterRoot\bin\internal\engine.version") + $engineRealm = (Get-Content "$flutterRoot\bin\internal\engine.realm") + } +} +else { + # Non-fusion repository - these files will exist + $engineVersion = (Get-Content "$flutterRoot\bin\internal\engine.version") + $engineRealm = (Get-Content "$flutterRoot\bin\internal\engine.realm") } $oldDartSdkPrefix = "dart-sdk.old" diff --git a/bin/internal/update_dart_sdk.sh b/bin/internal/update_dart_sdk.sh index 5c1ea23e8b..f33de37d4e 100755 --- a/bin/internal/update_dart_sdk.sh +++ b/bin/internal/update_dart_sdk.sh @@ -19,16 +19,41 @@ FLUTTER_ROOT="$(dirname "$(dirname "$(dirname "${BASH_SOURCE[0]}")")")" DART_SDK_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk" DART_SDK_PATH_OLD="$DART_SDK_PATH.old" ENGINE_STAMP="$FLUTTER_ROOT/bin/cache/engine-dart-sdk.stamp" -ENGINE_REALM=$(cat "$FLUTTER_ROOT/bin/internal/engine.realm" | tr -d '[:space:]') +ENGINE_REALM="" OS="$(uname -s)" -ENGINE_VERSION="" -if [ -f "$FLUTTER_ROOT/bin/internal/engine.version" ]; then - ENGINE_VERSION=$(cat "$FLUTTER_ROOT/bin/internal/engine.version") +# Test for fusion repository +if [ -f "$FLUTTER_ROOT/DEPS" ] && [ -f "$FLUTTER_ROOT/engine/src/.gn" ]; then + BRANCH=$(git -C "$FLUTTER_ROOT" rev-parse --abbrev-ref HEAD) + # In a fusion repository; the engine.version comes from the git hashes. + if [ -z "${LUCI_CONTEXT}" ]; then + ENGINE_VERSION=$(git -C "$FLUTTER_ROOT" merge-base HEAD upstream/master) + else + ENGINE_VERSION=$(git -C "$FLUTTER_ROOT" rev-parse HEAD) + fi + + if [[ "$BRANCH" != "stable" && "$BRANCH" != "beta" ]]; then + # Write the engine version out so downstream tools know what to look for. + echo $ENGINE_VERSION > "$FLUTTER_ROOT/bin/internal/engine.version" + + # The realm on CI is passed in. + if [ -n "${FLUTTER_REALM}" ]; then + echo $FLUTTER_REALM > "$FLUTTER_ROOT/bin/internal/engine.realm" + ENGINE_REALM="$FLUTTER_REALM" + else + if [ -f "$FLUTTER_ROOT/bin/internal/engine.realm" ]; then + ENGINE_REALM=$(cat "$FLUTTER_ROOT/bin/internal/engine.realm" | tr -d '[:space:]') + fi + fi + else + # Release branch - these files will exist + ENGINE_VERSION=$(cat "$FLUTTER_ROOT/bin/internal/engine.version") + ENGINE_REALM=$(cat "$FLUTTER_ROOT/bin/internal/engine.realm" | tr -d '[:space:]') + fi else - # Calculate the engine hash from tracked git files. - # The array takes the first part of the sha1sum string. - ENGINE_VERSION=($(git ls-tree HEAD -r engine DEPS | sha1sum)) + # Non-fusion repository - these files will exist + ENGINE_VERSION=$(cat "$FLUTTER_ROOT/bin/internal/engine.version") + ENGINE_REALM=$(cat "$FLUTTER_ROOT/bin/internal/engine.realm" | tr -d '[:space:]') fi if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; then diff --git a/engine/src/.clang-format b/engine/src/.clang-format new file mode 100644 index 0000000000..6fdf1dc888 --- /dev/null +++ b/engine/src/.clang-format @@ -0,0 +1,8 @@ +# Defines the Chromium style for automatic reformatting. +# http://clang.llvm.org/docs/ClangFormatStyleOptions.html +BasedOnStyle: Chromium +# This defaults to 'Auto'. Explicitly set it for a while, so that +# 'vector >' in existing files gets formatted to +# 'vector>'. ('Auto' means that clang-format will only use +# 'int>>' if the file already contains at least one such instance.) +Standard: Cpp11 diff --git a/engine/src/.vscode/settings.json b/engine/src/.vscode/settings.json deleted file mode 100644 index de05f5aee6..0000000000 --- a/engine/src/.vscode/settings.json +++ /dev/null @@ -1,20 +0,0 @@ -{ -"clangd.path": "${workspaceFolder}/buildtools/mac-arm64/clang/bin/clangd", -"clangd.arguments": [ - "--compile-commands-dir=${workspaceFolder}/../out/host_debug_unopt_arm64" -], -"clang-format.executable": "${workspaceRoot}/buildtools/mac-arm64/clang/bin/clang-format", - - // "clangd.path": "flutter/buildtools/mac-arm64/clang/bin/clangd", - // "clangd.arguments": [ - // "--compile-commands-dir=out/host_debug_unopt_arm64" - // ], - // "clang-format.executable": "flutter/buildtools/mac-arm64/clang/bin/clang-format", - - "search.followSymlinks": true, - "search.quickOpen.includeHistory": true, - "search.quickOpen.includeSymbols": false, - "search.useIgnoreFiles": false, - - "editor.tabSize": 2, -} \ No newline at end of file diff --git a/engine/src/flutter/.ci.yaml b/engine/src/flutter/.ci.yaml index 1a7b579f2d..a253d02918 100644 --- a/engine/src/flutter/.ci.yaml +++ b/engine/src/flutter/.ci.yaml @@ -396,14 +396,6 @@ targets: # For more details see the issue # at https://github.com/flutter/flutter/issues/152186. cores: "8" - runIf: - - DEPS - - engine/src/flutter/.ci.yaml - - engine/src/flutter/lib/web_ui/** - - engine/src/flutter/web_sdk/** - - engine/src/flutter/tools/** - - engine/src/flutter/ci/** - - engine/src/flutter/flutter_frontend_server/** - name: Linux clangd recipe: engine_v2/builder diff --git a/engine/src/flutter/third_party/boringssl/BUILD.gn b/engine/src/flutter/third_party/boringssl/BUILD.gn new file mode 100644 index 0000000000..8d185ba722 --- /dev/null +++ b/engine/src/flutter/third_party/boringssl/BUILD.gn @@ -0,0 +1,93 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/config.gni") +import("//build/config/arm.gni") +import("//build/config/compiler/compiler.gni") +import("//build/config/sanitizers/sanitizers.gni") +import("//build_overrides/build.gni") +import("src/gen/sources.gni") + +# Config for us and everybody else depending on BoringSSL. +config("external_config") { + include_dirs = [ "src/include" ] + if (is_component_build) { + defines = [ "BORINGSSL_SHARED_LIBRARY" ] + } +} + +# The config used by the :boringssl component itself, and the fuzzer copies. +config("component_config") { + visibility = [ ":*" ] + configs = [ ":internal_config" ] + defines = [ "BORINGSSL_IMPLEMENTATION" ] + + cflags_c = [ "-std=c17" ] +} + +# This config is used by anything that consumes internal headers. Tests consume +# this rather than :component_config. +config("internal_config") { + visibility = [ ":*" ] + defines = [ + "OPENSSL_SMALL", + "OPENSSL_STATIC_ARMCAP", + ] + if (is_posix) { + defines += [ "_XOPEN_SOURCE=700" ] + } +} + +config("no_asm_config") { + visibility = [ ":*" ] + defines = [ "OPENSSL_NO_ASM" ] +} + +# TODO(crbug.com/42290535): Move Chromium's use of libpki to the public API and +# unexport pki_internal_headers. +all_sources = bcm_internal_headers + bcm_sources + crypto_internal_headers + + crypto_sources + ssl_internal_headers + ssl_sources + pki_sources +all_headers = crypto_headers + ssl_headers + pki_headers + pki_internal_headers + +if (is_msan) { + # MSan instrumentation is incompatible with assembly optimizations. + # BoringSSL's GAS-compatible assembly knows how to detect MSan, but the NASM + # assembly does not, so we check for MSan explicitly. + source_set("boringssl_asm") { + visibility = [ ":*" ] + public_configs = [ ":no_asm_config" ] + } +} else if (is_win && (current_cpu == "x86" || current_cpu == "x64")) { + # Windows' x86 and x86_64 assembly is built with NASM. + source_set("boringssl_asm") { + visibility = [ ":*" ] + public_configs = [ ":no_asm_config" ] + } +} else { + # All other targets use GAS-compatible assembler. BoringSSL's assembly files + # are all wrapped in processor checks for the corresponding target, so there + # is no need to add target conditions in the build. + source_set("boringssl_asm") { + visibility = [ ":*" ] + sources = rebase_path(bcm_sources_asm + crypto_sources_asm, ".", "src") + include_dirs = [ "src/include" ] + } +} + +source_set("boringssl") { + sources = rebase_path(all_sources, ".", "src") + public = rebase_path(all_headers, ".", "src") + + if (is_win) { + configs += [ ":no_asm_config" ] + } else { + deps = [ ":boringssl_asm" ] + } + + public_configs = [ ":external_config" ] + configs += [ ":component_config" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] +} \ No newline at end of file