Add support to detect "no version information available" message from ldd (Bug #169973)
authorfuzzyray <fuzzyray@gentoo.org>
Sat, 10 Mar 2007 03:41:00 +0000 (03:41 -0000)
committerfuzzyray <fuzzyray@gentoo.org>
Sat, 10 Mar 2007 03:41:00 +0000 (03:41 -0000)
svn path=/; revision=354

trunk/ChangeLog
trunk/src/revdep-rebuild/revdep-rebuild

index 19eef9dfe4204a3c7697fd46db6ef24546265b14..1dce6d1bffb4be0e034e379147f1844b6439d828 100644 (file)
@@ -1,3 +1,7 @@
+2007-03-09 Paul Varner <fuzzyray@gentoo.org>
+       * revdep-rebuild: Add support to detect "no version information
+       available" message from ldd (Bug #169973)
+
 2007-03-08 Paul Varner <fuzzyray@gentoo.org>
        * equery: Improved handling of KeyError in equery depends command
        (Bug #169929)
index 7293431aa11528eddf7259cfc3c4923daebd62ad..f4040512cc50be2399b10709955f811ebf98dc08 100755 (executable)
@@ -430,10 +430,11 @@ else
        set_trap "$LLIST.3_rebuild"
        LD_MASK="\\(    $(echo "$LD_LIBRARY_MASK" | sed 's/\./\\./g;s/ / \\|    /g') \\)"
        echo -n >$LLIST.3_rebuild
+       echo -n >$LLIST.3_ldd_errors
        cat $LIST.1_files | egrep -v '*\.la$' | while read FILE ; do
        # Note: double checking seems to be faster than single
        # with complete path (special add ons are rare).
-       if ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | $SONAME_GREP -q "$SONAME_SEARCH" ; then
+       if ldd "$FILE" 2>>$LLIST.3_ldd_errors | grep -v "$LD_MASK" | $SONAME_GREP -q "$SONAME_SEARCH" ; then
                if $SEARCH_BROKEN && $FULL_LD_PATH ; then
                        if LD_LIBRARY_PATH="$COMPLETE_LD_LIBRARY_PATH" ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | $SONAME_GREP -q "$SONAME_SEARCH" ; then
                                # FIX: I hate duplicating code
@@ -480,6 +481,12 @@ else
        fi
        done
        if $SEARCH_BROKEN ; then
+               # Look for missing version
+               for FILE in $(grep "no version information available" $LLIST.3_ldd_errors | awk '{print $NF}' | sed 's/[()]//g' | sort -u) ; do
+                       echo "obj $FILE" >>$LLIST.3_rebuild
+                       echo_v "  broken $FILE (no version information available)"
+               done
+               # Look for broken .la files
                cat $LIST.1_files | egrep '*\.la$' | while read FILE ; do
                        for depend in $(grep '^dependency_libs' $FILE | awk -F'=' '{print $2}' | sed "s/'//g") ; do
                                [ ${depend:0:1} != '/' ] && continue