Use realpath in get_file_owner to be able to get the package containing e.g. /lib...
authoridl0r <idl0r@gentoo.org>
Wed, 28 Oct 2009 20:48:11 +0000 (20:48 -0000)
committeridl0r <idl0r@gentoo.org>
Wed, 28 Oct 2009 20:48:11 +0000 (20:48 -0000)
svn path=/trunk/gentoolkit/; revision=696

ChangeLog
bin/revdep-rebuild

index e5afdd66cb36db1a5642175072d41911cdb7f516..955a1ce1e8ff336f543179f36ba449db6f7ef4f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
+2009-10-27: Christian Ruppert <idl0r@gentoo.org>
+       * revdep-rebuild: Use realpath in get_file_owner to be able to get the
+               package containing e.g. /lib/libreadline.so.6 on amd64, fixes bug 280341.
+
 2009-10-27: Christian Ruppert <idl0r@gentoo.org>
        * revdep-rebuild.1: Fix bug 281050, thanks to Jesús Guerrero
-       <i92guboj@gentoo.org>.
+               <i92guboj@gentoo.org>.
 
 2009-10-26: Christian Ruppert <idl0r@gentoo.org>
        * euse: Don't add an additional new line at the end of file.
index b44dadc2a06ffb9a01d39d05dc86db2e2745d115..b6d4eeda6be1c5e698f3edfdea39387e601cf936 100755 (executable)
@@ -252,12 +252,19 @@ clean_exit() {
 }
 ##
 # Get the name of the package that owns a file or list of files given as args.
+# NOTE: depends on app-misc/realpath!
 get_file_owner() {
        local IFS=$'\n'
-       # ${*/%/ } adds a space to the end of each object name to prevent false
+       # Add a space to the end of each object name to prevent false
        # matches, for example /usr/bin/dia matching /usr/bin/dialog (bug #196460).
+       # The same for "${rpath} ".
+
+       rpath=$(realpath "${*}" 2>/dev/null)
+       # To ensure we always have something in rpath...
+       [[ -z $rpath ]] && rpath=${*}
+
        find -L /var/db/pkg -name CONTENTS -print0 |
-               xargs -0 grep -Fl "${*/%/ }" |
+               xargs -0 grep -Fl -e "${*} " -e "${rpath} " |
                sed 's:/var/db/pkg/\(.*\)/CONTENTS:\1:'
 }
 ##