Hello Richard,

First, sorry for the commit message (I gave details in the first patch on externalsrc.bbclass but not on this one). I agree with you that it seems an hack but I don't know to make package;bbclass find the sources correctly.
The "culprit" is the following command (https://github.com/openembedded/openembedded-core/blob/master/meta/classes/package.bbclass#L591) and especially the last part of it:

processdebugsrc += "(cd '%s' ; cpio -pd0mlL --no-preserve-owner '%s%s' 2>/dev/null)"

this command explicitely goes into workparentdir and wait for the sources to be in it thanks to the input list that was calculated as the output of dwarfsrcfiles earlier call (with localsrc_prefix remove from them).

Have you an idea (or even a lead that I can explore) on how make things correct here ?

On Mon, 28 Jun 2021 at 00:00, Richard Purdie <richard.purdie@linuxfoundation.org> wrote:
On Wed, 2021-06-23 at 15:09 +0200, Frederic Martinsons wrote:
> Hello, I would like to add a link to a yocto mail where I expose my problematic that led 
> to this patch series: 
> https://lists.yoctoproject.org/g/yocto/topic/83622035?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,83622035
>
> After further research, I think these patch can be simplified by modified only 
> WORKDIR variable to be os.path.dirname(EXTERNALSRC) but I fear of consequence 
> to have WORKDIR outside of TMPDIR so I didn't take this path.

Changing WORKDIR would no doubt solve your immediate problem but would create
a ton of others :(.

The issue is that the class wants to re-declare S but some of our code makes
assumptions about the location of WORKDIR with regard to S (and B). There
is more inside WORKDIR than just S and EXTERNALSRC does really correspond to S,
not WORKDIR...

Cheers,

Richard