spiegel-keyman/linux/scripts/launchpad.sh
Eberhard Beilharz bbe0726309
chore(linux): Fix launchpad script
- We have to provide env variable to be able to select correct
  dependencies at build time
- Add focal and groovy and remove xenial and eoan
- We need to build once before creating the source package so that
  the man pages get generated. In v14 we do that during the binary
  build, but that requires additional build dependencies, so for v13
  we do it this way.
2020-11-25 17:18:44 +01:00

114 lines
3.2 KiB
Bash
Executable file

#!/bin/bash
# Build source packages from nightly builds and upload to PPA
# must be run from linux dir
# parameters: [UPLOAD="yes"] [TIER="<tier>"] [PROJECT="<project>"] [DIST="<dist>"] [PACKAGEVERSION="<version>"] ./scripts/launchpad.sh
# UPLOAD="yes" do the dput for real
# TIER="<tier>" alpha, beta or stable tier. If not provided, use TIER.md
# PROJECT="<project>" only upload this project
# DIST="<dist>" only upload for this distribution
set -e
if [ "${UPLOAD}" == "yes" ]; then
SIM=""
else
SIM="-s"
fi
# Determine the tier. First check if TIER.md exists
if [[ -f ../TIER.md ]]; then
tier=`cat ../TIER.md`
elif [[ -z "${TIER}" ]]; then
echo "TIER.md or \${TIER} must be set to (alpha, beta, stable) to use this script"
exit 1
else
tier="${TIER}"
fi
if [ "${tier}" == "stable" ]; then
ppa="ppa:keymanapp/keyman"
else
ppa="ppa:keymanapp/keyman-daily"
fi
if [ ! `which xmllint` ]; then
echo "you must install xmllint (libxml2-utils package) to use this script"
exit 1
fi
if [ "${PROJECT}" != "" ]; then
projects="${PROJECT}"
else
projects="keyman-keyboardprocessor kmflcomp libkmfl ibus-kmfl keyman-config ibus-keyman"
fi
if [ "${DIST}" != "" ]; then
distributions="${DIST}"
else
distributions="bionic focal groovy"
fi
if [ "${PACKAGEVERSION}" != "" ]; then
packageversion="${PACKAGEVERSION}"
else
packageversion="1~sil1"
fi
BASEDIR=`pwd`
rm -rf launchpad
mkdir -p launchpad
for proj in ${projects}; do
if [ "${proj}" == "keyman-keyboardprocessor" ]; then
cd ${BASEDIR}/../common/engine/keyboardprocessor
else
cd ${proj}
fi
if [ "${proj}" == "keyman-config" ]; then
tarname="keyman_config"
# we need to run a build (which also adds the man pages to the debian directory)
make
# remove build artifacts again (which leaves man pages behind)
make clean
else
tarname="${proj}"
fi
# Update tier in Debian watch files (replacing any previously set tier)
sed -i "s/\$tier\|alpha\|beta\|stable/$tier/g" 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
cd ..
mv ${proj}-${version} ${BASEDIR}/launchpad
mv ${proj}_${version}.orig.tar.gz ${BASEDIR}/launchpad
mv ${tarname}-${version}.tar.gz ${BASEDIR}/launchpad
rm ${proj}*.debian.tar.xz
cd ${BASEDIR}/launchpad
wget -N https://downloads.keyman.com/linux/${tier}/${dirversion}/SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMS |grep ${tarname}
cd ${proj}-${version}
echo `pwd`
cp debian/changelog ../${proj}-changelog
#TODO separate source builds and dputs for each of $dists?
for dist in ${distributions}; do
export DEB_BUILD_PROFILES=pkg.${proj}.${dist}
cp ../${proj}-changelog debian/changelog
dch -v ${version}-${packageversion}~${dist} "source package for PPA"
dch -D ${dist} -r ""
debuild -d -S -sa -Zxz
done
cd ..
for dist in ${distributions}; do
dput ${SIM} ${ppa} ${proj}_${version}-${packageversion}~${dist}_source.changes
done
cd ${BASEDIR}
done