On Wed, 2022-07-13 at 15:32 +0200, Nicolas Jeker wrote:
Thanks Martin and Mike for your explanations and tips.
So, I've done a lot of testing today and it seems I simplified the example in my first email a bit too much. The example as-is works fine when switching DISTROs as far as I can tell. The problem only arises when wildcards are used.
Changing my initial example like this should trigger the behaviour I've initially described:
From my testing, this is how contamination happens:
1) Build with 'DISTRO=mydistro bitbake application'. All tasks for the recipe are run and the directories in WORKDIR are populated, including the "application.service" file. 2) Build with 'DISTRO=mydistro-dev bitbake application'. do_unpack is rerun and places the additional "application-dbg.service" file in WORKDIR. 3) Switching back to 'mydistro' will get the recipe from sstate cache, which works fine. 4) Changing application.bb and rebuilding with 'DISTRO=mydistro bitbake application' reruns do_install (as expected). This leads to the packages do_install picking up the additional "application-dbg.service" file left behind by the invocation in step 2).
Mike, Martin: Do you remember in which cases you encountered problems when sharing the build directory?
This is unfortunately a known issue and is one reason I'd like to stop recipes downloading files to WORKDIR. Sadly changing that to fix this bug is very invasive and painful but I think we do need to do so somehow.