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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to