openwrt/packages — pull request #459 by Naoir (2014-10-22 20:06:32+00:00)
Title: db47: Reorder packages/configuration

So the recent addition of libdb47-full broke things, see https://dev.openwrt.org/ticket/18184
This is caused by libdb47 providing itself. Making only libdb47-full provide libdb47 fixes that. However, it really confuses buildroot as it will make visibility of both libdb47xx and libdb47xx-full depend on libdb47-full.

I suggest renaming libdb47 to libdb47-small and making both libdb47-small and libdb47-full provide libdb47, the same with libdb47xx*. Also, make libdb47-small conflict with libdb47-full, again the same thing with libdb47xx*. libdb47xx-small and libdb47xx-full depend on their respective libdb47-* counterparts directly.
This is made to allow packages to depend on libdb47 if they don't care about full functionality being present or not, or alternatively depend on libdb47-full in case they absolutely need it.

Sounds good. However this raises a problem: Which variant should be choosen if no package requests a specific one? I'd say libdb47-small, but there doesn't seem to be a way to express that. opkg will just choose libdb47-full(Alphabetic order? Random? I don't know), buildroot doesn't even try and hides every package that depends on libdb47 until the user chooses one of the two. ffmpeg currently has the same problem.

This means that, at the moment, nobody will be able to even see ruby, perl, netatalk, dmapd or mocp in buildroot until they choose either libdb47-small or libdb47-full(or bogofilter, which depends on libdb47-full). Kinda cryptic. Also, installing any one of them on a running system might produce a less optimal result.

Any suggestions? I currently see 3 scenarios:
a) Implement some way to tell buildroot and opkg a default libdb47 choice(maybe there is already one?)
b) Screw it. Remove libdb47/libdb47-small and make libdb47-full the new libdb47. At least perl will only work with libdb47-full in the near feature, so it may not even be worth the hassle.
c) Live with it. ffmpeg also does so.