]> glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/actions/upgrader.py
user_manager: Fix quotes f-string
[waydroid.git] / tools / actions / upgrader.py
1 # Copyright 2021 Erfan Abdi
2 # SPDX-License-Identifier: GPL-3.0-or-later
3 import logging
4 import os
5 from tools import helpers
6 from tools.helpers.version import versiontuple
7 import tools.config
8
9 def get_config(args):
10 cfg = tools.config.load(args)
11 args.arch = cfg["waydroid"]["arch"]
12 args.images_path = cfg["waydroid"]["images_path"]
13 args.vendor_type = cfg["waydroid"]["vendor_type"]
14 args.system_ota = cfg["waydroid"]["system_ota"]
15 args.vendor_ota = cfg["waydroid"]["vendor_ota"]
16 args.session = None
17
18 def migration(args):
19 try:
20 old_ver = tools.helpers.props.file_get(args, args.work + "/waydroid_base.prop", "waydroid.tools_version")
21 if versiontuple(old_ver) <= versiontuple("1.3.4"):
22 chmod_paths = ["cache_http", "host-permissions", "lxc", "images", "rootfs", "data", "waydroid_base.prop", "waydroid.prop", "waydroid.cfg"]
23 tools.helpers.run.user(args, ["chmod", "-R", "g-w,o-w"] + [os.path.join(args.work, f) for f in chmod_paths], check=False)
24 tools.helpers.run.user(args, ["chmod", "g-w,o-w", args.work], check=False)
25 os.remove(os.path.join(args.work, "session.cfg"))
26 if versiontuple(old_ver) <= versiontuple("1.6.0"):
27 # Because we now default adb to secure, disable auto_adb to avoid prompting the user on every session startup
28 cfg = tools.config.load(args)
29 cfg["waydroid"]["auto_adb"] = "False"
30 tools.config.save(args, cfg)
31 except:
32 pass
33
34 def upgrade(args):
35 get_config(args)
36 status = "STOPPED"
37 if os.path.exists(tools.config.defaults["lxc"] + "/waydroid"):
38 status = helpers.lxc.status(args)
39 if status != "STOPPED":
40 logging.info("Stopping container")
41 try:
42 container = tools.helpers.ipc.DBusContainerService()
43 args.session = container.GetSession()
44 container.Stop(False)
45 except Exception as e:
46 logging.debug(e)
47 tools.actions.container_manager.stop(args)
48 migration(args)
49 helpers.drivers.loadBinderNodes(args)
50 if not args.offline:
51 if args.images_path not in tools.config.defaults["preinstalled_images_paths"]:
52 helpers.images.get(args)
53 else:
54 logging.info("Upgrade refused because Waydroid was configured to load pre-installed image from {}.".format(args.images_path))
55 helpers.drivers.probeAshmemDriver(args)
56 helpers.lxc.setup_host_perms(args)
57 helpers.lxc.set_lxc_config(args)
58 helpers.lxc.make_base_props(args)
59 if status != "STOPPED":
60 logging.info("Starting container")
61 try:
62 container.Start(args.session)
63 except Exception as e:
64 logging.debug(e)
65 logging.error("Failed to restart container. Please do so manually.")