i just changed a use flag (i.e. gcj for sys-devel/gcc) and ran emerge -avuND world but then portage only wants to rebuild the latest version of the ebuild and ignores all earlier versions (for me gcc-4.2.0_alpha20061205) emerald ~ # emerge -Cp sys-devel/gcc >>> These are the packages that would be unmerged: !!! 'sys-devel/gcc' is part of your system profile. !!! Unmerging it may be damaging to your system. sys-devel/gcc selected: 4.1.1-r3 4.2.0_alpha20061205 3.4.6-r2 protected: none omitted: none >>> 'Selected' packages are slated for removal. >>> 'Protected' and 'omitted' packages will not be removed. emerald ~ # USE="gcj" emerge -auND world These are the packages that would be merged, in order: Calculating world dependencies... done! [ebuild R ] cross-armv4l-softfloat-linux-gnu/gcc-3.4.6-r2 USE="gcj* multislot nls nocxx test (-altivec) -bootstrap -boundschecking -build -doc -fortran -gtk -hardened -ip28 -ip32r10k (-multilib) (-n32) (-n64) -nopie -nossp -objc -vanilla" 0 kB [1] [ebuild R ] sys-devel/gcc-4.2.0_alpha20061205 USE="doc fortran gcj* gtk multislot nls objc objc++ test (-altivec) -bootstrap -build (-hardened) -ip28 -ip32r10k -mudflap (-multilib) (-n32) (-n64) -nocxx -objc-gc -vanilla" 0 kB [ebuild R ] cross-i686-pc-linux-gnu/gcc-4.1.1-r3 USE="fortran gcj* multislot nls test (-altivec) -bootstrap -build -doc -gtk -hardened -ip28 -ip32r10k -mudflap (-multilib) (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -vanilla" 0 kB [1] [ebuild R ] cross-powerpc-unknown-linux-gnu/gcc-4.1.1-r3 USE="fortran gcj* multislot nls test (-altivec) -bootstrap -build -doc -gtk -hardened -ip28 -ip32r10k -mudflap (-multilib) (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -vanilla" 0 kB [1] Total: 4 packages (4 reinstalls), Size of downloads: 0 kB Portage overlays: [1] /usr/local/portage [2] /usr/portage/local/layman/fry-overlay [3] /usr/portage/local/layman/sunrise Would you like to merge these packages? [Yes/No] i actually don't know which version happened to be the first one that wouldn't rebuild all slots, i've just seen it it also doesn't do updates/upgrades for new packages in lower slots, only the latest one (gcc-3.4.6-r1 didn't get upgraded to gcc-3.4.6-r2 up until i've seen the update on my own)
changed summary actually i've seen similar behavior with portage 2.1.1-r2 i don't know if this behavior is wanted/expected behavior here's what would be merged while using different options to emerge (portage 2.1.2_rc4-r8): emerald ~ # USE="-java" emerge -puND db These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] sys-libs/db-4.1.25_p2 USE="tcl -bootstrap -doc -java* -nocxx -test (-uclibc)" 0 kB [ebuild R ] sys-libs/db-4.2.52_p4-r2 USE="tcl -bootstrap -doc -java* -nocxx -test" 0 kB [ebuild R ] sys-libs/db-4.3.29-r2 USE="tcl -bootstrap -doc -java* -nocxx -test" 0 kB [ebuild R ] sys-libs/db-3.2.9-r11 USE="-doc -java* -test" 0 kB Total: 4 packages (4 reinstalls), Size of downloads: 0 kB emerald ~ # USE="-java" emerge -pND db These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] sys-libs/db-4.3.29-r2 USE="tcl -bootstrap -doc -java* -nocxx -test" 0 kB Total: 1 package (1 reinstall), Size of downloads: 0 kB emerald ~ # i don't see why the -u should be required to remerge all versions of db in this case, its somehow unexpected behavior depending on the selected options portage 2.1.1-r2: fry ~ # emerge -Cp db >>> These are the packages that would be unmerged: sys-libs/db selected: 4.3.29-r2 1.85-r3 4.2.52_p4-r2 3.2.9-r11 portage 2.1.1-r2 seems to ignore the changed use-flag of db completely, with emerge -puND sys-libs/db resp. -pND db it would always ignore db-4.2.52_p4-r2, with emerge -puND world it finally found it. whereas for gcc neither version of portage managed to find the changed use flag for slots not being the latest, even though sys-devel/gcc is listed in world file using --with-bdeps=y with portage 2.1.2_rc4-r8 didn't change this
(In reply to comment #1) > i don't see why the -u should be required to remerge all versions of db in this > case, its somehow unexpected behavior depending on the selected options portage-2.1.2 is the first version of portage to have greedy behavior wrt slots. Currently, the greedy behavior is only enabled by --update or one of the system/world sets.
the problem is i.e for sys-devel/gcc the greedy behavior doesn't work even with world set emerald ~ # USE="gcj" emerge -auND world These are the packages that would be merged, in order: Calculating world dependencies... done! [ebuild U ] sci-libs/blas-atlas-3.7.24 [3.7.11-r1] USE="-debug -doc" 0 kB [ebuild N ] sci-libs/lapack-atlas-3.7.24 USE="-debug -doc" 0 kB [ebuild R ] cross-powerpc-unknown-linux-gnu/gcc-4.1.1-r3 USE="fortran gcj* multislot nls test (-altivec) -bootstrap -build -doc -gtk -hardened -ip28 -ip32r10k -mudflap (-multilib) (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -vanilla" 0 kB [1] [ebuild R ] cross-i686-pc-linux-gnu/gcc-4.1.1-r3 USE="fortran gcj* multislot nls test (-altivec) -bootstrap -build -doc -gtk -hardened -ip28 -ip32r10k -mudflap (-multilib) (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -vanilla" 0 kB [1] [ebuild NS ] sys-devel/gcc-3.3.6-r1 USE="doc fortran gcj gtk multislot nls objc test (-altivec) -bootstrap -boundschecking -build (-hardened) -ip28 -ip32r10k (-multilib) (-n32) (-n64) -nocxx -nopie -nossp -vanilla" 123 kB [ebuild R ] cross-armv4l-softfloat-linux-gnu/gcc-3.4.6-r2 USE="gcj* multislot nls nocxx test (-altivec) -bootstrap -boundschecking -build -doc -fortran -gtk -hardened -ip28 -ip32r10k (-multilib) (-n32) (-n64) -nopie -nossp -objc -vanilla" 0 kB [1] [ebuild N ] virtual/libstdc++-3.3 0 kB [ebuild U ] net-p2p/ktorrent-2.1_rc1 [2.1_beta1] USE="arts kdeenablefinal xinerama -debug" LINGUAS="de en_GB zh_CN zh_TW -bg -br -ca -cs -cy -da -el -es -et -eu -fr -ga -gl -hu -it -ja -km -lt -mk -ms -nb -nl -pa -pl -pt -pt_BR -ru -rw -sk -sr -sr@Latn -sv -tr -uk" 0 kB [ebuild R ] sys-devel/gcc-4.2.0_alpha20061205 USE="doc fortran gcj* gtk multislot nls objc objc++ test (-altivec) -bootstrap -build (-hardened) -ip28 -ip32r10k -mudflap (-multilib) (-n32) (-n64) -nocxx -objc-gc -vanilla" 0 kB [ebuild U ] sci-mathematics/octave-2.1.73-r2 [2.1.73-r1] USE="emacs hdf5 mpi readline zlib -debug -doc -static (-blas%*)" 0 kB the above listed gcc versions are still installed
(In reply to comment #3) > the problem is i.e for sys-devel/gcc the greedy behavior doesn't work even with > world set It must be because you have USE=multislot enabled. There is currently no way to implement greedy behavior for packages that have multislot enabled. multislot is an unsanctioned hack. Dynamic slots are certainly a desirable feature but there is currently no standardized implementation for them.
s/standardized//