mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-14 21:53:35 +03:00
f10d0a8a58
This fixes a bug where the script was creating a folder with a new line symbol in its name. As a result, Windows was failing to remove this folder, and Chromium Windows BuildBot was failing to even initialize checkout.
172 lines
4.3 KiB
Bash
Executable File
172 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
set +x
|
|
|
|
trap "cd $(pwd -P)" EXIT
|
|
cd "$(dirname $0)"
|
|
SCRIPT_PATH=$(pwd -P)
|
|
|
|
main() {
|
|
if [[ ("$1" == "-h") || ("$1" == "--help") ]]; then
|
|
echo "usage: $(basename $0) [output-absolute-path]"
|
|
echo
|
|
echo "Generate distributable .zip archive from ./output folder that was previously downloaded."
|
|
echo
|
|
exit 0
|
|
fi
|
|
|
|
ZIP_PATH=$1
|
|
|
|
if [[ $ZIP_PATH != /* ]]; then
|
|
echo "ERROR: path $ZIP_PATH is not absolute"
|
|
exit 1
|
|
fi
|
|
if [[ $ZIP_PATH != *.zip ]]; then
|
|
echo "ERROR: path $ZIP_PATH must have .zip extension"
|
|
exit 1
|
|
fi
|
|
if [[ -f $ZIP_PATH ]]; then
|
|
echo "ERROR: path $ZIP_PATH exists; can't do anything."
|
|
exit 1
|
|
fi
|
|
if ! [[ -d $(dirname $ZIP_PATH) ]]; then
|
|
echo "ERROR: folder for path $($ZIP_PATH) does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
BUILD_TYPE=$2
|
|
if [[ "${BUILD_TYPE}" == "--compile"* ]]; then
|
|
archive_compiled_chromium "${BUILD_TYPE}"
|
|
elif [[ "${BUILD_TYPE}" == "--mirror"* ]]; then
|
|
archive_mirrored_chromium "${BUILD_TYPE}"
|
|
else
|
|
echo "ERROR: unknown build type - ${BUILD_TYPE}"
|
|
exit 1
|
|
fi
|
|
|
|
cd "${SCRIPT_PATH}"
|
|
cp output/build.zip $ZIP_PATH
|
|
}
|
|
|
|
function archive_compiled_chromium() {
|
|
CHROMIUM_FOLDER_NAME=""
|
|
CHROMIUM_FILES_TO_ARCHIVE=()
|
|
|
|
if [[ $1 == "--compile-mac"* ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-mac"
|
|
CHROMIUM_FILES_TO_ARCHIVE=("Chromium.app")
|
|
elif [[ $1 == "--compile-linux" ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-linux"
|
|
CHROMIUM_FILES_TO_ARCHIVE=(
|
|
"chrome"
|
|
"chrome_100_percent.pak"
|
|
"chrome_200_percent.pak"
|
|
"chrome_sandbox"
|
|
"chrome-wrapper"
|
|
"ClearKeyCdm"
|
|
"crashpad_handler"
|
|
"icudtl.dat"
|
|
"libEGL.so"
|
|
"libGLESv2.so"
|
|
"locales"
|
|
"MEIPreload"
|
|
"nacl_helper"
|
|
"nacl_helper_bootstrap"
|
|
"nacl_helper_nonsfi"
|
|
"nacl_irt_x86_64.nexe"
|
|
"product_logo_48.png"
|
|
"resources"
|
|
"resources.pak"
|
|
"swiftshader"
|
|
"v8_context_snapshot.bin"
|
|
"xdg-mime"
|
|
"xdg-settings"
|
|
)
|
|
elif [[ $1 == "--compile-win"* ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-win"
|
|
CHROMIUM_FILES_TO_ARCHIVE=(
|
|
"chrome.dll"
|
|
"chrome.exe"
|
|
"chrome_100_percent.pak"
|
|
"chrome_200_percent.pak"
|
|
"chrome_elf.dll"
|
|
"chrome_proxy.exe"
|
|
"chrome_pwa_launcher.exe"
|
|
"D3DCompiler_47.dll"
|
|
"elevation_service.exe"
|
|
"eventlog_provider.dll"
|
|
"First Run"
|
|
"icudtl.dat"
|
|
"libEGL.dll"
|
|
"libGLESv2.dll"
|
|
"locales"
|
|
"MEIPreload"
|
|
"mojo_core.dll"
|
|
"nacl_irt_x86_64.nexe"
|
|
"notification_helper.exe"
|
|
"resources.pak"
|
|
"swiftshader/libEGL.dll"
|
|
"swiftshader/libGLESv2.dll"
|
|
"v8_context_snapshot.bin"
|
|
)
|
|
else
|
|
echo "ERROR: unknown command, use --help for details"
|
|
exit 1
|
|
fi
|
|
|
|
# Prepare resulting archive.
|
|
cd "$SCRIPT_PATH"
|
|
rm -rf output
|
|
mkdir -p "output/${CHROMIUM_FOLDER_NAME}"
|
|
|
|
# On Mac, use 'ditto' to copy directories instead of 'cp'.
|
|
COPY_COMMAND="cp -R"
|
|
if [[ $(uname) == "Darwin" ]]; then
|
|
COPY_COMMAND="ditto"
|
|
fi
|
|
|
|
for ((i = 0; i < ${#CHROMIUM_FILES_TO_ARCHIVE[@]}; i++)) do
|
|
file="${CHROMIUM_FILES_TO_ARCHIVE[$i]}"
|
|
mkdir -p "output/${CHROMIUM_FOLDER_NAME}/$(dirname "${file}")"
|
|
$COPY_COMMAND "${CR_CHECKOUT_PATH}/src/out/Default/${file}" "output/${CHROMIUM_FOLDER_NAME}/${file}"
|
|
done
|
|
|
|
if [[ $1 == "--compile-win"* ]]; then
|
|
$COPY_COMMAND "${CR_CHECKOUT_PATH}/src/out/Default/"*.manifest "output/${CHROMIUM_FOLDER_NAME}/"
|
|
fi
|
|
|
|
cd output
|
|
zip --symlinks -r build.zip "${CHROMIUM_FOLDER_NAME}"
|
|
}
|
|
|
|
archive_mirrored_chromium() {
|
|
cd "${SCRIPT_PATH}/output"
|
|
|
|
CHROMIUM_FOLDER_NAME=""
|
|
CHROMIUM_FILES_TO_REMOVE=()
|
|
|
|
PLATFORM="$1"
|
|
if [[ "${PLATFORM}" == "--mirror-win32" ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-win"
|
|
CHROMIUM_FILES_TO_REMOVE+=("chrome-win/interactive_ui_tests.exe")
|
|
elif [[ "${PLATFORM}" == "--mirror-win64" ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-win"
|
|
CHROMIUM_FILES_TO_REMOVE+=("chrome-win/interactive_ui_tests.exe")
|
|
elif [[ "${PLATFORM}" == "--mirror-mac" ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-mac"
|
|
elif [[ "${PLATFORM}" == "--mirror-linux" ]]; then
|
|
CHROMIUM_FOLDER_NAME="chrome-linux"
|
|
else
|
|
echo "ERROR: unknown platform to build: $PLATFORM"
|
|
exit 1
|
|
fi
|
|
|
|
for file in ${CHROMIUM_FILES_TO_REMOVE[@]}; do
|
|
rm -f "${file}"
|
|
done
|
|
|
|
zip --symlinks -r build.zip "${CHROMIUM_FOLDER_NAME}"
|
|
}
|
|
|
|
main "$@"
|