args.arch = helpers.arch.host()
cfg["waydroid"]["arch"] = args.arch
- preinstalled_images = tools.config.defaults["preinstalled_images_path"]
+ preinstalled_images_paths = tools.config.defaults["preinstalled_images_paths"]
if not args.images_path:
- if os.path.isdir(preinstalled_images):
- if os.path.isfile(preinstalled_images + "/system.img") and os.path.isfile(preinstalled_images + "/vendor.img"):
- args.images_path = preinstalled_images
- else:
- logging.error("Missing system or vendor on preinstalled images dir, fallback to default")
+ for preinstalled_images in preinstalled_images_paths:
+ if os.path.isdir(preinstalled_images):
+ if os.path.isfile(preinstalled_images + "/system.img") and os.path.isfile(preinstalled_images + "/vendor.img"):
+ args.images_path = preinstalled_images
+ break
+ else:
+ logging.warning("Found directory {} but missing system or vendor image, ignoring...".format(preinstalled_images))
+
if not args.images_path:
args.images_path = tools.config.defaults["images_path"]
cfg["waydroid"]["images_path"] = args.images_path
"/waydroid_" + args.arch + "/" + args.system_type + ".json"
system_request = helpers.http.retrieve(args.system_ota)
if system_request[0] != 200:
- if args.images_path != preinstalled_images:
+ if args.images_path not in preinstalled_images_paths:
raise ValueError(
"Failed to get system OTA channel: {}, error: {}".format(args.system_ota, system_request[0]))
else:
break
if not args.vendor_type:
- if args.images_path != preinstalled_images:
+ if args.images_path not in preinstalled_images_paths:
raise ValueError(
"Failed to get vendor OTA channel: {}".format(vendor_ota))
else:
logging.info("Stopping container")
helpers.lxc.stop(args)
helpers.images.umount_rootfs(args)
- if args.images_path != tools.config.defaults["preinstalled_images_path"]:
+ if args.images_path not in tools.config.defaults["preinstalled_images_paths"]:
helpers.images.get(args)
if not os.path.isdir(tools.config.defaults["rootfs"]):
os.mkdir(tools.config.defaults["rootfs"])
helpers.images.umount_rootfs(args)
helpers.drivers.loadBinderNodes(args)
if not args.offline:
- preinstalled_images_path = tools.config.defaults["preinstalled_images_path"]
- if args.images_path != preinstalled_images_path:
+ 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(preinstalled_images_path))
+ logging.info("Upgrade refused because a pre-installed image is detected at {}.".format(args.images_path))
helpers.lxc.setup_host_perms(args)
helpers.lxc.set_lxc_config(args)
helpers.lxc.make_base_props(args)
"vendor_type": "MAINLINE",
"system_datetime": "0",
"vendor_datetime": "0",
- "preinstalled_images_path": "/usr/share/waydroid-extra/images"
+ "preinstalled_images_paths": [
+ "/etc/waydroid-extra/images",
+ "/usr/share/waydroid-extra/images",
+ ]
}
defaults["images_path"] = defaults["work"] + "/images"
defaults["rootfs"] = defaults["work"] + "/rootfs"