On Tue, 2 Mar 2021 at 11:32, Martin Jansa <[email protected]> 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 <[email protected]>
> 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 <[email protected]>
>> 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 <[email protected]>
>>> ---
>>> 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 (#148868):
https://lists.openembedded.org/g/openembedded-core/message/148868
Mute This Topic: https://lists.openembedded.org/mt/80907807/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-