--- revdep-rebuild.orig 2007-07-17 13:03:19.000000000 -0500 +++ revdep-rebuild 2007-07-17 13:04:55.000000000 -0500 @@ -350,6 +350,8 @@ if [[ $SONAME = /* ]]; then # Set to "$SONAME" SONAME_SEARCH=" $SONAME " + # Escape the "/" characters + SONAME_SEARCH="${SONAME_SEARCH//\//\\/}" else # Set to "$SONAME" SONAME_SEARCH=$'\t'"$SONAME " @@ -496,14 +498,14 @@ # FIXME: I hate duplicating code # Only rebuild for direct dependencies MISSING_LIBS=$( - expr="/$SONAME_SEARCH/s/^\([^[:space:]]*\).*$/\1/p" + expr="/$SONAME_SEARCH/s/^[[:space:]]*\([^[:space:]]*\).*$/\1/p" sort -u <<< "$ldd_output" | sed -n "$expr" ) REQUIRED_LIBS=$( expr='s/^[[:space:]]*NEEDED[[:space:]]*\([^[:space:]]*\).*/\1/p'; objdump -x "$FILE" | sed "$expr" | sort -u ) - MISSING_LIBS=$(grep -F "$REQUIRED_LIBS") + MISSING_LIBS=$(grep -F "$REQUIRED_LIBS" <<< "$MISSING_LIBS") if [[ $MISSING_LIBS ]]; then echo "obj $FILE" >> "$LIST.3_rebuild" if [[ $SEARCH_BROKEN ]]; then @@ -642,9 +644,9 @@ RAW_REBUILD_LIST=$(<"$LIST.4_ebuilds") if [[ $RAW_REBUILD_LIST ]]; then OLD_EMERGE_DEFAULT_OPTS="$EMERGE_DEFAULT_OPTS" - export EMERGE_DEFAULT_OPTS="--nospinner --pretend --oneshot --nodeps --quiet" + export EMERGE_DEFAULT_OPTS="--nospinner --pretend --oneshot --quiet" RAW_REBUILD_LIST="=${RAW_REBUILD_LIST//[[:space:]]/ =}" - REBUILD_GREP=$(emerge $RAW_REBUILD_LIST | sed 's/\[[^]]*\]//g') && + REBUILD_GREP=$(emerge --nodeps $RAW_REBUILD_LIST | sed 's/\[[^]]*\]//g') && emerge --deep $RAW_REBUILD_LIST | sed 's/\[[^]]*\]//g' | grep -F "$REBUILD_GREP" > $LIST.5_order || { eerror