feenkcom/sparta

Is Skia in Linux 64 bits supported?

Closed this issue · 5 comments

Hello,

I'm on a Debian 10 64 bits (1) and get this message in terminal:

[Skia] Could not init env logger
[Skia] Could not init icu

In the image, I see that skia binary file is detected (SkiaLibrary uniqueInstance unixModuleName asFileReference exists is true).
But the Skia option is not available in the Pharo System Settings because SkiaLibrary uniqueInstance hasModule is false.

I looked a bit how GtLibraryInstaller downloads the library, but before digging more I prefer to ask: Is linux 64 bits supported?


(1): uname shows: "4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 GNU/Linux"

girba commented

Yes. GT runs only on 64 bits.

syrel commented

Hi @tinchodias
Take a look what dependencies are not satisfied:

ldd libSkia.so

@syrel thanks. I see there is a problem there:

$ ldd libSkia.so 
./libSkia.so: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./libSkia.so)
	linux-vdso.so.1 (0x00007ffe50935000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe9b4767000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fe9b4721000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fe9b4665000)
	libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fe9b45d1000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe9b45cc000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe9b45b2000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe9b45a6000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe9b4585000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe9b4402000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe9b4241000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fe9b5dde000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe9b4204000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe9b41fb000)
	libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fe9b41c0000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe9b3fa2000)
	libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fe9b3f6e000)
	libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fe9b3eb1000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe9b3d70000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fe9b3b5c000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe9b3b32000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe9b392e000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe9b3728000)
	libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fe9b370e000)

I'm not expert enough on this :) I tried this query and don't see a 3.4.26 version so I guess I need to upgrade... no?

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
syrel commented

@tinchodias
You can update it like this:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt update
sudo apt install libstdc++6

The problem is that Github Actions moved to a newer version of GLIBCXX which now means that libSkia.so is built for GLIBCXX_3.4.26... One solution would be to build in a docker container, instead of relying solely on github actions.

Maybe you will have some suggestions https://github.com/feenkcom/libskia/blob/master/.github/workflows/continuous-integration-workflow.yaml

@syrel sorry for delay to answer. Lately, I don't boot linux too much :-/

I think I will keep my debian "buster" like it is now. AFAIU it's not recommended to upgrade that package: https://wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian

I had a look on the GH workflow. Thanks for the pointer... Did you try specifying a OS version in this line?
https://github.com/feenkcom/libskia/blob/master/.github/workflows/continuous-integration-workflow.yaml#L95

Maybe 'ubuntu-18.04' instead of 'ubuntu-latest' ?

I see the options here:
https://github.com/actions/virtual-environments

But I'm just guessing, can't help too much.