Godot Engine port for SailfishOS

@poetaster , please check this release - no x86 template here now. but i’ll add it in a hour

1 Like

Will do later today. Thanks!

Ergh…
So, it’s actually a success! Sailjail (if you point the godot project directory to customdir orgname/appname) works with Godot having proper file access. YEAH. It’s a bit complicated. Soooo:

Openssl is problematic. On my Volla which only had openssl 1.1.1 (Jolla) the 3.2 installs ran (without sailjail). No complaining. On the xperia 10ii, I HAD to install the compatibility libs from openrepos (the ones from @olf that combine 1.0 and 1.1). But those did install and the 3.2 godot builds worked.

Now, with 3.5, when I build in godot, I see linking errors vis. open ssl (libcrypto.so.1.0? It’s too fast to copy out the message). When I try to run these on the volla/gs290 (or GS5), core dumps. On the xperia 10ii, it seems fine, WITH the openssl compatibility libs. Even sailjail.

But I can’t get these builds to run on Volla/GS290, my daily driver. I tried a new clean phone, no go. Is it possible to link to a newer openssl??? Please! Otherwise, no fun for me. I’ve adapted a couple of apps to move to 1.1 from 1.0, so I can probably help.

Or, I guess I could try some manual libcrypto kludge … or ask @olf who knows far better than I … I’ve updated a couple of apps to move to 1.1.x, but don’t feel that comfortable hacking the crypto.

Or maybe my SDK is too old, or some other foo! Sigh.

Manual kludge doesn’t seem doable (just copied out of the rpms):

[defaultuser@VollaPhone ~]$ ls -al /lib64/libcrypto.so.1*
-rwxr-xr-x    1 root     root       2015920 Jun 11  2021 /lib64/libcrypto.so.1.0.2o+git5
lrwxrwxrwx    1 root     root            24 Oct 22 16:24 /lib64/libcrypto.so.10 -> libcrypto.so.1.0.2o+git5

[defaultuser@VollaPhone ~]$ ls -al /usr/lib64/libssl*
-rwxr-xr-x    1 root     root        484640 Oct 22 16:25 /usr/lib64/libssl.so.1.0.2o+git5
lrwxrwxrwx    1 root     root            21 Sep 24 07:48 /usr/lib64/libssl.so.1.1 -> libssl.so.1.1.1l+git1
-rwxr-xr-x    1 root     root        611552 Sep 24 07:48 /usr/lib64/libssl.so.1.1.1l+git1
lrwxrwxrwx    1 root     root            21 Oct 22 16:29 /usr/lib64/libssl.so.10 -> libssl.so.1.0.2o+git5
-rwxr-xr-x    1 root     root        398648 Sep 24 01:53 /usr/lib64/libssl3.so

This doesn’t help.

@poetaster wrote:
Now, with 3.5, when I build in godot, I see linking errors vis. open ssl (libcrypto.so.1.0? It’s too fast to copy out the message). When I try to run these on the volla/gs290 (or GS5), core dumps. On the xperia 10ii, it seems fine, WITH the openssl compatibility libs. Even sailjail.

Why godot should be compatible with older ssl versions? Its built and linked in latest SDK for fresh Sailfish OS version. No compatible libs should be installed, it just work out of the box with Sailfish 4.4.
Please tell me, what versions of SFOS you was try run with godot_3.5?
P.S. If i will compile godot with older ssl version, it will not work on fresh devices ( like mine XA2+ and 10iii ).
that show, when i check ldd on godot binary in device (10iii)

ldd -r /usr/bin/harbour-gdmaterials  | grep -E "(ssl|crypto)"
libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x00000072ff165000)
libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x00000072feeac000)

P.P.S. and we have another way, to made godot compatible with older SailfishOS versions, its build it with statically linked openssl, just need in platforms/sailfish/detect.py comment this line:

        ('builtin_openssl', False),

or replace False to True.
But godot has already too heavy binary file, i really not recommend make it more fat.

@poetaster wrote:
when I build in godot, I see linking errors vis. open ssl (libcrypto.so.1.0? It’s too fast to copy out the message)

did you try use validator in Godot? when it has some validation errors, it should not close validation window, while you not press OK button, or close it by your self

Hmmm. Ok, seems similar:

[defaultuser@VollaPhone ~]$ ldd -r /usr/bin/harbour-flappybird  | grep -E "(ssl|crypto)"
	libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x0000007aafa1f000)
	libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x0000007aaf766000)

Now I’m really confused. I’m going to guess at my SDK being outdated? I’ll check that and get back to you.

@poetaster , try ldd -r without grep, maybe its show some link errors?

I was testing against 4.4.0.72 on all devices (a volla, a GS290 and an xperia 10ii). SDK is 3.9.6

@poetaster wrote:
I was testing against 4.4.0.72 on all devices

hmm, with 4.4 it should work without any openssl compatible libs.

defaultuser@VollaPhone ~]$ ldd -r /usr/bin/harbour-flappybird
	linux-vdso.so.1 (0x000000773f993000)
	/usr/lib64/libtls-padding.so (0x000000773f934000)
	libSDL2-2.0.so.0 => /usr/lib64/libSDL2-2.0.so.0 (0x000000773f7d9000)
	libwayland-client.so.0 => /usr/lib64/libwayland-client.so.0 (0x000000773f7b8000)
	libaudioresource.so.1 => /usr/lib64/libaudioresource.so.1 (0x000000773f797000)
	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x000000773f655000)
	libssl.so.1.1 => /usr/lib64/libssl.so.1.1 (0x000000773f5b0000)
	libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1 (0x000000773f2f7000)
	libpulse-simple.so.0 => /usr/lib64/libpulse-simple.so.0 (0x000000773f2d6000)
	libpulse.so.0 => /usr/lib64/libpulse.so.0 (0x000000773f275000)
	libudev.so.1 => /usr/lib64/libudev.so.1 (0x000000773f234000)
	libGLESv2.so.2 => /usr/lib64/libGLESv2.so.2 (0x000000773f203000)
	libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x000000773f1e2000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x000000773f1ad000)
	libdl.so.2 => /lib64/libdl.so.2 (0x000000773f18c000)
	libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000773eff7000)
	libm.so.6 => /lib64/libm.so.6 (0x000000773ef46000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000773ef15000)
	libc.so.6 => /lib64/libc.so.6 (0x000000773ed7f000)
	librt.so.1 => /lib64/librt.so.1 (0x000000773ed5e000)
	/lib/ld-linux-aarch64.so.1 (0x000000773f955000)
	libffi.so.6 => /usr/lib64/libffi.so.6 (0x000000773ed3d000)
	libresource-glib.so.0 => /usr/lib64/libresource-glib.so.0 (0x000000773ed1c000)
	libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x000000773eccb000)
	libz.so.1 => /usr/lib64/libz.so.1 (0x000000773ec9a000)
	libpulsecommon-14.2.so => /usr/lib64/pulseaudio/libpulsecommon-14.2.so (0x000000773ec08000)
	libsystemd.so.0 => /usr/lib64/libsystemd.so.0 (0x000000773eb56000)
	libsndfile.so.1 => /usr/lib64/libsndfile.so.1 (0x000000773eac3000)
	libasyncns.so.0 => /usr/lib64/libasyncns.so.0 (0x000000773eaa2000)
	libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x000000773ea30000)
	libcap.so.2 => /usr/lib64/libcap.so.2 (0x000000773ea0f000)
	libmount.so.1 => /usr/lib64/libmount.so.1 (0x000000773e99d000)
	libhybris-common.so.1 => /usr/lib64/libhybris-common.so.1 (0x000000773e965000)
	libhardware.so.2 => /usr/lib64/libhardware.so.2 (0x000000773e944000)
	libresource.so.0 => /usr/lib64/libresource.so.0 (0x000000773e923000)
	liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x000000773e8e2000)
	libgcrypt.so.20 => /usr/lib64/libgcrypt.so.20 (0x000000773e80d000)
	libvorbisenc.so.2 => /usr/lib64/libvorbisenc.so.2 (0x000000773e75c000)
	libFLAC.so.8 => /usr/lib64/libFLAC.so.8 (0x000000773e70b000)
	libopus.so.0 => /usr/lib64/libopus.so.0 (0x000000773e69a000)
	libvorbis.so.0 => /usr/lib64/libvorbis.so.0 (0x000000773e659000)
	libogg.so.0 => /usr/lib64/libogg.so.0 (0x000000773e638000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x000000773e603000)
	libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x000000773e592000)
	libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x000000773e571000)
	libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x000000773e540000)

@poetaster, looks good :thinking:

Yeah, things are getting confused by my having installed the older libs for the 3.2 build (on the 10ii)

I’l start stracing and see if I can enlighten myself.
EDIT: SUSE Paste

Looks like we crash on

glEnable(_EXT_DEBUG_OUTPUT_SYNCHRONOUS_ARB);|

https://github.com/savegame/godot/blob/3.5_sailfish/drivers/gles2/rasterizer_gles2.cpp

If I put a breakpoint on that, the last output I see is from the line just before. So it looks like the opengl driver? @piggz comment?

great work! any chance we see an arch64 build of love2d? I would like to port some of my games for sailfish but I don’t manage to build love to arch64.

And because I had a somewhat painful week and because I can:

https://openrepos.net/content/poetaster/molecules

It’s still only a prototype, as was the initial clone of Osmos, named Molecules. I’ve just worked to make it mobile usable and am looking for a few game dynamics to make it more interesting. Also want to add generative music.

4 Likes

hm… maybe… dont have time now, but’ll try do it later ))

3 Likes

amazing I’m looking forward to it :slight_smile:

New release:

Whats new:

Now it should be harbour compatible, but without controller support (because libudev is not allowed as dependency)

5 Likes