From 3b7a76512d073b7a09fb4e85cee7eada792d755d Mon Sep 17 00:00:00 2001 From: Eivind Uggedal Date: Thu, 15 Jan 2015 09:34:44 +0000 Subject: [PATCH] update_check.sh: use external update file for overrides --- Manual.md | 26 +++++++-------- common/environment/setup/sourcepkg.sh | 1 - common/xbps-src/shutils/update_check.sh | 44 +++++++++++++++---------- 3 files changed, 39 insertions(+), 32 deletions(-) diff --git a/Manual.md b/Manual.md index a29d16e9b5d..56ceb4a2452 100644 --- a/Manual.md +++ b/Manual.md @@ -459,29 +459,29 @@ The following repository names are valid: #### Checking for new upstream releases -For automatic checking of new versions, in some cases you need to define -these variables (in most cases, the sensible defaults work): +New upstream versions can be automatically checked using +`./xbps-src update-check `. In some cases you need to override +the sensible defaults by assigning the following variables in a `update` +file in the same directory as the relevant `template` file: -- `update_site` contains the URL where the version number is +- `site` contains the URL where the version number is mentioned. If unset, defaults to `homepage` and the directories where `distfiles` reside. -- `update_pkgname` is the package name the default pattern checks for. -If unset, defaults to `pkgname`. +- `pkgname` is the package name the default pattern checks for. +If unset, defaults to `pkgname` from the template. -- `update_pattern` is a perl-compatible regular expression +- `pattern` is a perl-compatible regular expression matching the version number. Anchor the version number using `\K` -and `(?=...)`. Example: `update_pattern='\K[\d.]+(?=)'`, this +and `(?=...)`. Example: `pattern='\K[\d.]+(?=)'`, this matches a version number enclosed in `...` tags. -- `update_ignore` is a space-separated list of shell globs that match +- `ignore` is a space-separated list of shell globs that match version numbers which are not taken into account for checking newer -versions. Example: `update_ignore="*b*"` +versions. Example: `ignore="*b*"` -- `update_version` is the version number used to compare against -upstream versions. Example: `update_version=${version//./_}` - -You can run such a check using `./xbps-src update-check `. +- `version` is the version number used to compare against +upstream versions. Example: `version=${version//./_}` ### build style scripts diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh index 0c9af9dea45..1301787dbba 100644 --- a/common/environment/setup/sourcepkg.sh +++ b/common/environment/setup/sourcepkg.sh @@ -9,7 +9,6 @@ unset -v make_cmd make_build_args make_install_args make_build_target make_insta unset -v patch_args disable_parallel_build keep_libtool_archives unset -v reverts subpackages makedepends hostmakedepends depends unset -v build_options build_options_default bootstrap repository -unset -v update_pkgname update_site update_pattern update_ignore update_version unset -v CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH unset -v CC CXX CPP GCC LD AR AS RANLIB NM OBJDUMP OBJCOPY STRIP READELF diff --git a/common/xbps-src/shutils/update_check.sh b/common/xbps-src/shutils/update_check.sh index e05406f9d30..b8f71e91f65 100644 --- a/common/xbps-src/shutils/update_check.sh +++ b/common/xbps-src/shutils/update_check.sh @@ -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:-'(?&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