First, what are "option restrictions"?
Option restrictions specify a set of restrictions for the state of option flags in an exheres.
For example, an exheres might have option foo1 and foo2.
If foo1 is enabled, it needs foo2 to be enabled, too.
The restrictions provide a way to do this.

The proposal is to define option restrictions under the label "options" in DEPENDENCIES and use them almost like normal dependency specifications.

MYOPTIONS="foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9:foo10 foo9:foo11"

DEPENDENCIES:
    build:
    ...
    build+run:
    ...
    options:
        foo1 ( foo2 )
        foo3 ( foo4= )
        foo5 ( foo6!= )
        foo7 ( foo8? )
        ...
        foo9:foo10 ( -foo9:foo11 )
    "

So they are basically the same as normal use dependencies, but without the cat/pkg[ ].
Removing the ? in foo? ( ) prevents the creation of stuff like
foo? ( )
!foo? ( )

So this example:
foo? ( foo2? )
!foo? ( foo3!? )

becomes

foo ( foo2? foo3!? )

It might also be a good idea to allow annotations:

MYOPTIONS="foo1 foo2 foo3 foo4"

DEPENDENCIES:
    build:
    ...
    build+run:
    ...
    options:
        foo1 ( foo2 )
        foo3 ( foo4! [[
                  description = [ foo3 and foo4 collide because of ... ]
                  resolution = disable
        ]]
    "

Here "disable" means, that the option flag (here foo4) is suggested to be disabled.

I think, that specifying the deps this way is very intuitive and I think it is easy to remember and use. :)

Discuss, please. :)

Regards, Bernd

_______________________________________________
Exherbo-dev mailing list
[email protected]
http://lists.exherbo.org/mailman/listinfo/exherbo-dev

Reply via email to