[OE-core] meta-toolchain / /bin/sh requirement / ldconfig backfill

Mark Hatle mark.hatle at windriver.com
Tue Sep 19 03:48:54 UTC 2017


On 9/18/17 5:56 PM, Andre McCurdy wrote:
> On Mon, Sep 18, 2017 at 3:00 PM, Mark Hatle <mark.hatle at windriver.com> wrote:
>> On 9/18/17 4:33 PM, Andre McCurdy wrote:
>>> On Mon, Sep 18, 2017 at 2:20 PM, Mark Hatle <mark.hatle at windriver.com> wrote:
>>>> On 9/18/17 4:05 PM, Andre McCurdy wrote:
>>>>> On Mon, Sep 18, 2017 at 12:30 PM, Mark Hatle <mark.hatle at windriver.com> wrote:
>>>>>>
>>>>>> Because of this, there is no way (with a default configuration) to build
>>>>>> meta-toolchain....
>>>>>>
>>>>>> Investigating further, ldconfig support moved from "USE_LDCONFIG" to a
>>>>>> distribution configuration.  It does this via the "DISTRO_FEATURES_BACKFILL"
>>>>>> (introduced in commit: a905df2dd8f43a2febffa64a39b6e508510326a0)
>>>>>
>>>>> The intention of that commit was only to change the way support for
>>>>> running ldconfig on the target is controlled (ie changed from an
>>>>> ad-hoc bitbake variable to a distro config option). It's enabled by
>>>>> default now, but it was enabled by default before that commit as well.
>>>>>
>>>>> Did meta-toolchain work previously? If so, was USE_LDCONFIG being
>>>>> forced to 0 somewhere?
>>>>
>>>> In many distributions, the default was 0.
>>>
>>> Right. As mentioned in the OE 2.3 reference manual, if your distro
>>> previously set USE_LDCONFIG to 0 then you now need to disable the
>>> "ldconfig" distro config option instead:
>>>
>>>   http://www.yoctoproject.org/docs/2.3.1/ref-manual/ref-manual.html#migration-2.3-miscellaneous-changes
>>
>> The key is that meta-toolchain worked before, and doesn't now.  (In a default
>> configuration.)
> 
> Do you mean it worked before in plain oe-core or poky? Or was it only
> tested in a custom distro which sets USE_LDCONFIG to 0?

I have configured a morty project in the same way, and NOT set USE_LDCONFIG one
way or another.

Inspecting the packages, I am finding the install script for LDCONFIG by
default.  Which means that the skip of /bin/sh is elsewhere.


Inspecting further, the system defines:

$ cat
./sdk/image/usr/local/oecore-x86_64/sysroots/i586-oe-linux/etc/rpm/sysinfo/Providename

/bin/sh
/bin/bash
/usr/bin/env
/usr/bin/perl
pkgconfig


This tells RPM(5) to ignore the runtime dependencies listed above.  Which avoids
the problem.

> If it fails in the OE 2.3 default configuration (ie when the ldconfig
> distro feature is enabled) then I think either it should also fail in
> OE 2.2 default configuration (ie when USE_LDCONFIG is not forced to 0)
> or the change in behaviour is not related to the a905df2 commit.

I've not tried pyro.

I expect it to fail in a similar way, because it switched to RPM4.  Which
apparently dropped the ability to specify specific provides.  It's possible it
has this support, but the implementation has changed enough that it is
definitely NOT doing it.

I expect at this point that an enhancement to rpm4 to pay attention to the
sysinfo file(s) (like RPM5 had) or a dummy (meta-toolchain only) file with
rprovides for these things may be required.

--Mark

>> Either someone needs to add a message to meta-toolchain to tell
>> the user it can't work with ldconfig set, fix it (so the missing dependency is
>> resolved [optimal solution], or ???
>>
>> In the past there was a way to tell the package manager to ignore a specific
>> dependency (such as /bin/sh) and allow the install.  I don't know if there is a
>> way to do this any longer.  2.2 was the last version I know this worked on.
>>
>> --Mark




More information about the Openembedded-core mailing list