Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 161388 - USE=multslot prevents greedy update of slots
Summary: USE=multslot prevents greedy update of slots
Status: RESOLVED CANTFIX
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Ebuild Support (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on: 32367
Blocks:
  Show dependency tree
 
Reported: 2007-01-10 20:11 UTC by emerald
Modified: 2007-01-12 23:53 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description emerald 2007-01-10 20:11:56 UTC
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)
Comment 1 emerald 2007-01-11 14:43:37 UTC
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
Comment 2 Zac Medico gentoo-dev 2007-01-11 22:28:07 UTC
(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.
Comment 3 emerald 2007-01-11 22:45:10 UTC
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
Comment 4 Zac Medico gentoo-dev 2007-01-12 03:50:24 UTC
(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.
Comment 5 SpanKY gentoo-dev 2007-01-12 15:54:50 UTC
s/standardized//