diff --git a/waydroid_extras.py b/waydroid_extras.py index 672ca04..d59e66c 100755 --- a/waydroid_extras.py +++ b/waydroid_extras.py @@ -24,6 +24,25 @@ print(download_loc) if not os.path.exists(download_loc): os.makedirs(download_loc) +def host(): + machine = platform.machine() + + mapping = { + "i686": ("x86", 32), + "x86_64": ("x86_64", 64), + "aarch64": ("arm64-v8a", 64), + "armv7l": ("armeabi-v7a", 32), + "armv8l": ("armeabi-v7a", 32) + } + if machine in mapping: + if mapping[machine] == "x86_64": + with open("/proc/cpuinfo") as f: + if "sse4_2" not in f.read(): + print("x86_64 CPU does not support SSE4.2, falling back to x86...") + return ("x86", 32) + return mapping[machine] + raise ValueError("platform.machine '" + machine + "'" + " architecture is not supported") def download_file(url, f_name): md5 = "" @@ -341,13 +360,8 @@ def install_magisk(): merge_dir = "/var/lib/waydroid/rootfs" magisk_dir = os.path.join(sys_overlay_dir, "system", "etc", "init", "magisk") sys_overlay_rw = "/var/lib/waydroid/overlay_rw" - arch = platform.architecture()[0][0:2] - machine = platform.machine() - if "x86" not in machine: - if arch == "64": - machine = "arm64-v8a" - else: - machine = "armeabi-v7a" + + machine = host() init_rc_component = """ on post-fs-data start logd @@ -383,7 +397,7 @@ on property:init.svc.zygote=restarting on property:init.svc.zygote=stopped exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart - """.format(arch=arch) + """.format(arch=machine[1]) if not DBusContainerService().GetSession(): print("Please make sure waydroid container is running!") @@ -425,7 +439,7 @@ on property:init.svc.zygote=stopped # Now setup and install magisk binary and app print("==> Installing magisk now ...") - lib_dir = os.path.join(extract_to, "lib", machine) + lib_dir = os.path.join(extract_to, "lib", machine[0]) for parent, dirnames, filenames in os.walk(lib_dir): for filename in filenames: o_path = os.path.join(lib_dir, filename)