|
|
if [[ $SONAME = /* ]]; then | if [[ $SONAME = /* ]]; then |
# Set to "<space>$SONAME<space>" | # Set to "<space>$SONAME<space>" |
SONAME_SEARCH=" $SONAME " | SONAME_SEARCH=" $SONAME " |
|
# Escape the "/" characters |
|
SONAME_SEARCH="${SONAME_SEARCH//\//\\/}" |
else | else |
# Set to "<tab>$SONAME<space>" | # Set to "<tab>$SONAME<space>" |
SONAME_SEARCH=$'\t'"$SONAME " | SONAME_SEARCH=$'\t'"$SONAME " |
|
|
# FIXME: I hate duplicating code | # FIXME: I hate duplicating code |
# Only rebuild for direct dependencies | # Only rebuild for direct dependencies |
MISSING_LIBS=$( | MISSING_LIBS=$( |
expr="/$SONAME_SEARCH/s/^\([^[:space:]]*\).*$/\1/p" |
expr="/$SONAME_SEARCH/s/^[[:space:]]*\([^[:space:]]*\).*$/\1/p" |
sort -u <<< "$ldd_output" | sed -n "$expr" | sort -u <<< "$ldd_output" | sed -n "$expr" |
) | ) |
REQUIRED_LIBS=$( | REQUIRED_LIBS=$( |
expr='s/^[[:space:]]*NEEDED[[:space:]]*\([^[:space:]]*\).*/\1/p'; | expr='s/^[[:space:]]*NEEDED[[:space:]]*\([^[:space:]]*\).*/\1/p'; |
objdump -x "$FILE" | sed "$expr" | sort -u | 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 | if [[ $MISSING_LIBS ]]; then |
echo "obj $FILE" >> "$LIST.3_rebuild" | echo "obj $FILE" >> "$LIST.3_rebuild" |
if [[ $SEARCH_BROKEN ]]; then | if [[ $SEARCH_BROKEN ]]; then |
|
|
RAW_REBUILD_LIST=$(<"$LIST.4_ebuilds") | RAW_REBUILD_LIST=$(<"$LIST.4_ebuilds") |
if [[ $RAW_REBUILD_LIST ]]; then | if [[ $RAW_REBUILD_LIST ]]; then |
OLD_EMERGE_DEFAULT_OPTS="$EMERGE_DEFAULT_OPTS" | 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:]]/ =}" | 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' | | emerge --deep $RAW_REBUILD_LIST | sed 's/\[[^]]*\]//g' | |
grep -F "$REBUILD_GREP" > $LIST.5_order || { | grep -F "$REBUILD_GREP" > $LIST.5_order || { |
eerror | eerror |