summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGregor <dan.mcgregor@usask.ca>2024-09-09 09:41:51 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-09-12 16:17:20 +0100
commitde29354e8410c07905a8d129d260cd52536aaa30 (patch)
tree401eff7efe36e32af2348a26e32280464b72577f
parentd016d18a9f14871c444a13305f4040f28000a21f (diff)
downloadpoky-de29354e8410c07905a8d129d260cd52536aaa30.tar.gz
bitbake: prserv: increment 9 to 10 correctly
Previously, incrementing "0.9" would result in "0.1.0", which generally gets recognised as a lower version number. Even more surprising, incrementing "0.99" returned "0.1.0.0". This is due to the behaviour of the list function on a string object; it adds each character as an element in a new list, causing the new string '10' to become the list [ '1', '0' ]. Instead of converting a string to a list, add the string to a new list, and concatenate it with the existing list slice. And provide test cases for "0.9" -> "0.10" and related edge cases. (Bitbake rev: 96ddeefa88ff4c37e9ea096726a7cdca5b5b4572) Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/prserv/__init__.py2
-rw-r--r--bitbake/lib/prserv/tests.py2
2 files changed, 3 insertions, 1 deletions
diff --git a/bitbake/lib/prserv/__init__.py b/bitbake/lib/prserv/__init__.py
index a817b03c1e..ffc5a40a28 100644
--- a/bitbake/lib/prserv/__init__.py
+++ b/bitbake/lib/prserv/__init__.py
@@ -34,7 +34,7 @@ def increase_revision(ver):
34 logger.critical("Unable to increase revision value %s: %s" % (ver, e)) 34 logger.critical("Unable to increase revision value %s: %s" % (ver, e))
35 raise e 35 raise e
36 36
37 return ".".join(fields[0:-1] + list(str(val + 1))) 37 return ".".join(fields[0:-1] + [ str(val + 1) ])
38 38
39def _revision_greater_or_equal(rev1, rev2): 39def _revision_greater_or_equal(rev1, rev2):
40 """Compares x.y.z revision numbers, using integer comparison 40 """Compares x.y.z revision numbers, using integer comparison
diff --git a/bitbake/lib/prserv/tests.py b/bitbake/lib/prserv/tests.py
index 8765b129f2..df0c003003 100644
--- a/bitbake/lib/prserv/tests.py
+++ b/bitbake/lib/prserv/tests.py
@@ -84,6 +84,8 @@ class FunctionTests(unittest.TestCase):
84 self.assertEqual(increase_revision("1.0"), "1.1") 84 self.assertEqual(increase_revision("1.0"), "1.1")
85 self.assertEqual(increase_revision("1.1.1"), "1.1.2") 85 self.assertEqual(increase_revision("1.1.1"), "1.1.2")
86 self.assertEqual(increase_revision("1.1.1.3"), "1.1.1.4") 86 self.assertEqual(increase_revision("1.1.1.3"), "1.1.1.4")
87 self.assertEqual(increase_revision("9"), "10")
88 self.assertEqual(increase_revision("1.9"), "1.10")
87 self.assertRaises(ValueError, increase_revision, "1.a") 89 self.assertRaises(ValueError, increase_revision, "1.a")
88 self.assertRaises(ValueError, increase_revision, "1.") 90 self.assertRaises(ValueError, increase_revision, "1.")
89 self.assertRaises(ValueError, increase_revision, "") 91 self.assertRaises(ValueError, increase_revision, "")