[v2,08/12] CI: Enable sstate dir sharing

Message ID 20230303144727.481716-9-amikan@ilbers.de
State Accepted, archived
Headers show
Series Next avocado improvements​ | expand

Commit Message

Anton Mikanovich March 3, 2023, 2:47 p.m. UTC
Test cases performed in different build dirs now can share SSTATE_DIR.
Enable it by default and disable sharing for cache-related test cases.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 testsuite/cibase.py    | 8 ++++----
 testsuite/cibuilder.py | 7 +++++++
 2 files changed, 11 insertions(+), 4 deletions(-)

Patch

diff --git a/testsuite/cibase.py b/testsuite/cibase.py
index 6239b4d..3267c17 100755
--- a/testsuite/cibase.py
+++ b/testsuite/cibase.py
@@ -31,7 +31,7 @@  class CIBaseTest(CIBuilder):
         gpg_pub_key = os.path.dirname(__file__) + '/keys/base-apt/test_pub.key'
         gpg_priv_key = os.path.dirname(__file__) + '/keys/base-apt/test_priv.key'
 
-        self.configure(gpg_pub_key=gpg_pub_key if signed else None, **kwargs)
+        self.configure(gpg_pub_key=gpg_pub_key if signed else None, sstate_dir="", **kwargs)
 
         os.chdir(self.build_dir)
 
@@ -44,7 +44,7 @@  class CIBaseTest(CIBuilder):
         self.bitbake(targets, **kwargs)
 
         self.delete_from_build_dir('tmp')
-        self.configure(gpg_pub_key=gpg_pub_key if signed else None, offline=True, **kwargs)
+        self.configure(gpg_pub_key=gpg_pub_key if signed else None, offline=True, sstate_dir="", **kwargs)
 
         self.bitbake(targets, **kwargs)
 
@@ -67,7 +67,7 @@  class CIBaseTest(CIBuilder):
                             count += int(content[field])
             return count
 
-        self.configure(ccache=True, **kwargs)
+        self.configure(ccache=True, sstate_dir="", **kwargs)
 
         # Field that stores direct ccache hits
         direct_cache_hit = 22
@@ -119,7 +119,7 @@  class CIBaseTest(CIBuilder):
                     return False
             return True
 
-        self.configure(sstate=True, **kwargs)
+        self.configure(sstate=True, sstate_dir="", **kwargs)
 
         # Cleanup sstate and tmp before test
         self.delete_from_build_dir('sstate-cache')
diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
index 0a07bf0..ef46352 100755
--- a/testsuite/cibuilder.py
+++ b/testsuite/cibuilder.py
@@ -58,6 +58,7 @@  class CIBuilder(Test):
     def configure(self, compat_arch=True, cross=True, debsrc_cache=False,
                   container=False, ccache=False, sstate=False, offline=False,
                   gpg_pub_key=None, wic_deploy_parts=False, dl_dir=None,
+                  sstate_dir=None,
                   source_date_epoch=None, image_install=None, **kwargs):
         # write configuration file and set bitbake_args
         # can run multiple times per test case
@@ -66,8 +67,11 @@  class CIBuilder(Test):
         # get parameters from avocado cmdline
         quiet = bool(int(self.params.get('quiet', default=1)))
 
+        # set those to "" to not set dir value but use system default
         if dl_dir is None:
             dl_dir = os.path.join(isar_root, 'downloads')
+        if sstate_dir is None:
+            sstate_dir = os.path.join(isar_root, 'sstate-cache')
 
         # get parameters from environment
         distro_apt_premir = os.getenv('DISTRO_APT_PREMIRRORS')
@@ -85,6 +89,7 @@  class CIBuilder(Test):
                       f'  wic_deploy_parts = {wic_deploy_parts}\n'
                       f'  source_date_epoch = {source_date_epoch} \n'
                       f'  dl_dir = {dl_dir}\n'
+                      f'  sstate_dir = {sstate_dir}\n'
                       f'  image_install = {image_install}\n'
                       f'===================================================')
 
@@ -124,6 +129,8 @@  class CIBuilder(Test):
                 f.write('SOURCE_DATE_EPOCH = "%s"\n' % source_date_epoch)
             if dl_dir:
                 f.write('DL_DIR = "%s"\n' % dl_dir)
+            if sstate_dir:
+                f.write('SSTATE_DIR = "%s"\n' % sstate_dir)
             if image_install is not None:
                 f.write('IMAGE_INSTALL = "%s"' % image_install)