Lines 52-58
Link Here
|
52 |
exit 0 |
52 |
exit 0 |
53 |
fi |
53 |
fi |
54 |
|
54 |
|
55 |
echo "Configuring search environment for revdep-rebuild" |
55 |
echo_v() { |
|
|
56 |
$VERBOSE && echo "$@" |
57 |
} |
58 |
|
59 |
PACKAGE_NAMES=false |
60 |
SONAME="not found" |
61 |
SONAME_GREP=grep |
62 |
SEARCH_BROKEN=true |
63 |
VERBOSE=true |
64 |
EXTRA_VERBOSE=false |
65 |
KEEP_TEMP=false |
66 |
|
67 |
EMERGE_OPTIONS="" |
68 |
PRELIMINARY_CALLED_OPTIONS="" |
69 |
while [ ! -z "$1" ] ; do |
70 |
case "$1" in |
71 |
-X | --package-names ) |
72 |
PACKAGE_NAMES=true |
73 |
PRELIMINARY_CALLED_OPTIONS="${PRELIMINARY_CALLED_OPTIONS} --package_names" |
74 |
shift |
75 |
;; |
76 |
-q | --quiet ) |
77 |
VERBOSE=false |
78 |
EMERGE_OPTIONS="${EMERGE_OPTIONS} $1" |
79 |
shift |
80 |
;; |
81 |
--library=* | --soname=* | --soname-regexp=* ) |
82 |
SONAME="${1#*=}" |
83 |
SEARCH_BROKEN=false |
84 |
PRELIMINARY_CALLED_OPTIONS="${PRELIMINARY_CALLED_OPTIONS} --library=${SONAME}" |
85 |
shift |
86 |
;; |
87 |
--library | --soname | --soname-regexp ) |
88 |
SONAME="$2" |
89 |
SEARCH_BROKEN=false |
90 |
PRELIMINARY_CALLED_OPTIONS="${PRELIMINARY_CALLED_OPTIONS} --library=${SONAME}" |
91 |
shift 2 |
92 |
;; |
93 |
-nc | --no-color ) |
94 |
NOCOLOR=true |
95 |
shift |
96 |
;; |
97 |
-i | --ignore ) |
98 |
rm -f ${LIST}* |
99 |
shift |
100 |
;; |
101 |
--keep-temp ) |
102 |
KEEPTEMP=true |
103 |
shift |
104 |
;; |
105 |
-vv | --extra-verbose ) |
106 |
EXTRA_VERBOSE=true |
107 |
shift |
108 |
;; |
109 |
-- ) |
110 |
shift |
111 |
;; |
112 |
* ) |
113 |
EMERGE_OPTIONS="${EMERGE_OPTIONS} $1" |
114 |
shift |
115 |
;; |
116 |
esac |
117 |
done |
118 |
|
119 |
EMERGE_OPTIONS=$(echo $EMERGE_OPTIONS | sed 's/^ //') |
120 |
|
121 |
if [ -z "$PRELIMINARY_CALLED_OPTIONS" ] |
122 |
then |
123 |
CALLED_OPTIONS="" |
124 |
else |
125 |
for i in $(echo $PRELIMINARY_CALLED_OPTIONS | tr ' ' '\n'| sort) |
126 |
do |
127 |
CALLED_OPTIONS="$(echo $CALLED_OPTIONS $i)" |
128 |
done |
129 |
fi |
130 |
|
131 |
echo_v "Configuring search environment for revdep-rebuild" |
56 |
|
132 |
|
57 |
# Obey PORTAGE_NICENESS |
133 |
# Obey PORTAGE_NICENESS |
58 |
PORTAGE_NICENESS=$(portageq envvar PORTAGE_NICENESS) |
134 |
PORTAGE_NICENESS=$(portageq envvar PORTAGE_NICENESS) |
Lines 129-207
Link Here
|
129 |
YL="\x1b[33;01m" |
205 |
YL="\x1b[33;01m" |
130 |
BL="\x1b[34;01m" |
206 |
BL="\x1b[34;01m" |
131 |
|
207 |
|
132 |
alias echo_v=echo |
|
|
133 |
|
134 |
PACKAGE_NAMES=false |
135 |
SONAME="not found" |
136 |
SONAME_GREP=grep |
137 |
SEARCH_BROKEN=true |
138 |
EXTRA_VERBOSE=false |
139 |
KEEP_TEMP=false |
140 |
|
141 |
EMERGE_OPTIONS="" |
142 |
PRELIMINARY_CALLED_OPTIONS="" |
143 |
while [ ! -z "$1" ] ; do |
144 |
case "$1" in |
145 |
-X | --package-names ) |
146 |
PACKAGE_NAMES=true |
147 |
PRELIMINARY_CALLED_OPTIONS="${PRELIMINARY_CALLED_OPTIONS} --package_names" |
148 |
shift |
149 |
;; |
150 |
-q | --quiet ) |
151 |
alias echo_v=: |
152 |
EMERGE_OPTIONS="${EMERGE_OPTIONS} $1" |
153 |
shift |
154 |
;; |
155 |
--library=* | --soname=* | --soname-regexp=* ) |
156 |
SONAME="${1#*=}" |
157 |
SEARCH_BROKEN=false |
158 |
PRELIMINARY_CALLED_OPTIONS="${PRELIMINARY_CALLED_OPTIONS} --library=${SONAME}" |
159 |
shift |
160 |
;; |
161 |
--library | --soname | --soname-regexp ) |
162 |
SONAME="$2" |
163 |
SEARCH_BROKEN=false |
164 |
PRELIMINARY_CALLED_OPTIONS="${PRELIMINARY_CALLED_OPTIONS} --library=${SONAME}" |
165 |
shift 2 |
166 |
;; |
167 |
-nc | --no-color ) |
168 |
NOCOLOR=true |
169 |
shift |
170 |
;; |
171 |
-i | --ignore ) |
172 |
rm -f ${LIST}* |
173 |
shift |
174 |
;; |
175 |
--keep-temp ) |
176 |
KEEPTEMP=true |
177 |
shift |
178 |
;; |
179 |
-vv | --extra-verbose ) |
180 |
EXTRA_VERBOSE=true |
181 |
shift |
182 |
;; |
183 |
-- ) |
184 |
shift |
185 |
;; |
186 |
* ) |
187 |
EMERGE_OPTIONS="${EMERGE_OPTIONS} $1" |
188 |
shift |
189 |
;; |
190 |
esac |
191 |
done |
192 |
|
193 |
EMERGE_OPTIONS=$(echo $EMERGE_OPTIONS | sed 's/^ //') |
194 |
|
195 |
if [ -z "$PRELIMINARY_CALLED_OPTIONS" ] |
196 |
then |
197 |
CALLED_OPTIONS="" |
198 |
else |
199 |
for i in $(echo $PRELIMINARY_CALLED_OPTIONS | tr ' ' '\n'| sort) |
200 |
do |
201 |
CALLED_OPTIONS="$(echo $CALLED_OPTIONS $i)" |
202 |
done |
203 |
fi |
204 |
|
205 |
if [ "$NOCOLOR" = "yes" -o "$NOCOLOR" = "true" ] |
208 |
if [ "$NOCOLOR" = "yes" -o "$NOCOLOR" = "true" ] |
206 |
then |
209 |
then |
207 |
NOCOLOR=true |
210 |
NOCOLOR=true |
Lines 291-308
Link Here
|
291 |
cat $LIST.0_env |
294 |
cat $LIST.0_env |
292 |
fi |
295 |
fi |
293 |
|
296 |
|
294 |
echo |
297 |
echo_v |
295 |
echo "Checking reverse dependencies..." |
298 |
echo_v "Checking reverse dependencies..." |
296 |
echo |
299 |
echo_v |
297 |
echo "Packages containing binaries and libraries $HEAD_TEXT" |
300 |
echo_v "Packages containing binaries and libraries $HEAD_TEXT" |
298 |
echo "will be emerged." |
301 |
echo_v "will be emerged." |
299 |
|
302 |
|
300 |
echo |
303 |
echo_v |
301 |
echo -n -e "${GR}Collecting system binaries and libraries...${NO}" |
304 |
echo_v -n -e "${GR}Collecting system binaries and libraries...${NO}" |
302 |
|
305 |
|
303 |
if [ -f $LIST.1_files ] |
306 |
if [ -f $LIST.1_files ] |
304 |
then |
307 |
then |
305 |
echo " using existing $LIST.1_files." |
308 |
echo_v " using existing $LIST.1_files." |
306 |
else |
309 |
else |
307 |
# Be safe and remove any extraneous temporary files |
310 |
# Be safe and remove any extraneous temporary files |
308 |
rm -f ${LIST}.[1-9]_* |
311 |
rm -f ${LIST}.[1-9]_* |
Lines 319-332
Link Here
|
319 |
done |
322 |
done |
320 |
|
323 |
|
321 |
mv $LIST.0_files $LIST.1_files |
324 |
mv $LIST.0_files $LIST.1_files |
322 |
echo -e " done.\n ($LIST.1_files)" |
325 |
echo_v -e " done.\n ($LIST.1_files)" |
323 |
fi |
326 |
fi |
324 |
|
327 |
|
325 |
if $SEARCH_BROKEN ; then |
328 |
if $SEARCH_BROKEN ; then |
326 |
echo |
329 |
echo_v |
327 |
echo -n -e "${GR}Collecting complete LD_LIBRARY_PATH...${NO}" |
330 |
echo_v -n -e "${GR}Collecting complete LD_LIBRARY_PATH...${NO}" |
328 |
if [ -f $LIST.2_ldpath ] ; then |
331 |
if [ -f $LIST.2_ldpath ] ; then |
329 |
echo " using existing $LIST.2_ldpath." |
332 |
echo_v " using existing $LIST.2_ldpath." |
330 |
else |
333 |
else |
331 |
set_trap "$LIST.2_ldpath" |
334 |
set_trap "$LIST.2_ldpath" |
332 |
# Ensure that the "trusted" lib directories are at the start of the path |
335 |
# Ensure that the "trusted" lib directories are at the start of the path |
Lines 335-349
Link Here
|
335 |
sed '/^#/d;s/#.*$//' </etc/ld.so.conf |
338 |
sed '/^#/d;s/#.*$//' </etc/ld.so.conf |
336 |
sed 's:/[^/]*$::' <$LIST.1_files | sort -ru |
339 |
sed 's:/[^/]*$::' <$LIST.1_files | sort -ru |
337 |
) | tr '\n' : | tr -d '\r' | sed 's/:$//' >$LIST.2_ldpath |
340 |
) | tr '\n' : | tr -d '\r' | sed 's/:$//' >$LIST.2_ldpath |
338 |
echo -e " done.\n ($LIST.2_ldpath)" |
341 |
echo_v -e " done.\n ($LIST.2_ldpath)" |
339 |
fi |
342 |
fi |
340 |
export COMPLETE_LD_LIBRARY_PATH="$(cat $LIST.2_ldpath)" |
343 |
export COMPLETE_LD_LIBRARY_PATH="$(cat $LIST.2_ldpath)" |
341 |
fi |
344 |
fi |
342 |
|
345 |
|
343 |
echo |
346 |
echo_v |
344 |
echo -n -e "${GR}Checking dynamic linking$WORKING_TEXT...${NO}" |
347 |
echo_v -n -e "${GR}Checking dynamic linking$WORKING_TEXT...${NO}" |
345 |
if [ -f $LLIST.3_rebuild ] ; then |
348 |
if [ -f $LLIST.3_rebuild ] ; then |
346 |
echo " using existing $LLIST.3_rebuild." |
349 |
echo_v " using existing $LLIST.3_rebuild." |
347 |
else |
350 |
else |
348 |
echo_v |
351 |
echo_v |
349 |
set_trap "$LLIST.3_rebuild" |
352 |
set_trap "$LLIST.3_rebuild" |
Lines 394-409
Link Here
|
394 |
fi |
397 |
fi |
395 |
fi |
398 |
fi |
396 |
done |
399 |
done |
397 |
echo -e " done.\n ($LLIST.3_rebuild)" |
400 |
echo_v -e " done.\n ($LLIST.3_rebuild)" |
398 |
fi |
401 |
fi |
399 |
|
402 |
|
400 |
if $PACKAGE_NAMES ; then |
403 |
if $PACKAGE_NAMES ; then |
401 |
EXACT_EBUILDS=false |
404 |
EXACT_EBUILDS=false |
402 |
|
405 |
|
403 |
echo |
406 |
echo_v |
404 |
echo -n -e "${GR}Assigning files to packages...${NO}" |
407 |
echo_v -n -e "${GR}Assigning files to packages...${NO}" |
405 |
if [ -f $LLIST.4_packages_raw ] ; then |
408 |
if [ -f $LLIST.4_packages_raw ] ; then |
406 |
echo " using existing $LLIST.4_packages_raw." |
409 |
echo_v " using existing $LLIST.4_packages_raw." |
407 |
else |
410 |
else |
408 |
set_trap "$LLIST.4_packages*" |
411 |
set_trap "$LLIST.4_packages*" |
409 |
echo -n >$LLIST.4_packages_raw |
412 |
echo -n >$LLIST.4_packages_raw |
Lines 423-444
Link Here
|
423 |
fi |
426 |
fi |
424 |
done |
427 |
done |
425 |
echo_v |
428 |
echo_v |
426 |
echo -e " done.\n ($LLIST.4_packages_raw, $LLIST.4_package_owners)" |
429 |
echo_v -e " done.\n ($LLIST.4_packages_raw, $LLIST.4_package_owners)" |
427 |
fi |
430 |
fi |
428 |
|
431 |
|
429 |
echo |
432 |
echo_v |
430 |
echo -n -e "${GR}Cleaning list of packages to rebuild...${NO}" |
433 |
echo_v -n -e "${GR}Cleaning list of packages to rebuild...${NO}" |
431 |
if [ -f $LLIST.4_packages ] ; then |
434 |
if [ -f $LLIST.4_packages ] ; then |
432 |
echo " using existing $LLIST.4_packages." |
435 |
echo_v " using existing $LLIST.4_packages." |
433 |
else |
436 |
else |
434 |
sort -u $LLIST.4_packages_raw >$LLIST.4_packages |
437 |
sort -u $LLIST.4_packages_raw >$LLIST.4_packages |
435 |
echo -e " done.\n ($LLIST.4_packages)" |
438 |
echo_v -e " done.\n ($LLIST.4_packages)" |
436 |
fi |
439 |
fi |
437 |
|
440 |
|
438 |
echo |
441 |
echo_v |
439 |
echo -n -e "${GR}Assigning packages to ebuilds...${NO}" |
442 |
echo_v -n -e "${GR}Assigning packages to ebuilds...${NO}" |
440 |
if [ -f $LLIST.4_ebuilds ] ; then |
443 |
if [ -f $LLIST.4_ebuilds ] ; then |
441 |
echo " using existing $LLIST.4_ebuilds." |
444 |
echo_v " using existing $LLIST.4_ebuilds." |
442 |
else |
445 |
else |
443 |
if [ -s "$LLIST.4_packages" ] |
446 |
if [ -s "$LLIST.4_packages" ] |
444 |
then |
447 |
then |
Lines 476-494
Link Here
|
476 |
rm -f /etc/portage/package.mask |
479 |
rm -f /etc/portage/package.mask |
477 |
fi |
480 |
fi |
478 |
done > $LLIST.4_ebuilds |
481 |
done > $LLIST.4_ebuilds |
479 |
echo -e " done.\n ($LLIST.4_ebuilds)" |
482 |
echo_v -e " done.\n ($LLIST.4_ebuilds)" |
480 |
else |
483 |
else |
481 |
echo " Nothing to rebuild" |
484 |
echo_v " Nothing to rebuild" |
482 |
echo -n > $LLIST.4_ebuilds |
485 |
echo -n > $LLIST.4_ebuilds |
483 |
fi |
486 |
fi |
484 |
fi |
487 |
fi |
485 |
else |
488 |
else |
486 |
EXACT_EBUILDS=true |
489 |
EXACT_EBUILDS=true |
487 |
|
490 |
|
488 |
echo |
491 |
echo_v |
489 |
echo -n -e "${GR}Assigning files to ebuilds...${NO}" |
492 |
echo_v -n -e "${GR}Assigning files to ebuilds...${NO}" |
490 |
if [ -f $LLIST.4_ebuilds ] ; then |
493 |
if [ -f $LLIST.4_ebuilds ] ; then |
491 |
echo " using existing $LLIST.4_ebuilds." |
494 |
echo_v " using existing $LLIST.4_ebuilds." |
492 |
else |
495 |
else |
493 |
if [ -s "$LLIST.3_rebuild" ] ; then |
496 |
if [ -s "$LLIST.3_rebuild" ] ; then |
494 |
set_trap "$LLIST.4_ebuilds" |
497 |
set_trap "$LLIST.4_ebuilds" |
Lines 497-515
Link Here
|
497 |
cd /var/db/pkg |
500 |
cd /var/db/pkg |
498 |
fgrep -l -f - */*/CONTENTS |
501 |
fgrep -l -f - */*/CONTENTS |
499 |
) | sed s:/CONTENTS:: > $LLIST.4_ebuilds |
502 |
) | sed s:/CONTENTS:: > $LLIST.4_ebuilds |
500 |
echo -e " done.\n ($LLIST.4_ebuilds)" |
503 |
echo_v -e " done.\n ($LLIST.4_ebuilds)" |
501 |
else |
504 |
else |
502 |
echo " Nothing to rebuild" |
505 |
echo_v " Nothing to rebuild" |
503 |
echo -n > $LLIST.4_ebuilds |
506 |
echo -n > $LLIST.4_ebuilds |
504 |
fi |
507 |
fi |
505 |
fi |
508 |
fi |
506 |
|
509 |
|
507 |
fi |
510 |
fi |
508 |
|
511 |
|
509 |
echo |
512 |
echo_v |
510 |
echo -n -e "${GR}Evaluating package order...${NO}" |
513 |
echo_v -n -e "${GR}Evaluating package order...${NO}" |
511 |
if [ -f $LLIST.5_order ] ; then |
514 |
if [ -f $LLIST.5_order ] ; then |
512 |
echo " using existing $LLIST.5_order." |
515 |
echo_v " using existing $LLIST.5_order." |
513 |
else |
516 |
else |
514 |
RAW_REBUILD_LIST="$(cat $LLIST.4_ebuilds | sed s/^/=/ | tr '\n' ' ')" |
517 |
RAW_REBUILD_LIST="$(cat $LLIST.4_ebuilds | sed s/^/=/ | tr '\n' ' ')" |
515 |
if [ ! -z "$RAW_REBUILD_LIST" ] ; then |
518 |
if [ ! -z "$RAW_REBUILD_LIST" ] ; then |
Lines 533-539
Link Here
|
533 |
else |
536 |
else |
534 |
echo -n "" >$LLIST.5_order |
537 |
echo -n "" >$LLIST.5_order |
535 |
fi |
538 |
fi |
536 |
echo -e " done.\n ($LLIST.5_order)" |
539 |
echo_v -e " done.\n ($LLIST.5_order)" |
537 |
fi |
540 |
fi |
538 |
|
541 |
|
539 |
REBUILD_LIST="$(cat $LLIST.5_order | sed s/^/=/ | tr '\n' ' ')" |
542 |
REBUILD_LIST="$(cat $LLIST.5_order | sed s/^/=/ | tr '\n' ' ')" |
Lines 541-547
Link Here
|
541 |
trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM |
544 |
trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM |
542 |
|
545 |
|
543 |
if [ -z "$REBUILD_LIST" ] ; then |
546 |
if [ -z "$REBUILD_LIST" ] ; then |
544 |
echo -e "\n${GR}$OK_TEXT... All done.${NO} " |
547 |
echo_v -e "\n${GR}$OK_TEXT... All done.${NO} " |
545 |
if [ ! $KEEPTEMP ] |
548 |
if [ ! $KEEPTEMP ] |
546 |
then |
549 |
then |
547 |
rm $LIST.[0-2]_* |
550 |
rm $LIST.[0-2]_* |
Lines 553-560
Link Here
|
553 |
IS_REAL_MERGE=true |
556 |
IS_REAL_MERGE=true |
554 |
echo " $EMERGE_OPTIONS " | grep -q '\( -p \| --pretend \| -f \| --fetchonly \)' && IS_REAL_MERGE=false |
557 |
echo " $EMERGE_OPTIONS " | grep -q '\( -p \| --pretend \| -f \| --fetchonly \)' && IS_REAL_MERGE=false |
555 |
|
558 |
|
556 |
echo |
559 |
echo_v |
557 |
echo -e "${GR}All prepared. Starting rebuild...${NO}" |
560 |
echo_v -e "${GR}All prepared. Starting rebuild...${NO}" |
558 |
|
561 |
|
559 |
echo "emerge --oneshot $EMERGE_OPTIONS $REBUILD_LIST" |
562 |
echo "emerge --oneshot $EMERGE_OPTIONS $REBUILD_LIST" |
560 |
|
563 |
|
Lines 612-626
Link Here
|
612 |
if $IS_REAL_MERGE ; then |
615 |
if $IS_REAL_MERGE ; then |
613 |
trap "echo -e \" terminated. Please remove them manually:\nrm $LIST*.?_*\" ; exit 1" \ |
616 |
trap "echo -e \" terminated. Please remove them manually:\nrm $LIST*.?_*\" ; exit 1" \ |
614 |
SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM |
617 |
SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM |
615 |
echo -n -e "${GR}Build finished correctly. Removing temporary files...${NO} " |
618 |
echo_v -n -e "${GR}Build finished correctly. Removing temporary files...${NO} " |
616 |
echo |
619 |
echo_v |
617 |
rm $LIST.[0-2]_* |
620 |
rm $LIST.[0-2]_* |
618 |
rm $LLIST.[3-9]_* |
621 |
rm $LLIST.[3-9]_* |
619 |
echo "You can re-run revdep-rebuild to verify that all libraries and binaries" |
622 |
echo_v "You can re-run revdep-rebuild to verify that all libraries and binaries" |
620 |
echo "are fixed. If some inconsistency remains, it can be orphaned file, deep" |
623 |
echo_v "are fixed. If some inconsistency remains, it can be orphaned file, deep" |
621 |
echo "dependency, binary package or specially evaluated library." |
624 |
echo_v "dependency, binary package or specially evaluated library." |
622 |
else |
625 |
else |
623 |
echo -e "${GR}Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.${NO}" |
626 |
echo_v -e "${GR}Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.${NO}" |
624 |
fi |
627 |
fi |
625 |
fi |
628 |
fi |
626 |
exit 0 |
629 |
exit 0 |