I tested revdep-rebuild and I've found a bug. I did # revdep-rebuild --soname libpq.so.3 then I debuged. It caused REBUILD_GREP='^\()$'
I debuged more.. It is the cause. The package is maskd. emerge --nospinner --pretend --oneshot --nodeps $RAW_REBUILD_LIST These are the packages that I would merge, in order: Calculating dependencies !!! all ebuilds that could satisfy "=dev-libs/libpq++-4.0" have been masked. !!! Error calculating dependencies. Please correct.
Sorry, I forgot the error message. This is error message. (snip) found /usr/bin/pgtclsh found /usr/bin/pg_restore done. (/root/.revdep-rebuild_23e5b2d4.3_rebuild) Assigning files to ebuilds... done. (/root/.revdep-rebuild_23e5b2d4.4_ebuilds) Evaluating package order...grep: Invalid regular expression
Please copy contents of /root/.revdep-rebuild_23e5b2d4.3_rebuild as an attachment.
Oops, now I see reason - portage rejects to merge it, so revdep-rebuild cannot resolve order. Please try ACCEPT_KEYWORDS='~x86' revdep-rebuild ... The bug is probably more general - if package is not longer in portage or it is hardmasked, revdep-rebuild fails. There is no simple solution for it, but it can at least do a order-ambiguous rebuild.
I see... But if there is no simple solution for it, I think it should say error messages in order that a user may not get confused. Masatomo Nakano
There is a simple work around - if order resolving fails, try to recompile packages in "random" order - for most cases it works. I will look for such "fix".
Created attachment 14084 [details] revdep-rebuild There is a quick fix. I have not tested it yet for syntax, but it should check for exit status of emerge, and if it fails, ignore its output.
While fixing, I have also find another bug of this code - it sometimes forgets to recompile package. While analyzing following text: [ebuild R ] gnome-extra/at-poke-0.1.0-r1 [ebuild UD] gnome-extra/at-spi-1.0.2 [1.1.8] it does not properly analyze [expression] at the end of second line. Both bugs are now fixes in portage tree.