summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Rees <maxcrees@me.com>2019-08-08 05:09:06 -0500
committerMax Rees <maxcrees@me.com>2020-03-07 17:36:53 -0600
commitbb5b2c7567a71129d077e850cdcf5c03cab7d237 (patch)
tree618baa4e46e08da3dfdcfe5daddb031a2ae3378a
parent297d1a067a55acfae39a9b6f96b8e2c8e69f56b6 (diff)
downloadabuild-bb5b2c7567a71129d077e850cdcf5c03cab7d237.tar.gz
abuild-bb5b2c7567a71129d077e850cdcf5c03cab7d237.tar.bz2
abuild-bb5b2c7567a71129d077e850cdcf5c03cab7d237.tar.xz
abuild-bb5b2c7567a71129d077e850cdcf5c03cab7d237.zip
checkapk: factor soname checking into separate function
-rw-r--r--checkapk.in80
1 files changed, 43 insertions, 37 deletions
diff --git a/checkapk.in b/checkapk.in
index b07ea1b..784661f 100644
--- a/checkapk.in
+++ b/checkapk.in
@@ -36,6 +36,46 @@ pkginfo() {
rm .PKGINFO.orig
}
+check_soname() {
+ soname="$1"
+
+ sover_old="${soname#*=}"
+ soname="${soname%=*}"
+ basename="${soname%%.so*}.so"
+ soname_new="$(grep -F "provides = $basename" \
+ "pkginfo-$_pkgname-new" | cut -d ' ' -f 3)"
+ sover_new="${soname_new#*=}"
+ soname_new="${soname_new%=*}"
+
+ if [ -z "$soname_new" ]; then
+ warning "no new version of $soname! (or in a different apk)"
+ else
+ warning "$soname=$sover_old -> $soname_new=$sover_new"
+ fi
+
+ rdeps="$(apk search --repositories-file "$tmpdir/repositories" \
+ --rdepends --quiet "$soname" | sort -u)"
+
+ real_rdeps=
+ for i in $rdeps; do
+ self=0
+ for j in $pkgname $subpackages; do
+ [ "$i" = "$j" ] || continue
+ self=1
+ break
+ done
+ [ "$self" -eq 0 ] && real_rdeps="$real_rdeps
+$i"
+ done
+
+ if [ -n "$real_rdeps" ]; then
+ warning "dependents on $soname:"
+ printf '%s\n' "$real_rdeps" | sed '/^$/d; s/^/\t/' >&2
+ else
+ msg "No dependents on $soname."
+ fi
+}
+
if [ $# -gt 0 ]; then
usage
exit 2
@@ -78,10 +118,10 @@ for i in $pkgname $subpackages; do
grep -E "^https?:" /etc/apk/repositories > "$tmpdir/repositories"
if ! oldapk="$(apk fetch --repositories-file "$tmpdir/repositories" "$_pkgname")"; then
- warning "Could not download $_pkgname (network error or new package)"
+ warning "could not download $_pkgname (network error or new package)"
continue
fi
- [ -n "$oldapk" ] || die "cannot determine new apk name"
+ [ -n "$oldapk" ] || die "can't determine new apk name"
oldapk="${oldapk##Downloading }.apk"
[ -e "$oldapk" ] || die "can't find old apk $oldapk"
@@ -100,41 +140,7 @@ for i in $pkgname $subpackages; do
soname=
for soname in $(awk '/^-provides = so:/ { print $3 }' pkginfo-diff); do
- sover_old="${soname#*=}"
- soname="${soname%=*}"
- basename="${soname%%.so*}.so"
- soname_new="$(grep -F "provides = $basename" \
- "pkginfo-$_pkgname-new" | cut -d ' ' -f 3)"
- sover_new="${soname_new#*=}"
- soname_new="${soname_new%=*}"
-
- if [ -z "$soname_new" ]; then
- warning "No new version of $soname! (or in a different apk)"
- else
- warning "$soname=$sover_old -> $soname_new=$sover_new"
- fi
-
- rdeps="$(apk search --repositories-file "$tmpdir/repositories" \
- --rdepends --quiet "$soname" | sort -u)"
-
- real_rdeps=
- for i in $rdeps; do
- self=0
- for j in $pkgname $subpackages; do
- [ "$i" = "$j" ] || continue
- self=1
- break
- done
- [ "$self" -eq 0 ] && real_rdeps="$real_rdeps
-$i"
- done
-
- if [ -n "$real_rdeps" ]; then
- warning "Dependents on $soname:"
- printf '%s\n' "$real_rdeps" | sed '/^$/d; s/^/\t/' >&2
- else
- msg "No dependents on $soname."
- fi
+ check_soname "$soname"
done
[ -n "$soname" ] || msg "No soname differences for $_pkgname."