[arch-projects] [PATCH V2] [devtools] Fix soname checking
This makes soname checking much more robust and is explicit when a soname change is found. Thanks to Bluewind for pointing me to find-libprovides. --- checkpkg.in | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/checkpkg.in b/checkpkg.in index ccbbecd..3630567 100644 --- a/checkpkg.in +++ b/checkpkg.in @@ -63,12 +63,11 @@ for _pkgname in "${pkgname[@]}"; do sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" - if diff "$TEMPDIR/filelist-$_pkgname"{-old,} | grep '\.so' &>/dev/null; then - mkdir -p "$TEMPDIR/pkg" - bsdtar -x -C "$TEMPDIR" -f "$pkgfile" #> /dev/null - comm -13 <(sort "$TEMPDIR/filelist-$_pkgname-old") <(sort "$TEMPDIR/filelist-$_pkgname") | grep .so$ | while read i; do - echo "${i}: " "$(objdump -p "$TEMPDIR/$i" | grep SONAME)" - done + find-libprovides "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/libraries-$_pkgname-old" + find-libprovides "$pkgfile" | sort > "$TEMPDIR/libraries-$_pkgname" + if ! cmp "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname" &> /dev/null; then + msg "Sonames differ in $_pkgname!" + sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname" else msg "No soname differences for $_pkgname." fi -- 2.1.0
This makes soname checking much more robust and is explicit when a soname change is found. --- checkpkg.in | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/checkpkg.in b/checkpkg.in index ccbbecd..6ba04ed 100644 --- a/checkpkg.in +++ b/checkpkg.in @@ -63,12 +63,11 @@ for _pkgname in "${pkgname[@]}"; do sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" - if diff "$TEMPDIR/filelist-$_pkgname"{-old,} | grep '\.so' &>/dev/null; then - mkdir -p "$TEMPDIR/pkg" - bsdtar -x -C "$TEMPDIR" -f "$pkgfile" #> /dev/null - comm -13 <(sort "$TEMPDIR/filelist-$_pkgname-old") <(sort "$TEMPDIR/filelist-$_pkgname") | grep .so$ | while read i; do - echo "${i}: " "$(objdump -p "$TEMPDIR/$i" | grep SONAME)" - done + find-libprovides "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/libraries-$_pkgname-old" + find-libprovides "$pkgfile" | sort > "$TEMPDIR/libraries-$_pkgname" + if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then + msg "Sonames differ in $_pkgname!" + echo "$diff_output" else msg "No soname differences for $_pkgname." fi -- 2.1.0
This makes soname checking much more robust and is explicit when a soname change is found. --- checkpkg.in | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/checkpkg.in b/checkpkg.in index ccbbecd..6ba04ed 100644 --- a/checkpkg.in +++ b/checkpkg.in @@ -63,12 +63,11 @@ for _pkgname in "${pkgname[@]}"; do sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" - if diff "$TEMPDIR/filelist-$_pkgname"{-old,} | grep '\.so' &>/dev/null; then - mkdir -p "$TEMPDIR/pkg" - bsdtar -x -C "$TEMPDIR" -f "$pkgfile" #> /dev/null - comm -13 <(sort "$TEMPDIR/filelist-$_pkgname-old") <(sort "$TEMPDIR/filelist-$_pkgname") | grep .so$ | while read i; do - echo "${i}: " "$(objdump -p "$TEMPDIR/$i" | grep SONAME)" - done + find-libprovides "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/libraries-$_pkgname-old" + find-libprovides "$pkgfile" | sort > "$TEMPDIR/libraries-$_pkgname" + if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then + msg "Sonames differ in $_pkgname!" + echo "$diff_output" else msg "No soname differences for $_pkgname." fi -- 2.1.0
participants (1)
-
Doug Newgard