diff mbox series

[v3,4/5] testexport.bbclass: use image suffix in testexport tar ball name

Message ID 20250702072516.1075450-4-mikko.rapeli@linaro.org
State New
Headers show
Series [v3,1/5] oeqa runtime: set self.runner and handle None | expand

Commit Message

Mikko Rapeli July 2, 2025, 7:25 a.m. UTC
testexport.tar.gz is image specific. Thus add same image name
suffix to the tar ball name. For example genericarm64 machine
core-image-minimal image tar ball changes name from
testexport.tar.gz to testexport-core-image-minimal-genericarm64.tar.gz

This way testexport from multiple images can exists in the same
directory.

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
 meta/classes-recipe/testexport.bbclass | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Richard Purdie July 14, 2025, 12:08 p.m. UTC | #1
On Wed, 2025-07-02 at 10:25 +0300, Mikko Rapeli via lists.openembedded.org wrote:
> testexport.tar.gz is image specific. Thus add same image name
> suffix to the tar ball name. For example genericarm64 machine
> core-image-minimal image tar ball changes name from
> testexport.tar.gz to testexport-core-image-minimal-genericarm64.tar.gz
> 
> This way testexport from multiple images can exists in the same
> directory.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> ---
>  meta/classes-recipe/testexport.bbclass | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
> index 843d777e3bb9..3005fc0dfa52 100644
> --- a/meta/classes-recipe/testexport.bbclass
> +++ b/meta/classes-recipe/testexport.bbclass
> @@ -136,8 +136,12 @@ def copy_needed_files(d, tc):
>              if dir == '__pycache__':
>                  shutil.rmtree(os.path.join(subdir, dir))
>  
> +    image_basename = d.getVar('IMAGE_BASENAME')
> +    image_machine_suffix = d.getVar('IMAGE_MACHINE_SUFFIX')
> +
>      # Create tar file for common parts of testexport
> -    testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
> +    testexport_create_tarball(d, "testexport-%s%s.tar.gz" %
> +        (image_basename, image_machine_suffix), d.getVar("TEST_EXPORT_DIR"))
>  
>      # Copy packages needed for runtime testing
>      test_paths = get_runtime_paths(d)
> @@ -149,7 +153,7 @@ def copy_needed_files(d, tc):
>          export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"), "packages")
>          oe.path.copytree(test_pkg_dir, export_pkg_dir)
>          # Create tar file for packages needed by the DUT
> -        testexport_create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
> +        testexport_create_tarball(d, "testexport_packages%s.tar.gz" % image_machine_suffix, export_pkg_dir)
>  
>      # Copy SDK
>      if d.getVar("TEST_EXPORT_SDK_ENABLED") == "1":

Since most of the machine and image specific elements of this have been
removed, does it not make sense just to have one testexport tarball
generated by an external script?

The testdata json file is already exported separately.

I've held off this patch for that reason, making it machine specific
seems a backwards step?

Cheers,

Richard
Mikko Rapeli July 14, 2025, 12:26 p.m. UTC | #2
Hi,

On Mon, Jul 14, 2025 at 01:08:42PM +0100, Richard Purdie wrote:
> On Wed, 2025-07-02 at 10:25 +0300, Mikko Rapeli via lists.openembedded.org wrote:
> > testexport.tar.gz is image specific. Thus add same image name
> > suffix to the tar ball name. For example genericarm64 machine
> > core-image-minimal image tar ball changes name from
> > testexport.tar.gz to testexport-core-image-minimal-genericarm64.tar.gz
> > 
> > This way testexport from multiple images can exists in the same
> > directory.
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> > ---
> > �meta/classes-recipe/testexport.bbclass | 8 ++++++--
> > �1 file changed, 6 insertions(+), 2 deletions(-)
> > 
> > diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
> > index 843d777e3bb9..3005fc0dfa52 100644
> > --- a/meta/classes-recipe/testexport.bbclass
> > +++ b/meta/classes-recipe/testexport.bbclass
> > @@ -136,8 +136,12 @@ def copy_needed_files(d, tc):
> > ������������ if dir == '__pycache__':
> > ���������������� shutil.rmtree(os.path.join(subdir, dir))
> > �
> > +��� image_basename = d.getVar('IMAGE_BASENAME')
> > +��� image_machine_suffix = d.getVar('IMAGE_MACHINE_SUFFIX')
> > +
> > ���� # Create tar file for common parts of testexport
> > -��� testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
> > +��� testexport_create_tarball(d, "testexport-%s%s.tar.gz" %
> > +������� (image_basename, image_machine_suffix), d.getVar("TEST_EXPORT_DIR"))
> > �
> > ���� # Copy packages needed for runtime testing
> > ���� test_paths = get_runtime_paths(d)
> > @@ -149,7 +153,7 @@ def copy_needed_files(d, tc):
> > �������� export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"), "packages")
> > �������� oe.path.copytree(test_pkg_dir, export_pkg_dir)
> > �������� # Create tar file for packages needed by the DUT
> > -������� testexport_create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
> > +������� testexport_create_tarball(d, "testexport_packages%s.tar.gz" % image_machine_suffix, export_pkg_dir)
> > �
> > ���� # Copy SDK
> > ���� if d.getVar("TEST_EXPORT_SDK_ENABLED") == "1":
> 
> Since most of the machine and image specific elements of this have been
> removed, does it not make sense just to have one testexport tarball
> generated by an external script?
> 
> The testdata json file is already exported separately.
> 
> I've held off this patch for that reason, making it machine specific
> seems a backwards step?

Currently the image specific testdata json is inside the testexport
tar ball as core-image-sato/data/testdata.json. Same file is available
after build in
tmp/deploy/images/genericarm64/core-image-sato-genericarm64.rootfs.testdata.json
so I could switch the exported tests over to that.

I'll try to set this up with a different patch. Thanks for the feedback!

The new approach needs some standardisation between what is in build
output and what is in the test environment. There is a similar issue
with opkg/ipk runtime test and the need for just a few files around
80kb from the ipk archive, not the full archive which is possibly
gigabytes in size. I've now set these up with a separate script
outside of poky. It would be nice if these small scripts could live
in poky, possibly scripts/contrib/ ? I could capture the image specific
testdata.json file in the same way too, for example a single tar ball.

Cheers,

-Mikko
diff mbox series

Patch

diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
index 843d777e3bb9..3005fc0dfa52 100644
--- a/meta/classes-recipe/testexport.bbclass
+++ b/meta/classes-recipe/testexport.bbclass
@@ -136,8 +136,12 @@  def copy_needed_files(d, tc):
             if dir == '__pycache__':
                 shutil.rmtree(os.path.join(subdir, dir))
 
+    image_basename = d.getVar('IMAGE_BASENAME')
+    image_machine_suffix = d.getVar('IMAGE_MACHINE_SUFFIX')
+
     # Create tar file for common parts of testexport
-    testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
+    testexport_create_tarball(d, "testexport-%s%s.tar.gz" %
+        (image_basename, image_machine_suffix), d.getVar("TEST_EXPORT_DIR"))
 
     # Copy packages needed for runtime testing
     test_paths = get_runtime_paths(d)
@@ -149,7 +153,7 @@  def copy_needed_files(d, tc):
         export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"), "packages")
         oe.path.copytree(test_pkg_dir, export_pkg_dir)
         # Create tar file for packages needed by the DUT
-        testexport_create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
+        testexport_create_tarball(d, "testexport_packages%s.tar.gz" % image_machine_suffix, export_pkg_dir)
 
     # Copy SDK
     if d.getVar("TEST_EXPORT_SDK_ENABLED") == "1":