aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2017-06-27 17:33:40 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-27 22:35:04 +0100
commite4dce65ce604a74da0f09ee2742cf8b13cf96c8e (patch)
tree5bbab2364b8e96c3b3450af6e705d6ca5390a99a /scripts
parentf2190e7e81f86735510c6ab10d3ac781146113f9 (diff)
downloadopenembedded-core-contrib-e4dce65ce604a74da0f09ee2742cf8b13cf96c8e.tar.gz
yocto-compat-layer.py: apply test_signatures to all layers
Software layers were previously allowed to change signatures, but that's not desired for those layers either. The rule that a layer which is "Yocto Compatible 2.0" must not change signatures unless explicitly requested holds for all kinds of layers. However, as this is something that software layers might not be able to do right away, testing for signature changes in software layers can be disabled. It's on by default, as that was Richard's recommendation. Whether that should change needs further discussion as part of finalizing "Yocto Compatible 2.0". As it might still change, the tool now has both a with/without parameter so that users of the tool can choose the desired behavior without being affected by future changes to the default. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Armin Kuster <akuster808@gmail.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/compatlayer/cases/common.py5
-rw-r--r--scripts/lib/compatlayer/context.py3
-rwxr-xr-xscripts/yocto-compat-layer.py12
3 files changed, 14 insertions, 6 deletions
diff --git a/scripts/lib/compatlayer/cases/common.py b/scripts/lib/compatlayer/cases/common.py
index 2dfcbb1c32..a1cdbab51e 100644
--- a/scripts/lib/compatlayer/cases/common.py
+++ b/scripts/lib/compatlayer/cases/common.py
@@ -27,8 +27,9 @@ class CommonCompatLayer(OECompatLayerTestCase):
'bitbake -e')
def test_signatures(self):
- if self.tc.layer['type'] == LayerType.SOFTWARE:
- raise unittest.SkipTest("Layer %s isn't BSP or DISTRO one." \
+ if self.tc.layer['type'] == LayerType.SOFTWARE and \
+ not self.tc.test_software_layer_signatures:
+ raise unittest.SkipTest("Not testing for signature changes in a software layer %s." \
% self.tc.layer['name'])
# task -> (old signature, new signature)
diff --git a/scripts/lib/compatlayer/context.py b/scripts/lib/compatlayer/context.py
index 4932238798..7811d4ac20 100644
--- a/scripts/lib/compatlayer/context.py
+++ b/scripts/lib/compatlayer/context.py
@@ -9,6 +9,7 @@ import re
from oeqa.core.context import OETestContext
class CompatLayerTestContext(OETestContext):
- def __init__(self, td=None, logger=None, layer=None):
+ def __init__(self, td=None, logger=None, layer=None, test_software_layer_signatures=True):
super(CompatLayerTestContext, self).__init__(td, logger)
self.layer = layer
+ self.test_software_layer_signatures = test_software_layer_signatures
diff --git a/scripts/yocto-compat-layer.py b/scripts/yocto-compat-layer.py
index 0d5700b538..ba64b4d6e4 100755
--- a/scripts/yocto-compat-layer.py
+++ b/scripts/yocto-compat-layer.py
@@ -30,12 +30,12 @@ CASES_PATHS = [os.path.join(os.path.abspath(os.path.dirname(__file__)),
'lib', 'compatlayer', 'cases')]
logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout)
-def test_layer_compatibility(td, layer):
+def test_layer_compatibility(td, layer, test_software_layer_signatures):
from compatlayer.context import CompatLayerTestContext
logger.info("Starting to analyze: %s" % layer['name'])
logger.info("----------------------------------------------------------------------")
- tc = CompatLayerTestContext(td=td, logger=logger, layer=layer)
+ tc = CompatLayerTestContext(td=td, logger=logger, layer=layer, test_software_layer_signatures=test_software_layer_signatures)
tc.loadTests(CASES_PATHS)
return tc.runTests()
@@ -53,6 +53,12 @@ def main():
help='List of MACHINEs to be used during testing', action='store')
parser.add_argument('--additional-layers', nargs="+",
help='List of additional layers to add during testing', action='store')
+ group = parser.add_mutually_exclusive_group()
+ group.add_argument('--with-software-layer-signature-check', action='store_true', dest='test_software_layer_signatures',
+ default=True,
+ help='check that software layers do not change signatures (on by default)')
+ group.add_argument('--without-software-layer-signature-check', action='store_false', dest='test_software_layer_signatures',
+ help='disable signature checking for software layers')
parser.add_argument('-n', '--no-auto', help='Disable auto layer discovery',
action='store_true')
parser.add_argument('-d', '--debug', help='Enable debug output',
@@ -173,7 +179,7 @@ def main():
layers_tested = layers_tested + 1
continue
- result = test_layer_compatibility(td, layer)
+ result = test_layer_compatibility(td, layer, args.test_software_layer_signatures)
results[layer['name']] = result
results_status[layer['name']] = 'PASS' if results[layer['name']].wasSuccessful() else 'FAIL'
layers_tested = layers_tested + 1