[bitbake-devel] Regression caused by new multiconfig dependency

Jan Kiszka jan.kiszka at web.de
Wed Nov 21 08:30:22 UTC 2018


On 20.11.18 19:23, Alejandro Enedino Hernandez Samaniego wrote:
> Hey Jan,
> 
> I literally just sent out a patch to fix this issue, it should work fine after 
> that is applied.
> 

Thanks a lot, your patch [1] is working fine for us as well.

Jan

[1] 
https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=aehs29/multiconfig_provides&id=c075cac18c32f4b178fc4f62b4326118b43dc99f

> 
> Cheers,
> 
> Alejandro
> 
> 
> On 11/20/2018 12:48 AM, Jan Kiszka wrote:
>> On 18.11.18 10:59, Jan Kiszka wrote:
>>> Hi all,
>>>
>>> since da8cb8633504 ("bitbake: Add support for multiconfig dependencies"), it's
>>> no longer possible to write recipes that have multiconfig-dependent names:
>>>
>>>
>>> mc1.conf:
>>> MACHINE = "a"
>>>
>>> mc2.conf:
>>> MACHINE = "b"
>>>
>>> some-target.bb:
>>> PN = "some-target-${MACHINE}"
>>>
>>> local.conf:
>>> BBMULTICONFIG = "mc1 mc2"
>>>
>>>
>>> # bitbake multiconfig:mc1:some-target-a
>>> [...]
>>> ERROR: Nothing PROVIDES 'some-target-a'. Close matches:
>>>     some-target-b
>>>
>>> # bitbake multiconfig:mc2:some-target-b
>>> ERROR: Nothing PROVIDES 'some-target-b'. Close matches:
>>>     some-target-a
>>>
>>>
>>> That works fine when going back to da8cb8633504^ or when only having the
>>> selected multiconfig in BBMULTICONFIG. Seems the parser stumbles while
>>> processing the unselected multiconfig paths.
>>>
>>> Jan
>> Including also the author of that commit.
>>
>> I'm not really understanding the internals of bitbake yet, I just started to 
>> track down the issue to a code change:
>>
>> def buildTaskData(...):
>>      ...
>>              if mc:
>>                  # Provider might be from another mc
>>                  for mcavailable in self.multiconfigs:
>>                      # The first element is empty
>>                      if mcavailable:
>>                          
>> taskdata[mcavailable].add_provider(localdata[mcavailable], 
>> self.recipecaches[mcavailable], k)
>>
>> If we do multiconfig:mc1:some-target-a, add_provider() still works fine for 
>> mcavailable = "mc1", but it fails with the error above for "mc2", apparently 
>> because "some-target-a" cannot be resolved in mc2. Any idea how that can be 
>> avoided? I don't get why we should check for the build target when adding the 
>> mc with all its targets as providers.
>>
>> Thanks,
>> Jan
> 



More information about the bitbake-devel mailing list