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

Mark Yacoub markyacoub at chromium.org
Wed Aug 30 21:41:32 UTC 2023


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
> >


More information about the igt-dev mailing list