pkgbuilds/linux-phicomm-n1/buildbot.update.d/update.sh

72 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# buildbot update hook for kernel packages
set -e -o pipefail
assertPkgname() {
if [[ "$(basename $(pwd))" != "$PKGNAME" ]]; then
echo "Please run this script inside the $PKGNAME dir."
exit 1
fi
}
## This section does essential preparations
PKGNAME='linux-phicomm-n1' && assertPkgname
PKGBUILD='PKGBUILD'
git pull --ff-only
git checkout $PKGBUILD
pkgver=$(source $PKGBUILD; echo $pkgver)
# This section does actual jobs
newPkgVer() {
# do not print anything to stdout other than new pkgver here
#URL='https://cdn.kernel.org/pub/linux/kernel/v5.x/'
#URL='https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git'
VER=$pkgver
#CHANGELOG_FORMAT="patch-"
CHANGELOG_FORMAT="Linux "
PATCH=${VER##*.}
MAJOR_MINOR=${VER%.*}
URL="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/?h=linux-${MAJOR_MINOR}.y"
if ! grep -Eq '[0-9].[0-9]' <<< "$MAJOR_MINOR"; then echo "Bad MAJOR_MINOR: ${MAJOR_MINOR}" >&2; return 1; fi
if ! grep -Eq '[0-9]' <<< "$PATCH"; then echo "Bad PATCH: ${PATCH}" >&2; return 1; fi
html="$(curl -s ${URL})"
next=$PATCH
#[ $next == 0 ] && next=1
((next=next+1))
while true; do
if grep -Fq "${CHANGELOG_FORMAT}${MAJOR_MINOR}.${next}" <<< "$html"; then
((next=next+1))
else
((next=next-1))
break
fi
done
if (("$PATCH" < "$next")); then
echo "New patch level found: ${next}" >&2
echo -n "${MAJOR_MINOR}.${next}"
return 0
else
echo "No new patch level found: ${next}" >&2
return 0
fi
}
newpkgver=$(newPkgVer)
[ -z "$newpkgver" ] && exit 0
sed -i "s/^pkgver=.*\$/pkgver=${newpkgver}/g" $PKGBUILD
sed -i "s/^pkgrel=.*\$/pkgrel=1/g" $PKGBUILD
pkgver=$(source $PKGBUILD; echo $pkgver)
pkgrel=$(source $PKGBUILD; echo $pkgrel)
[ "$pkgver" != "$newpkgver" ] && echo "unexpected pkgver: ${pkgver}" >&2 && exit 1
[ "$pkgrel" != '1' ] && echo "unexpected pkgrel: ${pkgrel}" >&2 && exit 1
updpkgsums
git add $PKGBUILD
git commit -m "autoupdate: ${PKGNAME} to ${pkgver}"
git push