X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/390263fed0ee02f038f38a8191c27f8c4b8fadfb..da4772c4e54467920d642e2a792c5d16d3b7bf33:/tools/__init__.py diff --git a/tools/__init__.py b/tools/__init__.py index 992049e..d317414 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -6,6 +6,8 @@ import logging import os import traceback import dbus.mainloop.glib +import dbus +import dbus.exceptions from . import actions from . import config @@ -22,7 +24,6 @@ def main(): # Wrap everything to display nice error messages args = None try: - os.umask(0o000) # Parse arguments, set up logging args = helpers.arguments() args.cache = {} @@ -42,11 +43,17 @@ def main(): dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) dbus.mainloop.glib.threads_init() + dbus_name_scope = None if not actions.initializer.is_initialized(args) and \ args.action and args.action not in ("init", "first-launch", "log"): if args.wait_for_init: - actions.wait_for_init(args) + try: + dbus_name_scope = dbus.service.BusName("id.waydro.Container", dbus.SystemBus(), do_not_queue=True) + actions.wait_for_init(args) + except dbus.exceptions.NameExistsException: + print('ERROR: WayDroid service is already awaiting initialization') + return 1 else: print('ERROR: WayDroid is not initialized, run "waydroid init"') return 0 @@ -69,6 +76,12 @@ def main(): elif args.action == "container": actionNeedRoot(args.action) if args.subaction == "start": + if dbus_name_scope is None: + try: + dbus_name_scope = dbus.service.BusName("id.waydro.Container", dbus.SystemBus(), do_not_queue=True) + except dbus.exceptions.NameExistsException: + print('ERROR: WayDroid container service is already running') + return 1 actions.container_manager.start(args) elif args.subaction == "stop": actions.container_manager.stop(args)