Add patch from loki_val to check -l dependencies in .la files (Bug #267898)
authorfuzzyray <fuzzyray@gentoo.org>
Thu, 30 Apr 2009 14:22:10 +0000 (14:22 -0000)
committerfuzzyray <fuzzyray@gentoo.org>
Thu, 30 Apr 2009 14:22:10 +0000 (14:22 -0000)
svn path=/; revision=555

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

index 3007bc5f2120031cce47a01337096328a1aac983..65978801a9a3f9d181c806a523c15c990583da25 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-30: Paul Varner <fuzzyray@gentoo.org>
+       * revdep-rebuild: Add patch from loki_val to check -l dependencies in 
+       .la files (Bug #267898)
+
 2009-04-24: Paul Varner <fuzzyray@gentoo.org>
        * ekeyword: Fix to handle multiline KEYWORDS (Bug #267250)
 
index 4e1df16e10cc7a2522f4f7a6b0a56b6ebf8812c8..5177a52794ed5d1800ffa38a77b6f7721e316ab5 100755 (executable)
@@ -737,18 +737,39 @@ main_checks() {
                                fi
                        elif [[ $SEARCH_BROKEN ]]; then
                                # Look for broken .la files
+                               la_SEARCH_DIRS="$SEARCH_DIRS"
+                               la_search_dir=""
+                               la_broken=""
+                               la_lib=""
                                for depend in $(
                                        gawk -F"[=']" '/^dependency_libs/{
-                                               gsub("^-[^[:space:]]*", "", $3);
-                                               gsub("[[:space:]]-[^[:space:]]*", "", $3);
                                                print $3
                                        }' "$target_file"
                                ); do
                                        if [[ $depend = /* && ! -e $depend ]]; then
                                                echo "obj $target_file" >> "$BROKEN_FILE"
                                                echo_v "  broken $target_file (requires $depend)"
+                                       elif [[ $depend = "-L/"* || $depend = "-R/"* ]]; then
+                                               if ! [[ $'\n'${la_SEARCH_DIRS}$'\n' == *$'\n'${depend#-?}$'\n'* ]]; then
+                                                       la_SEARCH_DIRS+=$'\n'"${depend#-?}"
+                                               fi
+                                       elif [[ $depend = "-l"* ]]; then
+                                               la_lib="lib${depend#-l}"
+                                               la_broken="yes"
+                                               IFS=$'\n'
+                                               for la_search_dir in $la_SEARCH_DIRS; do
+                                                       if [[ -e ${la_search_dir}/${la_lib}.so || -e ${la_search_dir}/${la_lib}.a ]]; then
+                                                               la_broken="no"
+                                                       fi
+                                               done
+                                               IFS="$OIFS"
+                                               if [[ $la_broken = yes ]]; then
+                                                       echo "obj $target_file" >> "$BROKEN_FILE"
+                                                       echo_v "  broken $target_file (requires $depend)"
+                                               fi
                                        fi
                                done
+                               unset la_SEARCH_DIRS la_search_dir la_broken la_lib
                        fi
                        [[ $VERBOSE ]] &&
                                progress $((++i)) $numFiles $target_file ||