The ebuilds for all versions use the following horrible construct: || ( ^^ ( mysql postgres sqlite ) bacula-clientonly ) Nesting ^^ in || is a bad idea. The same construct could be written more readably as: !bacula-clientonly? ( ^^ ( mysql postgres sqlite ) ) That would clearly indicate that the ^^ applies only to the case when bacula-clientonly flag is not used.
(In reply to Michał Górny from comment #0) > The ebuilds for all versions use the following horrible construct: > > || ( ^^ ( mysql postgres sqlite ) bacula-clientonly ) > > Nesting ^^ in || is a bad idea. IIRC it was the suggested construct at the time REQUIRED_USE got introduced. But you are right, it is not very clear. At least a set of additional parentheses would be helpful. > The same construct could be written more > readably as: > > !bacula-clientonly? ( ^^ ( mysql postgres sqlite ) ) > > That would clearly indicate that the ^^ applies only to the case when > bacula-clientonly flag is not used. Looks good to me. I will apply it from next version on. In meantime I will keep the bug open as a reminder.
By the way, the modern way of doing it would be IUSE=+server instead of reversed logic 'clientonly' (=noserver) flag.
(In reply to Michał Górny from comment #2) > By the way, the modern way of doing it would be IUSE=+server instead of > reversed logic 'clientonly' (=noserver) flag. I know the USE flags are weird constructs and that is for two reasons: - heritage of old ebuild version, but mainly - inspired by the weird constructs from upstream (just have a look at 'configure --help'). I am planning to switch the USE flags with next major version. Atm I am thinking if we should prepare a news item for it.
Could we change this for all old versions, please? This package seems to have a practice of keeping them like forever, and this clutters the CI warning report. After all, per PMS rules both constructs are 100% equivalent.
(In reply to Michał Górny from comment #4) > Could we change this for all old versions, please? This package seems to > have a practice of keeping them like forever, and this clutters the CI > warning report. After all, per PMS rules both constructs are 100% equivalent. Yes, I have seen it. I will change it in next days.
Fixed versions in tree now.