Summary: | Display removed USE flags? | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Graham Murray <graham> |
Component: | Core - Interface (emerge) | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | esigra, rhill |
Priority: | High | Keywords: | InVCS |
Version: | 2.1 | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 136244 |
Description
Graham Murray
2006-08-21 10:06:44 UTC
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. |