summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2019-03-07 21:31:58 -0500
committerLevente Polyak <anthraxx@archlinux.org>2019-08-09 19:41:52 +0200
commitc14338c0fe71a74f5e56b4f3af7c548fe0928e15 (patch)
treec67ac0720a573444f592d795f6c7bb00e91889f8
parent8dbf95cdd4858cccf43f7f176b44a0c1121df07b (diff)
downloaddevtools-c14338c0fe71a74f5e56b4f3af7c548fe0928e15.tar.xz
checkpkg: implement comparison against alternative targets
This allows comparing the currently built set of packages against targets named by filename, url, or pkgname. One example use is to compare a package against a different version that was never in the repos; another example use is to compare a *-git package against the non-git version. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
-rw-r--r--checkpkg.in25
1 files changed, 20 insertions, 5 deletions
diff --git a/checkpkg.in b/checkpkg.in
index e0e1f83..335174c 100644
--- a/checkpkg.in
+++ b/checkpkg.in
@@ -36,6 +36,8 @@ STARTDIR=$(pwd)
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
for _pkgname in "${pkgname[@]}"; do
+ comparepkg=$_pkgname
+ pkgurl=
target_pkgver=$(get_full_version "$_pkgname")
if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
@@ -43,16 +45,29 @@ for _pkgname in "${pkgname[@]}"; do
ln -s "$pkgfile" "$TEMPDIR"
- pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$_pkgname") ||
- die "Couldn't download previous package for %s." "$_pkgname"
+ if (( $# )); then
+ case $1 in
+ /*|*/*)
+ pkgurl=file://$(readlink -m "$1") ;;
+ *.pkg.tar*)
+ pkgurl=$1 ;;
+ '')
+ ;;
+ *)
+ comparepkg=$1 ;;
+ esac
+ shift
+ fi
+ [[ -n $pkgurl ]] || pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$comparepkg") ||
+ die "Couldn't download previous package for %s." "$comparepkg"
- oldpkg=${pkgurl##*://*/}
+ oldpkg=${pkgurl##*/}
- if [[ ${oldpkg##*/} = "${pkgfile##*/}" ]]; then
+ if [[ ${oldpkg} = "${pkgfile##*/}" ]]; then
die "The built package (%s) is the one in the repo right now!" "$_pkgname"
fi
- if [[ $pkgurl = file://* ]]; then
+ if [[ $pkgurl = file://* || ( $pkgurl = /* && -f $pkgurl ) ]]; then
ln -s "${pkgurl#file://}" "$TEMPDIR/$oldpkg"
elif [[ -f "$PKGDEST/$oldpkg" ]]; then
ln -s "$PKGDEST/$oldpkg" "$TEMPDIR/$oldpkg"