[bitbake-devel] [1.40][PATCH] bitbake: fix version comparison when one of the versions ends in .
Martin Jansa
martin.jansa at gmail.com
Sat Jun 15 07:24:09 UTC 2019
On Sat, Jun 15, 2019 at 07:17:43AM +0000, Martin Jansa wrote:
> From: Alexander Kanavin <alex.kanavin at gmail.com>
>
> Previously, this would happen:
>
> ======================================================================
> ERROR: test_vercmpstring (bb.tests.utils.VerCmpString)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/home/alexander/development/poky/bitbake/lib/bb/tests/utils.py", line 45, in test_vercmpstring
> result = bb.utils.vercmp_string('1.', '1.1')
> File "/home/alexander/development/poky/bitbake/lib/bb/utils.py", line 143, in vercmp_string
> return vercmp(ta, tb)
> File "/home/alexander/development/poky/bitbake/lib/bb/utils.py", line 135, in vercmp
> r = vercmp_part(va, vb)
> File "/home/alexander/development/poky/bitbake/lib/bb/utils.py", line 124, in vercmp_part
> elif ca < cb:
> TypeError: '<' not supported between instances of 'NoneType' and 'int'
I was seeing the same error on versions not ending with '.', in my case:
bb.utils.vercmp((0,1.0.2r,r0.0webos22), (0,1.0.2r0webos19,r0.0webos21)
Which lead to do_packagedata failure through buildhistory_emit_pkghistory shown bellow.
Alex's fix works for the above versions as well, should I extend
the bb.utils.vercmp selftest with even weirder versions like we're using
or leave it as is?
The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
0001:
*** 0002:buildhistory_emit_pkghistory(d)
0003:
File: 'oe-core/meta/classes/buildhistory.bbclass', lineno: 263, function: buildhistory_emit_pkghistory
0259: last_pkge = lastversion.pkge
0260: last_pkgv = lastversion.pkgv
0261: last_pkgr = lastversion.pkgr
0262: bb.warn("bb.utils.vercmp((%s,%s,%s), (%s,%s,%s)" % (pkge, pkgv, pkgr, last_pkge, last_pkgv, last_pkgr))
*** 0263: r = bb.utils.vercmp((pkge, pkgv, pkgr), (last_pkge, last_pkgv, last_pkgr))
0264: if r < 0:
0265: msg = "Package version for package %s went backwards which would break package feeds from (%s:%s-%s to %s:%s-%s)" % (pkg, last_pkge, last_pkgv, last_pkgr, pkge, pkgv, pkgr)
0266: package_qa_handle_error("version-going-backwards", msg, d)
0267:
File: 'bitbake/lib/bb/utils.py', lineno: 134, function: vercmp
0130: (eb, vb, rb) = tb
0131:
0132: r = int(ea or 0) - int(eb or 0)
0133: if (r == 0):
*** 0134: r = vercmp_part(va, vb)
0135: if (r == 0):
0136: r = vercmp_part(ra, rb)
0137: return r
0138:
File: 'bitbake/lib/bb/utils.py', lineno: 123, function: vercmp_part
0119: if oa < ob:
0120: return -1
0121: elif oa > ob:
0122: return 1
*** 0123: elif ca < cb:
0124: return -1
0125: elif ca > cb:
0126: return 1
0127:
Exception: TypeError: '<' not supported between instances of 'NoneType' and 'int'
>
> ----------------------------------------------------------------------
>
> Signed-off-by: Alexander Kanavin <alex.kanavin at gmail.com>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
> lib/bb/tests/utils.py | 4 ++++
> lib/bb/utils.py | 4 ++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/lib/bb/tests/utils.py b/lib/bb/tests/utils.py
> index 2f4ccf3c..f1cd83a4 100644
> --- a/lib/bb/tests/utils.py
> +++ b/lib/bb/tests/utils.py
> @@ -42,6 +42,10 @@ class VerCmpString(unittest.TestCase):
> self.assertTrue(result < 0)
> result = bb.utils.vercmp_string('1.1', '1.0+1.1-beta1')
> self.assertTrue(result > 0)
> + result = bb.utils.vercmp_string('1.', '1.1')
> + self.assertTrue(result < 0)
> + result = bb.utils.vercmp_string('1.1', '1.')
> + self.assertTrue(result > 0)
>
> def test_explode_dep_versions(self):
> correctresult = {"foo" : ["= 1.10"]}
> diff --git a/lib/bb/utils.py b/lib/bb/utils.py
> index 73b6cb42..215c18cf 100644
> --- a/lib/bb/utils.py
> +++ b/lib/bb/utils.py
> @@ -120,6 +120,10 @@ def vercmp_part(a, b):
> return -1
> elif oa > ob:
> return 1
> + elif ca is None:
> + return -1
> + elif cb is None:
> + return 1
> elif ca < cb:
> return -1
> elif ca > cb:
> --
> 2.17.1
>
--
Martin 'JaMa' Jansa jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20190615/38d45d5c/attachment.sig>
More information about the bitbake-devel
mailing list