From 2d2c7905f5e7bbbe288b4d8f82e8911e5cb2df6f Mon Sep 17 00:00:00 2001
From: Howard Wu <HowardWu20@outlook.com>
Date: Sat, 13 Jul 2024 18:35:09 +0800
Subject: [PATCH] Enhanced compatibility

Support https://github.com/topjohnwu/Magisk/commit/fb5ee86615ed3df830e8538f8b39b1b133caea34
---
 scripts/build.sh         | 17 +++++++++++++----
 scripts/extractMagisk.py |  7 +++++--
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/scripts/build.sh b/scripts/build.sh
index 72b71db..6ba0803 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -484,8 +484,16 @@ fi
 
 if [ "$ROOT_SOL" = "magisk" ]; then
     echo "Integrating Magisk"
-    "$WORK_DIR/magisk/magiskboot" compress=xz "$WORK_DIR/magisk/magisk64" "$WORK_DIR/magisk/magisk64.xz"
-    "$WORK_DIR/magisk/magiskboot" compress=xz "$WORK_DIR/magisk/magisk32" "$WORK_DIR/magisk/magisk32.xz"
+    SKIP="#"
+    SINGLEABI="#"
+    if [ -f "$WORK_DIR/magisk/magisk64" ]; then
+        "$WORK_DIR/magisk/magiskboot" compress=xz "$WORK_DIR/magisk/magisk64" "$WORK_DIR/magisk/magisk64.xz"
+        "$WORK_DIR/magisk/magiskboot" compress=xz "$WORK_DIR/magisk/magisk32" "$WORK_DIR/magisk/magisk32.xz"
+        unset SKIP
+    else
+        "$WORK_DIR/magisk/magiskboot" compress=xz "$WORK_DIR/magisk/magisk" "$WORK_DIR/magisk/magisk.xz"
+        unset SINGLEABI
+    fi
     "$WORK_DIR/magisk/magiskboot" compress=xz "$MAGISK_PATH" "$WORK_DIR/magisk/stub.xz"
     "$WORK_DIR/magisk/magiskboot" cpio "$WORK_DIR/wsa/$ARCH/Tools/initrd.img" \
         "mv /init /wsainit" \
@@ -494,8 +502,9 @@ if [ "$ROOT_SOL" = "magisk" ]; then
         "add 0750 /magiskinit $WORK_DIR/magisk/magiskinit" \
         "mkdir 0750 overlay.d" \
         "mkdir 0750 overlay.d/sbin" \
-        "add 0644 overlay.d/sbin/magisk64.xz $WORK_DIR/magisk/magisk64.xz" \
-        "add 0644 overlay.d/sbin/magisk32.xz $WORK_DIR/magisk/magisk32.xz" \
+        "$SKIP add 0644 overlay.d/sbin/magisk64.xz $WORK_DIR/magisk/magisk64.xz" \
+        "$SKIP add 0644 overlay.d/sbin/magisk32.xz $WORK_DIR/magisk/magisk32.xz" \
+        "$SINGLEABI add 0644 overlay.d/sbin/magisk.xz $WORK_DIR/magisk/magisk.xz" \
         "add 0644 overlay.d/sbin/stub.xz $WORK_DIR/magisk/stub.xz" \
         "mkdir 000 .backup" \
         "add 000 overlay.d/init.lsp.magisk.rc init.lsp.magisk.rc" \
diff --git a/scripts/extractMagisk.py b/scripts/extractMagisk.py
index b5a80df..37ed4c9 100644
--- a/scripts/extractMagisk.py
+++ b/scripts/extractMagisk.py
@@ -71,7 +71,10 @@ with zipfile.ZipFile(magisk_zip) as zip:
             env.MAGISK_VERSION_CODE = versionCode
         with open(os.environ['WSA_WORK_ENV'], 'w') as environ_file:
             environ_file.write(str(env))
-    extract_as(zip, f"lib/{ abi_map[arch][0] }/libmagisk64.so", "magisk64", "magisk")
-    extract_as(zip, f"lib/{ abi_map[arch][1] }/libmagisk32.so", "magisk32", "magisk")
+    if f"lib/{ abi_map[arch][0] }/libmagisk64.so" in zip.namelist():
+        extract_as(zip, f"lib/{ abi_map[arch][0] }/libmagisk64.so", "magisk64", "magisk")
+        extract_as(zip, f"lib/{ abi_map[arch][1] }/libmagisk32.so", "magisk32", "magisk")
+    else:
+        extract_as(zip, f"lib/{ abi_map[arch][0] }/libmagisk.so", "magisk", "magisk")
     extract_as(zip, f"lib/{ abi_map[arch][0] }/libmagiskinit.so", "magiskinit", "magisk")
     extract_as(zip, f"lib/{ abi_map[host_abi][0] }/libmagiskboot.so", "magiskboot", "magisk")