As a speed boost to emerge, I use FEATURES="buildpkg" and EMERGE_DEFAULT_OPTS="--usepkg --binpkg-respect-use" in make.conf. However, using binary packages to fix broken libs only replaces previous binaries with the new binaries with the same problems. # revdep-rebuild -- --usepkg=n should be used supersede the EMERGE_DEFAULT_OPT to make sure that packages are indeed rebuilt correctly. Reproducible: Always Steps to Reproduce: 1. Set --usepkg as a default option for emerge in make.conf 2. Run revdep-rebuild Actual Results: When revdep-rebuild calls emerge, the --usepkg flag is picked up and broken packages are not rebuilt. Instead, the (broken, that's why we use revdep-rebuild) binpkg is used. Expected Results: The binpkg is not used, emerge phase ignores the presence of a binpkg. Workaround is to append '-- --usepkg=n'. Maybe this action should be made mandatory for the emerge phase of revdep-rebuild.
If the binpackages actually get updated revdep-rebuild with binpkgs is actually useful. I for one utilize this feature.
It is left to user choice because EMERGE_DEFAULT_OPTIONS is a custom setting. In other words, if you set default options you should know how to unset them. I present a counter-argument, as follows: On my systems, I build the packages on a build host. The build host's revdep-rebuild process doesn't use binpkgs and hence it creates *good* packages. Hardcoding --usepkg=n would mean that I wouldn't use the good binary packages. Therefore a "forced" --usepkg=n would be bad in this setting. My point is, you cannot guess how the end user's config is setup so you cannot set mandatory options.
Personally, I never use revdep-rebuild to install binary packages anymore since --rebuilt-binaries with >=portage-2.1.8 pulls in all the packages that I've rebuilt on another system for various reasons (revdep-rebuild, @preserved-rebuild, --newuse or any other reason). Maybe this scenario doesn't fit everyone, but I figured it's worth mentioning here.
This was done on purpose: See bug 289599. Unfortunately, this is one of those decisions that will not leave everybody happy. The consensus is that the user has set EMERGE_DEFAULT_OPTS and knows what they are doing, so we should honor it.