mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 16:35:33 +00:00
Since we have write access to the directory we don't need `sudo` for
removing the temporary dependency files if we pass `-f` to `rm`.
Cherry-pick-of: commit 4f27f6e256
Cherry-pick-of: #14085
Test-bot: skip
82 lines
2.6 KiB
Bash
82 lines
2.6 KiB
Bash
#!/bin/bash
|
|
|
|
function checkPrerequisites() {
|
|
if [ "${UPLOAD:=}" == "yes" ]; then
|
|
SIM=""
|
|
else
|
|
SIM="-s"
|
|
fi
|
|
|
|
# Check the tier
|
|
if [[ -z "${KEYMAN_TIER:=}" ]]; then
|
|
echo "TIER.md or \${KEYMAN_TIER} must be set to (alpha, beta, stable) to use this script"
|
|
exit 1
|
|
fi
|
|
|
|
if ! which xmllint > /dev/null; then
|
|
echo "you must install xmllint (libxml2-utils package) to use this script"
|
|
exit 1
|
|
fi
|
|
|
|
# shellcheck disable=SC2034
|
|
projects="${PROJECT:=keyman}"
|
|
}
|
|
|
|
function downloadSource() {
|
|
local packageDir
|
|
packageDir=$1
|
|
|
|
if [ "${proj:=}" == "keyman" ]; then
|
|
cd "${BASEDIR}" || exit
|
|
./build.sh clean
|
|
fi
|
|
|
|
# Update tier in Debian watch files (replacing any previously set tier) and remove comment
|
|
sed -e "s/\$tier\|alpha\|beta\|stable/${KEYMAN_TIER}/g" -e "s/^# .*$//" "$BASEDIR"/scripts/watch.in > debian/watch
|
|
|
|
version=$(uscan --report --dehs|xmllint --xpath "//dehs/upstream-version/text()" -)
|
|
dirversion=$(uscan --report --dehs|xmllint --xpath "//dehs/upstream-url/text()" - | cut -d/ -f6)
|
|
echo "${proj} version is ${version}"
|
|
uscan || (echo "ERROR: No new version available for ${proj}" >&2 && exit 1)
|
|
cd ..
|
|
mv "${proj}-${version}" "${BASEDIR}/${packageDir}"
|
|
mv "${proj}_${version}.orig.tar.gz" "${BASEDIR}/${packageDir}"
|
|
mv "${proj}-${version}.tar.gz" "${BASEDIR}/${packageDir}"
|
|
mv "${proj}"*.asc "${BASEDIR}/${packageDir}"
|
|
rm "${proj}"*.debian.tar.xz
|
|
cd "${BASEDIR}/${packageDir}" || exit
|
|
wget -N "https://downloads.keyman.com/linux/${KEYMAN_TIER}/${dirversion}/SHA256SUMS"
|
|
sha256sum -c --ignore-missing SHA256SUMS |grep "${proj}"
|
|
}
|
|
|
|
function wait_for_apt_deb {
|
|
# from https://gist.github.com/hrpatel/117419dcc3a75e46f79a9f1dce99ef52
|
|
while sudo fuser /var/{lib/{dpkg,apt/lists},cache/apt/archives}/lock &>/dev/null 2>&1; do
|
|
echo "Waiting for apt/dpkg lock to release, sleeping 10s"
|
|
sleep 10
|
|
done
|
|
}
|
|
|
|
function checkAndInstallRequirements()
|
|
{
|
|
local TOINSTALL=""
|
|
|
|
for p in devscripts equivs python3-dev
|
|
do
|
|
if ! dpkg -s "${p}" >/dev/null 2>&1; then
|
|
TOINSTALL="${TOINSTALL} ${p}"
|
|
fi
|
|
done
|
|
|
|
if [[ -n "${TOINSTALL}" ]]; then
|
|
wait_for_apt_deb && sudo apt-get update
|
|
# shellcheck disable=SC2086
|
|
wait_for_apt_deb && sudo DEBIAN_FRONTEND="noninteractive" \
|
|
apt-get -qy install ${TOINSTALL}
|
|
fi
|
|
|
|
sudo mk-build-deps debian/control
|
|
wait_for_apt_deb && sudo DEBIAN_FRONTEND="noninteractive" \
|
|
apt-get -qy --allow-downgrades install ./keyman-build-deps_*.deb
|
|
rm -f keyman-build-deps_*
|
|
}
|