diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2015-02-10 18:13:25 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-02-16 09:10:42 +0000 |
commit | c4da9b949a09f6fcf4091f247a05cea78175571a (patch) | |
tree | 3e79639e36e69caaf5ebb37ba206eb0bcf823d7b /bitbake/lib/bb/tests | |
parent | 758dc92abd8a9af00e3f2b20cba9ca4c7cfca3e0 (diff) | |
download | poky-c4da9b949a09f6fcf4091f247a05cea78175571a.tar.gz |
bitbake: cooker: rework LAYERDEPENDS versioning so that it is actually useful
We've had versioned dependency support in LAYERDEPENDS for quite a long
time, but I can say with pretty good certainty that almost nobody has
used it up to now because it was too strict - the specified version had
to exactly match the version in your configuration or you would get an
error; there was no "greater than or equal" option, which is usually
what you will want given that LAYERVERSION does get bumped from time to
time.
However, users mismatching layer branches and then having their builds
fail later on with some incomprehensible error is still a pretty common
problem. We can't simply use the git branch because not everyone is
always on a branch and the branch names don't always match up (and
that's not an issue). To provide a practical means to address branch
mismatching, I have reworked LAYERDEPENDS version specifications to use
the more familiar "dependency (>= version)" syntax as used with package
dependencies, support non-integer versions, and clarified the error
message a little. If we then take care to bump the version on every
breaking change, it is at least possible to have layers depend on these
changes when they update to match; we can now even support a major.minor
scheme to allow retrospectively adding a version limiter to old branches
when a new branch is created and yet still allow the old branch minor
version to be bumped if needed.
Fixes [YOCTO #5991].
(Bitbake rev: 408be9cdf2b1e32e64ea488d8051a546fb54c144)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests')
-rw-r--r-- | bitbake/lib/bb/tests/utils.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/utils.py b/bitbake/lib/bb/tests/utils.py index cf145f0d7a..507de2de3c 100644 --- a/bitbake/lib/bb/tests/utils.py +++ b/bitbake/lib/bb/tests/utils.py | |||
@@ -55,3 +55,36 @@ class VerCmpString(unittest.TestCase): | |||
55 | result = bb.utils.explode_dep_versions2("foo ( =1.10 )") | 55 | result = bb.utils.explode_dep_versions2("foo ( =1.10 )") |
56 | self.assertEqual(result, correctresult) | 56 | self.assertEqual(result, correctresult) |
57 | 57 | ||
58 | def test_vercmp_string_op(self): | ||
59 | compareops = [('1', '1', '=', True), | ||
60 | ('1', '1', '==', True), | ||
61 | ('1', '1', '!=', False), | ||
62 | ('1', '1', '>', False), | ||
63 | ('1', '1', '<', False), | ||
64 | ('1', '1', '>=', True), | ||
65 | ('1', '1', '<=', True), | ||
66 | ('1', '0', '=', False), | ||
67 | ('1', '0', '==', False), | ||
68 | ('1', '0', '!=', True), | ||
69 | ('1', '0', '>', True), | ||
70 | ('1', '0', '<', False), | ||
71 | ('1', '0', '>>', True), | ||
72 | ('1', '0', '<<', False), | ||
73 | ('1', '0', '>=', True), | ||
74 | ('1', '0', '<=', False), | ||
75 | ('0', '1', '=', False), | ||
76 | ('0', '1', '==', False), | ||
77 | ('0', '1', '!=', True), | ||
78 | ('0', '1', '>', False), | ||
79 | ('0', '1', '<', True), | ||
80 | ('0', '1', '>>', False), | ||
81 | ('0', '1', '<<', True), | ||
82 | ('0', '1', '>=', False), | ||
83 | ('0', '1', '<=', True)] | ||
84 | |||
85 | for arg1, arg2, op, correctresult in compareops: | ||
86 | result = bb.utils.vercmp_string_op(arg1, arg2, op) | ||
87 | self.assertEqual(result, correctresult, 'vercmp_string_op("%s", "%s", "%s") != %s' % (arg1, arg2, op, correctresult)) | ||
88 | |||
89 | # Check that clearly invalid operator raises an exception | ||
90 | self.assertRaises(bb.utils.VersionStringException, bb.utils.vercmp_string_op, '0', '0', '$') | ||