summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/prserv/serv.py
diff options
context:
space:
mode:
authorMichael Opdenacker <michael.opdenacker@bootlin.com>2024-04-12 11:02:29 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-04-12 18:04:00 +0100
commit0087b3e7291428f80ede303e0edcfb114611eed5 (patch)
tree4bf64f846082443b3c6148f060c01b35eba53211 /bitbake/lib/prserv/serv.py
parent0154036c061b1d50531bf6a1ba9dd4e226f77a54 (diff)
downloadpoky-0087b3e7291428f80ede303e0edcfb114611eed5.tar.gz
bitbake: prserv: add extra requests
Useful for connecting a PR server to an upstream one - "test-package" checks whether the specified package version and arch is known in the database. - "test-pr" checks a specified output hash is found in the database. Otherwise it returns 'None' instead of a new value. - "max-package-pr" returns the highest PR number for (version, arch) entries in the database, and None if not found Add new DB functions supporting the above, plus test_value() which tells whether a given value is available for the specified package and architecture. (Bitbake rev: c65b5d9056e3f8b9869b3fdc8689f43a0b83b10e) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Cc: Joshua Watt <JPEWhacker@gmail.com> Cc: Tim Orling <ticotimo@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/prserv/serv.py')
-rw-r--r--bitbake/lib/prserv/serv.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py
index efb2e0cf93..86bd3bb75f 100644
--- a/bitbake/lib/prserv/serv.py
+++ b/bitbake/lib/prserv/serv.py
@@ -26,6 +26,9 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
26 26
27 self.handlers.update({ 27 self.handlers.update({
28 "get-pr": self.handle_get_pr, 28 "get-pr": self.handle_get_pr,
29 "test-pr": self.handle_test_pr,
30 "test-package": self.handle_test_package,
31 "max-package-pr": self.handle_max_package_pr,
29 "import-one": self.handle_import_one, 32 "import-one": self.handle_import_one,
30 "export": self.handle_export, 33 "export": self.handle_export,
31 "is-readonly": self.handle_is_readonly, 34 "is-readonly": self.handle_is_readonly,
@@ -43,6 +46,31 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
43 else: 46 else:
44 self.server.table.sync_if_dirty() 47 self.server.table.sync_if_dirty()
45 48
49 async def handle_test_pr(self, request):
50 '''Finds the PR value corresponding to the request. If not found, returns None and doesn't insert a new value'''
51 version = request["version"]
52 pkgarch = request["pkgarch"]
53 checksum = request["checksum"]
54
55 value = self.server.table.find_value(version, pkgarch, checksum)
56 return {"value": value}
57
58 async def handle_test_package(self, request):
59 '''Tells whether there are entries for (version, pkgarch) in the db. Returns True or False'''
60 version = request["version"]
61 pkgarch = request["pkgarch"]
62
63 value = self.server.table.test_package(version, pkgarch)
64 return {"value": value}
65
66 async def handle_max_package_pr(self, request):
67 '''Finds the greatest PR value for (version, pkgarch) in the db. Returns None if no entry was found'''
68 version = request["version"]
69 pkgarch = request["pkgarch"]
70
71 value = self.server.table.find_max_value(version, pkgarch)
72 return {"value": value}
73
46 async def handle_get_pr(self, request): 74 async def handle_get_pr(self, request):
47 version = request["version"] 75 version = request["version"]
48 pkgarch = request["pkgarch"] 76 pkgarch = request["pkgarch"]