All,

To answer my own question with a solution that is apparently working well.

For all recipes/packages that should be used at build time only but not to be 
put in an image as opposed to the "otherpackage" that should get put into the 
image:

  *   Manual in a conf file or function on bb.event.ConfigParsed to be of 
global significance.
     *   Add a PREFERRED_RPROVIDER_<package> = "otherpackage" for each of them 
[PREFERRED_RPROVIDER is surprisingly undocumented even though specific Yocto 
use will prompt the user to set it!]
  *   Anonymous python in  a conf file, processing ${PACKAGES} per recipe that 
should be build-only
     *   Parse and rewrite RDEPENDS per package using 
bb.utils.explode_dep_versions2 and bb.utils.join_deps to replace any reference 
to a build time only package with "otherpackage"
     *   Append "build-deps" to INSANE_SKIP_<package> so that the delta between 
build and runtime needs doesn't matter. Insane.bbclass apparently doesn't check 
the explicit PREFERRED_RPROVIDERS to say "ok anyway".
     *   Add a PACKAGE_EXCLUDE_<pn> for all ${PACKAGES} (doesn't work for deb 
as I have understood from docs but works fine for rpm as it seems)

This ensures that on recipe processing (including sysroot handling) all the 
"normal" recipes are used, but none of the packages generated by normal recipes 
go into the image then because "otherpackage" will be used then.
The method also tries to stay away from too many implementation details to be 
somewhat portable hopefully across future Yocto versions.

It appears to work here at first glance. Your mileage may vary.

Hope this helps,

Heinz

From: [email protected] <[email protected]> On Behalf Of 
Heinz Wrobel via Lists.Yoctoproject.Org
Sent: Thursday, January 30, 2020 11:57
To: [email protected]
Cc: [email protected]
Subject: [EXT] [yocto] Not adding glibc to an image and avoiding RDEPENDS 
problem?


Caution: EXT Email
Hi,

I want to build an image that does in the end NOT contain the virtual/libc used 
for building the elements of the image because the final target libc is 
provided pre-built in a different way through another recipe and package. [Yes 
I understand the version risks]

Given that the virtual/libc sysroot is still needed to build packages properly, 
I thought that simply not packaging virtual/libc and then adding in the other 
package into the image would do the trick.

"dtc" is my unmodified test recipe for the concept.

I must be missing some fine point however, because now I can't even build the 
test recipe anymore:
ERROR: dtc-1.5.1-r0 do_package_qa: QA Issue: /usr/lib/libfdt.so.1 contained in 
package dtc requires ld-linux-aarch64.so.1(GLIBC_2.17)(64bit), but no providers 
found in RDEPENDS_dtc? [file-rdeps]
ERROR: dtc-1.5.1-r0 do_package_qa: QA Issue: /usr/lib/libfdt.so.1 contained in 
package dtc requires libc.so.6(GLIBC_2.17)(64bit), but no providers found in 
RDEPENDS_dtc? [file-rdeps]
ERROR: dtc-1.5.1-r0 do_package_qa: QA Issue: /usr/lib/libfdt.so.1 contained in 
package dtc requires libc.so.6()(64bit), but no providers found in 
RDEPENDS_dtc? [file-rdeps]
ERROR: dtc-1.5.1-r0 do_package_qa: QA Issue: /usr/lib/libfdt.so.1 contained in 
package dtc requires ld-linux-aarch64.so.1()(64bit), but no providers found in 
RDEPENDS_dtc? [file-rdeps]
ERROR: dtc-1.5.1-r0 do_package_qa: QA run found fatal errors. Please consider 
fixing them.

I found the change that RDEPENDS are no longer recursively checked, so I 
thought I should find how the dependency is directly resolved and missed via 
bitbake -e.
Bitbake -e shows that RDEPENDS for dtc is empty, i.e., a shared library glibc 
file based runtime dependency usually must be filled by some other magic that I 
can't seem to grasp.
I have not seen receipes all over the place explicitly specifying an RDPENDS 
for the libc used.

The tmp/pkgdata/*/runtime/ file for my other package clearly shows 
FILERPROVIDES for exactly the "missing" files.

I could decide to ignore file-rdeps, but I'd rather "consider fixing them".

I also did read the "shlibdeps" bullet in "Automatically Added Runtime 
Dependencies" and then grepped quite a bit through meta/classes and bitbake 
itself. File-rdeps checking does not seem to check on the package database.
I couldn't figure out the mechanism that a) causes the error, and that b) would 
allow me to fix it properly.
What am I missing about implicit runtime dependency handling for the selected 
libc?

Thanks,

Heinz


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#48248): https://lists.yoctoproject.org/g/yocto/message/48248
Mute This Topic: https://lists.yoctoproject.org/mt/70946916/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to