mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
Move the Windows build jobs to Linux runners using the same ghcr.io/electron/build container as the gn-check job (with /dev/fuse and SYS_ADMIN for ciopfs). - build-electron action: set target_os=win/target_cpu/use_v8_context_snapshot GN args for all Windows arches; point ELECTRON_BUILD_TOOLS_MAIN_STAR at the in-repo build/siso/main.star; drop the powershell build/siso-report/ installed_software/mksnapshot.zip steps in favour of the unified bash paths now that the host is Linux. - pipeline-segment-electron-build: set ELECTRON_DEPOT_TOOLS_WIN_TOOLCHAIN, use AKS cache restore for Windows (Linux container), skip fix-sync for Windows (Linux-synced tree needs no fixup), and run the win_toolchain hook with target_os=['win'] so the MSVC toolchain lands. - build/siso/main.star: in-repo copy of build-tools' main.star with the mswsock.h/Lm.h :headers extension keyed on win_sdk.enabled() (target OS) instead of runtime.os, so siso uploads those SDK headers to RBE on a Linux host. - move-artifacts.sh: classify Linux+ELECTRON_DEPOT_TOOLS_WIN_TOOLCHAIN as a win build. Derived from the build-win-on-linux branch with the wine path removed — mksnapshot now runs natively on the Linux host with --target_os=win and the V8 patches in the previous commits ensure it emits Win64 unwind data and uses the right snapshot toolchain for arm64.
125 lines
3.4 KiB
Bash
Executable File
125 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "$(expr substr $(uname -s) 1 10)" == "MSYS_NT-10" ]; then
|
|
BUILD_TYPE="win"
|
|
elif [ "`uname`" == "Darwin" ]; then
|
|
if [ -z "$MAS_BUILD" ]; then
|
|
BUILD_TYPE="darwin"
|
|
else
|
|
BUILD_TYPE="mas"
|
|
fi
|
|
elif [ "`uname`" == "Linux" ]; then
|
|
if [ "$ELECTRON_DEPOT_TOOLS_WIN_TOOLCHAIN" == "1" ]; then
|
|
BUILD_TYPE="win"
|
|
else
|
|
BUILD_TYPE="linux"
|
|
fi
|
|
else
|
|
echo "Unsupported platform"
|
|
exit 1
|
|
fi
|
|
|
|
GENERATED_ARTIFACTS="generated_artifacts_${BUILD_TYPE}_${TARGET_ARCH}"
|
|
|
|
echo Creating $GENERATED_ARTIFACTS...
|
|
rm -rf $GENERATED_ARTIFACTS
|
|
mkdir $GENERATED_ARTIFACTS
|
|
|
|
SRC_ARTIFACTS="src_artifacts_${BUILD_TYPE}_${TARGET_ARCH}"
|
|
|
|
echo Creating $SRC_ARTIFACTS...
|
|
rm -rf $SRC_ARTIFACTS
|
|
mkdir $SRC_ARTIFACTS
|
|
|
|
mv_if_exist() {
|
|
if [ -f "$1" ] || [ -d "$1" ]; then
|
|
echo Storing $1
|
|
mv $1 $GENERATED_ARTIFACTS
|
|
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
|
|
else
|
|
echo Skipping $1 - It is not present on disk
|
|
fi
|
|
}
|
|
|
|
move_src_dirs_if_exist() {
|
|
mkdir src_artifacts
|
|
|
|
dirs=("src/out/Default/gen/node_headers" \
|
|
"src/out/Default/overlapped-checker" \
|
|
"src/out/Default/ffmpeg" \
|
|
"src/out/Default/hunspell_dictionaries" \
|
|
"src/third_party/electron_node" \
|
|
"src/third_party/nan" \
|
|
"src/cross-arch-snapshots" \
|
|
"src/buildtools/mac" \
|
|
"src/buildtools/third_party/libc++" \
|
|
"src/buildtools/third_party/libc++abi" \
|
|
"src/third_party/libc++" \
|
|
"src/third_party/libc++abi" \
|
|
"src/out/Default/obj/buildtools/third_party" \
|
|
"src/v8/tools/builtins-pgo")
|
|
|
|
# Only do this for linux build type, this folder
|
|
# exists for windows builds on linux hosts but we do
|
|
# not need it
|
|
if [ "$BUILD_TYPE" == "linux" ]; then
|
|
dirs+=('src/build/linux')
|
|
fi
|
|
|
|
# llvm-build is the host toolchain, for windows we need
|
|
# a different toolchain so no point copying this one
|
|
if [ "$BUILD_TYPE" != "win" ]; then
|
|
dirs+=('src/third_party/llvm-build')
|
|
fi
|
|
|
|
# On windows we should clean up two symlinks that aren't
|
|
# compatible with the windows test runner
|
|
if [ "$BUILD_TYPE" == "win" ]; then
|
|
rm -f src/third_party/electron_node/tools/node_modules/eslint/node_modules/eslint
|
|
rm -f src/third_party/electron_node/tools/node_modules/eslint/node_modules/.bin/eslint
|
|
rm -f src/third_party/electron_node/out/tools/bin/python
|
|
|
|
# Also need to copy electron.lib to node.lib for native module testing purposes
|
|
mkdir -p src/out/Default/gen/node_headers/Release
|
|
cp src/out/Default/electron.lib src/out/Default/gen/node_headers/Release/node.lib
|
|
fi
|
|
|
|
for dir in "${dirs[@]}"
|
|
do
|
|
if [ -d "$dir" ]; then
|
|
mkdir -p src_artifacts/$(dirname $dir)
|
|
cp -r $dir/ src_artifacts/$dir
|
|
fi
|
|
done
|
|
|
|
tar -C src_artifacts -cf src_artifacts.tar .
|
|
|
|
echo Storing src_artifacts.tar
|
|
mv src_artifacts.tar $SRC_ARTIFACTS
|
|
}
|
|
|
|
# Generated Artifacts
|
|
mv_if_exist src/out/Default/dist.zip
|
|
mv_if_exist src/out/Default/gen/node_headers.tar.gz
|
|
mv_if_exist src/out/Default/symbols.zip
|
|
mv_if_exist src/out/Default/mksnapshot.zip
|
|
mv_if_exist src/out/Default/chromedriver.zip
|
|
mv_if_exist src/out/ffmpeg/ffmpeg.zip
|
|
mv_if_exist src/out/Default/hunspell_dictionaries.zip
|
|
mv_if_exist src/cross-arch-snapshots
|
|
cp_if_exist src/out/electron_ninja_log
|
|
cp_if_exist src/out/Default/.ninja_log
|
|
if [ -n "$SISO_REPORT_PATH" ]; then
|
|
cp_if_exist "$SISO_REPORT_PATH"
|
|
fi
|
|
|
|
move_src_dirs_if_exist
|