<div dir="ltr">Hi Mauro,<div><br></div><div>on ChromeOS we are cross-compiling binaries inside of portage/gentoo servers for consumer devices. Which means these servers are typically unable to execute the binaries. (For instance on Intel and AMD they will try to load <a href="http://libdrm_intel.so/libdrm_amdgpu.so">libdrm_intel.so/libdrm_amdgpu.so</a> even though the servers don't have a GPU and don't need these libraries). Hence we have testplan disabled while building on the server. (We run the test binaries later on the devices.) Now this change reintroduces executing the compiled binaries on the server just when building them, for a testplan phase that will never happen on the server. Would it be possible to place the equivalent of "if testplan" around this code?</div><div><br></div><div>As an aside, we don't run into problems compiling for Qualcomm/ARM. I am unclear why, as I don't see qemu or similar running. So maybe there already is a way to disable this?</div><div><br></div><div>Thank you,</div><div><br></div><div>Ilja.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 30, 2023 at 2:41 PM Mark Yacoub <<a href="mailto:markyacoub@chromium.org" target="_blank">markyacoub@chromium.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This is causing issues for IGT ChromeOS. Adding +<a href="mailto:ihf@google.com" target="_blank">ihf@google.com</a> for<br>
more context.<br>
<br>
On Mon, Jul 10, 2023 at 2:17 PM Kamil Konieczny<br>
<<a href="mailto:kamil.konieczny@linux.intel.com" target="_blank">kamil.konieczny@linux.intel.com</a>> wrote:<br>
><br>
> Hi Mauro,<br>
><br>
> On 2023-07-10 at 13:53:51 +0200, Mauro Carvalho Chehab wrote:<br>
> > From: Mauro Carvalho Chehab <<a href="mailto:mchehab@kernel.org" target="_blank">mchehab@kernel.org</a>><br>
> ><br>
> > Let's dynamically create testlists for during build time, as this<br>
> ------------------------------------ ^^^<br>
> s/for//<br>
><br>
> Also, in subject:<br>
> tests/meson.build: create testlists for tests<br>
> ----------------------------------- ^^^^^^^^^<br>
> s/for tests/dynamically/<br>
> or /at build time/ ?<br>
><br>
> With that fixed you can add my r-b.<br>
><br>
> > can speed up a lot the validation check for testplan.<br>
> ><br>
> > Ideally, all it would need to to that would be to use this<br>
> > logic at the end of tests/meson.build:<br>
> ><br>
> >     foreach testexe : test_executables<br>
> >         prog = <a href="http://testexe.name" rel="noreferrer" target="_blank">testexe.name</a>()<br>
> ><br>
> >         output = prog.split('/').get(-1) + '.testlist'<br>
> >         custom_target(output,<br>
> >                      build_by_default : true,<br>
> >                      command : [ testexe, '--show-testlist'],<br>
> >                      capture : true,<br>
> >                      output : output)<br>
> ><br>
> > Unfortunately, this requies Meson >= 0.54. So, we need to add<br>
> > one custom_target per executable() call.<br>
><br>
> As this is touching testlist for CI, +Cc Ewelina.<br>
><br>
> Regards,<br>
> Kamil<br>
><br>
> ><br>
> > Signed-off-by: Mauro Carvalho Chehab <<a href="mailto:mchehab@kernel.org" target="_blank">mchehab@kernel.org</a>><br>
> > ---<br>
> >  docs/testplan/meson.build |  2 +-<br>
> >  tests/meson.build         | 55 ++++++++++++++++++++++++++++++++++-----<br>
> >  2 files changed, 49 insertions(+), 8 deletions(-)<br>
> ><br>
> > diff --git a/docs/testplan/meson.build b/docs/testplan/meson.build<br>
> > index bf73dd32a15f..e838f2eb1540 100644<br>
> > --- a/docs/testplan/meson.build<br>
> > +++ b/docs/testplan/meson.build<br>
> > @@ -12,7 +12,7 @@ i915_test_config = join_paths(source_root, 'tests', 'i915', 'i915_test_config.js<br>
> ><br>
> >  check_testlist = []<br>
> >  if build_tests<br>
> > -     doc_dependencies = test_executables<br>
> > +     doc_dependencies = testlist_files<br>
> >       # Check if documentation matches the actual tests and tests can run<br>
> >       if not meson.is_cross_build()<br>
> >               build_info += 'Will Check if documentation is in sync with testlist'<br>
> > diff --git a/tests/meson.build b/tests/meson.build<br>
> > index 3116c458d60b..897f17ab4561 100644<br>
> > --- a/tests/meson.build<br>
> > +++ b/tests/meson.build<br>
> > @@ -351,35 +351,57 @@ extra_dependencies = {<br>
> ><br>
> >  test_executables = []<br>
> >  test_list = []<br>
> > +testlist_files = []<br>
> ><br>
> >  foreach prog : test_progs<br>
> > -     test_executables += executable(prog, [prog + '.c'] + extra_sources.get(prog, []),<br>
> > +     testexe = executable(prog, [prog + '.c'] + extra_sources.get(prog, []),<br>
> >                  dependencies : test_deps + extra_dependencies.get(prog, []),<br>
> >                  install_dir : libexecdir,<br>
> >                  install_rpath : libexecdir_rpathdir,<br>
> >                  install : true)<br>
> > +     test_executables += testexe<br>
> >       test_list += prog<br>
> > +     name = prog.split('/').get(-1)<br>
> > +     testlist_files += custom_target(name + '.testlist',<br>
> > +                  build_by_default : true,<br>
> > +                  command : [testexe, '--show-testlist'],<br>
> > +                  capture : true,<br>
> > +                  output : name + '.testlist')<br>
> >  endforeach<br>
> ><br>
> >  foreach prog : i915_progs<br>
> > -     test_executables += executable(prog,<br>
> > +     testexe = executable(prog,<br>
> >                  [join_paths('i915', prog + '.c')] + extra_sources.get(prog, []),<br>
> >                  dependencies : test_deps + extra_dependencies.get(prog, []),<br>
> >                  install_dir : libexecdir,<br>
> >                  install_rpath : libexecdir_rpathdir,<br>
> >                  install : true)<br>
> > +     test_executables += testexe<br>
> >       test_list += prog<br>
> > +     name = prog.split('/').get(-1)<br>
> > +     testlist_files += custom_target(name + '.testlist',<br>
> > +                  build_by_default : true,<br>
> > +                  command : [testexe, '--show-testlist'],<br>
> > +                  capture : true,<br>
> > +                  output : name + '.testlist')<br>
> >  endforeach<br>
> ><br>
> >  if build_xe<br>
> >       foreach prog : xe_progs<br>
> > -             test_executables += executable(prog,<br>
> > +             testexe = executable(prog,<br>
> >                          [join_paths('xe', prog + '.c')] + extra_sources.get(prog, []),<br>
> >                          dependencies : test_deps + extra_dependencies.get(prog, []),<br>
> >                          install_dir : libexecdir,<br>
> >                          install_rpath : libexecdir_rpathdir,<br>
> >                          install : true)<br>
> >               test_list += prog<br>
> > +             test_executables += testexe<br>
> > +             name = prog.split('/').get(-1)<br>
> > +             testlist_files += custom_target(name + '.testlist',<br>
> > +                          build_by_default : true,<br>
> > +                          command : [testexe, '--show-testlist'],<br>
> > +                          capture : true,<br>
> > +                          output : name + '.testlist')<br>
> >       endforeach<br>
> >       build_info += 'Xe **experimental** tests enabled.'<br>
> >  endif<br>
> > @@ -395,7 +417,7 @@ endforeach<br>
> ><br>
> >  if chamelium.found()<br>
> >       foreach prog : chamelium_progs<br>
> > -             test_executables += executable(prog,<br>
> > +             testexe = executable(prog,<br>
> >                                [join_paths('chamelium', prog + '.c'),<br>
> >                                       join_paths('chamelium', 'kms_chamelium_helper.c')],<br>
> >                                dependencies : test_deps,<br>
> > @@ -403,16 +425,30 @@ if chamelium.found()<br>
> >                                install_rpath : libexecdir_rpathdir,<br>
> >                                install : true)<br>
> >               test_list += prog<br>
> > +             test_executables += testexe<br>
> > +             name = prog.split('/').get(-1)<br>
> > +             testlist_files += custom_target(name + '.testlist',<br>
> > +                          build_by_default : true,<br>
> > +                          command : [testexe, '--show-testlist'],<br>
> > +                          capture : true,<br>
> > +                          output : name + '.testlist')<br>
> >       endforeach<br>
> >       test_deps += chamelium<br>
> ><br>
> > -     test_executables += executable('kms_chamelium_color',<br>
> > +     name = 'kms_chamelium_color'<br>
> > +     testexe = executable('kms_chamelium_color',<br>
> >                               [ 'chamelium/kms_chamelium_color.c', 'kms_color_helper.c' ],<br>
> >                               dependencies : test_deps + [ chamelium ],<br>
> >                               install_dir : libexecdir,<br>
> >                               install_rpath : libexecdir_rpathdir,<br>
> >                               install : true)<br>
> > -     test_list += 'kms_chamelium_color'<br>
> > +     test_list += name<br>
> > +     test_executables += testexe<br>
> > +     testlist_files += custom_target(name + '.testlist',<br>
> > +                  build_by_default : true,<br>
> > +                  command : [testexe, '--show-testlist'],<br>
> > +                  capture : true,<br>
> > +                  output : name + '.testlist')<br>
> >  endif<br>
> ><br>
> >  subdir('amdgpu')<br>
> > @@ -448,11 +484,16 @@ foreach prog : test_list<br>
> >       test('testcase check ' + prog, test_script, args : prog)<br>
> >  endforeach<br>
> ><br>
> > -executable('gem_stress', 'i915/gem_stress.c',<br>
> > +testexe = executable('gem_stress', 'i915/gem_stress.c',<br>
> >          install : true,<br>
> >          install_dir : libexecdir,<br>
> >          install_rpath : libexecdir_rpathdir,<br>
> >          dependencies : igt_deps)<br>
> > +testlist_files += custom_target('gem_stress.testlist',<br>
> > +                build_by_default : true,<br>
> > +                command : [testexe, '--show-testlist'],<br>
> > +                capture : true,<br>
> > +                output : 'gem_stress.testlist')<br>
> ><br>
> >  image_files = [<br>
> >    '1080p-left.png',<br>
> > --<br>
> > 2.40.1<br>
> ><br>
</blockquote></div>