Commit b245d469 authored by Yann E. MORIN's avatar Yann E. MORIN Committed by Thomas Petazzoni
Browse files

manual: add notes about depending on a virtual package

parent e92e0fd3
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
@@ -91,3 +91,52 @@ provider, but only if it is selected.

Of course, do not forget to add the proper build and runtime dependencies for
this package!

Notes on depending on a virtual package
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

When adding a package that requires a certain +FEATURE+ provided by a virtual
package, you have to use +depends on BR2_PACKAGE_HAS_FEATURE+, like so:

---------------------------
config BR2_PACKAGE_HAS_FEATURE
    bool

config BR2_PACKAGE_FOO
    bool "foo"
    depends on BR2_PACKAGE_HAS_FEATURE
---------------------------

Notes on depending on a specific provider
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If your package really requires a specific provider, then you'll have to
make your package +depends on+ this provider; you can _not_ +select+ a
provider.

Let's take an example with two providers for a +FEATURE+:

---------------------------
config BR2_PACKAGE_HAS_FEATURE
    bool

config BR2_PACKAGE_FOO
    bool "foo"
    select BR2_PACKAGE_HAS_FEATURE

config BR2_PACKAGE_BAR
    bool "bar"
    select BR2_PACKAGE_HAS_FEATURE
---------------------------

And you are adding a package that needs +FEATURE+ as provided by +foo+,
but not as provided by +bar+.

If you were to use +select BR2_PACKAGE_FOO+, then the user would still
be able to select +BR2_PACKAGE_BAR+ in the menuconfig. This would create
a configuration inconsistency, whereby two providers of the same +FEATURE+
would be enabled at once, one explicitly set by the user, the other
implicitly by your +select+.

Instead, you have to use +depends on BR2_PACKAGE_FOO+, which avoids any
implicit configuration inconsistency.