X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/da4772c4e54467920d642e2a792c5d16d3b7bf33..HEAD:/tools/actions/upgrader.py?ds=sidebyside diff --git a/tools/actions/upgrader.py b/tools/actions/upgrader.py index 605de44..e85b7bb 100644 --- a/tools/actions/upgrader.py +++ b/tools/actions/upgrader.py @@ -3,8 +3,8 @@ import logging import os from tools import helpers +from tools.helpers.version import versiontuple import tools.config -import dbus def get_config(args): cfg = tools.config.load(args) @@ -16,43 +16,50 @@ def get_config(args): args.session = None def migration(args): - def versiontuple(v): - return tuple(map(int, (v.split(".")))) - try: old_ver = tools.helpers.props.file_get(args, args.work + "/waydroid_base.prop", "waydroid.tools_version") if versiontuple(old_ver) <= versiontuple("1.3.4"): - chmod_paths = ["cache_http", "host-permissions", "lxc", "images", "waydroid_base.prop", "waydroid.prop", "waydroid.cfg"] + chmod_paths = ["cache_http", "host-permissions", "lxc", "images", "rootfs", "data", "waydroid_base.prop", "waydroid.prop", "waydroid.cfg"] tools.helpers.run.user(args, ["chmod", "-R", "g-w,o-w"] + [os.path.join(args.work, f) for f in chmod_paths], check=False) tools.helpers.run.user(args, ["chmod", "g-w,o-w", args.work], check=False) + os.remove(os.path.join(args.work, "session.cfg")) + if versiontuple(old_ver) <= versiontuple("1.6.0"): + # Because we now default adb to secure, disable auto_adb to avoid prompting the user on every session startup + cfg = tools.config.load(args) + cfg["waydroid"]["auto_adb"] = "False" + tools.config.save(args, cfg) except: pass def upgrade(args): get_config(args) - migration(args) status = "STOPPED" if os.path.exists(tools.config.defaults["lxc"] + "/waydroid"): status = helpers.lxc.status(args) if status != "STOPPED": logging.info("Stopping container") - helpers.lxc.stop(args) try: - args.session = tools.helpers.ipc.DBusContainerService().GetSession() - except dbus.DBusException: - pass - helpers.images.umount_rootfs(args) + container = tools.helpers.ipc.DBusContainerService() + args.session = container.GetSession() + container.Stop(False) + except Exception as e: + logging.debug(e) + tools.actions.container_manager.stop(args) + migration(args) helpers.drivers.loadBinderNodes(args) if not args.offline: if args.images_path not in tools.config.defaults["preinstalled_images_paths"]: helpers.images.get(args) else: - logging.info("Upgrade refused because a pre-installed image is detected at {}.".format(args.images_path)) + logging.info("Upgrade refused because Waydroid was configured to load pre-installed image from {}.".format(args.images_path)) + helpers.drivers.probeAshmemDriver(args) helpers.lxc.setup_host_perms(args) helpers.lxc.set_lxc_config(args) helpers.lxc.make_base_props(args) - if status != "STOPPED" and args.session: + if status != "STOPPED": logging.info("Starting container") - helpers.images.mount_rootfs(args, args.images_path, args.session) - helpers.protocol.set_aidl_version(args) - helpers.lxc.start(args) + try: + container.Start(args.session) + except Exception as e: + logging.debug(e) + logging.error("Failed to restart container. Please do so manually.")