summaryrefslogtreecommitdiffstats
path: root/bitbake/bin
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2023-11-03 08:26:24 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-11-09 17:33:02 +0000
commite90fccfefd7693d8cdfa731fa7e170c8bd4b1a1b (patch)
tree57354f9150dd5c3d4a70891abc45f0ae2ce448ca /bitbake/bin
parent4cdb0f00f9c687337bd08b97022349f4dddadcc0 (diff)
downloadpoky-e90fccfefd7693d8cdfa731fa7e170c8bd4b1a1b.tar.gz
bitbake: bitbake-hashserv: Allow arguments from environment
Allows the arguments to the bitbake-hashserv command to be specified in environment variables. This is a very common idiom when running services in containers as it allows the arguments to be specified from different sources as desired by the service administrator (Bitbake rev: f65c87fab07a730f2f4588764cb64508c2149b40) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/bin')
-rwxr-xr-xbitbake/bin/bitbake-hashserv80
1 files changed, 60 insertions, 20 deletions
diff --git a/bitbake/bin/bitbake-hashserv b/bitbake/bin/bitbake-hashserv
index 00af76b2d1..a916a90cb0 100755
--- a/bitbake/bin/bitbake-hashserv
+++ b/bitbake/bin/bitbake-hashserv
@@ -11,56 +11,96 @@ import logging
11import argparse 11import argparse
12import sqlite3 12import sqlite3
13import warnings 13import warnings
14
14warnings.simplefilter("default") 15warnings.simplefilter("default")
15 16
16sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib')) 17sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), "lib"))
17 18
18import hashserv 19import hashserv
19 20
20VERSION = "1.0.0" 21VERSION = "1.0.0"
21 22
22DEFAULT_BIND = 'unix://./hashserve.sock' 23DEFAULT_BIND = "unix://./hashserve.sock"
23 24
24 25
25def main(): 26def main():
26 parser = argparse.ArgumentParser(description='Hash Equivalence Reference Server. Version=%s' % VERSION, 27 parser = argparse.ArgumentParser(
27 epilog='''The bind address is the path to a unix domain socket if it is 28 description="Hash Equivalence Reference Server. Version=%s" % VERSION,
28 prefixed with "unix://". Otherwise, it is an IP address 29 formatter_class=argparse.RawTextHelpFormatter,
29 and port in form ADDRESS:PORT. To bind to all addresses, leave 30 epilog="""
30 the ADDRESS empty, e.g. "--bind :8686". To bind to a specific 31The bind address may take one of the following formats:
31 IPv6 address, enclose the address in "[]", e.g. 32 unix://PATH - Bind to unix domain socket at PATH
32 "--bind [::1]:8686"''' 33 ws://ADDRESS:PORT - Bind to websocket on ADDRESS:PORT
33 ) 34 ADDRESS:PORT - Bind to raw TCP socket on ADDRESS:PORT
34 35
35 parser.add_argument('-b', '--bind', default=DEFAULT_BIND, help='Bind address (default "%(default)s")') 36To bind to all addresses, leave the ADDRESS empty, e.g. "--bind :8686" or
36 parser.add_argument('-d', '--database', default='./hashserv.db', help='Database file (default "%(default)s")') 37"--bind ws://:8686". To bind to a specific IPv6 address, enclose the address in
37 parser.add_argument('-l', '--log', default='WARNING', help='Set logging level') 38"[]", e.g. "--bind [::1]:8686" or "--bind ws://[::1]:8686"
38 parser.add_argument('-u', '--upstream', help='Upstream hashserv to pull hashes from') 39 """,
39 parser.add_argument('-r', '--read-only', action='store_true', help='Disallow write operations from clients') 40 )
41
42 parser.add_argument(
43 "-b",
44 "--bind",
45 default=os.environ.get("HASHSERVER_BIND", DEFAULT_BIND),
46 help='Bind address (default $HASHSERVER_BIND, "%(default)s")',
47 )
48 parser.add_argument(
49 "-d",
50 "--database",
51 default=os.environ.get("HASHSERVER_DB", "./hashserv.db"),
52 help='Database file (default $HASHSERVER_DB, "%(default)s")',
53 )
54 parser.add_argument(
55 "-l",
56 "--log",
57 default=os.environ.get("HASHSERVER_LOG_LEVEL", "WARNING"),
58 help='Set logging level (default $HASHSERVER_LOG_LEVEL, "%(default)s")',
59 )
60 parser.add_argument(
61 "-u",
62 "--upstream",
63 default=os.environ.get("HASHSERVER_UPSTREAM", None),
64 help="Upstream hashserv to pull hashes from ($HASHSERVER_UPSTREAM)",
65 )
66 parser.add_argument(
67 "-r",
68 "--read-only",
69 action="store_true",
70 help="Disallow write operations from clients ($HASHSERVER_READ_ONLY)",
71 )
40 72
41 args = parser.parse_args() 73 args = parser.parse_args()
42 74
43 logger = logging.getLogger('hashserv') 75 logger = logging.getLogger("hashserv")
44 76
45 level = getattr(logging, args.log.upper(), None) 77 level = getattr(logging, args.log.upper(), None)
46 if not isinstance(level, int): 78 if not isinstance(level, int):
47 raise ValueError('Invalid log level: %s' % args.log) 79 raise ValueError("Invalid log level: %s" % args.log)
48 80
49 logger.setLevel(level) 81 logger.setLevel(level)
50 console = logging.StreamHandler() 82 console = logging.StreamHandler()
51 console.setLevel(level) 83 console.setLevel(level)
52 logger.addHandler(console) 84 logger.addHandler(console)
53 85
54 server = hashserv.create_server(args.bind, args.database, upstream=args.upstream, read_only=args.read_only) 86 read_only = (os.environ.get("HASHSERVER_READ_ONLY", "0") == "1") or args.read_only
87
88 server = hashserv.create_server(
89 args.bind,
90 args.database,
91 upstream=args.upstream,
92 read_only=read_only,
93 )
55 server.serve_forever() 94 server.serve_forever()
56 return 0 95 return 0
57 96
58 97
59if __name__ == '__main__': 98if __name__ == "__main__":
60 try: 99 try:
61 ret = main() 100 ret = main()
62 except Exception: 101 except Exception:
63 ret = 1 102 ret = 1
64 import traceback 103 import traceback
104
65 traceback.print_exc() 105 traceback.print_exc()
66 sys.exit(ret) 106 sys.exit(ret)