Replying here because I think said email client is the one I recently added REQUIRED_USE constraints for.
Reason I added it is because it greatly simplified the ebuild: it's not just bdb and gdbm, but also tokyocabinet, qdbm and lmdb, with as result a lot of if-else-casing which implemented the implicit defaults before. I didn't realise changing this to REQUIRED_USE resulted in a conflict on default profiles, because I (obviously) have a package.use entry for the package. You mention REQUIRED_USE should be used sparingly, I think I see your reasoning, but if so, then why did we add it in the first place? Since the ebuild will only use one of the db backends, when multiple are selected, the package manager will falsely think both are in use (and trigger rebuilds, etc.). Isn't the point to express the actual situation as correctly as possible for the PM to do a better job? I also like the ebuild being way less convoluted, but I can overcome that is necessary. I'm interested to hear how other people feel about this. Thanks, Fabian On 27-01-2017 09:54:00 +0200, Mart Raudsepp wrote: > Ühel kenal päeval, N, 26.01.2017 kell 22:33, kirjutas Mike Gilbert: > > I recently ran into a REQUIRED_USE constraint that required I select > > between berkdb and gdbm for an email client. > > There shouldn't be a REQUIRED_USE constraint that forces you to select > one or the other. The maintainer should be giving the choice of both, > but if only one can be chosen, the maintainer should make the choice > for you by preferring one of them. Likely gdbm, given berkdb licensing > saga. > Though I guess this is a little bit more problematic when that DB is > long living, but I think it should still work good enough with this > guideline. > > Then there is no need to think about what is enabled globally or not. > Point being, use REQUIRED_USE sparingly, and rarely a good idea to > block things with common global USE flags, or demand a local USE flag > based on a default enabled global USE flag without locally USE > defaulting that global flag too - and other such cases. > > I'd talk to the maintainer(s) of such package(s) via bugzilla or other > means and discuss such REQUIRED_USE potential overuse. > > > Looking through our profiles, I see we have both berkdb and gdbm > > enabled "globally". > > > > default/linux/make.defaults:USE="berkdb crypt ipv6 ncurses nls pam > > readline ssl tcpd zlib" > > releases/make.defaults:USE="acl gdbm nptl unicode" > > > > Is there any reason to have these USE flags enabled globally? > > > > These USE seem pretty package-specific in scope. On my system, they > > are used by around a dozen of 1000+ installed packages. I think it > > might make sense to migrate them to appropriate IUSE defaults, or > > leave them disabled where they do not provide critical functionality. > > -- Fabian Groffen Gentoo on a different level
signature.asc
Description: Digital signature