]> glassweightruler.freedombox.rocks Git - waydroid.git/commitdiff
Improve robustness of the dynamic aidl version picker
authorAlessandro Astone <ales.astone@gmail.com>
Sun, 10 Jul 2022 14:56:38 +0000 (16:56 +0200)
committerErfan Abdi <erfangplus@gmail.com>
Wed, 13 Jul 2022 16:54:25 +0000 (21:24 +0430)
Detect the aidl version just before starting the session.
Allow reading None.

tools/actions/container_manager.py
tools/helpers/drivers.py

index 058893965e595b2d92a6675828d568065a7f973c..d6ce155f86935b8fc23849e26ab20d1e62bad94b 100644 (file)
@@ -86,14 +86,11 @@ def start(args):
         cfg = tools.config.load(args)
         android_api = 0
         try:
         cfg = tools.config.load(args)
         android_api = 0
         try:
-            mnt = "/tmp/waydroid-" + str(uuid.uuid1())
-            helpers.mount.mount(args, cfg["waydroid"]["images_path"] + "/system.img", mnt)
-            android_api = int(helpers.props.file_get(args, mnt + "/system/build.prop",
+            android_api = int(helpers.props.file_get(args,
+                    tools.config.defaults["rootfs"] + "/system/build.prop",
                     "ro.build.version.sdk"))
         except:
             logging.error("Failed to parse android version from system.img")
                     "ro.build.version.sdk"))
         except:
             logging.error("Failed to parse android version from system.img")
-        finally:
-            helpers.mount.umount_all(args, mnt);
 
         if android_api < 28:
             binder_protocol = "aidl"
 
         if android_api < 28:
             binder_protocol = "aidl"
@@ -117,8 +114,6 @@ def start(args):
         stop(args)
         sys.exit(0)
 
         stop(args)
         sys.exit(0)
 
-    set_aidl_version()
-
     status = helpers.lxc.status(args)
     if status == "STOPPED":
         # Load binder and ashmem drivers
     status = helpers.lxc.status(args)
     if status == "STOPPED":
         # Load binder and ashmem drivers
@@ -164,6 +159,8 @@ def start(args):
         # Mount rootfs
         helpers.images.mount_rootfs(args, cfg["waydroid"]["images_path"])
 
         # Mount rootfs
         helpers.images.mount_rootfs(args, cfg["waydroid"]["images_path"])
 
+        set_aidl_version()
+
         # Mount data
         helpers.mount.bind(args, session_cfg["session"]["waydroid_data"],
                            tools.config.defaults["data"])
         # Mount data
         helpers.mount.bind(args, session_cfg["session"]["waydroid_data"],
                            tools.config.defaults["data"])
index 66744b3bc33d833cc4102eea1bfbcdcc139c26e6..b04877d6577e1ab489f3609653f6aaeb77e2af4f 100644 (file)
@@ -176,5 +176,6 @@ def loadBinderNodes(args):
     args.BINDER_DRIVER = cfg["waydroid"]["binder"]
     args.VNDBINDER_DRIVER = cfg["waydroid"]["vndbinder"]
     args.HWBINDER_DRIVER = cfg["waydroid"]["hwbinder"]
     args.BINDER_DRIVER = cfg["waydroid"]["binder"]
     args.VNDBINDER_DRIVER = cfg["waydroid"]["vndbinder"]
     args.HWBINDER_DRIVER = cfg["waydroid"]["hwbinder"]
-    args.BINDER_PROTOCOL = cfg["waydroid"]["binder_protocol"]
-    args.SERVICE_MANAGER_PROTOCOL = cfg["waydroid"]["service_manager_protocol"]
+    # These might not be in cfg on package upgrade
+    args.BINDER_PROTOCOL = cfg["waydroid"].get("binder_protocol")
+    args.SERVICE_MANAGER_PROTOCOL = cfg["waydroid"].get("service_manager_protocol")