casualsnek / waydroid_script

Python Script to add OpenGapps, Magisk, libhoudini translation library and libndk translation library to waydroid !
GNU General Public License v3.0
1.53k stars 147 forks source link

libhoudini install breaks 32 bit waydroid #57

Open dreamlayers opened 1 year ago

dreamlayers commented 1 year ago

I'm running Waydroid in Ubuntu 22.10. The CPU doesn't support SSE4.2, so Waydroid installs 32-bit Android. It works. But then if I install libhoudini, it stops working. The only relevant error message I'm able to see is this in waydroid log: lxc-start: waydroid: conf.c: run_buffer: 321 Script exited with status 126

This seems to be because of the way build props are set, including 64 abi props. I got Waydroid to work again by changing abi props to:

ro.product.cpu.abi=x86
ro.product.cpu.abilist=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi

After that I could install an app with 32 bit arm libraries. But then, trying to run it, I get this in logcat:

11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> AES << is not supported.
11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> POPCNT << is not supported.
11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> SSE4_2 << is not supported.
11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> PCLMULQDQ << is not supported.
11-15 16:33:10.658    45    45 I tombstoned: received crash request for pid 44041

So, at least this build of houdini can't actually run on my CPU. I wonder if houdini can be built without those requirements?

Edit: Installing libndk runs into the same problems. Again there is a need to edit system/build.prop the same way. Then when I try to run the app, it dies with SIGILL (illegal instruction) in the NDK library.

Using https://github.com/mirh/opemu-linux, which I needed to alter a bit to run with my kernel, the translators crash a different way instead. Opemu works well enough to make POPCNT work, but I guess there are some problems with other instructions.

WesleyVanNeck commented 1 year ago

update your hardware

dreamlayers commented 1 year ago

It would be nice if waydroid_script refused to install Houdini on 32 bit Waydroid instead of breaking Waydroid.

ayasa520 commented 1 year ago

There are 3 versions of Houdini:

x: arm32 translation for x86
y: arm32 translation for x86_64
z: arm64 translation for x86_64

But after Android11, only y and z exist.