update_check.sh: use external update file for overrides

This commit is contained in:
Eivind Uggedal 2015-01-15 09:34:44 +00:00
parent 218d6b6bb7
commit 3b7a76512d
3 changed files with 39 additions and 32 deletions

View file

@ -2,6 +2,15 @@
update_check() {
local i p url sfname lpname bbname githubname rx found_version consider
local update_override=$XBPS_SRCPKGDIR/$XBPS_TARGET_PKG/update
local original_pkgname=$pkgname
if [ -r $update_override ]; then
. $update_override
if [ "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
echo "using $XBPS_TARGET_PKG/update overrides" 1>&2
fi
fi
if ! type curl >/dev/null 2>&1; then
echo "ERROR: cannot find \`curl' executable!"
@ -9,50 +18,49 @@ update_check() {
fi
export LC_ALL=C
: ${update_pkgname:=$pkgname}
if [ -z "$update_site" ]; then
if [ -z "$site" ]; then
printf '%s\n' "$homepage"
for i in $distfiles; do
printf '%s\n' "${i%/*}/"
done
else
printf '%s\n' "$update_site"
printf '%s\n' "$site"
fi |
while IFS= read -r url; do
rx=
if [ -z "$update_site" ]; then
if [ -z "$site" ]; then
case "$url" in
*sourceforge.net/sourceforge*)
sfname="$(printf %s "$url" | cut -d/ -f5)"
url="http://sourceforge.net/projects/$sfname/rss?limit=200";;
*code.google.com*|*googlecode*)
url="http://code.google.com/p/$update_pkgname/downloads/list";;
url="http://code.google.com/p/$pkgname/downloads/list";;
*launchpad.net*)
lpname="$(printf %s "$url" | cut -d/ -f4)"
url="https://launchpad.net/$lpname/+download";;
*cpan.*)
update_pkgname=${update_pkgname#perl-};;
pkgname=${pkgname#perl-};;
*pypi.python.org*)
update_pkgname=${update_pkgname#python-};;
pkgname=${pkgname#python-};;
*github.com*)
githubname="$(printf %s "$url" | cut -d/ -f4,5)"
url="https://github.com/$githubname/tags"
rx='/archive/(v?|\Q'"$update_pkgname"'\E-)?\K[\d\.]+(?=\.tar\.gz")';;
rx='/archive/(v?|\Q'"$pkgname"'\E-)?\K[\d\.]+(?=\.tar\.gz")';;
*bitbucket.org*)
bbname="$(printf %s "$url" | cut -d/ -f4,5)"
url="https://bitbucket.org/$bbname/downloads"
rx='/(get|downloads)/(v?|\Q'"$update_pkgname"'\E-)?\K[\d\.]+(?=\.tar\.gz")';;
rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d\.]+(?=\.tar\.gz")';;
*ftp.gnome.org*)
: ${update_pattern="$update_pkgname-\K[0-9]\.[0-9]*[02468]\.[0-9.]*[0-9](?=)"}
url="http://ftp.gnome.org/pub/GNOME/sources/$update_pkgname/cache.json";;
: ${pattern="$pkgname-\K[0-9]\.[0-9]*[02468]\.[0-9.]*[0-9](?=)"}
url="http://ftp.gnome.org/pub/GNOME/sources/$pkgname/cache.json";;
*kernel.org/pub/linux/kernel/*)
rx=linux-'\K'${version%.*}'[\d.]+(?=\.tar\.xz)';;
esac
fi
rx=${update_pattern:-$rx}
rx=${rx:-'(?<!-)\b\Q'"$update_pkgname"'\E[-_]?((src|source)[-_])?\K([^-/_\s]*?\d[^-/_\s]*?)(?=(?:[-_.](?:src|source|orig))?\.(?:[jt]ar|shar|t[bglx]z|tbz2|zip))\b'}
rx=${pattern:-$rx}
rx=${rx:-'(?<!-)\b\Q'"$pkgname"'\E[-_]?((src|source)[-_])?\K([^-/_\s]*?\d[^-/_\s]*?)(?=(?:[-_.](?:src|source|orig))?\.(?:[jt]ar|shar|t[bglx]z|tbz2|zip))\b'}
if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
echo "fetching $url" 1>&2
@ -62,14 +70,14 @@ update_check() {
done |
sort -Vu |
{
grep . || echo "NO VERSION found for $pkgname" 1>&2
grep . || echo "NO VERSION found for $original_pkgname" 1>&2
} |
while IFS= read -r found_version; do
if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
echo "found version $found_version"
fi
consider=true
p="$update_ignore "
p="$ignore "
while [ -n "$p" ]; do
i=${p%% *}
p=${p#* }
@ -82,10 +90,10 @@ update_check() {
esac
done
if $consider; then
xbps-uhelper cmpver "$pkgname-${update_version:-$version}_1" \
"$pkgname-$(printf %s "$found_version" | tr - .)_1"
xbps-uhelper cmpver "$original_pkgname-${version}_1" \
"$original_pkgname-$(printf %s "$found_version" | tr - .)_1"
if [ $? = 255 ]; then
echo "${pkgname}-${version} -> ${pkgname}-${found_version}"
echo "${original_pkgname}-${version} -> ${original_pkgname}-${found_version}"
fi
fi
done