diff options
| author | Michael Opdenacker <michael.opdenacker@bootlin.com> | 2024-04-12 11:02:24 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-04-14 06:31:45 +0100 |
| commit | 4b1ef692a9db79321be765c8e38de953ac52a7e1 (patch) | |
| tree | 4541a7a253ac53623ff45f2efa92c2ffc9b94f07 | |
| parent | 8d78b5f9c5cee19ed98e65577bf9e3a325d859b3 (diff) | |
| download | poky-4b1ef692a9db79321be765c8e38de953ac52a7e1.tar.gz | |
bitbake: prserv: use double quotes by default
To aligh with the hashserv code
(Bitbake rev: 7a6999750791659eaffe49aabfbfba9f37f51913)
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>
| -rwxr-xr-x | bitbake/bin/bitbake-prserv | 4 | ||||
| -rw-r--r-- | bitbake/lib/prserv/__init__.py | 4 | ||||
| -rw-r--r-- | bitbake/lib/prserv/client.py | 20 | ||||
| -rw-r--r-- | bitbake/lib/prserv/db.py | 32 | ||||
| -rw-r--r-- | bitbake/lib/prserv/serv.py | 64 |
5 files changed, 62 insertions, 62 deletions
diff --git a/bitbake/bin/bitbake-prserv b/bitbake/bin/bitbake-prserv index 5be42f3ce5..8c3808fb20 100755 --- a/bitbake/bin/bitbake-prserv +++ b/bitbake/bin/bitbake-prserv | |||
| @@ -11,14 +11,14 @@ import optparse | |||
| 11 | import warnings | 11 | import warnings |
| 12 | warnings.simplefilter("default") | 12 | warnings.simplefilter("default") |
| 13 | 13 | ||
| 14 | sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),'lib')) | 14 | sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), "lib")) |
| 15 | 15 | ||
| 16 | import prserv | 16 | import prserv |
| 17 | import prserv.serv | 17 | import prserv.serv |
| 18 | 18 | ||
| 19 | __version__="1.0.0" | 19 | __version__="1.0.0" |
| 20 | 20 | ||
| 21 | PRHOST_DEFAULT='0.0.0.0' | 21 | PRHOST_DEFAULT="0.0.0.0" |
| 22 | PRPORT_DEFAULT=8585 | 22 | PRPORT_DEFAULT=8585 |
| 23 | 23 | ||
| 24 | def main(): | 24 | def main(): |
diff --git a/bitbake/lib/prserv/__init__.py b/bitbake/lib/prserv/__init__.py index 38ced818ad..5790a8db1e 100644 --- a/bitbake/lib/prserv/__init__.py +++ b/bitbake/lib/prserv/__init__.py | |||
| @@ -12,8 +12,8 @@ import sys,logging | |||
| 12 | def init_logger(logfile, loglevel): | 12 | def init_logger(logfile, loglevel): |
| 13 | numeric_level = getattr(logging, loglevel.upper(), None) | 13 | numeric_level = getattr(logging, loglevel.upper(), None) |
| 14 | if not isinstance(numeric_level, int): | 14 | if not isinstance(numeric_level, int): |
| 15 | raise ValueError('Invalid log level: %s' % loglevel) | 15 | raise ValueError("Invalid log level: %s" % loglevel) |
| 16 | FORMAT = '%(asctime)-15s %(message)s' | 16 | FORMAT = "%(asctime)-15s %(message)s" |
| 17 | logging.basicConfig(level=numeric_level, filename=logfile, format=FORMAT) | 17 | logging.basicConfig(level=numeric_level, filename=logfile, format=FORMAT) |
| 18 | 18 | ||
| 19 | class NotFoundError(Exception): | 19 | class NotFoundError(Exception): |
diff --git a/bitbake/lib/prserv/client.py b/bitbake/lib/prserv/client.py index 6b81356fac..7bc5188c53 100644 --- a/bitbake/lib/prserv/client.py +++ b/bitbake/lib/prserv/client.py | |||
| @@ -11,40 +11,40 @@ logger = logging.getLogger("BitBake.PRserv") | |||
| 11 | 11 | ||
| 12 | class PRAsyncClient(bb.asyncrpc.AsyncClient): | 12 | class PRAsyncClient(bb.asyncrpc.AsyncClient): |
| 13 | def __init__(self): | 13 | def __init__(self): |
| 14 | super().__init__('PRSERVICE', '1.0', logger) | 14 | super().__init__("PRSERVICE", "1.0", logger) |
| 15 | 15 | ||
| 16 | async def getPR(self, version, pkgarch, checksum): | 16 | async def getPR(self, version, pkgarch, checksum): |
| 17 | response = await self.invoke( | 17 | response = await self.invoke( |
| 18 | {'get-pr': {'version': version, 'pkgarch': pkgarch, 'checksum': checksum}} | 18 | {"get-pr": {"version": version, "pkgarch": pkgarch, "checksum": checksum}} |
| 19 | ) | 19 | ) |
| 20 | if response: | 20 | if response: |
| 21 | return response['value'] | 21 | return response["value"] |
| 22 | 22 | ||
| 23 | async def importone(self, version, pkgarch, checksum, value): | 23 | async def importone(self, version, pkgarch, checksum, value): |
| 24 | response = await self.invoke( | 24 | response = await self.invoke( |
| 25 | {'import-one': {'version': version, 'pkgarch': pkgarch, 'checksum': checksum, 'value': value}} | 25 | {"import-one": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "value": value}} |
| 26 | ) | 26 | ) |
| 27 | if response: | 27 | if response: |
| 28 | return response['value'] | 28 | return response["value"] |
| 29 | 29 | ||
| 30 | async def export(self, version, pkgarch, checksum, colinfo): | 30 | async def export(self, version, pkgarch, checksum, colinfo): |
| 31 | response = await self.invoke( | 31 | response = await self.invoke( |
| 32 | {'export': {'version': version, 'pkgarch': pkgarch, 'checksum': checksum, 'colinfo': colinfo}} | 32 | {"export": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "colinfo": colinfo}} |
| 33 | ) | 33 | ) |
| 34 | if response: | 34 | if response: |
| 35 | return (response['metainfo'], response['datainfo']) | 35 | return (response["metainfo"], response["datainfo"]) |
| 36 | 36 | ||
| 37 | async def is_readonly(self): | 37 | async def is_readonly(self): |
| 38 | response = await self.invoke( | 38 | response = await self.invoke( |
| 39 | {'is-readonly': {}} | 39 | {"is-readonly": {}} |
| 40 | ) | 40 | ) |
| 41 | if response: | 41 | if response: |
| 42 | return response['readonly'] | 42 | return response["readonly"] |
| 43 | 43 | ||
| 44 | class PRClient(bb.asyncrpc.Client): | 44 | class PRClient(bb.asyncrpc.Client): |
| 45 | def __init__(self): | 45 | def __init__(self): |
| 46 | super().__init__() | 46 | super().__init__() |
| 47 | self._add_methods('getPR', 'importone', 'export', 'is_readonly') | 47 | self._add_methods("getPR", "importone", "export", "is_readonly") |
| 48 | 48 | ||
| 49 | def _get_async_client(self): | 49 | def _get_async_client(self): |
| 50 | return PRAsyncClient() | 50 | return PRAsyncClient() |
diff --git a/bitbake/lib/prserv/db.py b/bitbake/lib/prserv/db.py index b4bda7078c..0859cf4f2c 100644 --- a/bitbake/lib/prserv/db.py +++ b/bitbake/lib/prserv/db.py | |||
| @@ -64,7 +64,7 @@ class PRTable(object): | |||
| 64 | try: | 64 | try: |
| 65 | return self.conn.execute(*query) | 65 | return self.conn.execute(*query) |
| 66 | except sqlite3.OperationalError as exc: | 66 | except sqlite3.OperationalError as exc: |
| 67 | if 'is locked' in str(exc) and end > time.time(): | 67 | if "is locked" in str(exc) and end > time.time(): |
| 68 | continue | 68 | continue |
| 69 | raise exc | 69 | raise exc |
| 70 | 70 | ||
| @@ -220,18 +220,18 @@ class PRTable(object): | |||
| 220 | metainfo = {} | 220 | metainfo = {} |
| 221 | #column info | 221 | #column info |
| 222 | if colinfo: | 222 | if colinfo: |
| 223 | metainfo['tbl_name'] = self.table | 223 | metainfo["tbl_name"] = self.table |
| 224 | metainfo['core_ver'] = prserv.__version__ | 224 | metainfo["core_ver"] = prserv.__version__ |
| 225 | metainfo['col_info'] = [] | 225 | metainfo["col_info"] = [] |
| 226 | data = self._execute("PRAGMA table_info(%s);" % self.table) | 226 | data = self._execute("PRAGMA table_info(%s);" % self.table) |
| 227 | for row in data: | 227 | for row in data: |
| 228 | col = {} | 228 | col = {} |
| 229 | col['name'] = row['name'] | 229 | col["name"] = row["name"] |
| 230 | col['type'] = row['type'] | 230 | col["type"] = row["type"] |
| 231 | col['notnull'] = row['notnull'] | 231 | col["notnull"] = row["notnull"] |
| 232 | col['dflt_value'] = row['dflt_value'] | 232 | col["dflt_value"] = row["dflt_value"] |
| 233 | col['pk'] = row['pk'] | 233 | col["pk"] = row["pk"] |
| 234 | metainfo['col_info'].append(col) | 234 | metainfo["col_info"].append(col) |
| 235 | 235 | ||
| 236 | #data info | 236 | #data info |
| 237 | datainfo = [] | 237 | datainfo = [] |
| @@ -261,12 +261,12 @@ class PRTable(object): | |||
| 261 | else: | 261 | else: |
| 262 | data = self._execute(sqlstmt) | 262 | data = self._execute(sqlstmt) |
| 263 | for row in data: | 263 | for row in data: |
| 264 | if row['version']: | 264 | if row["version"]: |
| 265 | col = {} | 265 | col = {} |
| 266 | col['version'] = row['version'] | 266 | col["version"] = row["version"] |
| 267 | col['pkgarch'] = row['pkgarch'] | 267 | col["pkgarch"] = row["pkgarch"] |
| 268 | col['checksum'] = row['checksum'] | 268 | col["checksum"] = row["checksum"] |
| 269 | col['value'] = row['value'] | 269 | col["value"] = row["value"] |
| 270 | datainfo.append(col) | 270 | datainfo.append(col) |
| 271 | return (metainfo, datainfo) | 271 | return (metainfo, datainfo) |
| 272 | 272 | ||
| @@ -275,7 +275,7 @@ class PRTable(object): | |||
| 275 | for line in self.conn.iterdump(): | 275 | for line in self.conn.iterdump(): |
| 276 | writeCount = writeCount + len(line) + 1 | 276 | writeCount = writeCount + len(line) + 1 |
| 277 | fd.write(line) | 277 | fd.write(line) |
| 278 | fd.write('\n') | 278 | fd.write("\n") |
| 279 | return writeCount | 279 | return writeCount |
| 280 | 280 | ||
| 281 | class PRData(object): | 281 | class PRData(object): |
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index 28af636966..49f5ae36db 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py | |||
| @@ -21,14 +21,14 @@ singleton = None | |||
| 21 | 21 | ||
| 22 | class PRServerClient(bb.asyncrpc.AsyncServerConnection): | 22 | class PRServerClient(bb.asyncrpc.AsyncServerConnection): |
| 23 | def __init__(self, socket, server): | 23 | def __init__(self, socket, server): |
| 24 | super().__init__(socket, 'PRSERVICE', server.logger) | 24 | super().__init__(socket, "PRSERVICE", server.logger) |
| 25 | self.server = server | 25 | self.server = server |
| 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 | 'import-one': self.handle_import_one, | 29 | "import-one": self.handle_import_one, |
| 30 | 'export': self.handle_export, | 30 | "export": self.handle_export, |
| 31 | 'is-readonly': self.handle_is_readonly, | 31 | "is-readonly": self.handle_is_readonly, |
| 32 | }) | 32 | }) |
| 33 | 33 | ||
| 34 | def validate_proto_version(self): | 34 | def validate_proto_version(self): |
| @@ -44,14 +44,14 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection): | |||
| 44 | self.server.table.sync_if_dirty() | 44 | self.server.table.sync_if_dirty() |
| 45 | 45 | ||
| 46 | async def handle_get_pr(self, request): | 46 | async def handle_get_pr(self, request): |
| 47 | version = request['version'] | 47 | version = request["version"] |
| 48 | pkgarch = request['pkgarch'] | 48 | pkgarch = request["pkgarch"] |
| 49 | checksum = request['checksum'] | 49 | checksum = request["checksum"] |
| 50 | 50 | ||
| 51 | response = None | 51 | response = None |
| 52 | try: | 52 | try: |
| 53 | value = self.server.table.getValue(version, pkgarch, checksum) | 53 | value = self.server.table.getValue(version, pkgarch, checksum) |
| 54 | response = {'value': value} | 54 | response = {"value": value} |
| 55 | except prserv.NotFoundError: | 55 | except prserv.NotFoundError: |
| 56 | logger.error("can not find value for (%s, %s)",version, checksum) | 56 | logger.error("can not find value for (%s, %s)",version, checksum) |
| 57 | except sqlite3.Error as exc: | 57 | except sqlite3.Error as exc: |
| @@ -62,22 +62,22 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection): | |||
| 62 | async def handle_import_one(self, request): | 62 | async def handle_import_one(self, request): |
| 63 | response = None | 63 | response = None |
| 64 | if not self.server.read_only: | 64 | if not self.server.read_only: |
| 65 | version = request['version'] | 65 | version = request["version"] |
| 66 | pkgarch = request['pkgarch'] | 66 | pkgarch = request["pkgarch"] |
| 67 | checksum = request['checksum'] | 67 | checksum = request["checksum"] |
| 68 | value = request['value'] | 68 | value = request["value"] |
| 69 | 69 | ||
| 70 | value = self.server.table.importone(version, pkgarch, checksum, value) | 70 | value = self.server.table.importone(version, pkgarch, checksum, value) |
| 71 | if value is not None: | 71 | if value is not None: |
| 72 | response = {'value': value} | 72 | response = {"value": value} |
| 73 | 73 | ||
| 74 | return response | 74 | return response |
| 75 | 75 | ||
| 76 | async def handle_export(self, request): | 76 | async def handle_export(self, request): |
| 77 | version = request['version'] | 77 | version = request["version"] |
| 78 | pkgarch = request['pkgarch'] | 78 | pkgarch = request["pkgarch"] |
| 79 | checksum = request['checksum'] | 79 | checksum = request["checksum"] |
| 80 | colinfo = request['colinfo'] | 80 | colinfo = request["colinfo"] |
| 81 | 81 | ||
| 82 | try: | 82 | try: |
| 83 | (metainfo, datainfo) = self.server.table.export(version, pkgarch, checksum, colinfo) | 83 | (metainfo, datainfo) = self.server.table.export(version, pkgarch, checksum, colinfo) |
| @@ -85,10 +85,10 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection): | |||
| 85 | logger.error(str(exc)) | 85 | logger.error(str(exc)) |
| 86 | metainfo = datainfo = None | 86 | metainfo = datainfo = None |
| 87 | 87 | ||
| 88 | return {'metainfo': metainfo, 'datainfo': datainfo} | 88 | return {"metainfo": metainfo, "datainfo": datainfo} |
| 89 | 89 | ||
| 90 | async def handle_is_readonly(self, request): | 90 | async def handle_is_readonly(self, request): |
| 91 | return {'readonly': self.server.read_only} | 91 | return {"readonly": self.server.read_only} |
| 92 | 92 | ||
| 93 | class PRServer(bb.asyncrpc.AsyncServer): | 93 | class PRServer(bb.asyncrpc.AsyncServer): |
| 94 | def __init__(self, dbfile, read_only=False): | 94 | def __init__(self, dbfile, read_only=False): |
| @@ -135,7 +135,7 @@ class PRServSingleton(object): | |||
| 135 | if not self.prserv.address: | 135 | if not self.prserv.address: |
| 136 | raise PRServiceConfigError | 136 | raise PRServiceConfigError |
| 137 | if not self.port: | 137 | if not self.port: |
| 138 | self.port = int(self.prserv.address.rsplit(':', 1)[1]) | 138 | self.port = int(self.prserv.address.rsplit(":", 1)[1]) |
| 139 | 139 | ||
| 140 | def run_as_daemon(func, pidfile, logfile): | 140 | def run_as_daemon(func, pidfile, logfile): |
| 141 | """ | 141 | """ |
| @@ -171,12 +171,12 @@ def run_as_daemon(func, pidfile, logfile): | |||
| 171 | # stdout/stderr or it could be 'real' unix fd forking where we need | 171 | # stdout/stderr or it could be 'real' unix fd forking where we need |
| 172 | # to physically close the fds to prevent the program launching us from | 172 | # to physically close the fds to prevent the program launching us from |
| 173 | # potentially hanging on a pipe. Handle both cases. | 173 | # potentially hanging on a pipe. Handle both cases. |
| 174 | si = open('/dev/null', 'r') | 174 | si = open("/dev/null", "r") |
| 175 | try: | 175 | try: |
| 176 | os.dup2(si.fileno(),sys.stdin.fileno()) | 176 | os.dup2(si.fileno(),sys.stdin.fileno()) |
| 177 | except (AttributeError, io.UnsupportedOperation): | 177 | except (AttributeError, io.UnsupportedOperation): |
| 178 | sys.stdin = si | 178 | sys.stdin = si |
| 179 | so = open(logfile, 'a+') | 179 | so = open(logfile, "a+") |
| 180 | try: | 180 | try: |
| 181 | os.dup2(so.fileno(),sys.stdout.fileno()) | 181 | os.dup2(so.fileno(),sys.stdout.fileno()) |
| 182 | except (AttributeError, io.UnsupportedOperation): | 182 | except (AttributeError, io.UnsupportedOperation): |
| @@ -200,7 +200,7 @@ def run_as_daemon(func, pidfile, logfile): | |||
| 200 | 200 | ||
| 201 | # write pidfile | 201 | # write pidfile |
| 202 | pid = str(os.getpid()) | 202 | pid = str(os.getpid()) |
| 203 | with open(pidfile, 'w') as pf: | 203 | with open(pidfile, "w") as pf: |
| 204 | pf.write("%s\n" % pid) | 204 | pf.write("%s\n" % pid) |
| 205 | 205 | ||
| 206 | func() | 206 | func() |
| @@ -245,12 +245,12 @@ def stop_daemon(host, port): | |||
| 245 | # so at least advise the user which ports the corresponding server is listening | 245 | # so at least advise the user which ports the corresponding server is listening |
| 246 | ports = [] | 246 | ports = [] |
| 247 | portstr = "" | 247 | portstr = "" |
| 248 | for pf in glob.glob(PIDPREFIX % (ip,'*')): | 248 | for pf in glob.glob(PIDPREFIX % (ip, "*")): |
| 249 | bn = os.path.basename(pf) | 249 | bn = os.path.basename(pf) |
| 250 | root, _ = os.path.splitext(bn) | 250 | root, _ = os.path.splitext(bn) |
| 251 | ports.append(root.split('_')[-1]) | 251 | ports.append(root.split("_")[-1]) |
| 252 | if len(ports): | 252 | if len(ports): |
| 253 | portstr = "Wrong port? Other ports listening at %s: %s" % (host, ' '.join(ports)) | 253 | portstr = "Wrong port? Other ports listening at %s: %s" % (host, " ".join(ports)) |
| 254 | 254 | ||
| 255 | sys.stderr.write("pidfile %s does not exist. Daemon not running? %s\n" | 255 | sys.stderr.write("pidfile %s does not exist. Daemon not running? %s\n" |
| 256 | % (pidfile,portstr)) | 256 | % (pidfile,portstr)) |
| @@ -284,7 +284,7 @@ def is_running(pid): | |||
| 284 | return True | 284 | return True |
| 285 | 285 | ||
| 286 | def is_local_special(host, port): | 286 | def is_local_special(host, port): |
| 287 | if (host == 'localhost' or host == '127.0.0.1') and not port: | 287 | if (host == "localhost" or host == "127.0.0.1") and not port: |
| 288 | return True | 288 | return True |
| 289 | else: | 289 | else: |
| 290 | return False | 290 | return False |
| @@ -295,7 +295,7 @@ class PRServiceConfigError(Exception): | |||
| 295 | def auto_start(d): | 295 | def auto_start(d): |
| 296 | global singleton | 296 | global singleton |
| 297 | 297 | ||
| 298 | host_params = list(filter(None, (d.getVar('PRSERV_HOST') or '').split(':'))) | 298 | host_params = list(filter(None, (d.getVar("PRSERV_HOST") or "").split(":"))) |
| 299 | if not host_params: | 299 | if not host_params: |
| 300 | # Shutdown any existing PR Server | 300 | # Shutdown any existing PR Server |
| 301 | auto_shutdown() | 301 | auto_shutdown() |
| @@ -304,7 +304,7 @@ def auto_start(d): | |||
| 304 | if len(host_params) != 2: | 304 | if len(host_params) != 2: |
| 305 | # Shutdown any existing PR Server | 305 | # Shutdown any existing PR Server |
| 306 | auto_shutdown() | 306 | auto_shutdown() |
| 307 | logger.critical('\n'.join(['PRSERV_HOST: incorrect format', | 307 | logger.critical("\n".join(["PRSERV_HOST: incorrect format", |
| 308 | 'Usage: PRSERV_HOST = "<hostname>:<port>"'])) | 308 | 'Usage: PRSERV_HOST = "<hostname>:<port>"'])) |
| 309 | raise PRServiceConfigError | 309 | raise PRServiceConfigError |
| 310 | 310 | ||
| @@ -357,8 +357,8 @@ def connect(host, port): | |||
| 357 | 357 | ||
| 358 | global singleton | 358 | global singleton |
| 359 | 359 | ||
| 360 | if host.strip().lower() == 'localhost' and not port: | 360 | if host.strip().lower() == "localhost" and not port: |
| 361 | host = 'localhost' | 361 | host = "localhost" |
| 362 | port = singleton.port | 362 | port = singleton.port |
| 363 | 363 | ||
| 364 | conn = client.PRClient() | 364 | conn = client.PRClient() |
