* [gentoo-dev] "Lazy" use flags? @ 2016-02-09 12:27 Kent Fredric 2016-02-09 13:14 ` Daniel Campbell 0 siblings, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-09 12:27 UTC (permalink / raw To: gentoo-dev 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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 12:27 [gentoo-dev] "Lazy" use flags? Kent Fredric @ 2016-02-09 13:14 ` Daniel Campbell 2016-02-09 13:19 ` Kent Fredric 0 siblings, 1 reply; 42+ messages in thread From: Daniel Campbell @ 2016-02-09 13:14 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/09/2016 04:27 AM, Kent Fredric wrote: > 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. > This is an interesting request, and if it was implemented correctly, could reduce the number of blockers we see. It's almost like automatic USE flag resolution. The problem I see is syntax. I'm not 100% familiar with portage's internals, so I don't know what sort of effects this would have across an entire depgraph or resolution, etc. But it could be very useful. Another concern, though, is it'd result in something similar. Instead of "cat/foo bar baz" and later removing 'baz', you'd have "cat/foo bar ~baz" (with '~baz' as 'enable this if you need to'). You'd still have cruft left in your p.use file, and it would achieve the same result as a well-commented file. I've personally taken to creating little "blocks" of USE flags, even if redundant, and adding a comment just above them explaining why I add them. It's not perfect, but if I get curious and check back on it, I'll always know why I added it. A possible solution to the file issue is some way of letting the user know prior to merging that a "lazy" USE flag was specified that's no longer needed. That could be somewhat easy to implement, as it would merely check REQUIRED_USE and compare it against any lazy flags. If they match, show the message. Regardless, I think it's a neat idea. I'm just not sure if it'd be something easily implementable in portage/emerge. - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWueZFAAoJEAEkDpRQOeFwDxcP/AhRuCsjXm9jjEhT1vfagj9t 7imcFj6czggxBno9Bg5lZFkkU80lPG56wTq6MHAMF7DSwj3HxW1dwLbQSSqQHCLJ 5VzqXM74h5v4TBK24Fq5ht+sN6U3uO5JmaCv2qXg3xiWu34AapdVsCHq+JO2ew/y quIF18TmpdGbRpnzyXCkdySvqI8GfJYVrFXJsvNN/2H0qgTmS5LQsnqxP6hGhHkc 4qg+GQ4cm5JpLNBo58F+2j2c8kXpicZ4cHMk2RCbX/Hv8u/qsNtYcYcAlsOxJVUP 0iEVlPboQKMQMdK0Mpbhp/Tok1ydpqErXRwijFs5uB249RmeqniWgNbSJtoHZQh1 49VA6fmRo422UaYKb7ZqTK01fSuvC3nRWr3HT/XSb5B4+OrqPUkM7DyElkvBZuQu YJM2QlmBJ/16XjIwVB6hcS5K/PxvPD+9mU5weyVVTSLjcNHDPMq+K7Gunwn/0Rji spBTzZQvFfRtiiufIQIWIWIampfNaTMIWEC5CoLSRstxse9w+Qvn+dPd7XCgfpOt qvF4Qlc715oiGIwF/rGSEq8HHNsW7ZP5YozHTD9Wa7sxl0WxFJWfYJiQ9o7Lclxu 2EldNk1DNWiC4SQA2haEm64KrSFHfrT/3RZ3XPDBl2iaTrn2NAo5abJJGLZuCmtZ GdcbzDhYKeZJBH4ZOI2U =x47s -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 13:14 ` Daniel Campbell @ 2016-02-09 13:19 ` Kent Fredric 2016-02-09 13:22 ` Daniel Campbell ` (2 more replies) 0 siblings, 3 replies; 42+ messages in thread From: Kent Fredric @ 2016-02-09 13:19 UTC (permalink / raw To: gentoo-dev On 10 February 2016 at 02:14, Daniel Campbell <zlg@gentoo.org> wrote: > Another concern, though, is it'd result in something similar. Instead > of "cat/foo bar baz" and later removing 'baz', you'd have "cat/foo bar > ~baz" (with '~baz' as 'enable this if you need to'). You'd still have > cruft left in your p.use file, and it would achieve the same result as > a well-commented file. Granted you'd still have the cruft in your config files, but it would become mostly-harmless cruft, not cruft that caused needless dependencies to get pulled into the dependency tree as a side-effect. And because it would be "only as needed", you could afford to use some of those "only if needed" useflags in a more global manner. For instance, I really don't want to globally define PYTHON_TARGETS to include python2_7, because it will simply install a lot of extra things I know I don't need. But if I could globally define something to the effect of "anything that wants python2.7 support can have it", then that's acceptable globally, because the effect would still turn things on automatically on a per-page level, not at a global level. So you could achieve the same results with much less syntax and much less effort. -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 13:19 ` Kent Fredric @ 2016-02-09 13:22 ` Daniel Campbell 2016-02-09 13:28 ` Kent Fredric 2016-02-09 20:35 ` Róbert Čerňanský 2016-02-10 3:08 ` Gordon Pettey 2 siblings, 1 reply; 42+ messages in thread From: Daniel Campbell @ 2016-02-09 13:22 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/09/2016 05:19 AM, Kent Fredric wrote: > On 10 February 2016 at 02:14, Daniel Campbell <zlg@gentoo.org> > wrote: >> Another concern, though, is it'd result in something similar. >> Instead of "cat/foo bar baz" and later removing 'baz', you'd have >> "cat/foo bar ~baz" (with '~baz' as 'enable this if you need to'). >> You'd still have cruft left in your p.use file, and it would >> achieve the same result as a well-commented file. > > > Granted you'd still have the cruft in your config files, but it > would become mostly-harmless cruft, not cruft that caused needless > dependencies to get pulled into the dependency tree as a > side-effect. > > And because it would be "only as needed", you could afford to use > some of those "only if needed" useflags in a more global manner. > > For instance, I really don't want to globally define PYTHON_TARGETS > to include python2_7, because it will simply install a lot of > extra things I know I don't need. > > But if I could globally define something to the effect of > "anything that wants python2.7 support can have it", then that's > acceptable globally, because the effect would still turn things on > automatically on a per-page level, not at a global level. > > So you could achieve the same results with much less syntax and > much less effort. > I can certainly see the benefit here, but wouldn't that still result in (arguably) unnecessary (re)builds? If implemented well it'd also result in depcleaning them when they're later unneeded, too, so I guess it's a wash in that sense. Again, I'm not against it. In fact I'd probably use it, because some packages are really picky. I just don't know how well it would fit into the existing design at the code level. - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWuegpAAoJEAEkDpRQOeFwoYIQALeAXnPOXzrC10AWplSt0K9D O3Mp8KpiMMUfIi1neM2LQAfW6Kp3lA9CaA547TdJ2ZXBJdTSfwPMe5rsWY2wqavD UvASgl4Ja4molsM3mQX3rYWbbzjZN38mZmYby26mPwyo8kAeXeqqIFDpPyG3F11M 0uT0lCg8W6q6qs00l02SZHmQKGQwCL4JLXNe9mj8WLcoaeMZjXwDCS3lhLz2L7at bveIm/yk5JaPSc3i8zcwmjDyoJ2fQg+1u2ujl+MzgVcxY8pfSnJN0q4CV06rC4xt 7F65OU8DhzaNr80UUfKCNdfVXwIlDNIEK1mz/tRe3Ad4bW1NW5DJFpm9xjpSPSlD Cse2GNBTxKYDi/mxlLBenCyqHta05TyzdqDODiOJRMzIXRf2jcPtOkg58tdUMl8D xw/qIFwcUeC44RfX9Kb9NkQcxuhyuLSPBcnGGdxeaUtJf92wpw4AINfSLj2B8nwv XyPan9bGku6gsG6C5oQ0JUsGdNu/qmukUieppE4yKbFgjzoIZcuOb18jKyDaxVKh QiQ9uI2xGvQYqAHVAraykAoBEl7EHISRRLn508VB8WZUxV39q5BwYtpYrxAJtSEY 60NuTTKmU7CXK4czHukrKPpkwkqNGIBgK1/m7dVpXjxcXfk/cdcwilv3EmO7f6fb XKundbhCB5ek42OGqTuG =+Yx3 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 13:22 ` Daniel Campbell @ 2016-02-09 13:28 ` Kent Fredric 0 siblings, 0 replies; 42+ messages in thread From: Kent Fredric @ 2016-02-09 13:28 UTC (permalink / raw To: gentoo-dev On 10 February 2016 at 02:22, Daniel Campbell <zlg@gentoo.org> wrote: > I can certainly see the benefit here, but wouldn't that still result > in (arguably) unnecessary (re)builds? If implemented well it'd also > result in depcleaning them when they're later unneeded, too, so I > guess it's a wash in that sense. For me, its worth it, because the effort I spend to manually dep-clean use flags I don't need at present is far higher than any automated cost of rebuild will burn me. I've even recently started using `--with-bdeps n` in conjunction with --depclean ( because tip, depclean implies --with-bdeps y ), because I don't mind the rebuild cost, and I much more mind the significant dependency graph I have sitting around there not earning its weight. And the beauty of this is you woudn't pay a cent in terms of unwanted behaviour from the introduction of this feature unless you explicitly used it. You'd have to be intentionally using the lazy-use flags to see the undesired rebuild effect, and if that bothers you, its easy to just transition a soft-use into a hard use, just like if you don't like how depclean nukes a package, you can add it to your world file. -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 13:19 ` Kent Fredric 2016-02-09 13:22 ` Daniel Campbell @ 2016-02-09 20:35 ` Róbert Čerňanský 2016-02-09 23:30 ` Tim Harder 2016-02-10 0:20 ` Kent Fredric 2016-02-10 3:08 ` Gordon Pettey 2 siblings, 2 replies; 42+ messages in thread From: Róbert Čerňanský @ 2016-02-09 20:35 UTC (permalink / raw To: gentoo-dev On Wed, 10 Feb 2016 02:19:54 +1300 Kent Fredric <kentfredric@gmail.com> wrote: > On 10 February 2016 at 02:14, Daniel Campbell <zlg@gentoo.org> wrote: > > Another concern, though, is it'd result in something similar. > > Instead of "cat/foo bar baz" and later removing 'baz', you'd have > > "cat/foo bar ~baz" (with '~baz' as 'enable this if you need to'). > > You'd still have cruft left in your p.use file, and it would > > achieve the same result as a well-commented file. > > > Granted you'd still have the cruft in your config files, but it would > become mostly-harmless cruft, not cruft that caused needless > dependencies to get pulled into the dependency tree as a side-effect. > > And because it would be "only as needed", you could afford to use some > of those "only if needed" useflags in a more global manner. The question is whether you really need to specify the lazy use flag explicitly. I would say that any flag which user did not set explicitly to -baz or baz could be considered as lazy use flag. So if I'd have 'baz' set in /etc/portage/make.conf, /etc/portage/package.use, USE environment variable or other user configuration then I'd clearly want to turn on baz (globally or for specific packages). Portage would not change the use flag in this case (again globally or for particular packages only). On the other side, if I would not specify 'baz' in any of those user configurations (so it would be specified only in profile, ebuild or nowhere at all) then I most likely would not care about it therefore portage can enable or disable it as needed. BTW, what you are describing is essentially the same as in this bug: https://bugs.gentoo.org/show_bug.cgi?id=258371. It was also discussed on this list couple of times. I too would very much like to see it in portage. Robert -- Róbert Čerňanský E-mail: openhs@tightmail.com Jabber: hs@jabber.sk ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 20:35 ` Róbert Čerňanský @ 2016-02-09 23:30 ` Tim Harder 2016-02-10 0:20 ` Kent Fredric 1 sibling, 0 replies; 42+ messages in thread From: Tim Harder @ 2016-02-09 23:30 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 505 bytes --] On 2016-02-09 15:35, Róbert Čerňanský wrote: >BTW, what you are describing is essentially the same as in this bug: >https://bugs.gentoo.org/show_bug.cgi?id=258371. It was also discussed >on this list couple of times. I too would very much like to see it in >portage. pkgcore's current resolver has supported this for a long time if anyone really needs this feature now; however, switching to and/or using pkgcore currently comes with quite a few caveats if one is used to portage. Tim [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 20:35 ` Róbert Čerňanský 2016-02-09 23:30 ` Tim Harder @ 2016-02-10 0:20 ` Kent Fredric 2016-02-10 1:12 ` Rich Freeman 1 sibling, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-10 0:20 UTC (permalink / raw To: gentoo-dev On 10 February 2016 at 09:35, Róbert Čerňanský <openhs@tightmail.com> wrote: > > The question is whether you really need to specify the lazy use flag > explicitly. I would say that any flag which user did not set > explicitly to -baz or baz could be considered as lazy use flag. > > So if I'd have 'baz' set in /etc/portage/make.conf, > /etc/portage/package.use, USE environment variable or other user > configuration then I'd clearly want to turn on baz (globally or for > specific packages). Portage would not change the use flag in this > case (again globally or for particular packages only). > > On the other side, if I would not specify 'baz' in any of those user > configurations (so it would be specified only in profile, ebuild or > nowhere at all) then I most likely would not care about it therefore > portage can enable or disable it as needed. > > BTW, what you are describing is essentially the same as in this bug: > https://bugs.gentoo.org/show_bug.cgi?id=258371. It was also discussed > on this list couple of times. I too would very much like to see it in > portage. I'd personally rather the list of "automatically turn this on if required" be something I had the power to restrict than have a blanket "autodostuff", because in the event some USE can't be satisfied, the first time that USE flag was deemed "Needed" I'd want to be told that it was needed, and be prompted to chose a solution. Because I may choose to: - Deem the use flag necessary long term and put it hard on - Deem the use flag and its dependencies unwanted and find an alternative dependency graph somehow ( which may even include not installing the package that triggered the bad dependency graph ) An "autodostuff" as opposed to an "autoenable in these conditions" to me runs against the gentoo "user decides" mentality, because "just turn on useflags I didn't even tell you to enable" strikes me more as Portage telling me what I can and can't do, and it might even make me avoid that feature. ( I don't actually use --autounmask-write for this reason, I peruse the suggested USE requirements and change my configuration the way I want it done instead ) -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-10 0:20 ` Kent Fredric @ 2016-02-10 1:12 ` Rich Freeman 2016-02-10 2:23 ` Kent Fredric 0 siblings, 1 reply; 42+ messages in thread From: Rich Freeman @ 2016-02-10 1:12 UTC (permalink / raw To: gentoo-dev On Tue, Feb 9, 2016 at 7:20 PM, Kent Fredric <kentfredric@gmail.com> wrote: > I'd personally rather the list of "automatically turn this on if > required" be something I had the power to restrict than have a blanket > "autodostuff", because in the event some USE can't be satisfied, the > first time that USE flag was deemed "Needed" I'd want to be told that > it was needed, and be prompted to chose a solution. Wouldn't this be analogous to putting every package you install in your world file? -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-10 1:12 ` Rich Freeman @ 2016-02-10 2:23 ` Kent Fredric 2016-02-10 20:00 ` Róbert Čerňanský 0 siblings, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-10 2:23 UTC (permalink / raw To: gentoo-dev On 10 February 2016 at 14:12, Rich Freeman <rich0@gentoo.org> wrote: >> I'd personally rather the list of "automatically turn this on if >> required" be something I had the power to restrict than have a blanket >> "autodostuff", because in the event some USE can't be satisfied, the >> first time that USE flag was deemed "Needed" I'd want to be told that >> it was needed, and be prompted to chose a solution. > > Wouldn't this be analogous to putting every package you install in > your world file? The current situation with "USE" flags is more like having 80% of portage unavailable due to package.mask/keywords, and where you have to unmask every package you merely wish to *permit* to be installed, either by doing it on a per-package level with package.unmask, or doing it super-globally with ACCEPT_KEYWORDS= And but even this would be better than the USE situation, because neither package.mask or the keywording tricks *Force* the package to be installed, they merely *permit* the package to be installed, and then depclean can also be relied upon to purge those packages if you don't put them in your world file. So in comparison: /etc/portage/package.use is essentially "the world file but for useflags" And we have no analogue of /etc/porage/package.unmask or /etc/portage/package.keywords that applies to useflags. I can see how some people might want an analogue of "just install dependencies if they're needed regardless if I said I need them" that applies to useflags, but you'd probably want a "don't install this even if it appeared to be needed" companion tool that behaves akin to /etc/portage/package.mask -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-10 2:23 ` Kent Fredric @ 2016-02-10 20:00 ` Róbert Čerňanský 2016-02-11 0:18 ` Raymond Jennings 0 siblings, 1 reply; 42+ messages in thread From: Róbert Čerňanský @ 2016-02-10 20:00 UTC (permalink / raw To: gentoo-dev On Wed, 10 Feb 2016 15:23:27 +1300 Kent Fredric <kentfredric@gmail.com> wrote: > >> I'd personally rather the list of "automatically turn this on if > >> required" be something I had the power to restrict than have a > >> blanket "autodostuff", because in the event some USE can't be Although I prefer non-explicit auto/lazy use flags, the explicit approach is also perfectly fine (especially when compared to current situation). In the end I would most certainly be able to specify all use flags as lazy and thus have effectively the same behaviour as with non-explicit approach. > So in comparison: > > /etc/portage/package.use is essentially "the world file but for > useflags" > > And we have no analogue of > > /etc/porage/package.unmask or /etc/portage/package.keywords that > applies to useflags. I find /etc/portage/package.use (or make.conf) analogous to world AND mask files. For packages world + mask files give you possibility to specify which packages you: - want (listed in world file) - don't want (listed in a mask file) - not care (not listed in any of them) (Assuming non-explicit approach) similarly for use flags, package.use or make.conf gives you possibility to specify which use flags you: - want (listed in package.use or make.conf) - don't want (listed with '-' in package.use or make.conf) - not care (not listed in any of them) The advantage of explicit approach could be that even if a use flag is enabled or disabled globally, it would still be possible to make it lazy/automatic for specific packages. > I can see how some people might want an analogue of "just install > dependencies if they're needed regardless if I said I need them" that > applies to useflags, but you'd probably want a "don't install this > even if it appeared to be needed" companion tool that behaves akin to > /etc/portage/package.mask This would be package.use or make.conf. -- Róbert Čerňanský E-mail: openhs@tightmail.com Jabber: hs@jabber.sk ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-10 20:00 ` Róbert Čerňanský @ 2016-02-11 0:18 ` Raymond Jennings 2016-02-11 0:42 ` Rich Freeman 0 siblings, 1 reply; 42+ messages in thread From: Raymond Jennings @ 2016-02-11 0:18 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 2520 bytes --] I suppose we could consider it as a hard vs soft configuration? hard enable = Enable no matter what, and cause an error soft enable = Enable, unless it would break dependency soft disable = Disable, unless it would break a dependency hard disable = Disable no matter what, and cause an error On Wed, Feb 10, 2016 at 12:00 PM, Róbert Čerňanský <openhs@tightmail.com> wrote: > On Wed, 10 Feb 2016 15:23:27 +1300 > Kent Fredric <kentfredric@gmail.com> wrote: > > > >> I'd personally rather the list of "automatically turn this on if > > >> required" be something I had the power to restrict than have a > > >> blanket "autodostuff", because in the event some USE can't be > > Although I prefer non-explicit auto/lazy use flags, the explicit > approach is also perfectly fine (especially when compared to current > situation). In the end I would most certainly be able to specify all > use flags as lazy and thus have effectively the same behaviour as with > non-explicit approach. > > > So in comparison: > > > > /etc/portage/package.use is essentially "the world file but for > > useflags" > > > > And we have no analogue of > > > > /etc/porage/package.unmask or /etc/portage/package.keywords that > > applies to useflags. > > I find /etc/portage/package.use (or make.conf) analogous to world AND > mask files. For packages world + mask files give you possibility to > specify which packages you: > > - want (listed in world file) > - don't want (listed in a mask file) > - not care (not listed in any of them) > > (Assuming non-explicit approach) similarly for use flags, package.use > or make.conf gives you possibility to specify which use flags you: > > - want (listed in package.use or make.conf) > - don't want (listed with '-' in package.use or make.conf) > - not care (not listed in any of them) > > The advantage of explicit approach could be that even if a use flag is > enabled or disabled globally, it would still be possible to make it > lazy/automatic for specific packages. > > > I can see how some people might want an analogue of "just install > > dependencies if they're needed regardless if I said I need them" that > > applies to useflags, but you'd probably want a "don't install this > > even if it appeared to be needed" companion tool that behaves akin to > > /etc/portage/package.mask > > This would be package.use or make.conf. > > > -- > Róbert Čerňanský > E-mail: openhs@tightmail.com > Jabber: hs@jabber.sk > > [-- Attachment #2: Type: text/html, Size: 3379 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 0:18 ` Raymond Jennings @ 2016-02-11 0:42 ` Rich Freeman 2016-02-11 2:18 ` Kent Fredric 2016-02-11 2:31 ` [gentoo-dev] " Kent Fredric 0 siblings, 2 replies; 42+ messages in thread From: Rich Freeman @ 2016-02-11 0:42 UTC (permalink / raw To: gentoo-dev On Wed, Feb 10, 2016 at 7:18 PM, Raymond Jennings <shentino@gmail.com> wrote: > > soft enable = Enable, unless it would break dependency > soft disable = Disable, unless it would break a dependency I don't really see why these are needed. Just do what we are already doing - use the settings in the profile and package defaults. I'm not sure why I'd want to set a preference and then just have the system ignore it without telling me. If I tell it I want a flag on/off then yell at me if it is a problem. However, what I don't want to do is have a 5000 line package.use because of a bunch of settings I really don't care about, which then cause problems down the road... -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 0:42 ` Rich Freeman @ 2016-02-11 2:18 ` Kent Fredric 2016-02-11 2:51 ` Rich Freeman 2016-02-11 2:31 ` [gentoo-dev] " Kent Fredric 1 sibling, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-11 2:18 UTC (permalink / raw To: gentoo-dev On 11 February 2016 at 13:42, Rich Freeman <rich0@gentoo.org> wrote: > I'm not sure why I'd want to set a preference and then just have the > system ignore it without telling me. If I tell it I want a flag > on/off then yell at me if it is a problem. I "prefer" not to pull in python packages and build python support for versions of python I'm trying to prune from my tree. But my "preference" in regard is not a useful preference, because portage doesn't care about my preference when another package states it will fail unless I do otherwise. Hence, this requires me to lie to portage about what my preferences are to get it to play ball, constantly going "Hey portage, I actually want python 2.7 shit, please install it". And after that point, it thinks I want python 2.7 shit, even if nothing else needs it, because I've now said "I need it" as a side effect of some package forcing my hand. At least this way, instead of saying "I need it", I'd be saying "I will permit this", but my preference is to the contrary, and "Please respect my contrary preference as soon as it becomes viable to do so" -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 2:18 ` Kent Fredric @ 2016-02-11 2:51 ` Rich Freeman 2016-02-11 3:46 ` Daniel Campbell 2016-02-11 4:57 ` Kent Fredric 0 siblings, 2 replies; 42+ messages in thread From: Rich Freeman @ 2016-02-11 2:51 UTC (permalink / raw To: gentoo-dev On Wed, Feb 10, 2016 at 9:18 PM, Kent Fredric <kentfredric@gmail.com> wrote: > > Hence, this requires me to lie to portage about what my preferences > are to get it to play ball, constantly going "Hey portage, I actually > want python 2.7 shit, please install it". > In this case you just wouldn't enable python 2.7 support, but you wouldn't disable it either. Portage would just pull it in where it is needed. Ditto for stuff like 32-bit support for half the libraries on your system when you're using something like wine. Just don't set the flag except explicitly if you actually need it somewhere, and it will get pulled in where it is needed, and go away when it is no longer needed. The idea is that USE flags would behave the same way as package-versions. If portage needs it then it gets installed, and when it isn't needed it gets depcleaned. -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 2:51 ` Rich Freeman @ 2016-02-11 3:46 ` Daniel Campbell 2016-02-11 12:59 ` Rich Freeman 2016-02-11 4:57 ` Kent Fredric 1 sibling, 1 reply; 42+ messages in thread From: Daniel Campbell @ 2016-02-11 3:46 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/10/2016 06:51 PM, Rich Freeman wrote: > On Wed, Feb 10, 2016 at 9:18 PM, Kent Fredric > <kentfredric@gmail.com> wrote: >> >> Hence, this requires me to lie to portage about what my >> preferences are to get it to play ball, constantly going "Hey >> portage, I actually want python 2.7 shit, please install it". >> > > In this case you just wouldn't enable python 2.7 support, but you > wouldn't disable it either. Portage would just pull it in where it > is needed. > > Ditto for stuff like 32-bit support for half the libraries on your > system when you're using something like wine. Just don't set the > flag except explicitly if you actually need it somewhere, and it > will get pulled in where it is needed, and go away when it is no > longer needed. > > The idea is that USE flags would behave the same way as > package-versions. If portage needs it then it gets installed, and > when it isn't needed it gets depcleaned. > re multilib, under what configuration does abi_x86_32 get set on its own? With a blank ABI_X86 variable in make.conf? Every 32-bit package I've ever pulled in has needed that flag set, and I've had to manually set it until blockers are resolved. I've not set -abi_x86_32 globally or anything like that. - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWvAQBAAoJEAEkDpRQOeFw+xsP/2SZXSXgFFecQ4NTyrKzb6kf Xh70j6zTjnp3D/AMJi8+s4VU7q78KGWEWxofg6kEqENe2bPlMLapeVkzvrI42VZ4 KdIdumh/sbu4ZwA3xEQHoCHRRfE0FQZPwlK16qt0LeiLsIbprlETzRE31d/D5ui3 Atgg9s6ZUWLpZYGkf3afjZpqLJyLijBEu+cUun7hd/zpNu6aKEDd4I5bKjrps/26 2rwW5zRy2qPr1U0nBS8xgQA4QwGmmg3Jtbtk5KeWjOJ3dEvazSjxHOYNv95bbNBj N4leSXdKh33qr3uAWmDfKvQGwS4aNcN/8+7nQ0GwlJda4tT94YO4VvlhO1qe0ip7 dW9NNRlOZ420vFWR7S2dxyeSnyg9+zpSbx4Z3UNYN30Cd/AG17+ON8uRWJmbpRdZ UfU86CdKW8eFHeDn96kGPlJg6Hm/BrnFB+PZCws4v+/nF7POJ4OptQQQ6gFmhf6D M9YciobV4i0bfDuwg7SAQpiyJ1hShe0z4qLmwGpcF/D8IFpv7EjcOxW0syMvlZzq 4PQzlKshnl0YCDhMfCNRsg9ru6FTrWyRlBqaJMeXYez38r91CgRRjKoY3hoqiOxM bkKtWn/eVzE2W+qjz5sP3cSaJzPwJmj3ldiiyVCbYqYFmW6jgIPnWJt6a0Tvr4TN DPnup09W3Kx5W9qmSz+n =GNMb -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 3:46 ` Daniel Campbell @ 2016-02-11 12:59 ` Rich Freeman 2016-02-11 13:54 ` NP-Hardass 2016-02-11 23:51 ` Daniel Campbell 0 siblings, 2 replies; 42+ messages in thread From: Rich Freeman @ 2016-02-11 12:59 UTC (permalink / raw To: gentoo-dev On Wed, Feb 10, 2016 at 10:46 PM, Daniel Campbell <zlg@gentoo.org> wrote: > > On 02/10/2016 06:51 PM, Rich Freeman wrote: >> >> Ditto for stuff like 32-bit support for half the libraries on your >> system when you're using something like wine. Just don't set the >> flag except explicitly if you actually need it somewhere, and it >> will get pulled in where it is needed, and go away when it is no >> longer needed. >> > > re multilib, under what configuration does abi_x86_32 get set on its > own? With a blank ABI_X86 variable in make.conf? Every 32-bit package > I've ever pulled in has needed that flag set, and I've had to manually > set it until blockers are resolved. I've not set -abi_x86_32 globally > or anything like that. We're talking about a proposed portage feature which hasn't been written yet. None of the behavior described in this thread happens today. Right now all those abi_x86_32 flags are set explicitly, which is why my package.use file is about 10x larger than it used to be. I'm contemplating splitting out the 32-bit stuff into a separate file and just nuking it every 6-months and allowing portage to re-create it to try to keep it somewhat manageable. And that is the inspiration for this. The current design mixes true user preferences with stuff added by auto-unmask needed just to fulfill dependencies. Users should be easily able to prioritize the one above the other. Indeed, maybe I have a few 32-bit library preferences which are explicit and now if I go to nuke then every six months I have to keep track of which ones are which. With the proposed lazy use flags then for the most part 32-bit support would be automagic for most users. -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 12:59 ` Rich Freeman @ 2016-02-11 13:54 ` NP-Hardass 2016-02-11 14:25 ` Kent Fredric 2016-02-11 23:51 ` Daniel Campbell 1 sibling, 1 reply; 42+ messages in thread From: NP-Hardass @ 2016-02-11 13:54 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/11/2016 07:59 AM, Rich Freeman wrote: > On Wed, Feb 10, 2016 at 10:46 PM, Daniel Campbell <zlg@gentoo.org> > wrote: >> >> On 02/10/2016 06:51 PM, Rich Freeman wrote: >>> >>> Ditto for stuff like 32-bit support for half the libraries on >>> your system when you're using something like wine. Just don't >>> set the flag except explicitly if you actually need it >>> somewhere, and it will get pulled in where it is needed, and go >>> away when it is no longer needed. >>> >> >> re multilib, under what configuration does abi_x86_32 get set on >> its own? With a blank ABI_X86 variable in make.conf? Every 32-bit >> package I've ever pulled in has needed that flag set, and I've >> had to manually set it until blockers are resolved. I've not set >> -abi_x86_32 globally or anything like that. > > We're talking about a proposed portage feature which hasn't been > written yet. None of the behavior described in this thread > happens today. Right now all those abi_x86_32 flags are set > explicitly, which is why my package.use file is about 10x larger > than it used to be. I'm contemplating splitting out the 32-bit > stuff into a separate file and just nuking it every 6-months and > allowing portage to re-create it to try to keep it somewhat > manageable. > > And that is the inspiration for this. The current design mixes > true user preferences with stuff added by auto-unmask needed just > to fulfill dependencies. Users should be easily able to prioritize > the one above the other. Indeed, maybe I have a few 32-bit > library preferences which are explicit and now if I go to nuke then > every six months I have to keep track of which ones are which. > > With the proposed lazy use flags then for the most part 32-bit > support would be automagic for most users. > Just a slightly OT side note... I split mine off into a separate file (using a directory for package.use ). I proposed a feature a while back, https://bugs.gentoo.org/show_bug.cgi?id=534548, where all use flags are stored in /etc/portage/package.use/${USE_EXPAND} to help with management. Yet another feature similar to lazy eval of use flags is another bug I created a while back, recommended and conditional use flags https://bugs.gentoo.org/show_bug.cgi?id=539124. - -- NP-Hardass -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWvJKXAAoJEBzZQR2yrxj7AA0QAJitT6khf7R9ShDTMOuv7BWG H6APtpLWQCOVmsHo/5muDE/YTytIe+d7OIf4lvjXOegA9NcskZd3PFCuE0ixORhE bo6q2eO+sgEgJA4pkWUoxbovm7esM6AHnsnKb63EymfwJz2GReTkgkgZiG4c4o3y 60twObyNzDmfsKoVGZWUL5Z4kk3WrgRq78Dtg50fsOlGgAKw27LObf2OIzMqFcWt w0zHLu48dffae3vQ8Y1RpG/hGP/GFw/Czb/9XhU+BVvZrwtLjH/4hmEWRwUve+g6 6tpxUuiOi3VByxj4OklRxyxhlZypA2rmGu4WS3dzsw87tmJ5nZ9ASRsO5uKQ61wP YskaGYyVn8v/26zL1Mw+XBsw3OFU1O5tHhaQazVW2fdv0vhnOOS+t4HUH2DKM2xV Yo4OAX0sWHKpCZwiRE6Wi4JUHLHxF2+wlHx9+XKR9q5M1ErmMyG+ovPXBFhiZ2mH 6kCkh59HiL67Z8wplM/51rQA6dj2cgPZ9MosNCIRX+szpjsJN6sLxuGykIJAUVUU 0MVS/N+PgwMSSXtAZIE4Kd28qqoqYbw+qFQ3hqxBp9D8WzQf4c6HysAGDI7PAJeM hKbmfE6qnn27py1Vm+FvL0rGpfsMRdSmcbT3QGh/XCgKLl/VE64ALwYNGgaeJ0iJ WHRYXZf2dwABaCx248SA =kznA -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 13:54 ` NP-Hardass @ 2016-02-11 14:25 ` Kent Fredric 0 siblings, 0 replies; 42+ messages in thread From: Kent Fredric @ 2016-02-11 14:25 UTC (permalink / raw To: gentoo-dev On 12 February 2016 at 02:54, NP-Hardass <NP-Hardass@gentoo.org> wrote: > Just a slightly OT side note... Quite, these are the *sorts* of things I've been mulling over for a bit without coming to a concrete implementation idea. > I split mine off into a separate file (using a directory for package.use > ). > I proposed a feature a while back, > https://bugs.gentoo.org/show_bug.cgi?id=534548, where all use flags > are stored in /etc/portage/package.use/${USE_EXPAND} to help with > management. My experience so far has been similar, in that clustering settings based on the setting tends to be a good primary classifier. Though I maintain 2 different layout structures depending on task: Scheme 1 I use for package.use and keywords and stuff: package.use/01-${cat} # contains use settings for all packages in ${cat} package.use/90-${task} # contains all settings for use flags that achieve a single "task" ( like I have an entire file just for the legacy abi_x86_32 support ) package.use/99-autounmask # because auto-unmask writes to the last file alphabetically, so garbage goes in here if I ever make the mistake of using autounmask-write again Scheme 2 I use for package.env package.env/${task}/${pn} Where "$task" is as above, but "${pn}" is the program-in-world-I-want, and the file contains settings that achieve "task" for its dependencies. This is me trying to approximate a "Lazy" graph, as each entry named "${pn}" says: <=cat/pn-$version py2.7 # deps cat/pn py2.7 cat/pn py2.7 That way, every time an update to ${pn} happens where it still needs the old python, it cries about it, but in the future it will be trivial to check "packages I have installed" vs "lazy rule files I have" and see when the condition is no longer required, and I can simply reap the whole file. ( This is kinda hell because of all the overlapping dependencies, but its better than nothing ) > Yet another feature similar to lazy eval of use flags is another bug I > created a while back, recommended and conditional use flags > https://bugs.gentoo.org/show_bug.cgi?id=539124. recommended I wanted too, but I figured it would be easy enough to bodge around it with: IUSE="minimal suggested feature" DEPEND="!minimal? ( feature_dep ) feature? ( feature_dep ) " Or something like that. ( using the word "minimal" as a stand in for "don't pull recommended stuff" because that's already a global useflag, and under the assumption that the words "recommended" implies "Installed by default" ) But in the feature as stated, there's a bit of a gap conceptually, because sometimes upstream produce a set of dependencies with no description other than "these are all recommended deps and you should have all of them, unless you're working in very constrained circumstances and you know what you're doing, and things may break in certain code paths if you don't install them", and "RECOMMENDED_USE" here doesn't exactly cover that featureset. You'd still need an explicit "minimal" for that. Conditional I kinda thought about and decided "naah, too complex, you'll blow any resolver up with that stuff" . Though we may be wanting different things entirely in "recommended useflags", because I'm riffing more on "recommended dependencies" which may incidentally be "dependencies required by this package if a certain package is to use it", and the only way to communicate that between packages at present is with "cat-egory/pakc-1.2[-minimal]" -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 12:59 ` Rich Freeman 2016-02-11 13:54 ` NP-Hardass @ 2016-02-11 23:51 ` Daniel Campbell 1 sibling, 0 replies; 42+ messages in thread From: Daniel Campbell @ 2016-02-11 23:51 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/11/2016 04:59 AM, Rich Freeman wrote: > On Wed, Feb 10, 2016 at 10:46 PM, Daniel Campbell <zlg@gentoo.org> > wrote: >> >> On 02/10/2016 06:51 PM, Rich Freeman wrote: >>> >>> Ditto for stuff like 32-bit support for half the libraries on >>> your system when you're using something like wine. Just don't >>> set the flag except explicitly if you actually need it >>> somewhere, and it will get pulled in where it is needed, and >>> go away when it is no longer needed. >>> >> >> re multilib, under what configuration does abi_x86_32 get set on >> its own? With a blank ABI_X86 variable in make.conf? Every >> 32-bit package I've ever pulled in has needed that flag set, and >> I've had to manually set it until blockers are resolved. I've not >> set -abi_x86_32 globally or anything like that. > > We're talking about a proposed portage feature which hasn't been > written yet. None of the behavior described in this thread happens > today. Right now all those abi_x86_32 flags are set explicitly, > which is why my package.use file is about 10x larger than it used > to be. I'm contemplating splitting out the 32-bit stuff into a > separate file and just nuking it every 6-months and allowing > portage to re-create it to try to keep it somewhat manageable. > > And that is the inspiration for this. The current design mixes > true user preferences with stuff added by auto-unmask needed just > to fulfill dependencies. Users should be easily able to > prioritize the one above the other. Indeed, maybe I have a few > 32-bit library preferences which are explicit and now if I go to > nuke then every six months I have to keep track of which ones are > which. > > With the proposed lazy use flags then for the most part 32-bit > support would be automagic for most users. > Okay, I wasn't sure if you were talking what's already here or the main topic. Thanks for clarifying. I think lazy USE would be a big plus for multilib users. - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWvR5kAAoJEAEkDpRQOeFwfCoP/2bdwfRQOSG/OZ0HtcTZCGzV UKM8i3Z1kPL7QVgDA24kDDvPwyPDsGIm9x0/fe/UeDlQ3tkSqhQvbBukNXEW0gaJ qMNQBPmnGfGOhr0o0VylvMGZCq4IKGW8hQdBtjA/QTCSKiASAM1j+IjlvBSk1n6V G+eqoGdY50xF8C8tix1ozmA1ZHP49sU1nE1Dnzg+AA3AESgfrxJ2ys9ccB7vwIny dWD5HXzTNjhc4OkiqWSBfO9CESEPe/vKbk5la7HxdVB/auKm52A/O81Bs+8YXHlL IB3k81lpEY08O7lfVzfJqj0uN+7yF6v6pRVwDdnDGbJQCbun5hfmQBlmGYHEEDMf z2SI6eIPkYWlonEgmBOkvu1fZP7gdXs9gPHnsGd3QxdjBiqOyb3AckqcxQDiczKf 1xDs8isXenEtSV4MTjO/JwyJT1sgORn3y+iFvUMDdOtjWFAs4xHMZRiqcgQ9hn+3 Q7PgB1VLw85THQBFtE2s4FtM9H2I9oRPVDM10OEXFiIVtH2Kkh9LWHr/CdkpGt9I MEDt0HH9m6so2JW407BX8nhT6eL8QZCOEzm7zjfMeFNFbbctRtIEhj3DiSPvYIq+ OyRJ7f3zqygwV+wH09y9fmCJ/bJzrIsRARsAw9V/lW4MLLRQ3IfqWfsQG/BSYFWL CLLROLSNbTQR16QxUiJq =/IrH -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 2:51 ` Rich Freeman 2016-02-11 3:46 ` Daniel Campbell @ 2016-02-11 4:57 ` Kent Fredric 2016-02-11 5:47 ` Raymond Jennings 2016-02-11 12:55 ` Rich Freeman 1 sibling, 2 replies; 42+ messages in thread From: Kent Fredric @ 2016-02-11 4:57 UTC (permalink / raw To: gentoo-dev On 11 February 2016 at 15:51, Rich Freeman <rich0@gentoo.org> wrote: > In this case you just wouldn't enable python 2.7 support, but you > wouldn't disable it either. Portage would just pull it in where it is > needed. But you still need a mechanism in place if you *dont* want that to happen. I might choose to forbid python2.7 support, and portage really shouldn't "auto enable" python 2.7 support if I've explicitly indicated I don't want python 2.7 support. Unless of course you're suggesting "USE=-python_targets_python2_7" would not be "auto-enableable" But then you're *still* requiring a tri-state USE. USE="-foo" + IUSE="+foo" => "-foo" => autouse enables foo if required USE="" + IUSE="+foo" => "foo" => standard EFFECTIVE_USE="foo" USE="foo" + IUSE = "+foo" => "foo" => standard EFFECTIVE_USE="foo" USE="-foo" + IUSE="foo" => "-foo" => autouse enables foo if required USE="" + IUSE="foo" => "-foo" => autouse enables foo if required USE="foo" + IUSE="foo" => "foo" => standard EFFECTIVE_USE="foo" So the logic composing USE + IUSE has to change in generating the effective USE set so that USE + IUSE can emit a 3rd and 4th state. USE="-foo" + IUSE="+foo" => "-foo!!" => autouse fails if foo is required USE="" + IUSE="+foo" => "foo" => standard EFFECTIVE_USE="foo", auto-unuses foo if blocked by a dep USE="foo" + IUSE = "+foo" => "foo!!" => standard EFFECTIVE_USE="foo", fails if foo is "blocked" by a dep USE="-foo" + IUSE="foo" => "-foo!!" => autouse fails if foo is required USE="" + IUSE="foo" => "-foo" => autouse enables foo if required USE="foo" + IUSE="foo" => "foo!!" => standard EFFECTIVE_USE="foo", fails if "foo" is blocked by a dep. Mentally keeping track of this accounting magic would be complicating matters. -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 4:57 ` Kent Fredric @ 2016-02-11 5:47 ` Raymond Jennings 2016-02-11 12:55 ` Rich Freeman 1 sibling, 0 replies; 42+ messages in thread From: Raymond Jennings @ 2016-02-11 5:47 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 2099 bytes --] Yeah the "soft" thing was meant as "do this unless something breaks, then do it otherwise" On Wed, Feb 10, 2016 at 8:57 PM, Kent Fredric <kentfredric@gmail.com> wrote: > On 11 February 2016 at 15:51, Rich Freeman <rich0@gentoo.org> wrote: > > In this case you just wouldn't enable python 2.7 support, but you > > wouldn't disable it either. Portage would just pull it in where it is > > needed. > > > But you still need a mechanism in place if you *dont* want that to happen. > > I might choose to forbid python2.7 support, and portage really > shouldn't "auto enable" python 2.7 support if I've explicitly > indicated I don't want python 2.7 support. > > Unless of course you're suggesting "USE=-python_targets_python2_7" > would not be "auto-enableable" > > But then you're *still* requiring a tri-state USE. > > USE="-foo" + IUSE="+foo" => "-foo" => autouse enables foo if required > USE="" + IUSE="+foo" => "foo" => standard EFFECTIVE_USE="foo" > USE="foo" + IUSE = "+foo" => "foo" => standard EFFECTIVE_USE="foo" > USE="-foo" + IUSE="foo" => "-foo" => autouse enables foo if required > USE="" + IUSE="foo" => "-foo" => autouse enables foo if required > USE="foo" + IUSE="foo" => "foo" => standard EFFECTIVE_USE="foo" > > > So the logic composing USE + IUSE has to change in generating the > effective USE set so that USE + IUSE can emit a 3rd and 4th state. > > USE="-foo" + IUSE="+foo" => "-foo!!" => autouse fails if foo is required > USE="" + IUSE="+foo" => "foo" => standard > EFFECTIVE_USE="foo", auto-unuses foo if blocked by a dep > USE="foo" + IUSE = "+foo" => "foo!!" => standard EFFECTIVE_USE="foo", > fails if foo is "blocked" by a dep > USE="-foo" + IUSE="foo" => "-foo!!" => autouse fails if foo is required > USE="" + IUSE="foo" => "-foo" => autouse enables foo if required > USE="foo" + IUSE="foo" => "foo!!" => standard EFFECTIVE_USE="foo", > fails if "foo" is blocked by a dep. > > > Mentally keeping track of this accounting magic would be complicating > matters. > > -- > Kent > > KENTNL - https://metacpan.org/author/KENTNL > > [-- Attachment #2: Type: text/html, Size: 3370 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 4:57 ` Kent Fredric 2016-02-11 5:47 ` Raymond Jennings @ 2016-02-11 12:55 ` Rich Freeman 2016-02-11 14:19 ` M. J. Everitt ` (2 more replies) 1 sibling, 3 replies; 42+ messages in thread From: Rich Freeman @ 2016-02-11 12:55 UTC (permalink / raw To: gentoo-dev On Wed, Feb 10, 2016 at 11:57 PM, Kent Fredric <kentfredric@gmail.com> wrote: > On 11 February 2016 at 15:51, Rich Freeman <rich0@gentoo.org> wrote: >> In this case you just wouldn't enable python 2.7 support, but you >> wouldn't disable it either. Portage would just pull it in where it is >> needed. > > But you still need a mechanism in place if you *dont* want that to happen. >... >> Unless of course you're suggesting "USE=-python_targets_python2_7" > would not be "auto-enableable" That is correct. > > But then you're *still* requiring a tri-state USE. Sure - it would be the same as how package-versions work today. Stick it in world, and you're pulling it in. Stick in in mask, and you're keeping it out. Don't do anything, and portage does what it thinks is best, guided by profiles/etc. > USE="" + IUSE="foo" => "-foo" => autouse enables foo if required This is the only thing that would change. In all the other scenarios you described the behavior would be the same as today. If you set USE=-foo then you'll get the same errors you get today. Now, auto-unmask could still propose sticking USE=+foo in your package.use if you have USE=-foo in your make.conf, which is already the behavior today. If you've made any explicit USE setting in your configuration, portage would never ignore it, but only suggest that you change it. Perhaps it might make sense to introduce a new ~foo setting which undoes a +/-foo in make.conf but doesn't set it either + or - in package.use, allowing the setting to revert to the default behavior. That would actually be useful independent of lazy use flags, but would be more useful with lazy use flags. > > Mentally keeping track of this accounting magic would be complicating matters. > I think you're overthinking this. It is completely analogous as to what portage already does with package-versions. I don't have libjpeg in my world file, and yet portage installs it, and I don't think about it either way. If I wanted to pin a specific version of it or mask it I could, but of course the preference of most users is to micromanage as little as possible. Basically lazy use flags is intended for users to minimize the size of their package.use files, just as they already minimize the size of their @world and package.mask files today. -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 12:55 ` Rich Freeman @ 2016-02-11 14:19 ` M. J. Everitt 2016-02-11 14:32 ` Kent Fredric 2016-02-11 19:37 ` Róbert Čerňanský 2016-02-12 5:56 ` [gentoo-dev] " Duncan 2 siblings, 1 reply; 42+ messages in thread From: M. J. Everitt @ 2016-02-11 14:19 UTC (permalink / raw To: gentoo-dev On 11/02/16 12:55, Rich Freeman wrote: > On Wed, Feb 10, 2016 at 11:57 PM, Kent Fredric <kentfredric@gmail.com> wrote: >> On 11 February 2016 at 15:51, Rich Freeman <rich0@gentoo.org> wrote: >>> In this case you just wouldn't enable python 2.7 support, but you >>> wouldn't disable it either. Portage would just pull it in where it is >>> needed. >> But you still need a mechanism in place if you *dont* want that to happen. >> ... >>> Unless of course you're suggesting "USE=-python_targets_python2_7" >> would not be "auto-enableable" > That is correct. > >> But then you're *still* requiring a tri-state USE. > Sure - it would be the same as how package-versions work today. > > Stick it in world, and you're pulling it in. > > Stick in in mask, and you're keeping it out. > > Don't do anything, and portage does what it thinks is best, guided by > profiles/etc. > >> USE="" + IUSE="foo" => "-foo" => autouse enables foo if required > This is the only thing that would change. In all the other scenarios > you described the behavior would be the same as today. If you set > USE=-foo then you'll get the same errors you get today. > > Now, auto-unmask could still propose sticking USE=+foo in your > package.use if you have USE=-foo in your make.conf, which is already > the behavior today. If you've made any explicit USE setting in your > configuration, portage would never ignore it, but only suggest that > you change it. > > Perhaps it might make sense to introduce a new ~foo setting which > undoes a +/-foo in make.conf but doesn't set it either + or - in > package.use, allowing the setting to revert to the default behavior. > That would actually be useful independent of lazy use flags, but would > be more useful with lazy use flags. > >> Mentally keeping track of this accounting magic would be complicating matters. >> > I think you're overthinking this. It is completely analogous as to > what portage already does with package-versions. I don't have libjpeg > in my world file, and yet portage installs it, and I don't think about > it either way. If I wanted to pin a specific version of it or mask it > I could, but of course the preference of most users is to micromanage > as little as possible. > > Basically lazy use flags is intended for users to minimize the size of > their package.use files, just as they already minimize the size of > their @world and package.mask files today. > I would avoid complicating the USE flag system .. it's straightforward as it is, and has already been 'tweaked' by the auto-unmask feature, leading to large package.use files and has no support of per-category files (that I know of). I would propose the introduction of a 'LUSE' flag (lazy-use or lightweight-use) which serves as a fall-back if the main USE system "fails" - ok this requires duplication of the existing checking system (and hence integration with portage) but it would allow you to set USE flags per system at install .. and you could 'tweak' LUSE flags to suit package implementations instead. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 14:19 ` M. J. Everitt @ 2016-02-11 14:32 ` Kent Fredric 2016-02-11 14:43 ` M. J. Everitt 0 siblings, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-11 14:32 UTC (permalink / raw To: gentoo-dev On 12 February 2016 at 03:19, M. J. Everitt <m.j.everitt@iee.org> wrote: > I would avoid complicating the USE flag system .. it's straightforward > as it is, and has already been 'tweaked' by the auto-unmask feature, > leading to large package.use files and has no support of per-category > files (that I know of). Auto-unmask is creating a problem here though, it enables useflags, and has no way to disable them again when their utility has long passed. As per > and has no support of per-category files (that I know of). # /etc/portage/package.use/dev-qt dev-qt/* qt3support ^ Legal, works -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 14:32 ` Kent Fredric @ 2016-02-11 14:43 ` M. J. Everitt 2016-02-11 14:46 ` Kent Fredric 0 siblings, 1 reply; 42+ messages in thread From: M. J. Everitt @ 2016-02-11 14:43 UTC (permalink / raw To: gentoo-dev On 11/02/16 14:32, Kent Fredric wrote: >> and has no support of per-category files (that I know of). > # /etc/portage/package.use/dev-qt > dev-qt/* qt3support > > ^ Legal, works > > Portage does, auto-unmask has a very inconsistent, unstable way of working with a package.use folder not file ... ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 14:43 ` M. J. Everitt @ 2016-02-11 14:46 ` Kent Fredric 2016-02-11 14:48 ` M. J. Everitt 0 siblings, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-11 14:46 UTC (permalink / raw To: gentoo-dev On 12 February 2016 at 03:43, M. J. Everitt <m.j.everitt@iee.org> wrote: > auto-unmask has a very inconsistent, unstable way of > working with a package.use folder not file ... auto-unmask consistently adds items to the file with the highest dictionary sort. So if you name all the files with numerical prefixes, 00 .. 99, "99" is where auto-unmask will write to. -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 14:46 ` Kent Fredric @ 2016-02-11 14:48 ` M. J. Everitt 2016-02-11 14:53 ` Kent Fredric 0 siblings, 1 reply; 42+ messages in thread From: M. J. Everitt @ 2016-02-11 14:48 UTC (permalink / raw To: gentoo-dev On 11/02/16 14:46, Kent Fredric wrote: > On 12 February 2016 at 03:43, M. J. Everitt <m.j.everitt@iee.org> wrote: >> auto-unmask has a very inconsistent, unstable way of >> working with a package.use folder not file ... > > auto-unmask consistently adds items to the file with the highest > dictionary sort. > > So if you name all the files with numerical prefixes, 00 .. 99, "99" > is where auto-unmask will write to. > Well, that's obvious ........ ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 14:48 ` M. J. Everitt @ 2016-02-11 14:53 ` Kent Fredric 0 siblings, 0 replies; 42+ messages in thread From: Kent Fredric @ 2016-02-11 14:53 UTC (permalink / raw To: gentoo-dev On 12 February 2016 at 03:48, M. J. Everitt <m.j.everitt@iee.org> wrote: > Well, that's obvious ........ Makes more sense if you read this: > Any file in this directory, directories of other profiles or top-level "profiles" directory that begins with "package." or "use." > can be more than just a flat file. If it is a directory, then all the files in that directory will be sorted in ascending > alphabetical order by file name and summed together as if it were a single file. And so if that's considered a "Single logical file" and the normal behaviour is "Append to the single file", then by proxy, the logical place to append in a multi-file scenario is the "last" one. -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 12:55 ` Rich Freeman 2016-02-11 14:19 ` M. J. Everitt @ 2016-02-11 19:37 ` Róbert Čerňanský 2016-02-12 5:56 ` [gentoo-dev] " Duncan 2 siblings, 0 replies; 42+ messages in thread From: Róbert Čerňanský @ 2016-02-11 19:37 UTC (permalink / raw To: gentoo-dev On Thu, 11 Feb 2016 07:55:52 -0500 Rich Freeman <rich0@gentoo.org> wrote: > On Wed, Feb 10, 2016 at 11:57 PM, Kent Fredric > <kentfredric@gmail.com> wrote: > > On 11 February 2016 at 15:51, Rich Freeman <rich0@gentoo.org> wrote: > >> In this case you just wouldn't enable python 2.7 support, but you > >> wouldn't disable it either. Portage would just pull it in where > >> it is needed. [...] > Perhaps it might make sense to introduce a new ~foo setting which > undoes a +/-foo in make.conf but doesn't set it either + or - in > package.use, allowing the setting to revert to the default behavior. > That would actually be useful independent of lazy use flags, but would > be more useful with lazy use flags. Having also ~foo syntax (together with omiting use flags) seems to me as best option now actually. It would support also Kent's use case I think. Taking that use case as an example - if I would want to get rid of python-2.7 as soon as possible I'd set -python_targets_python2_7 in make.conf. For those packages which portage screams that needs python_targets_python2_7 I'd set ~python_targets_python2_7 in package.use. In time when last of those packages stops hard-requiring python_targets_python2_7 the python-2.7 package itself would be depcleaned and I could remove '~' entries from package.use. Nice and clean :-) . -- Róbert Čerňanský E-mail: openhs@tightmail.com Jabber: hs@jabber.sk ^ permalink raw reply [flat|nested] 42+ messages in thread
* [gentoo-dev] Re: "Lazy" use flags? 2016-02-11 12:55 ` Rich Freeman 2016-02-11 14:19 ` M. J. Everitt 2016-02-11 19:37 ` Róbert Čerňanský @ 2016-02-12 5:56 ` Duncan 2016-02-12 6:36 ` Kent Fredric 2 siblings, 1 reply; 42+ messages in thread From: Duncan @ 2016-02-12 5:56 UTC (permalink / raw To: gentoo-dev Rich Freeman posted on Thu, 11 Feb 2016 07:55:52 -0500 as excerpted: > Now, auto-unmask could still propose sticking USE=+foo in your > package.use if you have USE=-foo in your make.conf, which is already the > behavior today. If you've made any explicit USE setting in your > configuration, portage would never ignore it, but only suggest that you > change it. So my USE="-* ..." (without letting portage do autounmasking) would continue to work just like it does now, correct? Because I allow neither profile USE flags nor profile @system packages (all such profile entries and package-based default-use are negated), here, and my package.use files contain only specific exceptions to my global USE policy settings, together with (generally date-stamped) comments justifying exactly why that exception is there. By definition, then, If I haven't specifically set USE=flag, my system policy is USE=-flag, and I want to know about and specifically setup any exceptions (or if justified change my system policy), so I can set the justification notes at the same time. Because I'd be rather put out at anyone suggesting that I have to specifically -flag each individual flag I want to be hard off, not squishy off, as that's all the flags I've not specifically set hard on. -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] Re: "Lazy" use flags? 2016-02-12 5:56 ` [gentoo-dev] " Duncan @ 2016-02-12 6:36 ` Kent Fredric 2016-02-12 11:26 ` Rich Freeman 0 siblings, 1 reply; 42+ messages in thread From: Kent Fredric @ 2016-02-12 6:36 UTC (permalink / raw To: gentoo-dev On 12 February 2016 at 18:56, Duncan <1i5t5.duncan@cox.net> wrote: > So my USE="-* ..." (without letting portage do autounmasking) would > continue to work just like it does now, correct? I would hope so. And obviously, this feature would be potentially tenous, and might be wise to only activate its mechanics with a parameter to emerge. That is, I suggest that unless you have --lazy-use In your emerge opts, no lazy use mechanics should be applied ( or even considered ) That way, people who do want the new behaviour can stick it in the default emerge options and \o/ -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] Re: "Lazy" use flags? 2016-02-12 6:36 ` Kent Fredric @ 2016-02-12 11:26 ` Rich Freeman 2016-02-12 15:58 ` Gordon Pettey 0 siblings, 1 reply; 42+ messages in thread From: Rich Freeman @ 2016-02-12 11:26 UTC (permalink / raw To: gentoo-dev On Fri, Feb 12, 2016 at 1:36 AM, Kent Fredric <kentfredric@gmail.com> wrote: > On 12 February 2016 at 18:56, Duncan <1i5t5.duncan@cox.net> wrote: >> So my USE="-* ..." (without letting portage do autounmasking) would >> continue to work just like it does now, correct? > > I would hope so. That would be my proposal. > And obviously, this feature would be potentially > tenous, and might be wise to only > activate its mechanics with a parameter to emerge. >,,, > That way, people who do want the new behaviour can stick it in the > default emerge options and \o/ Whether you call it a FEATURE or an option it would almost certainly have to be defaulted. If you run with that option for six months and then run emerge without that option while using something like --newuse, it will immediately detect a bazillion dependency conflicts and if using autounmask it will want to add 1000 lines to your package.use - which would be the same 1000 lines that many are running with today. I think it would make more sense in general for this to be the default and to have a flag to disable it, in part for this reason. It wouldn't affect people running -* and such anyway, so this is targeted mostly at users who don't care a great deal about micromanaging their USE flags. -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] Re: "Lazy" use flags? 2016-02-12 11:26 ` Rich Freeman @ 2016-02-12 15:58 ` Gordon Pettey 0 siblings, 0 replies; 42+ messages in thread From: Gordon Pettey @ 2016-02-12 15:58 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1217 bytes --] On Fri, Feb 12, 2016 at 5:26 AM, Rich Freeman <rich0@gentoo.org> wrote: > On Fri, Feb 12, 2016 at 1:36 AM, Kent Fredric <kentfredric@gmail.com> > wrote: > > On 12 February 2016 at 18:56, Duncan <1i5t5.duncan@cox.net> wrote: > >> So my USE="-* ..." (without letting portage do autounmasking) would > >> continue to work just like it does now, correct? > > > > I would hope so. > > That would be my proposal. > > I think it would make more sense in general for this to be the default > and to have a flag to disable it, in part for this reason. It > wouldn't affect people running -* and such anyway, so this is targeted > mostly at users who don't care a great deal about micromanaging their > USE flags. > I use -* exactly because I /don't/ want to micromanage, and there are far too many packages whose maintainers have decided to stick + in IUSE for random crap. To wishlist a different feature, it'd be nice to have a profile or something that made portage ignore IUSE="+maintainers-favorite-flag" so we wouldn't have to use -*... I'll happily let portage semi-manage USE for me by auto-enabling USE in dependencies if I can set the base USE in the first place without having to start off with global negation. [-- Attachment #2: Type: text/html, Size: 1753 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-11 0:42 ` Rich Freeman 2016-02-11 2:18 ` Kent Fredric @ 2016-02-11 2:31 ` Kent Fredric 1 sibling, 0 replies; 42+ messages in thread From: Kent Fredric @ 2016-02-11 2:31 UTC (permalink / raw To: gentoo-dev On 11 February 2016 at 13:42, Rich Freeman <rich0@gentoo.org> wrote: >> soft disable = Disable, unless it would break a dependency > > I don't really see why these are needed. Just do what we are already > doing - use the settings in the profile and package defaults. And soft-disable would be for things where IUSE="+flag" Where you didn't like "flag", but application of < USE="-flag" > can conditionally cause breakages due to other packages doing DEPEND="package[flag]" But would otherwise be identical to "Soft-enable" Just his descriptions are strange. I think a better description for the set of possible settings are: enable: USE="foo" permit: treat as USE="" by default, so IUSE="+foo" still defaults to "on", but turn USE="foo" on if dependency conditions require it. discourage: treat as USE="-foo" by default, so IUSE="+foo" gets vetoed to "off", but can be still enabled by dependency conditions forbid: USE="-foo" -- Kent KENTNL - https://metacpan.org/author/KENTNL ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-09 13:19 ` Kent Fredric 2016-02-09 13:22 ` Daniel Campbell 2016-02-09 20:35 ` Róbert Čerňanský @ 2016-02-10 3:08 ` Gordon Pettey 2016-02-10 3:29 ` Daniel Campbell 2 siblings, 1 reply; 42+ messages in thread From: Gordon Pettey @ 2016-02-10 3:08 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 2038 bytes --] On Tue, Feb 9, 2016 at 7:19 AM, Kent Fredric <kentfredric@gmail.com> wrote: > On 10 February 2016 at 02:14, Daniel Campbell <zlg@gentoo.org> wrote: > > Another concern, though, is it'd result in something similar. Instead > > of "cat/foo bar baz" and later removing 'baz', you'd have "cat/foo bar > > ~baz" (with '~baz' as 'enable this if you need to'). You'd still have > > cruft left in your p.use file, and it would achieve the same result as > > a well-commented file. > > > Granted you'd still have the cruft in your config files, but it would > become mostly-harmless cruft, not cruft that caused needless > dependencies to get pulled into the dependency tree as a side-effect. > > And because it would be "only as needed", you could afford to use some > of those "only if needed" useflags in a more global manner. > > For instance, I really don't want to globally define PYTHON_TARGETS to > include python2_7, because it will simply install a lot of extra > things I know I don't need. > > But if I could globally define something to the effect of "anything > that wants python2.7 support can have it", then that's acceptable > globally, because the effect would still turn things on automatically > on a per-page level, not at a global level. > > So you could achieve the same results with much less syntax and much > less effort. > A distinct behavior for +USE (as opposed to -USE and USE) would fit better than "~USE" IMHO, where the plus means "add if (and only if) required" and would cascade through dependencies, so if I merge e.g. app-portage/pfl with USE="+PYTHON_TARGETS_PYTHON2_7" it would apply that to dependencies as required. ~USE might fit for something like "~PYTHON_TARGETS_PYTHON3", where it would select the greatest flag matching that prefix, and would therefore automatically keep packages that have 3_2, 3_3, 3_4, 3_5 using whatever is the latest unmasked flag. Could potentially combine the prefixes, e.g. "~+PYTHON_TARGETS_PYTHON3" to both select the greatest python version AND cascade to dependencies. [-- Attachment #2: Type: text/html, Size: 2693 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-10 3:08 ` Gordon Pettey @ 2016-02-10 3:29 ` Daniel Campbell 2016-02-12 0:01 ` William Hubbs 0 siblings, 1 reply; 42+ messages in thread From: Daniel Campbell @ 2016-02-10 3:29 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/09/2016 07:08 PM, Gordon Pettey wrote: > > On Tue, Feb 9, 2016 at 7:19 AM, Kent Fredric > <kentfredric@gmail.com <mailto:kentfredric@gmail.com>> wrote: > > On 10 February 2016 at 02:14, Daniel Campbell <zlg@gentoo.org > <mailto:zlg@gentoo.org>> wrote: >> Another concern, though, is it'd result in something similar. >> Instead of "cat/foo bar baz" and later removing 'baz', you'd have >> "cat/foo bar ~baz" (with '~baz' as 'enable this if you need to'). >> You'd still have cruft left in your p.use file, and it would >> achieve the same result as a well-commented file. > > > Granted you'd still have the cruft in your config files, but it > would become mostly-harmless cruft, not cruft that caused needless > dependencies to get pulled into the dependency tree as a > side-effect. > > And because it would be "only as needed", you could afford to use > some of those "only if needed" useflags in a more global manner. > > For instance, I really don't want to globally define PYTHON_TARGETS > to include python2_7, because it will simply install a lot of > extra things I know I don't need. > > But if I could globally define something to the effect of > "anything that wants python2.7 support can have it", then that's > acceptable globally, because the effect would still turn things on > automatically on a per-page level, not at a global level. > > So you could achieve the same results with much less syntax and > much less effort. > > > A distinct behavior for +USE (as opposed to -USE and USE) would > fit better than "~USE" IMHO, where the plus means "add if (and only > if) required" and would cascade through dependencies, so if I merge > e.g. app-portage/pfl with USE="+PYTHON_TARGETS_PYTHON2_7" it would > apply that to dependencies as required. ~USE might fit for > something like "~PYTHON_TARGETS_PYTHON3", where it would select the > greatest flag matching that prefix, and would therefore > automatically keep packages that have 3_2, 3_3, 3_4, 3_5 using > whatever is the latest unmasked flag. Could potentially combine the > prefixes, e.g. "~+PYTHON_TARGETS_PYTHON3" to both select the > greatest python version AND cascade to dependencies. The ~ was just a spitballed idea. It's really not important *what* the symbol is, it's just that one would be required. - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWuq6mAAoJEAEkDpRQOeFwiGsQANMRonEdPVxs5wgG2XFB3bMf +jTirnBZX0fH4wwaWy7eN5n1oaivepcup7XjUkiXuoqdyZmvZrb1ttwU/vrjaDZn 82rpP+7s9gNqSphifhGcf/EHTZo49VMZUEOBNElj0YtbEa3bcjG/vCpCgxnPuhVr 7LxuTtT0pDZd1mqMBLi+g5XYmDSfls2T2PWO3formcPYs5B3Xf4Dkc2jWEl7mEsB neDtxkQoXkkuHX3y3uCwXb0KbGKEMenIA+1XiPP9P7nDSaagW+V0DXUWP5aCjTxB csgiOrOdLEO1305eOkk7kxxoZIRoEgvtlSIA5G0R38+23A0Nwo/F0KV3hMjyBcbi S6QuMrvwCgWiUIjgzd0zbI1+81EaHErn5zb6asdj78SaC5nzIbmRdw/zI+s4RIm0 8rw6RBsnDsP4Iah/kJHqMBdtDA7my7ImWKkKuWtAfeJfrYheDMb/NwMfl2L7/hIY jKa0YuZ8P0TnU5xROFlIyXUILXMK/be5KA7RSQe16UMNGLsJLJ/5KBv2KQbJ2fqX DBQG/780jZBNRAVFRimJ4v1S6g/+BJixN6ajZBe2tBjCV70ina7uL5H1K7cenvE5 0U2M0yl/K9QmEOJQoaR2iwTQL4fbRyr1ntbvlHWwE82rMKdQO2FwJxBj2yhEWELh CAlwuL8k7LaFGVoQhQhb =mkla -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-10 3:29 ` Daniel Campbell @ 2016-02-12 0:01 ` William Hubbs 2016-02-12 0:12 ` Daniel Campbell 0 siblings, 1 reply; 42+ messages in thread From: William Hubbs @ 2016-02-12 0:01 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 424 bytes --] I'm just picking a random message in the thread to reply to. In the past, we had a feature, I think it was called "auto use", that would automatically turn on a use flag if the package that was needed to support it was installed. As an example, if we still had this, python_targets_2_7 would be automatically turned on if dev-lang/python-2.7 was installed. Is this along the lines of what we are talking about? William [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 181 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-12 0:01 ` William Hubbs @ 2016-02-12 0:12 ` Daniel Campbell 2016-02-12 1:23 ` Rich Freeman 0 siblings, 1 reply; 42+ messages in thread From: Daniel Campbell @ 2016-02-12 0:12 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/11/2016 04:01 PM, William Hubbs wrote: > I'm just picking a random message in the thread to reply to. > > In the past, we had a feature, I think it was called "auto use", > that would automatically turn on a use flag if the package that was > needed to support it was installed. > > As an example, if we still had this, python_targets_2_7 would be > automatically turned on if dev-lang/python-2.7 was installed. > > Is this along the lines of what we are talking about? > > William > No, lazy USE in this discussion is akin to installing, say, Steam. That requires a lot of packages that must be rebuilt with abi_x86_32. In such a situation, if there was something like USE="~abi_x86_32" (the ~ is just a symbol, it wouldn't have to be that exact symbol), then packages that need that USE flag would automatically use it, and those that don't need it wouldn't be built with it. It's kind of a "I'll allow this USE flag, but only if you need it" instead of what we currently have, which is a hard YES or NO. The in-between case (not clarifying USE flags at all) works fine for packages but not necessarily for USE flags. Installing something like Steam, wine, or Skype requires a huge swath of abi_x86_32 flags. I and others get around this by partitioning these flags to files, but should something in dependencies change, we'll still be building those packages in 32-bit unnecessarily. So it's closer to what we do for dependency resolution on packages, just applied to USE flags. (hopefully I explained well enough) - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWvSNnAAoJEAEkDpRQOeFwVd4P/2h2D31S2jOiafs9PM0In8VD PasOphNcKIQp+SNmN5BRQNieKXKRpSzkQSvb1Sk3UUOsR+36jN23GtvLeYvpEJsg fsjsrZrBs9Wvv/eMK2+OAU1VCXDx4Mbc5uSCc0JM+nNhx2IR9jvfGefto3WD0pC5 Bjg5mP+yB/MZ+IXUaHKVmTtiGo0PM3NRPUOlaOi0icMw5OUFlvY9eQo2z0dEaNrq SDTsm19adaxsygZPiog101KHGZ1NgoYWZcA+sIR97ZU0tIQPBd9RKVcUe7Q/4YOu DH5mSWDyBwsdGY6wVfoNkrWhpL7ZvRqux5C3bicOtep+dvbog5cBAljQOxB39to4 3g/ufouooBk1GIzMFdo3JI3i9DB0rwCY2PLJsMGRQxYdQZo3K75LQDwG78gHOEMD +YOiC/T0zOx6NZ3L4Nfw0ntD0/T0NxiM9IOg2E1hK01W8ehpwCvhriVKR9SyReW4 6pkzMzgJNBUG6T35+hwUbgb1AsM/Pk7Ye21+DWO4ed/7EFj8QlXe0Yk9At9RMTe1 8mdV7oQSvE3BaYhFmsUOgiiiMFqx7IyVmiBUvBVpnmDSxk7NRPSSVl5sP900yDlx eHdy9uazaWgnWYyZU1zKpIAD3wn5Qo3BbdDMj4VC+IsLAvvovSnkOFwEIAGgmrN7 vCz3wmcDozbSh0vXuUWk =X+4h -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-12 0:12 ` Daniel Campbell @ 2016-02-12 1:23 ` Rich Freeman 2016-02-12 1:26 ` Daniel Campbell 0 siblings, 1 reply; 42+ messages in thread From: Rich Freeman @ 2016-02-12 1:23 UTC (permalink / raw To: gentoo-dev On Thu, Feb 11, 2016 at 7:12 PM, Daniel Campbell <zlg@gentoo.org> wrote: > > No, lazy USE in this discussion is akin to installing, say, Steam. > That requires a lot of packages that must be rebuilt with abi_x86_32. > In such a situation, if there was something like USE="~abi_x86_32" > (the ~ is just a symbol, it wouldn't have to be that exact symbol), > then packages that need that USE flag would automatically use it, and > those that don't need it wouldn't be built with it. Actually, I was proposing that you'd only need USE="~abi_x86_32" if you set USE="-abi_x86_32" someplace else. Adding a ~ would just remove any previous settings - it wouldn't cause a use flag to be turned on or off. You could have a flag like that even without lazy use flag support - it could be used to cause a single package to revert to its default use flags. I'm not really sure if it is a terribly useful feature at all. In my proposal you wouldn't need to do anything at all on a default profile to have USE="abi_x86_32" enabled for packages that had that use dependency in some other package. Just running emerge steam would cause rebuilds on anything that didn't already have 32-bit support which required it. You'd only need to mess with your flags if you had explicitly set USE="-abi_x86_32" - which makes sense since you've now given portage two contradicting directives. Just as you don't need to do anything special to have "emerge chromium" pull in libX11, you wouldn't need to do anything special to have "emerge chromium" cause hwids to rebuild with USE=usb if it isn't already built that way, unless you had explicitly set USE=-usb. And of course this should be something that can be turned off, and users can always run -pv to see what portage is going to do. -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-12 1:23 ` Rich Freeman @ 2016-02-12 1:26 ` Daniel Campbell 2016-02-12 1:39 ` Rich Freeman 0 siblings, 1 reply; 42+ messages in thread From: Daniel Campbell @ 2016-02-12 1:26 UTC (permalink / raw To: gentoo-dev -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/11/2016 05:23 PM, Rich Freeman wrote: > On Thu, Feb 11, 2016 at 7:12 PM, Daniel Campbell <zlg@gentoo.org> > wrote: >> >> No, lazy USE in this discussion is akin to installing, say, >> Steam. That requires a lot of packages that must be rebuilt with >> abi_x86_32. In such a situation, if there was something like >> USE="~abi_x86_32" (the ~ is just a symbol, it wouldn't have to be >> that exact symbol), then packages that need that USE flag would >> automatically use it, and those that don't need it wouldn't be >> built with it. > > Actually, I was proposing that you'd only need USE="~abi_x86_32" > if you set USE="-abi_x86_32" someplace else. Adding a ~ would > just remove any previous settings - it wouldn't cause a use flag to > be turned on or off. You could have a flag like that even without > lazy use flag support - it could be used to cause a single package > to revert to its default use flags. I'm not really sure if it is > a terribly useful feature at all. > > In my proposal you wouldn't need to do anything at all on a > default profile to have USE="abi_x86_32" enabled for packages that > had that use dependency in some other package. Just running emerge > steam would cause rebuilds on anything that didn't already have > 32-bit support which required it. You'd only need to mess with > your flags if you had explicitly set USE="-abi_x86_32" - which > makes sense since you've now given portage two contradicting > directives. > > Just as you don't need to do anything special to have "emerge > chromium" pull in libX11, you wouldn't need to do anything special > to have "emerge chromium" cause hwids to rebuild with USE=usb if it > isn't already built that way, unless you had explicitly set > USE=-usb. > > And of course this should be something that can be turned off, and > users can always run -pv to see what portage is going to do. > Ah, I think I see what you mean now. That's actually a bit more predictable and requires less action on behalf of the user. I'd like to add that, if we do this, could Portage output which USE flags were being automatically added? We already have USE changes indicated with the % suffix, would that be enough in your opinion? - -- Daniel Campbell - Gentoo Developer OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net fpr: AE03 9064 AE00 053C 270C 1DE4 6F7A 9091 1EA0 55D6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWvTS0AAoJEAEkDpRQOeFwA0UP/14lZ46QTAk3LpZG3hVCaMZa P5xvGECGpInvvgT/A3frHLrAsJ65Aem9vjLpCb43Q7SX3PRSEtVoxJu1ay7EFiwk aLqk9VX/871XTyvpaM8ArLYjzi0Q6KZFSHyxlysoAZPFUImmjIYPzrzd5lVo6tg0 zPyBUvWmyqK2u8gYZtst+3FL2yqBLqzgPg29Xf7+gX9ROtyGbynHWvh1lIgvH0GI 0vI4GqmKVy7UD3yskNEuM5Ra6iGoYwlg7n+BHCiQ7g1dZ7JwH+nP2KOEUsrlLa40 pQS0T03RnfvZZVjhM3DP0lUqZltKcGiZtrLEOe3Nw99hc8w0IDlZOGTG1sqMvkpn JtSih7d+sjk12JI4TR9Kv0UYcaHwKI4AoWpMGkr7zzjJFgPDcalsEooG9ti32y4w VioH4DJ6E76+TgakIWbXEtunPOf1IxqPPEql42Z/Ubq+vB27Cwga23bzZ0ziBh9k BxszTLMTJHvlVOe4gPHdl2DYnmgkDQXevdNgMvj+xmEh7+Jl4w9xexJJWMNQ/Ffo 9gGI9GUBUgEprzjC8tkQxrMaUcrvKRy0Khybd8wv2vpwK9wfrJ4nhXS0Pohbq+m1 Oib2B4K51MC7C+fuUWn8JES88/3zuqUIgNsNRbcUMuBrDot6rwi8GSUmvuur3oGm WRSUDmm6heJADifDBwep =UG0E -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [gentoo-dev] "Lazy" use flags? 2016-02-12 1:26 ` Daniel Campbell @ 2016-02-12 1:39 ` Rich Freeman 0 siblings, 0 replies; 42+ messages in thread From: Rich Freeman @ 2016-02-12 1:39 UTC (permalink / raw To: gentoo-dev On Thu, Feb 11, 2016 at 8:26 PM, Daniel Campbell <zlg@gentoo.org> wrote: > Ah, I think I see what you mean now. That's actually a bit more > predictable and requires less action on behalf of the user. I'd like > to add that, if we do this, could Portage output which USE flags were > being automatically added? We already have USE changes indicated with > the % suffix, would that be enough in your opinion? It might not hurt to have portage display some kind of prefix that means the flag is enabled implicitly. That could be useful whether it is changing or not. In any case, none of this will happen unless somebody builds it. :) Maybe toss in mix-in support while we're at it. :) -- Rich ^ permalink raw reply [flat|nested] 42+ messages in thread
end of thread, other threads:[~2016-02-12 15:59 UTC | newest] Thread overview: 42+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-02-09 12:27 [gentoo-dev] "Lazy" use flags? Kent Fredric 2016-02-09 13:14 ` Daniel Campbell 2016-02-09 13:19 ` Kent Fredric 2016-02-09 13:22 ` Daniel Campbell 2016-02-09 13:28 ` Kent Fredric 2016-02-09 20:35 ` Róbert Čerňanský 2016-02-09 23:30 ` Tim Harder 2016-02-10 0:20 ` Kent Fredric 2016-02-10 1:12 ` Rich Freeman 2016-02-10 2:23 ` Kent Fredric 2016-02-10 20:00 ` Róbert Čerňanský 2016-02-11 0:18 ` Raymond Jennings 2016-02-11 0:42 ` Rich Freeman 2016-02-11 2:18 ` Kent Fredric 2016-02-11 2:51 ` Rich Freeman 2016-02-11 3:46 ` Daniel Campbell 2016-02-11 12:59 ` Rich Freeman 2016-02-11 13:54 ` NP-Hardass 2016-02-11 14:25 ` Kent Fredric 2016-02-11 23:51 ` Daniel Campbell 2016-02-11 4:57 ` Kent Fredric 2016-02-11 5:47 ` Raymond Jennings 2016-02-11 12:55 ` Rich Freeman 2016-02-11 14:19 ` M. J. Everitt 2016-02-11 14:32 ` Kent Fredric 2016-02-11 14:43 ` M. J. Everitt 2016-02-11 14:46 ` Kent Fredric 2016-02-11 14:48 ` M. J. Everitt 2016-02-11 14:53 ` Kent Fredric 2016-02-11 19:37 ` Róbert Čerňanský 2016-02-12 5:56 ` [gentoo-dev] " Duncan 2016-02-12 6:36 ` Kent Fredric 2016-02-12 11:26 ` Rich Freeman 2016-02-12 15:58 ` Gordon Pettey 2016-02-11 2:31 ` [gentoo-dev] " Kent Fredric 2016-02-10 3:08 ` Gordon Pettey 2016-02-10 3:29 ` Daniel Campbell 2016-02-12 0:01 ` William Hubbs 2016-02-12 0:12 ` Daniel Campbell 2016-02-12 1:23 ` Rich Freeman 2016-02-12 1:26 ` Daniel Campbell 2016-02-12 1:39 ` Rich Freeman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox