devops: support webkit-wpe compilation

This patch:
- teaches `//browser_patches/webkit/build.sh` to accept the `--wpe` flag
- teaches `//browser_patches/webkit/archive.sh` to accept the `--wpe` flag
- teaches `//browser_patches/webkit/pw_run.sh` to parse the `--headless`
flag. In this case, we will assume that
`//browser_patches/webkit/checkout` is built for WPE and will pass
proper dependencies.
This commit is contained in:
Andrey Lushnikov 2020-01-10 19:14:55 -08:00
parent f9a86c0781
commit 14b2d5c83d
3 changed files with 52 additions and 28 deletions

View file

@ -3,20 +3,19 @@ set -e
set +x set +x
if [[ ("$1" == "-h") || ("$1" == "--help") ]]; then if [[ ("$1" == "-h") || ("$1" == "--help") ]]; then
echo "usage: $(basename $0) [output-absolute-path]" echo "usage: $(basename $0) [--wpe] [output-absolute-path]"
echo echo
echo "Generate distributable .zip archive from ./checkout folder that was previously built." echo "Generate distributable .zip archive from ./checkout folder that was previously built."
echo echo
exit 0 exit 0
fi fi
if [[ $# != 1 ]]; then
echo "error: missing zip output path"
echo "try '$(basename $0) --help' for details"
exit 1
fi
ZIP_PATH=$1 ZIP_PATH=$1
USE_WPE=""
if [[ "$ZIP_PATH" == "--wpe" ]]; then
ZIP_PATH=$2
USE_WPE="true"
fi
if [[ $ZIP_PATH != /* ]]; then if [[ $ZIP_PATH != /* ]]; then
echo "ERROR: path $ZIP_PATH is not absolute" echo "ERROR: path $ZIP_PATH is not absolute"
exit 1 exit 1
@ -55,20 +54,35 @@ createZipForLinux() {
local tmpdir=$(mktemp -d -t webkit-deploy-XXXXXXXXXX) local tmpdir=$(mktemp -d -t webkit-deploy-XXXXXXXXXX)
mkdir -p $tmpdir mkdir -p $tmpdir
# copy all relevant binaries
cp -t $tmpdir ./WebKitBuild/Release/bin/MiniBrowser ./WebKitBuild/Release/bin/WebKit*Process
# copy runner # copy runner
cp -t $tmpdir ../pw_run.sh cp -t $tmpdir ../pw_run.sh
# copy protocol # copy protocol
node ../concat_protocol.js > $tmpdir/protocol.json node ../concat_protocol.js > $tmpdir/protocol.json
# copy all relevant shared objects
LD_LIBRARY_PATH="$PWD/WebKitBuild/DependenciesGTK/Root/lib" ldd WebKitBuild/Release/bin/MiniBrowser | grep -o '[^ ]*WebKitBuild/[^ ]*' | xargs cp -t $tmpdir
# we failed to nicely build libgdk_pixbuf - expect it in the env if [[ -n $USE_WPE ]]; then
rm $tmpdir/libgdk_pixbuf* # copy all relevant binaries
cp -t $tmpdir ./WebKitBuild/Release/bin/MiniBrowser ./WebKitBuild/Release/bin/WPE*Process
# copy all relevant shared objects
LD_LIBRARY_PATH="$PWD/WebKitBuild/DependenciesWPE/Root/lib" ldd WebKitBuild/Release/bin/MiniBrowser | grep -o '[^ ]*WebKitBuild/[^ ]*' | xargs cp -t $tmpdir
LD_LIBRARY_PATH="$PWD/WebKitBuild/DependenciesWPE/Root/lib" ldd WebKitBuild/Release/bin/WPENetworkProcess | grep -o '[^ ]*WebKitBuild/[^ ]*' | xargs cp -t $tmpdir
LD_LIBRARY_PATH="$PWD/WebKitBuild/DependenciesWPE/Root/lib" ldd WebKitBuild/Release/bin/WPEWebProcess | grep -o '[^ ]*WebKitBuild/[^ ]*' | xargs cp -t $tmpdir
cd $tmpdir
ln -s libWPEBackend-fdo-1.0.so.1 libWPEBackend-fdo-1.0.so
cd -
else
# copy all relevant binaries
cp -t $tmpdir ./WebKitBuild/Release/bin/MiniBrowser ./WebKitBuild/Release/bin/WebKit*Process
# copy all relevant shared objects
LD_LIBRARY_PATH="$PWD/WebKitBuild/DependenciesGTK/Root/lib" ldd WebKitBuild/Release/bin/MiniBrowser | grep -o '[^ ]*WebKitBuild/[^ ]*' | xargs cp -t $tmpdir
# we failed to nicely build libgdk_pixbuf - expect it in the env
rm $tmpdir/libgdk_pixbuf*
fi
# tar resulting directory and cleanup TMP. # tar resulting directory and cleanup TMP.
zip -jr $ZIP_PATH $tmpdir cd $tmpdir
zip --symlinks -r $ZIP_PATH ./
cd -
rm -rf $tmpdir rm -rf $tmpdir
} }

View file

@ -10,11 +10,17 @@ if [[ "$(uname)" == "Darwin" ]]; then
./Tools/Scripts/build-webkit --release --touch-events ./Tools/Scripts/build-webkit --release --touch-events
elif [[ "$(uname)" == "Linux" ]]; then elif [[ "$(uname)" == "Linux" ]]; then
cd "checkout" cd "checkout"
# Check that WebKitBuild exists and is not empty. if [[ "$1" == "--wpe" ]]; then
if ! [[ (-d ./WebKitBuild) && (-n $(ls -1 ./WebKitBuild/)) ]]; then if ! [[ -d ./WebKitBuild/DependenciesWPE ]]; then
yes | DEBIAN_FRONTEND=noninteractive ./Tools/Scripts/update-webkitgtk-libs yes | DEBIAN_FRONTEND=noninteractive ./Tools/Scripts/update-webkitwpe-libs
fi
./Tools/Scripts/build-webkit --wpe --release --touch-events MiniBrowser
else
if ! [[ -d ./WebKitBuild/DependenciesGTK ]]; then
yes | DEBIAN_FRONTEND=noninteractive ./Tools/Scripts/update-webkitgtk-libs
fi
./Tools/Scripts/build-webkit --gtk --release --touch-events MiniBrowser
fi fi
./Tools/Scripts/build-webkit --gtk --release --touch-events MiniBrowser
elif [[ "$(uname)" == MINGW* ]]; then elif [[ "$(uname)" == MINGW* ]]; then
/c/Windows/System32/cmd.exe "/c buildwin.bat" /c/Windows/System32/cmd.exe "/c buildwin.bat"
else else

View file

@ -2,11 +2,11 @@
function runOSX() { function runOSX() {
# if script is run as-is # if script is run as-is
if [ -d $SCRIPT_PATH/checkout/WebKitBuild/Release/MiniBrowser.app ]; then if [[ -d $SCRIPT_PATH/checkout/WebKitBuild/Release/MiniBrowser.app ]]; then
DYLIB_PATH="$SCRIPT_PATH/checkout/WebKitBuild/Release" DYLIB_PATH="$SCRIPT_PATH/checkout/WebKitBuild/Release"
elif [ -d $SCRIPT_PATH/MiniBrowser.app ]; then elif [[ -d $SCRIPT_PATH/MiniBrowser.app ]]; then
DYLIB_PATH="$SCRIPT_PATH" DYLIB_PATH="$SCRIPT_PATH"
elif [ -d $SCRIPT_PATH/WebKitBuild/Release/MiniBrowser.app ]; then elif [[ -d $SCRIPT_PATH/WebKitBuild/Release/MiniBrowser.app ]]; then
DYLIB_PATH="$SCRIPT_PATH/WebKitBuild/Release" DYLIB_PATH="$SCRIPT_PATH/WebKitBuild/Release"
else else
echo "Cannot find a MiniBrowser.app in neither location" 1>&2 echo "Cannot find a MiniBrowser.app in neither location" 1>&2
@ -18,14 +18,18 @@ function runOSX() {
function runLinux() { function runLinux() {
# if script is run as-is # if script is run as-is
if [ -d $SCRIPT_PATH/checkout/WebKitBuild ]; then DEPENDENCIES_FOLDER="DependenciesGTK"
LD_PATH="$SCRIPT_PATH/checkout/WebKitBuild/DependenciesGTK/Root/lib:$SCRIPT_PATH/checkout/WebKitBuild/Release/bin" if [[ "$*" == *--headless* ]]; then
DEPENDENCIES_FOLDER="DependenciesWPE";
fi
if [[ -d $SCRIPT_PATH/checkout/WebKitBuild ]]; then
LD_PATH="$SCRIPT_PATH/checkout/WebKitBuild/$DEPENDENCIES_FOLDER/Root/lib:$SCRIPT_PATH/checkout/WebKitBuild/Release/bin"
MINIBROWSER="$SCRIPT_PATH/checkout/WebKitBuild/Release/bin/MiniBrowser" MINIBROWSER="$SCRIPT_PATH/checkout/WebKitBuild/Release/bin/MiniBrowser"
elif [ -f $SCRIPT_PATH/MiniBrowser ]; then elif [[ -f $SCRIPT_PATH/MiniBrowser ]]; then
LD_PATH="$SCRIPT_PATH" LD_PATH="$SCRIPT_PATH"
MINIBROWSER="$SCRIPT_PATH/MiniBrowser" MINIBROWSER="$SCRIPT_PATH/MiniBrowser"
elif [ -d $SCRIPT_PATH/WebKitBuild ]; then elif [[ -d $SCRIPT_PATH/WebKitBuild ]]; then
LD_PATH="$SCRIPT_PATH/WebKitBuild/DependenciesGTK/Root/lib:$SCRIPT_PATH/WebKitBuild/Release/bin" LD_PATH="$SCRIPT_PATH/WebKitBuild/$DEPENDENCIES_FOLDER/Root/lib:$SCRIPT_PATH/WebKitBuild/Release/bin"
MINIBROWSER="$SCRIPT_PATH/WebKitBuild/Release/bin/MiniBrowser" MINIBROWSER="$SCRIPT_PATH/WebKitBuild/Release/bin/MiniBrowser"
else else
echo "Cannot find a MiniBrowser.app in neither location" 1>&2 echo "Cannot find a MiniBrowser.app in neither location" 1>&2
@ -35,9 +39,9 @@ function runLinux() {
} }
SCRIPT_PATH="$(cd "$(dirname "$0")" ; pwd -P)" SCRIPT_PATH="$(cd "$(dirname "$0")" ; pwd -P)"
if [ "$(uname)" == "Darwin" ]; then if [[ "$(uname)" == "Darwin" ]]; then
runOSX "$@" runOSX "$@"
elif [ "$(uname)" == "Linux" ]; then elif [[ "$(uname)" == "Linux" ]]; then
runLinux "$@" runLinux "$@"
else else
echo "ERROR: cannot run on this platform!" 1>&2 echo "ERROR: cannot run on this platform!" 1>&2