On 12/14/25 11:56 AM, Adam Blank via lists.openembedded.org wrote:
I've recently come across a problem, which has apparently been around for a long time, and yet has somehow remained unnoticed.

Facts:
- bash and busybox recipes conditionally (based on usrmerge in the DISTRO_FEATURES) declare some RPROVIDES - what they declare in RPROVIDES are actually file paths - e.g. '/bin/sh', '/bin/ash' or '/bin/bash' - resulting entries in their packagedata are "correct" - i.e. 'RPROVIDES = /bin/sh /bin/bash' - resulting entries in their buildhistory are mangled - i.e. 'RPROVIDES = bib bin bash sh'

Thesis:
- such entries in RPROVIDES (or any other package namespace related variable) are an error (at least looking at what insane.bbclass deems an acceptable package name) - buildhistory should be consistent in its processing of package names with packagedata

I'd like to ask for your comments as to what would be the best way to approach this. My view would be to fix the recipes, the buildhistory.bbclass but also make sure that all package related variables are guarded in equal degree in all relevant stages (e.g. in the insane.bbclass).

I don't believe this is an error. When packages are processed, any scripts are evaluated to determine what they require to be run.

A LARGE number of package have:

#! /bin/bash
#! /bin/sh

and other values, which are inserted into the RDEPENDS for that file/package.

Normally these values are resolved by the package manager to the list of files installed. Something installs /bin/bash, so it must then provide /bin/bash.

HOWEVER, there are two cases where this is not true. The first is with "update alternatives", /bin/sh for instance isn't supplied directly, but bash (and other posix shells) can be listed as the 'alternative' for /bin/sh. So something in the system says "I supply /bin/sh, even though I don't actually have the _file_ /bin/sh." (This is usually the ash package BTW.)

The second case is the one you are asking about, usrmerge. In the case of usrmerge, the files live in /usr/bin, not /bin. So the package manager has no way to know that '/usr/bin/sh' satisfies '/bin/sh'. So we require a manual RPROVIDE for this case.

(/usr/bin/env is another common RDEPENDS. So even if usrmerge were reversed, all of the file installed into /bin and /sbin, instead of /usr/bin and /usr/sbin the same issue would be occurring.)

Thanks,
Adam




-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#2211): 
https://lists.openembedded.org/g/openembedded-architecture/message/2211
Mute This Topic: https://lists.openembedded.org/mt/116779688/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-architecture/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to