On Tue, 18 Oct 2016 13:09:22 +0200 Zefir Kurtisi <zefir.kurt...@neratec.com> wrote:
> Hi, > > to those understanding the package dependency logic by heart, I'm > trying to achieve something I assumed to be common, but fail to get > there with the help of the available documentation. > > The short version is this: > * package A has an optional feature X provided by package B > * package B is optional (feeds package) > => feature X should be selectable only if B is installed and > selected > * if feature X is activated, package A depends from package B > > I did: > 1) in Config.in of package A add > config WITH_FEATURE_X > bool > depends on PACKAGE_B > prompt "Enable feature X" > default n > > 2) in Makefile of package A add > DEPENDS += +WITH_FEATURE_X:B > > > With those changes, build fails due to recursive dependencies, because > - symbol PACKAGE_B is selected by WITH_FEATURE_X > - symbol WITH_FEATURE_X depends on PACKAGE_B > > If I leave out the additional line in Makefile of A and in menu select > WITH_FEATURE_X, the build of A fails with missing dependency to > package B. > > If I leave out the 'depends on PACKAGE_B' line in Config.in, I can > select WITH_FEATURE_X without package B even being installed, which > obviously fails building. > > > Is this doable out of the box? What am I missing? Try the following: 1) Replace 'depends on PACKAGE_B' with 'select PACKAGE_B' 2) Replace DEPENDS+= +WITH_FEATURE_X:B with EXTRA_DEPENDS:=$(if $(CONFIG_WITH_FEAURE_X),B) That means that if WITH_FEATURE_X is selected that the package will select (mark for build) rather than just depend on (refuse to build unless package is selected) package B, and the EXTRA_DEPENDS makes sure opkg has the dependency if WITH_FEATURE_X is selected. Another possibility is: DEPENDS+= +@(WITH_FEATURE_X&&PACKAGE_B):B which ends up with a dependency on WITH_FEATURE_X and PACKAGE_B - the disadvantage of this approach is that it means if the user does not select package B but WITH_FEATURE_X is selected then the package will disappear from menuconfig. Regards, Daniel _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev