Skip to content

Commit

Permalink
Add initial matrix for mas build
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Feb 7, 2024
1 parent de9ff3d commit 9d3d82e
Showing 1 changed file with 49 additions and 43 deletions.
92 changes: 49 additions & 43 deletions .github/workflows/mac-build.yml
Expand Up @@ -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'

Expand Down Expand Up @@ -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: |
Expand Down Expand Up @@ -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:
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -384,20 +386,20 @@ 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
}
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
Expand All @@ -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:
Expand All @@ -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: |
Expand Down Expand Up @@ -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:
Expand All @@ -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
Expand Down

0 comments on commit 9d3d82e

Please sign in to comment.