Could we have the commit reverted if a fix is not imminent?

On 2020-12-03 10:22 p.m., Nathan Rossi wrote:
> On Fri, 4 Dec 2020 at 14:58, Richard Purdie
> <richard.pur...@linuxfoundation.org> wrote:
>> On Fri, 2020-12-04 at 10:53 +1000, Nathan Rossi wrote:
>>> On Fri, 4 Dec 2020 at 08:31, Andrey Zhizhikin <andre...@gmail.com>
>>> wrote:
>>>> Hello Scott and Nathan,
>>>>
>>>> On Thu, Dec 3, 2020 at 7:18 PM Scott Branden via
>>>> lists.openembedded.org
>>>> <scott.branden=broadcom....@lists.openembedded.org> wrote:
>>>>>
>>>>> On 2020-12-02 4:19 p.m., Nathan Rossi wrote:
>>>>>> On Thu, 3 Dec 2020 at 05:17, Scott Branden <
>>>>>> scott.bran...@broadcom.com> wrote:
>>>>>>> Hi Nathan,
>>>>>>>
>>>>>>> Your commit:
>>>>>>> "cml1.bbclass: Handle ncurses-native being available via pkg-
>>>>>>> config"
>>>>>>> https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?h=master-next&id=ce447d70df386ca55ce1672478b245851556374e
>>>>>>>
>>>>>>> breaks bitbake menuconfig when using the upstream kernel.
>>>>>> Interesting. The purpose of the commit was to actually fix that
>>>>>> exact
>>>>>> use case since previously the mainline kernel menuconfig was
>>>>>> relying
>>>>>> on hardcoded paths to the host ncurses libraries.
>>>>>>
>>>>>> Would you be able to provide the error messages you are getting
>>>>>> (and
>>>>>> anything else that can help to reproduce the failure), because
>>>>>> I am
>>>>>> not able to reproduce any failures with a mainline kernel,
>>>>>> linux-yocto
>>>>>> (with and without the below mention patch) or with other
>>>>>> projects that
>>>>>> are using cml1 (e.g. u-boot).
>>>>>>
>>>>>>> It only works with the linux-yocto kernel due to this
>>>>>>> workaround which is not upstream.
>>>>>>> If you revert this commit in linux-yocto menuconfig will not
>>>>>>> work in linux-yocto:
>>>>>>> "menuconfig,mconf-cfg: Allow specification of ncurses
>>>>>>> location"
>>>>>>> https://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto/commit/scripts/kconfig/mconf-cfg.sh?h=v5.8/standard/base&id=1714a5ad9cf61f4d0f4b8432f327cca2998aba77
>>>>>> This change should not be required to have menuconfig working
>>>>>> when
>>>>>> pkg-config is used.
>>>>>>
>>>>>>> Seems like your commit needs to be reverted or a change made
>>>>>>> to work with the upstream kernel.
>>>>>>> Or, the linux-yocto change needs to actually be
>>>>>>> upstreamed.  I submitted it and the upstream maintainer
>>>>>>> questioned why the change is needed:
>>>>>>> https://lore.kernel.org/lkml/cak7lnatd0j3c_mfrxaju8-wmdcmrpmrfn7um0yebnfl-_zc...@mail.gmail.com/
>>>>>> The problem is if it was accepted, every kernel prior to its
>>>>>> inclusion
>>>>>> would need to be patched, as well as other projects (u-boot,
>>>>>> busybox).
>>>>>> This makes supporting menuconfig using that change for kconfig
>>>>>> generically problematic. This is why the pkg-config solution is
>>>>>> preferable.
>>>> As I've already said before I had similar issues with doing
>>>> menuconfig
>>>> kernel task. I took a deeper look and actually found out that the
>>>> recipe-sysroot-native/usr/lib/pkgconfig/ncursesw.pc in the kernel
>>>> recipe build folder contained the absolute path to the ld, which
>>>> for
>>>> me was taken from the SSTATE_MIRROR produced on the CI system.
>>>>
>>>> The string inside ncursesw.pc looked like this (note the -Wl,
>>>> --dynamic-linker):
>>>> Libs:  -L${pcfiledir}/../../../usr/lib -Wl,--enable-new-dtags
>>>> -Wl,-rpath-link,${pcfiledir}/../../../usr/lib
>>>> -Wl,-rpath-link,${pcfiledir}/../../../lib
>>>> -Wl,-rpath,${pcfiledir}/../../../usr/lib
>>>> -Wl,-rpath,${pcfiledir}/../../../lib -Wl,-O1
>>>> -Wl,--allow-shlib-undefined
>>>> -Wl,--dynamic-linker=/teamcity/work/c3acfc3a6f255dcb/build-
>>>> output/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2
>>>> -lncursesw -ltinfo
>>>>
>>>> I then manually changed it to match the path on my local PC, and
>>>> menuconfig went totally fine after that.
>>>>
>>>> Nathan,
>>>> I tend to believe this issue is not caused directly by the patch
>>>> committed, but rather by the fact that pkg-conf files do contain
>>>> absolute paths pulled from shared state. At least this is what I've
>>>> observed for my setup.
>>> That is indeed an issue with uninative/sstate, likely because
>>> UNINATIVE_LOADER (which put into BUILD_LDFLAGS) is not covered by the
>>> sstate pack/unpack path rewriting. But uninative already handles
>>> rewriting interp as part of its sstate unpack function, maybe it
>>> needs
>>> to be updated to replace instances of LDFLAGS as well? Perhaps
>>> Richard
>>> has an opinion on this.
>> I'd say that:
>>
>> a) .pc files are assumed to be correct and sstate is therefore probably
>> not relocating paths in them
>>
>> b) paths like that should be triggering warnings about build paths in
>> the .pc file. It might not be as sysroot-uninative is a bit of a
>> special case we probably don't currently test for?
> Just looking in the sysroot, it appears that for the kernel at least,
> ncurses and python sysconfigdata are the only cases of the uninative
> sysroot path being kept. Also the buildpath checks are only done for
> package_qa and so are skipped for native correct? Should that be
> improved so that native also does the buildpath checks?
>
>> c) that flags should be unneeded, they'd be in BUILD_LDFLAGS if we
>> needed them
>>
>> So I'm guessing we probably need to tweak the .pc file to better handle
>> this corner case. Most libs don't inject LD_FLAGS into their .pc file
>> that I know of...
> Yes it looks like ncurses is unnecessarily adding LDFLAGS to the .pc.
> Patching ncurses should resolve this problem.
>
> Thanks,
> Nathan

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#145478): 
https://lists.openembedded.org/g/openembedded-core/message/145478
Mute This Topic: https://lists.openembedded.org/mt/78667947/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to