The second and third paragraphs read: "Portage's world update feature checks the system profile, the list of blocked packages (package.mask), the world profile and the dependencies (including version ranges) of packages listed in the world profile when determining which packages need upgrading. A package is only upgraded if a newer version exists and the package is listed in the world profile or is a dependency of a package in the world profile. In addition the package or specific version of the package must not be blocked by the system profile or in package.mask. When considering which packages to upgrade, Portage tries to upgrade all packages mentioned in the world profile to the newest unblocked version available. Portage also considers the dependencies of each package mentioned in the world profile and will try to upgrade the dependency to a newer version if one is available, matches the version ranges specified, and is not blocked by either the system profile or package.mask. It also takes into consideration SLOTS as mentioned in a previous chapter." If I understand it well, it means that, everytime a package is NOT in the world file, but is a dependency of another package that's in it (and meets all the other requirements), it should be updated when I attempt an emerge -u world. I personally would swear that it worked for me sometimes, but now some tests seem to demonstrate that it is not true: I have an application in my world file that has an updated direct dependency that meets all the requirements; nevertheless, when I try to update world, Portage won't catch it. Everything is OK if I explicitly tell Portage to check dependencies with -D option. Reading man emerge I found the following: --update (-u) Updates packages to the most recent version available. Note that --update does not have full functionality yet. It will not automatically update dependencies of packages in the world file, unless they too are in the world file. So, which is the REAL behaviour? I don't know if it's an unclear statement in Portage Manual or a weird Portage bug, so I'd appreciate an official statement from the developers, because I'm really confused. :-)
I'm getting more and more confused... Today, after an emerge sync, Portage caught the updated dependency. :-O And no, I didn't either use -D or put the dependency in the world file. I think it can be classified as a Portage bug now, but I'd still appreciate some words from you. :-)
Afaik, the documented behaviour is the expected behaviour. So immediate dependencies should be updated, dependencies of dependencies (and deeper) not unless you add the "-D" tag. I'm marking this as WORKSFORME.