[igt-dev] [PATCH i-g-t v5 4/7] tests/meson.build: create testlists for tests

Ilja Friedel ihf at google.com
Wed Aug 30 21:49:10 UTC 2023


Hi Mauro,

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 libdrm_intel.so/libdrm_amdgpu.so 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?

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?

Thank you,

Ilja.

On Wed, Aug 30, 2023 at 2:41 PM Mark Yacoub <markyacoub at chromium.org> wrote:

> This is causing issues for IGT ChromeOS. Adding +ihf at google.com for
> more context.
>
> On Mon, Jul 10, 2023 at 2:17 PM Kamil Konieczny
> <kamil.konieczny at linux.intel.com> wrote:
> >
> > Hi Mauro,
> >
> > On 2023-07-10 at 13:53:51 +0200, Mauro Carvalho Chehab wrote:
> > > From: Mauro Carvalho Chehab <mchehab at kernel.org>
> > >
> > > Let's dynamically create testlists for during build time, as this
> > ------------------------------------ ^^^
> > s/for//
> >
> > Also, in subject:
> > tests/meson.build: create testlists for tests
> > ----------------------------------- ^^^^^^^^^
> > s/for tests/dynamically/
> > or /at build time/ ?
> >
> > With that fixed you can add my r-b.
> >
> > > can speed up a lot the validation check for testplan.
> > >
> > > Ideally, all it would need to to that would be to use this
> > > logic at the end of tests/meson.build:
> > >
> > >     foreach testexe : test_executables
> > >         prog = testexe.name()
> > >
> > >         output = prog.split('/').get(-1) + '.testlist'
> > >         custom_target(output,
> > >                      build_by_default : true,
> > >                      command : [ testexe, '--show-testlist'],
> > >                      capture : true,
> > >                      output : output)
> > >
> > > Unfortunately, this requies Meson >= 0.54. So, we need to add
> > > one custom_target per executable() call.
> >
> > As this is touching testlist for CI, +Cc Ewelina.
> >
> > Regards,
> > Kamil
> >
> > >
> > > Signed-off-by: Mauro Carvalho Chehab <mchehab at kernel.org>
> > > ---
> > >  docs/testplan/meson.build |  2 +-
> > >  tests/meson.build         | 55 ++++++++++++++++++++++++++++++++++-----
> > >  2 files changed, 49 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/docs/testplan/meson.build b/docs/testplan/meson.build
> > > index bf73dd32a15f..e838f2eb1540 100644
> > > --- a/docs/testplan/meson.build
> > > +++ b/docs/testplan/meson.build
> > > @@ -12,7 +12,7 @@ i915_test_config = join_paths(source_root, 'tests',
> 'i915', 'i915_test_config.js
> > >
> > >  check_testlist = []
> > >  if build_tests
> > > -     doc_dependencies = test_executables
> > > +     doc_dependencies = testlist_files
> > >       # Check if documentation matches the actual tests and tests can
> run
> > >       if not meson.is_cross_build()
> > >               build_info += 'Will Check if documentation is in sync
> with testlist'
> > > diff --git a/tests/meson.build b/tests/meson.build
> > > index 3116c458d60b..897f17ab4561 100644
> > > --- a/tests/meson.build
> > > +++ b/tests/meson.build
> > > @@ -351,35 +351,57 @@ extra_dependencies = {
> > >
> > >  test_executables = []
> > >  test_list = []
> > > +testlist_files = []
> > >
> > >  foreach prog : test_progs
> > > -     test_executables += executable(prog, [prog + '.c'] +
> extra_sources.get(prog, []),
> > > +     testexe = executable(prog, [prog + '.c'] +
> extra_sources.get(prog, []),
> > >                  dependencies : test_deps +
> extra_dependencies.get(prog, []),
> > >                  install_dir : libexecdir,
> > >                  install_rpath : libexecdir_rpathdir,
> > >                  install : true)
> > > +     test_executables += testexe
> > >       test_list += prog
> > > +     name = prog.split('/').get(-1)
> > > +     testlist_files += custom_target(name + '.testlist',
> > > +                  build_by_default : true,
> > > +                  command : [testexe, '--show-testlist'],
> > > +                  capture : true,
> > > +                  output : name + '.testlist')
> > >  endforeach
> > >
> > >  foreach prog : i915_progs
> > > -     test_executables += executable(prog,
> > > +     testexe = executable(prog,
> > >                  [join_paths('i915', prog + '.c')] +
> extra_sources.get(prog, []),
> > >                  dependencies : test_deps +
> extra_dependencies.get(prog, []),
> > >                  install_dir : libexecdir,
> > >                  install_rpath : libexecdir_rpathdir,
> > >                  install : true)
> > > +     test_executables += testexe
> > >       test_list += prog
> > > +     name = prog.split('/').get(-1)
> > > +     testlist_files += custom_target(name + '.testlist',
> > > +                  build_by_default : true,
> > > +                  command : [testexe, '--show-testlist'],
> > > +                  capture : true,
> > > +                  output : name + '.testlist')
> > >  endforeach
> > >
> > >  if build_xe
> > >       foreach prog : xe_progs
> > > -             test_executables += executable(prog,
> > > +             testexe = executable(prog,
> > >                          [join_paths('xe', prog + '.c')] +
> extra_sources.get(prog, []),
> > >                          dependencies : test_deps +
> extra_dependencies.get(prog, []),
> > >                          install_dir : libexecdir,
> > >                          install_rpath : libexecdir_rpathdir,
> > >                          install : true)
> > >               test_list += prog
> > > +             test_executables += testexe
> > > +             name = prog.split('/').get(-1)
> > > +             testlist_files += custom_target(name + '.testlist',
> > > +                          build_by_default : true,
> > > +                          command : [testexe, '--show-testlist'],
> > > +                          capture : true,
> > > +                          output : name + '.testlist')
> > >       endforeach
> > >       build_info += 'Xe **experimental** tests enabled.'
> > >  endif
> > > @@ -395,7 +417,7 @@ endforeach
> > >
> > >  if chamelium.found()
> > >       foreach prog : chamelium_progs
> > > -             test_executables += executable(prog,
> > > +             testexe = executable(prog,
> > >                                [join_paths('chamelium', prog + '.c'),
> > >                                       join_paths('chamelium',
> 'kms_chamelium_helper.c')],
> > >                                dependencies : test_deps,
> > > @@ -403,16 +425,30 @@ if chamelium.found()
> > >                                install_rpath : libexecdir_rpathdir,
> > >                                install : true)
> > >               test_list += prog
> > > +             test_executables += testexe
> > > +             name = prog.split('/').get(-1)
> > > +             testlist_files += custom_target(name + '.testlist',
> > > +                          build_by_default : true,
> > > +                          command : [testexe, '--show-testlist'],
> > > +                          capture : true,
> > > +                          output : name + '.testlist')
> > >       endforeach
> > >       test_deps += chamelium
> > >
> > > -     test_executables += executable('kms_chamelium_color',
> > > +     name = 'kms_chamelium_color'
> > > +     testexe = executable('kms_chamelium_color',
> > >                               [ 'chamelium/kms_chamelium_color.c',
> 'kms_color_helper.c' ],
> > >                               dependencies : test_deps + [ chamelium ],
> > >                               install_dir : libexecdir,
> > >                               install_rpath : libexecdir_rpathdir,
> > >                               install : true)
> > > -     test_list += 'kms_chamelium_color'
> > > +     test_list += name
> > > +     test_executables += testexe
> > > +     testlist_files += custom_target(name + '.testlist',
> > > +                  build_by_default : true,
> > > +                  command : [testexe, '--show-testlist'],
> > > +                  capture : true,
> > > +                  output : name + '.testlist')
> > >  endif
> > >
> > >  subdir('amdgpu')
> > > @@ -448,11 +484,16 @@ foreach prog : test_list
> > >       test('testcase check ' + prog, test_script, args : prog)
> > >  endforeach
> > >
> > > -executable('gem_stress', 'i915/gem_stress.c',
> > > +testexe = executable('gem_stress', 'i915/gem_stress.c',
> > >          install : true,
> > >          install_dir : libexecdir,
> > >          install_rpath : libexecdir_rpathdir,
> > >          dependencies : igt_deps)
> > > +testlist_files += custom_target('gem_stress.testlist',
> > > +                build_by_default : true,
> > > +                command : [testexe, '--show-testlist'],
> > > +                capture : true,
> > > +                output : 'gem_stress.testlist')
> > >
> > >  image_files = [
> > >    '1080p-left.png',
> > > --
> > > 2.40.1
> > >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/igt-dev/attachments/20230830/ccd53263/attachment-0001.htm>


More information about the igt-dev mailing list