webui-dev / webui

Use any web browser or WebView as GUI, with your preferred language in the backend and HTML5 in the frontend, all in a lightweight portable lib.
https://webui.me
MIT License
2.36k stars 144 forks source link

change ubuntu version in linux workflow to support legacy glib #357

Closed halildgn closed 1 month ago

halildgn commented 1 month ago

As discussed in #321, the people who run WebUI on Ubuntu 20.04 or lower get the error of version GLIBC_2.33' not found since they have glibc 2.31(for the case of Ubuntu 20.04) or lower. Currently, a workaround has to be used as explained here. To solve this problem, Ubuntu version in the linux workflow should be changed to ubuntu-18.04 as proposed here.

AlbertShown commented 1 month ago

Thank you for the fix 👍

halildgn commented 1 month ago

Thank you for the fix 👍

Thank you for everything again @AlbertShown

neroist commented 1 month ago

Apparently the Ubuntu 18.04 runner is no longer supported...

https://github.com/actions/runner-images/issues/6002

Why not try 20.04 instead, since that seems to be the version that the issue arises on.

halildgn commented 1 month ago

Apparently the Ubuntu 18.04 runner is no longer supported...

actions/runner-images#6002

Why not try 20.04 instead, since that seems to be the version that the issue arises on.

Thank you for the guidance. It was mentioned in the comments of the issue that newer versions of Ubuntu always supports also the glib versions of legacy Ubuntu versions, so I wanted Ubuntu-18.04 users to also benefit the library if there are any. Since it is not possible, I adjusted the change for ubuntu-20.04 as you suggested.

neroist commented 1 month ago

LGTM

AlbertShown commented 1 month ago

Can anyone confirm that Ubuntu latest is using GLIBC_2.31?

halildgn commented 1 month ago

Can anyone confirm that Ubuntu latest is using GLIBC_2.31?

I can check on a 24.04 VM if my repo that uses the version that was compiled on Ubuntu 20.04 works on Ubuntu 24.04, would it be sufficient? I checked last time on 22.04 , it was working(Normally it has glibc 2.33 or something when you check with ldd --version).

ttytm commented 1 month ago

[...] so I wanted Ubuntu-18.04 users to also benefit the library if there are any.

Ubuntu 18.04 reached end of life for over a year soon. So it's fine to not bother about supporting it anymore. 20.04 was already superseded by two lts releases so is fine to cover "old" systems.

AlbertShown commented 1 month ago

To double-check, someone should download Linux version nightly build, then runs one of those commands:

readelf -V ./webui-2.a | grep 'GLIBC_'
readelf -a ./webui-2.a | grep 'GLIBC_'
strings ./webui-2.a | grep GLIBC_
objdump -p ./webui-2.a | grep 'GLIBC_'

same thing with webui-2.so.

AlbertShown commented 1 month ago

Ubuntu 18.04 reached end of life

That's true, let's forget Ubuntu 18. We can consider that this PR fixed the issue.

halildgn commented 1 month ago

To double-check, someone should download Linux version nightly build, then runs one of those commands:

readelf -V ./webui-2.a | grep 'GLIBC_'
readelf -a ./webui-2.a | grep 'GLIBC_'
strings ./webui-2.a | grep GLIBC_
objdump -p ./webui-2.a | grep 'GLIBC_'

same thing with webui-2.so.

To make sure, you mean that I need to run one of these commands for both ./webui-2.a and webui-2.so on Ubuntu 24.04, right?

AlbertShown commented 1 month ago

Yes, just to see the glibc version linked with.

AlbertShown commented 1 month ago

According to https://github.com/webui-dev/webui/discussions/358#discussioncomment-9458499

The nightly build is using GitHub Ubuntu 20.4, wish is using GLIBC_2.33. So, to use webui with old GLIBC versions, the user should re-build webui from source.

halildgn commented 1 month ago

According to #358 (reply in thread)

The nightly build is using GitHub Ubuntu 20.4, wish is using GLIBC_2.33. So, to use webui with old GLIBC versions, the user should re-build webui from source.

20.04 uses 2.31 though

AlbertShown commented 1 month ago

20.04 uses 2.31 though

I don't think so!

objdump -p ./webui-2.so | grep 'GLIBC_'
    0x06969188 0x00 11 GLIBC_2.28
    0x069691b3 0x00 10 GLIBC_2.33
    0x06969197 0x00 09 GLIBC_2.17
    0x0d696914 0x00 08 GLIBC_2.4
    0x069691b4 0x00 07 GLIBC_2.34
    0x09691972 0x00 06 GLIBC_2.3.2
    0x0d696917 0x00 05 GLIBC_2.7
    0x09691a75 0x00 04 GLIBC_2.2.5
    0x09691974 0x00 03 GLIBC_2.3.4
    0x0d696913 0x00 02 GLIBC_2.3

I see 2.34, 2.33, but not 2.31. So, it still won't work on systems that have only 2.31 and older. I'm not sure to be honest...