luxtorpeda-dev/luxtorpeda

please support oldest "ubuntu" that steam supports. or atleast not the latest: glibc 2.29

Closed this issue · 8 comments

Linux Distribution

ubuntu 18.04 lts

Luxtorpeda Version

67.1.1

Bug description

supporting the oldest possible version of linux (basically glibc) would be preferable
i can play most steam GoDot games without issues.

ERROR: Can't open dynamic library: target/release/libluxtorpeda.so. Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/catbox/.steam/steam/compatibilitytools.d/luxtorpeda-v67-1-1/libluxtorpeda.so).
   at: open_dynamic_library (drivers/unix/os_unix.cpp:650)
ERROR: GDExtension dynamic library not found: target/release/libluxtorpeda.so
   at: open_library (core/extension/gdextension.cpp:455)
ERROR: Failed loading resource: res://luxtorpeda.gdextension. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:273)
ERROR: Error loading extension: res://luxtorpeda.gdextension
   at: load_extensions (core/extension/gdextension_manager.cpp:143)
Godot Engine v4.1.1.stable.official.bd6af8e0e - https://godotengine.org
Vulkan API 1.3.242 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce GTX 1070
 
ERROR: Cannot get class 'LuxClient'.
   at: instantiate (core/object/class_db.cpp:339)

as you see, godot you compiled this with requires glibc 2.29, which if you built this against older version could be used for any version within the last 10 years (should be same as supported by steam sniper runtime...)

Steps To Reproduce

1 first install
2 test install on a game stated to be compatible (wrath aeon of ruin)
3 see screen and nothing happens.
4 go to compatbility to see log

Expected Behavior

compatible glibc (github might not have this option anymore for auto builds)
luxtorpedia opens and runs the game as expected, or at the least, allows me to customize my personal installation location.

Additional Context

No response

Relevant log output

ERROR: Can't open dynamic library: target/release/libluxtorpeda.so. Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/catbox/.steam/steam/compatibilitytools.d/luxtorpeda-v67-1-1/libluxtorpeda.so).
   at: open_dynamic_library (drivers/unix/os_unix.cpp:650)
ERROR: GDExtension dynamic library not found: target/release/libluxtorpeda.so
   at: open_library (core/extension/gdextension.cpp:455)
ERROR: Failed loading resource: res://luxtorpeda.gdextension. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:273)
ERROR: Error loading extension: res://luxtorpeda.gdextension
   at: load_extensions (core/extension/gdextension_manager.cpp:143)
Godot Engine v4.1.1.stable.official.bd6af8e0e - https://godotengine.org
Vulkan API 1.3.242 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce GTX 1070
 
ERROR: Cannot get class 'LuxClient'.
   at: instantiate (core/object/class_db.cpp:339)

I'm not sure if there's a solution to this, but I'll do some research.

This is most likely because it's using the ubuntu-latest gh action image. It could also be related to the package being used with the bindings between rust and godot, as it has its own compiled code that is also in use.

If you compile the project locally, are you able to then use it? You can start with just building the rust library,, which will provide the libluxtorpeda.so and re-using the godot files from the latest release.

I could try switching to using the steam sniper as the base, but that also may be too new. Luxtorpeda runs inside steam sniper runtime, but that does not seem to help much with host glib issues.

One other possible option that's more extreme is looking into something like distrobox to load your steam through. That would be a more drastic change, although I imagine ubuntu 18 is going to start having more glib-type issues in the future.

It looks like ubuntu 18 uses glib 2.27 (https://launchpad.net/ubuntu/bionic/+source/glibc). Steam sniper runtime uses 2.31.

It might be possible to do something like this - https://github.com/neovim/neovim/pull/20528/files, but probably not recommended security wise for the normal/official build.

I may be able to do something like that to provide a "old glib version" build, along with the current one for modern versions. I'd also have to see what effects if any that would do to things like protonup that automatically downloads.

One more thing to note is that ubuntu 18.04 is now eol - https://endoflife.software/operating-systems/linux/ubuntu, so it would probably make sense to update, if possible, to get continued updates in the future.

i managed to compile it, used rustc 1.74

also you need to update this readme:

for luxtorpeda 67.1.1 you need to point to godot 4.1.1

$ mkdir -p ~/.local/share/godot/templates/4.1.1.stable/
$ wget https://github.com/godotengine/godot/releases/download/4.1-stable/Godot_v4.1.1-stable_export_templates.tpz
$ unzip -j Godot_v4.1.1-stable_export_templates.tpz -d ~/.local/share/godot/templates/4.1.1.stable/

i used this:
https://phoenixnap.com/kb/install-rust-ubuntu

curl https://sh.rustup.rs -sSf | sh
source "$HOME/.cargo/env"
rustc -V

compilation completed:

create_compatibilitytool_vdf
copy_root_files
resolve_target, target is user-install
build_folder with luxtorpeda
version not provided so skipping
resolve_target - Unknown target of user-install
mkdir -p /home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev
cp -av luxtorpeda/* /home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/
'luxtorpeda/LICENSE' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/LICENSE'
'luxtorpeda/README.md' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/README.md'
'luxtorpeda/compatibilitytool.vdf' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/compatibilitytool.vdf'
'luxtorpeda/libluxtorpeda.so' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/libluxtorpeda.so'
'luxtorpeda/luxtorpeda.pck' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/luxtorpeda.pck'
'luxtorpeda/luxtorpeda.sh' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/luxtorpeda.sh'
'luxtorpeda/luxtorpeda.x86_64' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/luxtorpeda.x86_64'
'luxtorpeda/toolmanifest.vdf' -> '/home/catbox/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/toolmanifest.vdf'

i do have a backport maintained older version of ubuntu, and im not afraid of adding some updated build tools to attempt a compilation

if, its at all possible, it would be cool to support older ubuntu which are still supported officialy by steam and godot

the game i wanted to test:
Wrath Aeon of Ruin

works perfect with your tool. any other testing, suggestion, ideas i can help you with?

big huge log of things?? (its over 4gb of packages just to compile luxtorpeda. i removed all those extra packages for now)

which ever steam runtime, scout, sniper, you know the older one. must be scout based on ubuntu 12.04

luxtorpeda.tar.xz.zip

Can you try this build and see if it works for you?

Closing due to inactivity. Feel free to comment with your findings if you have a chance.

apologies. after this i decided to go ahead and upgrade to ubuntu LTS 22.04, i would have stayed with 18.04 longer but it was past its due...

thanks for your help!