There's a frequent irritation I experience with the revolving door of REQUIRED_USE -> auto-unmask:
There's no mechanism in place to automatically stop using a "REQUIRED" use flag when it ceases to be necessary. So you find yourself doing things like: - I want X - X only supports python 2.7 - X thus requires a dependency that supports both 2.7 and 3.5 to set USE= for python 2.7 - So you add a USE in your package.use for that dependency. - This creates a cascade of requiring python 2.7, sometimes extending to pull extra dependencies for back-ports. Later, X adds Python 3.5 support. And now you have redundant USE flags in place, and those USE flags pull in dependencies you no longer need in order to support a python 2.7 featureset. Now, this is not about "python", this is just the general pattern of ebuilds saying "I need this", and then requiring me to manually acknowledge "I need this" when I don't actually want this myself, similar to how packages "I need" go in the world file and don't get depcleaned, and packages I "don't need" are handled by portage automatically satisfying dependencies. And you have to invest a respectable amount of effort to prune these un-needed dependencies and features which portage now thinks "you want", even long after the reason for that is gone. What I'd like is a middle ground, a USE specification that can be stated in package.use that portage interprets as a "permission to enable" flag, a USE flag that is treated as "ON" if any dependency states it needs it on, and that is treated as "OFF" as soon as there are no dependencies in the graph that need it on. Or vice versa. Naturally, this needn't be part of PMS, because this pertains to nothing about the package dependency specification itself, only a feature for user convenience in the portage interface. I would love to be able to stop maintaining my reasonably large set of package.env tricks which I have to regularly update so that things I don't need will get expunged when I cease to need them, and I'd love to be able to say something like PYTHON_TARGETS="python3_5 python2_7?" and have portage treat the former as "always on" and the latter as "On if a dependency or REQUIRED_USE constraint indicated it was needed". Though it may not be so straight forward to implement, and is likely to complicate backtracking.... though in theory it could make things simpler. So I table this query to the dev ml in the event somebody else sees merit in the idea. -- Kent KENTNL - https://metacpan.org/author/KENTNL