During upgrade it is standard case, when upgrade failes, because some library is built-slot dependency, and by unclear reason emerge is not considering to rebuild its dependants during upgrade. Sometimes rebuilds are happening, but it seems to work selectively. One example - with imagemagick: (from "emerge -avuDN world" output) /========================================= media-gfx/imagemagick:0 (media-gfx/imagemagick-6.9.7.4:0/6.9.7.4::gentoo, ebuild scheduled for merge) pulled in by (no parents that aren't satisfied by other packages in this slot) (media-gfx/imagemagick-6.9.6.2:0/6.9.6.2::gentoo, installed) pulled in by media-gfx/imagemagick:0/6.9.6.2= required by (media-gfx/uniconvertor-2.0_pre379-r1:0/0::gentoo, installed) ^^^^^^^^^^^ (and 1 more with the same problem) \=================================== Second blocker was inkscape. # emerge -av1 media-gfx/imagemagick:0 Also fails with same error. However, listing blockers after imagemagick makes it work: /=========================================================== # emerge -av1 media-gfx/imagemagick:0 media-gfx/uniconvertor inkscape These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild U ] media-gfx/imagemagick-6.9.7.4:0/6.9.7.4::gentoo [6.9.6.2:0/6.9.6.2::gentoo] USE="autotrace bzip2 cxx djvu fftw fontconfig fpx graphviz hdri jbig jpeg jpeg2k lcms lqr lzma openexr openmp pango perl png raw svg tiff truetype webp wmf xml zlib -X -corefonts (-opencl) -postscript -q32 -q64 -q8 -static-libs {-test}" 8592 KiB [ebuild R ] media-gfx/uniconvertor-2.0_pre379-r1::gentoo PYTHON_TARGETS="python2_7" 1802 KiB [ebuild R #] media-gfx/inkscape-0.91-r3::gentoo USE="cdr dbus dia exif imagemagick inkjar jpeg lcms nls openmp spell visio wpg -gnome -latex -postscript -static-libs" PYTHON_TARGETS="python2_7" 25253 KiB Total: 3 packages (1 upgrade, 2 reinstalls), Size of downloads: 35646 KiB Would you like to merge these packages? [Yes/No] yes \======================================= After that i tried to update again, with following order: 1. # emerge -avuDN --verbose-conflicts world To get full blockers list with 2. Final update command: # emerge -avuDN -1 world <rebuild list> where <rebuild list> includes packages blockers, which don't have updates (sometimes it lists packages with updates too) Now update is working. I propose to add option like rebuild-all-build-slot for such cases (if not even change default befavior).
(In reply to Nikita Zlobin from comment #0) > I propose to add option like rebuild-all-build-slot for such cases (if not > even change default befavior). It's intended to trigger the rebuilds by default when they are appropriate, but the existing mechanism is complex and error-prone. For example, see bug 439688 were unnecessary rebuilds were triggered when an available update had to be skipped due to a dependency conflict. In order to improve the situation, it probably does make sense for it to assume that all things need to be rebuilt (as an initial approximation). After it has successfully built a dependency graph under this assumption, it could use that as a guide to assemble an optimal dependency graph that uses as many of the installed packages as possible (avoiding unnecessary rebuilds).
Found solution: option --rebuild-if-new-slot does what's expected. Of course it will not help for restrictions like. In my opinion this option must be set by default. Whoever thinks it's better off - must have skill to easily reconfigure default flags for self. No matter, what's expected level for target auditory, there's also newcomers subset, for which default settings must be oriented. Also - for cases of ebuild writer mistakes, when they forget to make dependencies like ":=" (for those deps, which need that), there's possible "paranoid" mode, using --rebuild-if-new-ver.