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)
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.")