From 9d3d82e1b179951763c7522dd5e9317d5d632a52 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 7 Feb 2024 10:45:36 +0100 Subject: [PATCH] Add initial matrix for mas build --- .github/workflows/mac-build.yml | 92 ++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/.github/workflows/mac-build.yml b/.github/workflows/mac-build.yml index 05d6db68fec38..f6844ad90d893 100644 --- a/.github/workflows/mac-build.yml +++ b/.github/workflows/mac-build.yml @@ -16,7 +16,6 @@ env: ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }} # TODO: this should be set to the correct GN_CONFIG for the build type. GN_CONFIG: //electron/build/args/testing.gn - GN_EXTRA_ARGS: 'target_cpu = "arm64"' # Disable pre-compiled headers to reduce out size - only useful for rebuilds GN_BUILDFLAG_ARGS: 'enable_precompiled_headers = false' @@ -143,6 +142,12 @@ jobs: build: runs-on: macos-13-xlarge needs: checkout + strategy: + fail-fast: false + matrix: + build-type: [darwin, mas] + env: + BUILD_TYPE: ${{ matrix.build-type }} steps: - name: Load Build Tools run: | @@ -241,6 +246,13 @@ jobs: - name: Setup Environment Variables run: | echo "CHROMIUM_BUILDTOOLS_PATH=$(pwd)/src/buildtools" >> $GITHUB_ENV + + if [[ ${{ matrix.build-type }} == "darwin" ]]; then + echo "GN_EXTRA_ARGS='target_cpu = "arm64"'" >> $GITHUB_ENV + else + echo "GN_EXTRA_ARGS='is_mas_build = true target_cpu = "arm64"'" >> $GITHUB_ENV + echo "MAS_BUILD=true" >> $GITHUB_ENV + fi - name: Fix Sync # This step is required to correct for differences between "gclient sync" # on Linux and the expected state on macOS. This requires: @@ -253,38 +265,31 @@ jobs: # 7. Ensuring we are using the correct ninja and adding it to PATH # 8. Fixing angle (wrong remote) run : | - SEDOPTION="-i" - if [ "`uname`" == "Darwin" ]; then - SEDOPTION="-i ''" - rm -rf src/third_party/llvm-build - python3 src/tools/clang/scripts/update.py + SEDOPTION="-i ''" + rm -rf src/third_party/llvm-build + python3 src/tools/clang/scripts/update.py - echo 'infra/3pp/tools/esbuild/${platform}' `gclient getdep --deps-file=src/third_party/devtools-frontend/src/DEPS -r 'third_party/esbuild:infra/3pp/tools/esbuild/${platform}'` > esbuild_ensure_file - # Remove extra output from calling gclient getdep which always calls update_depot_tools - sed -i '' "s/Updating depot_tools... //g" esbuild_ensure_file - cipd ensure --root src/third_party/devtools-frontend/src/third_party/esbuild -ensure-file esbuild_ensure_file + echo 'infra/3pp/tools/esbuild/${platform}' `gclient getdep --deps-file=src/third_party/devtools-frontend/src/DEPS -r 'third_party/esbuild:infra/3pp/tools/esbuild/${platform}'` > esbuild_ensure_file + # Remove extra output from calling gclient getdep which always calls update_depot_tools + sed -i '' "s/Updating depot_tools... //g" esbuild_ensure_file + cipd ensure --root src/third_party/devtools-frontend/src/third_party/esbuild -ensure-file esbuild_ensure_file - rm -rf src/third_party/rust-toolchain - python3 src/tools/rust/update_rust.py - - # Prevent calling gclient getdep which always calls update_depot_tools - echo 'gn/gn/mac-${arch}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/mac:gn/gn/mac-${arch}'` > gn_ensure_file - sed -i '' "s/Updating depot_tools... //g" gn_ensure_file - cipd ensure --root src/buildtools/mac -ensure-file gn_ensure_file + rm -rf src/third_party/rust-toolchain + python3 src/tools/rust/update_rust.py + + # Prevent calling gclient getdep which always calls update_depot_tools + echo 'gn/gn/mac-${arch}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/mac:gn/gn/mac-${arch}'` > gn_ensure_file + sed -i '' "s/Updating depot_tools... //g" gn_ensure_file + cipd ensure --root src/buildtools/mac -ensure-file gn_ensure_file - # Prevent calling gclient getdep which always calls update_depot_tools - echo 'infra/rbe/client/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/reclient:infra/rbe/client/${platform}'` > gn_ensure_file - sed -i '' "s/Updating depot_tools... //g" gn_ensure_file - cipd ensure --root src/buildtools/reclient -ensure-file gn_ensure_file - python3 src/buildtools/reclient_cfgs/configure_reclient_cfgs.py --rbe_instance "projects/rbe-chrome-untrusted/instances/default_instance" --reproxy_cfg_template reproxy.cfg.template --rewrapper_cfg_project "" --skip_remoteexec_cfg_fetch + # Prevent calling gclient getdep which always calls update_depot_tools + echo 'infra/rbe/client/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/buildtools/reclient:infra/rbe/client/${platform}'` > gn_ensure_file + sed -i '' "s/Updating depot_tools... //g" gn_ensure_file + cipd ensure --root src/buildtools/reclient -ensure-file gn_ensure_file + python3 src/buildtools/reclient_cfgs/configure_reclient_cfgs.py --rbe_instance "projects/rbe-chrome-untrusted/instances/default_instance" --reproxy_cfg_template reproxy.cfg.template --rewrapper_cfg_project "" --skip_remoteexec_cfg_fetch - if [ "$TARGET_ARCH" == "arm64" ]; then - export DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.arm64.sha1 - else - export DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.x64.sha1 - fi - python3 src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-browser-clang -s $DSYM_SHA_FILE -o src/tools/clang/dsymutil/bin/dsymutil - fi + DSYM_SHA_FILE=src/tools/clang/dsymutil/bin/dsymutil.arm64.sha1 + python3 src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-browser-clang -s $DSYM_SHA_FILE -o src/tools/clang/dsymutil/bin/dsymutil echo 'infra/3pp/tools/ninja/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/third_party/ninja:infra/3pp/tools/ninja/${platform}'` > ninja_ensure_file sed $SEDOPTION "s/Updating depot_tools... //g" ninja_ensure_file @@ -340,9 +345,6 @@ jobs: if [ "$MAS_BUILD" == x"true" ]; then target_os=mac_mas fi - if [ "$TARGET_ARCH" == "x64" ]; then - target_cpu=x64 - fi electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest fi fi @@ -375,7 +377,7 @@ jobs: e build electron:electron_symbols fi cd src - export BUILD_PATH="$PWD/out/Default" + export BUILD_PATH="$(pwd)/out/Default" e build electron:licenses e build electron:electron_version_file electron/script/zip-symbols.py -b $BUILD_PATH @@ -384,12 +386,12 @@ jobs: # tp ensure we don't break anything, but we may be able to improve that. - name: Move all Generated Artifacts to Upload Folder run: | - rm -rf generated_artifacts_darwin-arm64 - mkdir generated_artifacts_darwin-arm64 + rm -rf generated_artifacts_$BUILD_TYPE + mkdir generated_artifacts_$BUILD_TYPE mv_if_exist() { if [ -f "$1" ] || [ -d "$1" ]; then echo Storing $1 - mv $1 generated_artifacts_darwin-arm64 + mv $1 generated_artifacts_$BUILD_TYPE else echo Skipping $1 - It is not present on disk fi @@ -397,7 +399,7 @@ jobs: cp_if_exist() { if [ -f "$1" ] || [ -d "$1" ]; then echo Storing $1 - cp $1 generated_artifacts_darwin-arm64 + cp $1 generated_artifacts_$BUILD_TYPE else echo Skipping $1 - It is not present on disk fi @@ -415,8 +417,8 @@ jobs: - name: Upload Generated Artifacts uses: actions/upload-artifact@v4 with: - name: generated_artifacts_darwin-arm64 - path: ./generated_artifacts_darwin-arm64 + name: generated_artifacts_BUILD_TYPE + path: ./generated_artifacts_$BUILD_TYPE - name: Persist Build Artifacts uses: actions/cache/save@v4 with: @@ -437,9 +439,13 @@ jobs: src/out/Default/obj/buildtools/third_party src/v8/tools/builtins-pgo key: ${{ runner.os }}-build-artifacts-${{ github.sha }} + - name: Set Build Type for Test + run: echo "build-type=$BUILD_TYPE" >> $GITHUB_OUTPUT test: runs-on: macos-13-xlarge needs: build + env: + BUILD_TYPE: ${{ needs.build.outputs.build-type }} steps: - name: Load Build Tools run: | @@ -485,8 +491,8 @@ jobs: - name: Download Generated Artifacts uses: actions/download-artifact@v4 with: - name: generated_artifacts_darwin-arm64 - path: ./generated_artifacts_darwin-arm64 + name: generated_artifacts_$BUILD_TYPE + path: ./generated_artifacts_$BUILD_TYPE - name: Restore Persisted Build Artifacts uses: actions/cache/restore@v4 with: @@ -510,10 +516,10 @@ jobs: - name: Restore Generated Artifacts run: | mv_if_exist() { - if [ -f "generated_artifacts_darwin-arm64/$1" ] || [ -d "generated_artifacts_darwin-arm64/$1" ]; then + if [ -f "generated_artifacts_$BUILD_TYPE/$1" ] || [ -d "generated_artifacts_$BUILD_TYPE/$1" ]; then echo Restoring $1 to $2 mkdir -p $2 - mv generated_artifacts_darwin-arm64/$1 $2 + mv generated_artifacts_$BUILD_TYPE/$1 $2 else echo Skipping $1 - It is not present on disk fi