mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-24 01:07:41 +00:00
This change suppresses the output of ending the processes started for the test run. The output doesn't help much but clutters the overall output and shows up as warnings on TC.
132 lines
4.4 KiB
Bash
132 lines
4.4 KiB
Bash
# shellcheck shell=bash
|
|
# Keyman is copyright (C) SIL Global. MIT License.
|
|
#
|
|
# Shared functions for any builds that run on Linux agents,
|
|
# e.g. linux, android, web, ...
|
|
|
|
# Returns 0 if the specified package is installed.
|
|
# Parameter:
|
|
# $1 - Package name to check (e.g., "curl")
|
|
_is_package_installed() {
|
|
local PACKAGE=$1
|
|
|
|
dpkg -s "${PACKAGE}" >/dev/null 2>&1
|
|
}
|
|
|
|
# Check if the specified packages are installed and install them if not.
|
|
# Parameters:
|
|
# $* - List of package names to check and install (e.g., "lcov jq")
|
|
ba_linux_check_and_install_packages() {
|
|
if ! builder_is_linux; then
|
|
return 0
|
|
fi
|
|
|
|
builder_echo start "check and install packages" "Checking and installing packages"
|
|
local PACKAGES=$*
|
|
local TOINSTALL=""
|
|
|
|
for p in ${PACKAGES}
|
|
do
|
|
if ! _is_package_installed "${p}"; then
|
|
TOINSTALL="${TOINSTALL} ${p}"
|
|
fi
|
|
done
|
|
|
|
if [[ -n "${TOINSTALL}" ]]; then
|
|
sudo apt-get update
|
|
# shellcheck disable=SC2086
|
|
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -qy ${TOINSTALL}
|
|
fi
|
|
builder_echo end "check and install packages" success "Finished checking and installing packages"
|
|
}
|
|
|
|
# Install nvm if it is not already installed and install the latest LTS
|
|
ba_linux_install_nvm() {
|
|
builder_echo start install_nvm "Checking and installing nvm"
|
|
if [[ -f "${HOME}/.nvm/nvm.sh" ]]; then
|
|
builder_echo "nvm is already installed"
|
|
else
|
|
# Install nvm
|
|
# shellcheck disable=SC2312
|
|
NVM_RELEASE=$(curl -s https://api.github.com/repos/nvm-sh/nvm/releases/latest | grep tag_name | cut -d : -f 2 | cut -d '"' -f 2)
|
|
# shellcheck disable=SC2312
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_RELEASE}/install.sh | bash
|
|
tc_set_variables_for_nvm
|
|
nvm install --lts --default --save
|
|
nvm use --lts
|
|
fi
|
|
builder_echo end install_nvm success "Finished checking and installing nvm"
|
|
}
|
|
|
|
ba_linux_install_emscripten() {
|
|
builder_echo start "install emscripten" "Checking and installing emscripten"
|
|
if { [[ ! -z "${EMSCRIPTEN_BASE:-}" ]] && [[ -f "${EMSCRIPTEN_BASE}/emcc" ]] ; } ||
|
|
[[ -f "${HOME}/emsdk/upstream/emscripten/emcc" ]]; then
|
|
builder_echo "Emscripten is already installed at ${EMSCRIPTEN_BASE:-${HOME}/emsdk/upstream/emscripten}"
|
|
else
|
|
# shellcheck disable=SC2154
|
|
. "${KEYMAN_ROOT}/resources/build/minimum-versions.inc.sh"
|
|
|
|
builder_echo "Installing emscripten version ${KEYMAN_MIN_VERSION_EMSCRIPTEN}"
|
|
export EMSDK_KEEP_DOWNLOADS=1
|
|
# shellcheck disable=SC2164
|
|
cd "${HOME}"
|
|
git clone https://github.com/emscripten-core/emsdk.git
|
|
# shellcheck disable=SC2164
|
|
cd emsdk
|
|
./emsdk install "${KEYMAN_MIN_VERSION_EMSCRIPTEN}"
|
|
./emsdk activate "${KEYMAN_MIN_VERSION_EMSCRIPTEN}"
|
|
fi
|
|
tc_set_variables_for_emscripten
|
|
builder_echo end "install emscripten" success "Finished checking and installing emscripten"
|
|
}
|
|
|
|
# Install additional dependencies required for running integration tests.
|
|
ba_linux_install_dependencies_for_tests() {
|
|
builder_echo start install_dependencies_for_tests "Installing dependencies for tests"
|
|
|
|
ba_linux_check_and_install_packages xvfb xserver-xephyr metacity mutter dbus-x11 weston xwayland
|
|
|
|
builder_echo end install_dependencies_for_tests success "Finished installing dependencies for tests"
|
|
}
|
|
|
|
ba_linux_start_xvfb() {
|
|
# On Linux start Xvfb etc
|
|
local PID_FILE=/tmp/keymanweb-pids
|
|
builder_echo "Starting Xvfb..."
|
|
Xvfb -screen 0 1024x768x24 :33 &> /dev/null &
|
|
echo "kill -9 $! &> /dev/null || true" > "${PID_FILE}"
|
|
sleep 1
|
|
builder_echo "Starting Xephyr..."
|
|
DISPLAY=:33 Xephyr :32 -screen 1024x768 &> /dev/null &
|
|
echo "kill -9 $! &> /dev/null || true" >> "${PID_FILE}"
|
|
sleep 1
|
|
builder_echo "Starting metacity"
|
|
metacity --display=:32 &> /dev/null &
|
|
echo "kill -9 $! &> /dev/null || true" >> "${PID_FILE}"
|
|
export DISPLAY=:32
|
|
}
|
|
|
|
ba_linux_stop_xvfb() {
|
|
# On Linux stop Xvfb etc
|
|
local PID_FILE=/tmp/keymanweb-pids
|
|
if [[ -f "${PID_FILE}" ]]; then
|
|
bash "${PID_FILE}"
|
|
rm -f "${PID_FILE}"
|
|
fi
|
|
}
|
|
|
|
# Returns 0 if the OS version is greater than or equal to the specified version.
|
|
# Parameter:
|
|
# $1 - OS version to compare against (e.g., "20.04")
|
|
ba_linux_is_os_version_or_higher() {
|
|
if ! builder_is_linux; then
|
|
builder_die "ba_linux_is_os_version_or_higher() is only implemented for Ubuntu"
|
|
fi
|
|
|
|
local OS_VERSION=$1
|
|
|
|
# we use `dpkg --compare-versions` to compare the current Ubuntu version
|
|
# shellcheck disable=SC2312
|
|
dpkg --compare-versions "$(lsb_release -r -s)" ge "${OS_VERSION}"
|
|
}
|