Hi Martin, The normpath change worked for me also: - thisdir = d.getVar("THISDIR") + thisdir = os.path.normpath(d.getVar("THISDIR"))
Another work-around was to replace the relative paths in our bblayers.conf file which looked like: ${TOPDIR}/../meta-openembedded/meta-oe \ ... With YOCTOROOT = "${@os.path.abspath(os.path.join(d.getVar('TOPDIR'), os.pardir))}" ${YOCTOROOT}/meta-poky \ ... So it looks like the root cause is related to having our layers and build dir under the poky directory and relative paths in the bblayers.conf file (this should be supported, no?). I plan to change that at some point, but this layout evolved from previous generations of this project. On Tue, Mar 2, 2021 at 11:01 AM Anibal Limon <anibal.li...@linaro.org> wrote: > > > On Tue, 2 Mar 2021 at 11:32, Martin Jansa <martin.ja...@gmail.com> wrote: > >> what's the value of COREBASE in that build? Wasn't full path already in >> your sstate signatures - in that case this change didn't break your builds, >> just highlighted an issue in your builds which was already there. >> >> Our COREBASE is, > > COREBASE="/home/builds/oe-rpb-master/layers/openembedded-core" > > Expands as follows, > > ... > # $COREBASE [3 operations] > # set > /home/builds/oe-rpb-master/build-845c/conf/../../layers/openembedded-core/meta/conf/layer.conf:20 > # "${@os.path.normpath("${LAYERDIR}/../")}" > # set data_smart.py:931 [expandVarref] > # > "${@os.path.normpath("/home/builds/oe-rpb-master/build-845c/conf/../../layers/openembedded-core/meta/../")}" > # set > /home/builds/oe-rpb-master/build-845c/conf/../../layers/openembedded-core/meta/conf/documentation.conf:124 > # [doc] "Specifies the parent directory of the OpenEmbedded Core > Metadata layer (i.e. meta)." > # pre-expansion value: > # > "${@os.path.normpath("/home/builds/oe-rpb-master/build-845c/conf/../../layers/openembedded-core/meta/../")}" > COREBASE="/home/builds/oe-rpb-master/layers/openembedded-core" > ... > > >> We can fix that by calling os.path.normpath on THISDIR, but I would like >> to know the reason why THISDIR is set this way for you (also to reproduce >> it locally to verify the fix). >> > > I tried it and fixes the issue, > > - thisdir = d.getVar("THISDIR") > + thisdir = os.path.normpath(d.getVar("THISDIR")) > > We use the next config files for bblayers and local.conf, > > https://github.com/96boards/oe-rpb-manifest/tree/qcom/master/conf > > Regards, > Anibal > > >> >> >> >> On Tue, Mar 2, 2021 at 6:14 PM Anibal Limon <anibal.li...@linaro.org> >> wrote: >> >>> This breaks our builds, >>> >>> ... >>> ERROR: Cannot add >>> '/home/builds/oe-rpb-master/layers/openembedded-core/meta/recipes-core/glib-2.0/files/meson.cross.d/common' >>> to --cross-file, because it's not relative to THISDIR >>> '/home/builds/oe-rpb-master/build-410c-2/conf/../../layers/openembedded-core/meta/recipes-core/glib-2.0' >>> and sstate signature would contain this full path >>> ... >>> >>> In, >>> >>> >>> https://ci.linaro.org/job/lt-qcom-openembedded-rpb-master/DISTRO=rpb,MACHINE=dragonboard-410c,label=docker-buster-amd64/470/console >>> >>> Regards, >>> Anibal >>> >>> On Thu, 25 Feb 2021 at 11:45, Martin Jansa <martin.ja...@gmail.com> >>> wrote: >>> >>>> * COREBASE works correctly only as long as this recipe is inside of >>>> COREBASE directory and leaves the full absolute paths if you copy >>>> this recipe into your own layer (e.g. to backport newer version) >>>> >>>> * use THISDIR as all FILESPATH should be relative to that, unless >>>> there is a .bbappend not only extending FILESPATH, but also adding >>>> meson.cross.d files there (at which point it also didn't work with >>>> COREBASE replacements as well already) - show an ERROR in such case, >>>> I don't think it's common scenario to spend more time to support that. >>>> >>>> Signed-off-by: Martin Jansa <martin.ja...@gmail.com> >>>> --- >>>> meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb | 8 ++++++-- >>>> 1 file changed, 6 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb >>>> b/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb >>>> index 15e9dbaf6f..882a89da7a 100644 >>>> --- a/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb >>>> +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb >>>> @@ -31,7 +31,7 @@ def find_meson_cross_files(d): >>>> if bb.data.inherits_class('native', d): >>>> return "" >>>> >>>> - corebase = d.getVar("COREBASE") >>>> + thisdir = d.getVar("THISDIR") >>>> import collections >>>> sitedata = siteinfo_data(d) >>>> # filename -> found >>>> @@ -39,7 +39,11 @@ def find_meson_cross_files(d): >>>> for path in d.getVar("FILESPATH").split(":"): >>>> for element in sitedata: >>>> filename = os.path.normpath(os.path.join(path, >>>> "meson.cross.d", element)) >>>> - files[filename.replace(corebase, "${COREBASE}")] = >>>> os.path.exists(filename) >>>> + sanitized_path = filename.replace(thisdir, "${THISDIR}") >>>> + if sanitized_path == filename: >>>> + bb.error("Cannot add '%s' to --cross-file, because >>>> it's not relative to THISDIR '%s' and sstate signature would contain this >>>> full path" % (filename, thisdir)) >>>> + continue >>>> + files[filename.replace(thisdir, "${THISDIR}")] = >>>> os.path.exists(filename) >>>> >>>> items = ["--cross-file=" + k for k,v in files.items() if v] >>>> d.appendVar("EXTRA_OEMESON", " " + " ".join(items)) >>>> -- >>>> 2.27.0 >>>> >>>> >>>> >>>> >>>> > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#148871): https://lists.openembedded.org/g/openembedded-core/message/148871 Mute This Topic: https://lists.openembedded.org/mt/80907807/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-