The do_populate_sdk is finishing OK even when there are errors present in the build


Fabio Berton
 

Hi all!

I'm running some test with do_populate_sdk task and I'm seeing this on the log:

check_data_file_clashes: Package kmsxx-dbg wants to install file /home/builder/build/tmp/work/foo-poky-linux/core-image-minimal/1.0-r0/sdk/image/opt/bar/sysroots/aarch64-poky-linux/usr/bin/.debug/kmstest
But that file is already provided by package  * libdrm-dbg

I also see this kind of message with other packages.

Looking in the source code I found that the install_complementary function runs this [1] with attempt_only=True, and if attempt_only is true log above it's just a warning, as shown here [2].

This [3] comment says that "will only attempt to install these packages, if they don't exist then no error will occur."

My question is how can I force an error and not just a warning when running do_populate_sdk? 

I understand that I can change [1] to run:

  self.install(install_pkgs)

so, it'll use set attempt_only to False, that is the default, but I think this will break some use cases. 

What is the correct behaviour here, see the warning messages and fix the packages to avoid "file is already provided by package" messages, every time I create a SDK or change in some way to see an error message and stop SDK generation?

What is the correct behavior here, inspect the warning messages, and fix the packages to avoid "file is already provided by package" messages, every time I create an SDK or change it in some way to see an error message and stop the SDK generation?

Thanks!

Fabio Berton




Richard Purdie
 

On Thu, 2021-06-24 at 17:40 -0300, Fabio Berton wrote:
Hi all!

I'm running some test with do_populate_sdk task and I'm seeing this 
on the log:

check_data_file_clashes: Package kmsxx-dbg wants to install file /home/builder/build/tmp/work/foo-poky-
linux/core-image-minimal/1.0-r0/sdk/image/opt/bar/sysroots/aarch64-poky-linux/usr/bin/.debug/kmstest
But that file is already provided by package  * libdrm-dbg

I also see this kind of message with other packages.

Looking in the source code I found that the install_complementary 
function runs this [1] with attempt_only=True, and if attempt_only is 
true log above it's just a warning, as shown here [2].

This [3] comment says that "will only attempt to install these packages, 
if they don't exist then no error will occur."

My question is how can I force an error and not just a warning when 
running do_populate_sdk? 

I understand that I can change [1] to run:

  self.install(install_pkgs)

so, it'll use set attempt_only to False, that is the default, but I 
think this will break some use cases. 

What is the correct behaviour here, see the warning messages and fix 
the packages to avoid "file is already provided by package" messages, 
every time I create a SDK or change in some way to see an error message
and stop SDK generation?

What is the correct behavior here, inspect the warning messages, and
fix the packages to avoid "file is already provided by package" messages,
every time I create an SDK or change it in some way to see an error 
message and stop the SDK generation?
It would probably be worth an experiment to see if we really do need the
attempt_only option set there any more. I'd hope it isn't needed now...

It is probably worth testing a patch on the autobuilder, assuming your
local tests with that pass. We'd need to check the different package
backends are ok with that.

Cheers,

Richard


Fabio Berton
 

Hi Richard!

Ok, I'll prepare a patch, do more tests on my side and if everything works I'll send the patch to the OE-core list.

Is there any specific test, or just populate_sdk with core-image-base?

Thanks!

On Fri, Jun 25, 2021 at 8:48 AM Richard Purdie <richard.purdie@...> wrote:
On Thu, 2021-06-24 at 17:40 -0300, Fabio Berton wrote:
> Hi all!
>
> I'm running some test with do_populate_sdk task and I'm seeing this 
> on the log:
>
> check_data_file_clashes: Package kmsxx-dbg wants to install file /home/builder/build/tmp/work/foo-poky-
> linux/core-image-minimal/1.0-r0/sdk/image/opt/bar/sysroots/aarch64-poky-linux/usr/bin/.debug/kmstest
> But that file is already provided by package  * libdrm-dbg
>
> I also see this kind of message with other packages.
>
> Looking in the source code I found that the install_complementary 
> function runs this [1] with attempt_only=True, and if attempt_only is 
> true log above it's just a warning, as shown here [2].
>
> This [3] comment says that "will only attempt to install these packages, 
> if they don't exist then no error will occur."
>
> My question is how can I force an error and not just a warning when 
> running do_populate_sdk? 
>
> I understand that I can change [1] to run:
>
>   self.install(install_pkgs)
>
> so, it'll use set attempt_only to False, that is the default, but I 
> think this will break some use cases. 
>
> What is the correct behaviour here, see the warning messages and fix 
> the packages to avoid "file is already provided by package" messages, 
> every time I create a SDK or change in some way to see an error message
>  and stop SDK generation?
>
> What is the correct behavior here, inspect the warning messages, and
> fix the packages to avoid "file is already provided by package" messages,
> every time I create an SDK or change it in some way to see an error 
> message and stop the SDK generation?

It would probably be worth an experiment to see if we really do need the
attempt_only option set there any more. I'd hope it isn't needed now...

It is probably worth testing a patch on the autobuilder, assuming your
local tests with that pass. We'd need to check the different package
backends are ok with that.

Cheers,

Richard