From 2cc269f5fc393b4dc8049bb72b0c939a5a12190c Mon Sep 17 00:00:00 2001 From: Erfan Abdi Date: Tue, 31 Aug 2021 13:05:19 +0430 Subject: [PATCH] Add support for preinstalled images MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * on “/usr/share/waydroid-extra/images” --- tools/actions/initializer.py | 28 +++++++++++++++++++++++----- tools/actions/upgrader.py | 3 ++- tools/config/__init__.py | 3 ++- tools/helpers/arguments.py | 1 - 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/tools/actions/initializer.py b/tools/actions/initializer.py index c5783a4..2173b45 100644 --- a/tools/actions/initializer.py +++ b/tools/actions/initializer.py @@ -21,6 +21,16 @@ def setup_config(args): cfg = tools.config.load(args) args.arch = helpers.arch.host() cfg["waydroid"]["arch"] = args.arch + + preinstalled_images = tools.config.defaults["preinstalled_images_path"] + 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") + if not args.images_path: + args.images_path = tools.config.defaults["images_path"] cfg["waydroid"]["images_path"] = args.images_path channels_cfg = tools.config.load_channels() @@ -37,8 +47,11 @@ def setup_config(args): "/waydroid_" + args.arch + "/" + args.system_type + ".json" system_request = requests.get(args.system_ota) if system_request.status_code != 200: - raise ValueError( - "Failed to get system OTA channel: {}".format(args.system_ota)) + if args.images_path != preinstalled_images: + raise ValueError( + "Failed to get system OTA channel: {}".format(args.system_ota)) + else: + args.system_ota = "None" device_codename = helpers.props.host_get(args, "ro.product.device") args.vendor_type = None @@ -52,8 +65,12 @@ def setup_config(args): break if not args.vendor_type: - raise ValueError( - "Failed to get vendor OTA channel: {}".format(vendor_ota)) + if args.images_path != preinstalled_images: + raise ValueError( + "Failed to get vendor OTA channel: {}".format(vendor_ota)) + else: + args.vendor_ota = "None" + args.vendor_type = get_vendor_type(args) cfg["waydroid"]["vendor_type"] = args.vendor_type cfg["waydroid"]["system_ota"] = args.system_ota @@ -74,7 +91,8 @@ def init(args): logging.info("Stopping container") helpers.lxc.stop(args) helpers.images.umount_rootfs(args) - helpers.images.get(args) + if args.images_path != tools.config.defaults["preinstalled_images_path"]: + helpers.images.get(args) if not os.path.isdir(tools.config.defaults["rootfs"]): os.mkdir(tools.config.defaults["rootfs"]) helpers.lxc.setup_host_perms(args) diff --git a/tools/actions/upgrader.py b/tools/actions/upgrader.py index cb1aaa5..71a64e7 100644 --- a/tools/actions/upgrader.py +++ b/tools/actions/upgrader.py @@ -25,7 +25,8 @@ def upgrade(args): helpers.images.umount_rootfs(args) helpers.drivers.loadBinderNodes(args) if not args.offline: - helpers.images.get(args) + if args.images_path != tools.config.defaults["preinstalled_images_path"]: + helpers.images.get(args) helpers.lxc.setup_host_perms(args) helpers.lxc.set_lxc_config(args) helpers.lxc.make_base_props(args) diff --git a/tools/config/__init__.py b/tools/config/__init__.py index f26e376..9af1657 100644 --- a/tools/config/__init__.py +++ b/tools/config/__init__.py @@ -41,7 +41,8 @@ defaults = { "work": "/home/.waydroid", "vendor_type": "MAINLINE", "system_datetime": "0", - "vendor_datetime": "0" + "vendor_datetime": "0", + "preinstalled_images_path": "/usr/share/waydroid-extra/images" } defaults["images_path"] = defaults["work"] + "/images" defaults["rootfs"] = defaults["work"] + "/rootfs" diff --git a/tools/helpers/arguments.py b/tools/helpers/arguments.py index 4c95287..1879c76 100644 --- a/tools/helpers/arguments.py +++ b/tools/helpers/arguments.py @@ -21,7 +21,6 @@ def arguments_init(subparser): ret = subparser.add_parser("init", help="set up waydroid specific" " configs and install images") ret.add_argument("-i", "--images_path", - default=tools.config.defaults["images_path"], help="custom path to waeiod images (default in" " /home/.waydroid/images)") ret.add_argument("-f", "--force", action="store_true", -- 2.47.3