[OE-core] [PATCH] cmake.bbclass: Exclude native sysroot from CMAKE_FIND_ROOT_PATH

Andreas Müller schnitzeltony at googlemail.com
Mon Oct 31 17:51:53 UTC 2016


On Mon, Oct 31, 2016 at 6:49 PM, Andreas Müller
<schnitzeltony at googlemail.com> wrote:
> On Mon, Oct 31, 2016 at 5:25 PM, Khem Raj <raj.khem at gmail.com> wrote:
>>
>>> On Oct 31, 2016, at 5:48 AM, Andreas Müller <schnitzeltony at googlemail.com> wrote:
>>>
>>> On Sun, Oct 30, 2016 at 9:07 PM, Andreas Müller
>>> <schnitzeltony at googlemail.com> wrote:
>>>> On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem at gmail.com> wrote:
>>>>> On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller
>>>>> <schnitzeltony at googlemail.com> wrote:
>>>>>> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem at gmail.com> wrote:
>>>>>>> This has been cause of issue where we were getting both usr/include
>>>>>>> dirs ( from target as well as native sysroot) added to compiler
>>>>>>> flags.
>>>>>>>
>>>>>>> CXX_INCLUDES in final flags.cmake would include
>>>>>>> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include
>>>>>>> most of the time it would work since headers are mostly
>>>>>>> common but netflix package failed to compile since one of
>>>>>>> the headers was including curl headers which it could not
>>>>>>> find in target sysroot and it went to next include path
>>>>>>> and found it in native sysroot which is not what we want
>>>>>>> when doing cross compile.
>>>>>>>
>>>>>>> As per https://cmake.org/Wiki/CMake_Cross_Compiling
>>>>>>> never search for programs in target sysroot but search
>>>>>>> for packages,libs,includes only.
>>>>>>>
>>>>>>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>>>>>>> ---
>>>>>>> meta/classes/cmake.bbclass | 3 ++-
>>>>>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
>>>>>>> index 3e762de..3e8df37 100644
>>>>>>> --- a/meta/classes/cmake.bbclass
>>>>>>> +++ b/meta/classes/cmake.bbclass
>>>>>>> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= ""
>>>>>>> OECMAKE_EXTRA_ROOT_PATH ?= ""
>>>>>>>
>>>>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY"
>>>>>>> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER"
>>>>>> ^ Split this into a second patch please you are changing two more or
>>>>>> less unrelated settings in one patch.
>>>>>
>>>>> These changes are related and should stay together in same patch
>>>>> otherwise it will break.
>>>>>
>>>>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH"
>>>>>>>
>>>>>>> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}"
>>>>>>> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" )
>>>>>>>
>>>>>>> # only search in the paths provided so cmake doesnt pick
>>>>>>> # up libraries and tools from the native build machine
>>>>>>> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN})
>>>>>>> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN})
>>>>>> ^ Are you sure this doesn't break native builds? I am a bit scared: In
>>>>>> meta-qt5-extra I have lot's of native builds for build-helpers. KDE
>>>>>> guys seem to prefer this over shell scripts...
>>>>>
>>>>> It hasnt broken anything for my world builds thus far. I dont use
>>>>> meta-qt5-extras though. So testing help is welcome.
>>>> I'll give it a meta-qt5-extra world build and let you know
>>>>
>>> Huge fallout:
>>>
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/karchive/karchive.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier2/kdoctools/kdoctools-native.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwindowsystem/kwindowsystem.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcodecs/kcodecs.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kconfig/kconfig.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kguiaddons/kguiaddons.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdbusaddons/kdbusaddons.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kitemviews/kitemviews.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/attica/attica.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/sonnet/sonnet.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcoreaddons/kcoreaddons-native.bb:do_compile
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kidletime/kidletime.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwayland/kwayland.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/libqtxdg/libqtxdg_git.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/threadweaver/threadweaver.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/networkmanager-qt/networkmanager-qt.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdnssd/kdnssd.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/modemmanager-qt/modemmanager-qt.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/projectm/projectm_git.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kplotting/kplotting.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/breeze-icons/breeze-icons.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/compton-conf/compton-conf_git.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/qterminal/qterminal_git.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/obconf-qt/obconf-qt_git.bb:do_configure
>>>  /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/mixxx/mixxx_git.bb:do_compile
>>
>>
>>>
>>> so please don't apply this one
>>
>> Not yet, but specify both native includedir and target includedir while building something is broken at core
>> that must be fixed in anycase. May be these fallouts are just latent issues that were papered over in past.
>> Can you upload the logs somewhere ?
>>
> Sorry I killed them - my harddisk is not able to keep much more than 2
> tmpdirs and I lost 1 day for this test already. I think the problem is
> that you want to kill references to includedir but you kill all
> references even those to native binaries addressed and required by
> cmake. These native binaries cannot be addressed anymore without
> searching in native sysroot and there is nothing wrong about it.
I was not precise enough: replace native binaries by native executables.

Andreas



More information about the Openembedded-core mailing list