diff options
Diffstat (limited to 'meta/lib/oeqa/sdk/context.py')
-rw-r--r-- | meta/lib/oeqa/sdk/context.py | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/meta/lib/oeqa/sdk/context.py b/meta/lib/oeqa/sdk/context.py index b3d7c75183..01c38c24e6 100644 --- a/meta/lib/oeqa/sdk/context.py +++ b/meta/lib/oeqa/sdk/context.py @@ -1,15 +1,17 @@ +# # Copyright (C) 2016 Intel Corporation -# Released under the MIT license (see COPYING.MIT) +# +# SPDX-License-Identifier: MIT +# import os import sys import glob import re -from oeqa.core.context import OETestContextExecutor -from oeqa.core.threaded import OETestContextThreaded +from oeqa.core.context import OETestContext, OETestContextExecutor -class OESDKTestContext(OETestContextThreaded): +class OESDKTestContext(OETestContext): sdk_files_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "files") def __init__(self, td=None, logger=None, sdk_dir=None, sdk_env=None, @@ -21,17 +23,30 @@ class OESDKTestContext(OETestContextThreaded): self.target_pkg_manifest = target_pkg_manifest self.host_pkg_manifest = host_pkg_manifest - def _hasPackage(self, manifest, pkg): - for host_pkg in manifest.keys(): - if re.search(pkg, host_pkg): + def _hasPackage(self, manifest, pkg, regex=False): + if regex: + # do regex match + pat = re.compile(pkg) + for p in manifest.keys(): + if pat.search(p): + return True + else: + # do exact match + if pkg in manifest.keys(): return True return False - def hasHostPackage(self, pkg): - return self._hasPackage(self.host_pkg_manifest, pkg) + def hasHostPackage(self, pkg, regex=False): + return self._hasPackage(self.host_pkg_manifest, pkg, regex=regex) - def hasTargetPackage(self, pkg): - return self._hasPackage(self.target_pkg_manifest, pkg) + def hasTargetPackage(self, pkg, multilib=False, regex=False): + if multilib: + # match multilib according to sdk_env + mls = self.td.get('MULTILIB_VARIANTS', '').split() + for ml in mls: + if ('ml'+ml) in self.sdk_env: + pkg = ml + '-' + pkg + return self._hasPackage(self.target_pkg_manifest, pkg, regex=regex) class OESDKTestContextExecutor(OETestContextExecutor): _context_class = OESDKTestContext @@ -66,6 +81,9 @@ class OESDKTestContextExecutor(OETestContextExecutor): sdk_rgroup.add_argument('--sdk-dir', required=False, action='store', help='sdk installed directory') + self.parser.add_argument('-j', '--num-processes', dest='processes', action='store', + type=int, help="number of processes to execute in parallel with") + @staticmethod def _load_manifest(manifest): pkg_manifest = {} @@ -86,6 +104,7 @@ class OESDKTestContextExecutor(OETestContextExecutor): OESDKTestContextExecutor._load_manifest(args.target_manifest) self.tc_kwargs['init']['host_pkg_manifest'] = \ OESDKTestContextExecutor._load_manifest(args.host_manifest) + self.tc_kwargs['run']['processes'] = args.processes @staticmethod def _get_sdk_environs(sdk_dir): @@ -117,7 +136,7 @@ class OESDKTestContextExecutor(OETestContextExecutor): sdk_envs = OESDKTestContextExecutor._get_sdk_environs(args.sdk_dir) if not sdk_envs: raise argparse_oe.ArgumentUsageError("No available SDK "\ - "enviroments found at %s" % args.sdk_dir, self.name) + "environments found at %s" % args.sdk_dir, self.name) if args.list_sdk_env: self._display_sdk_envs(logger.info, args, sdk_envs) |