Sometimes when running 'emerge -auDvN' following a sync, some packages will show as 'R' to be re-emerged but there are neither any yellow USE flags shown nor any marked '%' or '*'. My assumption is that this is because a USE flag has been removed from the ebuild or one of the eclasses it uses. It would be nice to have emerge show which USE flags the ebuild is no longer using.
We'll need a new symbol to represent a flag that's been removed from IUSE. The flag is neither + nor -, so does !flag make sense?
How about (-flag)% ? It's overloading the meaning of () in the USE flag string context, but it's interpretable(sp?) at a glance..
(-flag)% was another possiblity that I had already considered but I ruled it out because it's ambiguous in that the flag could be a new masked flag or an old flag that no longer exists. Also, the - sign could be misleading because perhaps the flag is no longer optional and the choice that it once reprented is always enabled now. Anyway, I'm just sharing thoughs and I don't really care too much what we choose.
This is fixed in svn r4322. Currently, removed IUSE are displayed as !flag%, but we can change that if people don't like it.
This has been released in 2.1.1_rc1.
this is getting extremely hard to read and understand.
How about slightly altering the meanings of the various symbols? % use flag addition/removal (aka change) * use flag setting change () use flag setting one can't do anything about (without hacking profiles) (-foo%*) <= previously enabled but now removed (-foo) <= masked flag (-foo%) <= removed (or newly added masked) flag that has no impact -foo% <= new flag that isn't enabled -foo* <= flag that was previously enabled foo%* <= new flag that is enabled foo* <= flag that was previously disabled In the above, (-foo%*) is currently !foo and foo%* is currently foo%. I _think_ all the others are the same. While the '*' in foo%* is redundant, I would guess that it would make the meanings of the symbols clearer in the long run. The above is just a suggestion though...
I like the idea of using % together with * where appropriate. The idea of using (-flag%) to indicate both newly masked and removed flags still bothers me slightly, since meaning is ambiguous. A newly masked flag can potentially be overriden via the profile (though it's unlikely to happen), while a removed flag cannot. It seems to me that there should be a visual cue to indicate the difference between them (hence the ! symbol).
Hmm... I've tried switching meanings a little more, but there doesn't seem to be a set where some combination doesn't represent two different states... Does it matter to alert the user of a newly added but masked flag? If not, rolling that into (-flag) would make things doable.
Rolling newly added masked flags into (-flag) seems alright to me, except for the case where that new flag is the only thing causing --newuse to trigger remerge of a package. Perhaps --newuse should remove masked flags from IUSE before it compares them though. But then, forced flags should also be removed from IUSE prior to the --newuse comparison. I guess that makes sense, since masked/forced flags are essentially removed from the available user choices (though they can be overriden, it shouldn't happen very often).
Sounds good except that sometimes a masked or forced flag should require a rebuild on --newuse. That is, a flag that originally wasn't under profile control becomes set to the opposite of the existing choice - (-foo*) or (bar*).
I've made the changes in svn r4345:4350. The ouput is as descibed in comment #7 except that the % symbol is omitted for newly added masked flags.
This has been released in 2.1.1_rc1-r1.
It'd be nice to have an option (maybe "-vv"?) to translate these codes into English, as the table in comment #7 does.