-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On 07/25/2014 05:23 PM, William Hubbs wrote: > On Fri, Jul 25, 2014 at 03:54:53PM -0400, Ian Stakenvicius wrote: >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 >> >> On 25/07/14 03:51 PM, Pacho Ramos wrote: >>> El vie, 25-07-2014 a las 20:46 +0100, Ciaran McCreesh >>> escribió: >>>> On Fri, 25 Jul 2014 21:44:02 +0200 Luis Ressel >>>> <ara...@aixah.de> wrote: >>>>> Okay, I didn't think of that. I'm not sure if the blocker >>>>> deps or the REQUIRED_USE would be more helpful for Portage, >>>>> but generally I think that the REQUIRED_USE error message >>>>> is quite hard to understand for unexperienced users -- much >>>>> more so than the error generated by a blocker dep. >>>> >>>> ...and the fix for that is to scrap REQUIRED_USE and use >>>> pkg_pretend instead. >>>> >>> >>> Could you give an example to let us see how pkg_pretend could >>> be used to achieve the same as REQUIRED_USE? >>> >>> Thanks >>> >>> >> >> pkg_pretend() { if use heimdal && use mit-krb5; then eerror >> "Please set only one of the use following flags:" eerror >> "heimdal, mit-krb5" die "conflicting use flags set" fi } > > I think this could get complicated really quick though. For > example, if I have an ebuild with three use flags, > flag1/flag2/flag3 with the requirement that one and only one of > them must be set, unless bash has an xor operator I don't know > about, that is going to need a lot of nesting etc to get right. > > William >
If you want to say "At most one of the flags 'foo', 'bar', and 'baz' may be selected", then you say it like so (requires EAPI=5): REQUIRED_USE="?? ( foo bar baz )" If you want to say "Exactly one of the flags ...", then you use: REQUIRED_USE="^^ ( foo bar baz )" And, as always, you can say "At least one of the flags ..." with: REQUIRED_USE="|| ( foo bar baz )" While each of these can be written using the "foo? ( !bar )"-type primitives, the messages portage outputs are generally better with '??', '^^', and '||', as you might see something like: " The following REQUIRED_USE flag constraints are unsatisfied: at-most-one-of ( foo bar baz ) " Which is, in my opinion, more readable. - -- Jonathan Callen -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBCgAGBQJT0+lKAAoJELHSF2kinlg4T8sQAKLq2d4x8UfDTxm8FP6yX5zv g0GGjPe6TNSwJT83FIw2Bof85u2xGUHaozUaxr+3wwgYVmSaH8BcuEc41reaNZu0 aRhFonAySSTVW/OFEW/X+kpfxAgtFAVGsZ2MBXuFLshB+z/OPDL4lPS7pvUCSZVG iXPlLNE05ZvF+mxSU4enKEChRPxYTBso3cXGqog0qAZrefv8I9w+QeesaGvXlr7v 65S9qPcgOhQRz1q5HfoQ55fdGHy53+/9ny86Gpxpg7xbEYUe0t2LCInFPT4ivL28 OAnSbwML7bMzphvT4EM+eHghfWIATRmnY5O7O9X66sOUB/JrtG3eQei/9EyAHwhA JurcdfUu8zcsSjocuqxbQpMGeiEa1bcfzl3u39WUuFAoVsayzXEI3U9SziemmCpU CCeRF+A5mV6PhFQBYczkdeu3xKc9zQoA3s/EaUYybmTli4oVwtMJUm224TWJEFg+ d7AxM49dyRPLHrHxbK69G7RVowXlaPlISCA/hahAmcgtZVD8y1phwP1qB9j8OBlL DTrcuqiv9Ba4J+DmdhsjB/uvVZpoyfMVl9z1ytLKFjiEpo/PyJAPWRlRrAwq/Gz8 1rh4MrSqAEMGB4mEQaohDfMVVaCQmhGXZkpaBMtARiV3BDlI3W0bKPPh+r435ZZc Z7PHHOimf/6acsprx/wI =vExv -----END PGP SIGNATURE-----