andy5995 Posted August 29, 2022 Report Share Posted August 29, 2022 (edited) An appimage for 0.0.26-alpha is available An appimage for 0.0.26-alpha (RC3-27067) release is available 0ad-0.0.26-rc3-27067-alpha AppImage An appimage for the 0.0.25b-alpha release is available at 0ad-0.0.25b-alpha appimage I've moved the how-to guide to the Wiki: https://trac.wildfiregames.com/wiki/BuildAndDeploymentEnvironment#LinuxAppImage Edited October 1, 2022 by andy5995 4 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 29, 2022 Author Report Share Posted August 29, 2022 (edited) 5 hours ago, andy5995 said: I don't have this working yet. I can build the appimage but when I run it: Quote ./pyrogenesis: symbol lookup error: ./pyrogenesis: undefined symbol: _ZN4nvtt12InputOptions16setTextureLayoutENS_11TextureTypeEiiii I've made edits to the post above, and using that info, the error directly above is gone. Right now I think the only problem is the data can't be found when the appimage is run. I think that will be fixed after I rebuild specifying the relative path to --datadir. Edited August 29, 2022 by andy5995 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 29, 2022 Author Report Share Posted August 29, 2022 This is where I'm at Quote $ ./0_A.D.-x86_64.AppImage TIMER| InitVfs: 33.4227 ms FILES| Main log written to '/home/andy/.config/0ad/logs/mainlog.html' FILES| Interesting log written to '/home/andy/.config/0ad/logs/interestinglog.html' TIMER| CONFIG_Init: 1.14333 ms Sound: AlcInit success, using OpenAL Soft ERROR: CVFSFile: file audio/sound_group.rng couldn't be opened (vfs_load: -110100) ERROR: CXeromyces: failed adding validator for 'audio/sound_group.rng' ERROR: CSoundManager: failed to load grammar file 'audio/sound_group.rng' WARNING: Window icon not found. ERROR: CVFSFile: file hwdetect/hwdetect.js couldn't be opened (vfs_load: -110100) ERROR: Failed to load hardware detection script TIMER| RunHardwareDetection: 821.107 us FILES| Hardware details written to '/home/andy/.config/0ad/logs/system_info.txt' TIMER| write_sys_info: 16.2474 ms ERROR: CVFSFile: file gui/gui_page.rng couldn't be opened (vfs_load: -110100) ERROR: CXeromyces: failed adding validator for 'gui/gui_page.rng' ERROR: CGUIManager: failed to load GUI page grammar file 'gui/gui_page.rng' ERROR: CVFSFile: file gui/gui.rng couldn't be opened (vfs_load: -110100) ERROR: CXeromyces: failed adding validator for 'gui/gui.rng' ERROR: CGUIManager: failed to load GUI XML grammar file 'gui/gui.rng' WARNING: Unknown render path ERROR: CVFSFile: file shaders/program.rng couldn't be opened (vfs_load: -110100) ERROR: CXeromyces: failed adding validator for 'shaders/program.rng' ERROR: CShaderManager: failed to load grammar shaders/program.rng TIMER| InitRenderer: 11.0234 ms ERROR: CVFSFile: file maps/scenario.rng couldn't be opened (vfs_load: -110101) ERROR: CXeromyces: failed adding validator for 'maps/scenario.rng' ERROR: Failed to open font file fonts/mono-10.fnt ERROR: Failed to open font file fonts/sans-10.fnt TIMER| ps_console: 92.442 us TIMER| ps_lang_hotkeys: 208.402 us ERROR: CCacheLoader failed to find archived or source file for: "gui/page_pregame.xml" ERROR: Failed to open font file fonts/mono-stroke-10.fnt Segmentation fault (core dumped) Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 29, 2022 Author Report Share Posted August 29, 2022 (edited) I can now run the appimage, get the main menu, and open the game setup menu. Alt+Enter doesn't switch to full-screen, but I can do that by right-clicking the title bar and clicking on "full screen". When I start a game, it loads, but I get many collada related errors. Quote ERROR: Error loading object variation (actor: art/actors/flora/trees/pine_maritime.xml) ERROR: Failed to load COLLADA conversion DLL ERROR: Could not load mesh 'art/meshes/gaia/pine_maritime_4.dae' ERROR: CObjectEntry::BuildVariation(): Model art/meshes/gaia/pine_maritime_4.dae failed to load ERROR: Error loading object variation (actor: art/actors/flora/trees/pine_maritime.xml) ERROR: Failed to load COLLADA conversion DLL ERROR: Could not load mesh 'art/meshes/gaia/pine_maritime_3.dae' ERROR: CObjectEntry::BuildVariation(): Model art/meshes/gaia/pine_maritime_3.dae failed to load ERROR: Error loading object variation (actor: art/actors/flora/trees/pine_maritime.xml) ERROR: Failed to load COLLADA conversion DLL ERROR: Could not load mesh 'art/meshes/gaia/pine_maritime_4.dae' ERROR: CObjectEntry::BuildVariation(): Model art/meshes/gaia/pine_maritime_4.dae failed to load ERROR: Error loading object variation (actor: art/actors/flora/trees/pine_maritime.xml) ERROR: Failed to load COLLADA conversion DLL ERROR: Could not load mesh 'art/meshes/gaia/pine_maritime_2.dae' ERROR: CObjectEntry::BuildVariation(): Model art/meshes/gaia/pine_maritime_2.dae failed to load ERROR: Error loading object variation (actor: art/actors/flora/trees/pine_maritime.xml) Edited August 29, 2022 by andy5995 Quote Link to comment Share on other sites More sharing options...
hyperion Posted August 29, 2022 Report Share Posted August 29, 2022 (edited) libCollada.so is dynamically loaded by 0ad and not via linker, so location must match 0ad-libdir for it to be found. I never dealt with app images, but your --libdir and --bindir settings look wrong (libdir in particular). I'd assume you can use the default values just fine. Edit: fix hard to parse typo Edited August 29, 2022 by hyperion 1 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 29, 2022 Author Report Share Posted August 29, 2022 @hyperionI don't think using --bindir is needed at all for this actually, but haven't tried building without it yet. I'm going to do that now. As for libdir, when linuxdeploy is run, it copies libraries into AppRun/usr/lib and that seems to be working well. It fixed a lot of problems I was having... except for libCollada.so. I copied it into the AppRun folder in 3 different places: the bin folder (alongside pyrogenesis), the AppRun/usr/lib/games/0ad folder, and AppRun/usr/lib. That didn't help anything. Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 29, 2022 Author Report Share Posted August 29, 2022 Rebuilt without --bindir and getting the same result. I again tried building the image with libCollada in the 3 locations mentioned above. Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 30, 2022 Author Report Share Posted August 30, 2022 (edited) I tried without specifying any --libdir. I changed the install script (above) to install ActorEditor, libCollada.so, AtlasUi.so to AppRun/usr/bin. Ran `linuxdeploy`. It failed saying the deps couldn't be found. Fixed by using patchelf on 5 files: binaries/system{libmoz*,libnv*} Example: In AppRun/usr/bin `patchelf --set-rpath libmozjs78-ps-release.so:/0ad/binaries/system pyrogenesis` (where /0ad/ is my source root) Rebuilt the appimage and ran it. I got errors immediately about directory creation. I copied default.cfg dev.cfg keys.txt to AppRun/user/data/config Rebuilt the appimage and ran it I got the same errors about Collada as before, but the full-screen problem was fixed. Edited August 30, 2022 by andy5995 Quote Link to comment Share on other sites More sharing options...
Stan` Posted August 30, 2022 Report Share Posted August 30, 2022 2 hours ago, andy5995 said: copied default.cfg dev.cfg keys.txt to AppRun/user/data/config You only need default.cfg ::) Quote Link to comment Share on other sites More sharing options...
hyperion Posted August 30, 2022 Report Share Posted August 30, 2022 3 hours ago, andy5995 said: I got the same errors about Collada as before Well, if you can't figure out the right path, worst case you could patch ColladaManager to not dlopen but to link directly to collada, then it would behave like the other deps. Quote Link to comment Share on other sites More sharing options...
Stan` Posted August 30, 2022 Report Share Posted August 30, 2022 I suppose you could look at the A23 appimage maybe there'll be some info in it. https://github.com/ivan-hc/AM-application-manager/blob/main/programs/x86_64/0ad-appimage For ref Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 30, 2022 Author Report Share Posted August 30, 2022 10 hours ago, hyperion said: Well, if you can't figure out the right path, worst case you could patch ColladaManager to not dlopen but to link directly to collada, then it would behave like the other deps. I increased and took a closer look at my scrollback. Right before the DLL conversion errors, near the top of the console output is a fairly good clue: Quote ERROR: DllLoader: dlopen(libCollada.so) failed: libCollada.so: cannot open shared object file: No such file or directory; dlopen(libCollada_dbg.so) failed: libCollada_dbg.so: cannot open shared object file: No such file or directory; I've looked at the code in DllLoader.cpp, but I don't see yet how I can have the complete path output to the console. The base filename is passed to dlopen(); doesn't really make sense to me yet. Quote Link to comment Share on other sites More sharing options...
Norse_Harold Posted August 30, 2022 Report Share Posted August 30, 2022 (edited) Consider setting, and exporting, the LD_LIBRARY_PATH=[absolute path to directory containing libraries] or LD_PRELOAD=[absolute path to specific library] environment variables in a shell script that is called before the pyrogenesis binary. See the manpage for `ld' at the documentation for the switch -rpath-link=dir for a description of the library search path order. But, I haven't worked with AppImages before, so there might be reasons to not do this. Also, you can use strace or ptrace to watch what directories are being searched for libCollada.so. Search paths for shared libraries are configured in /etc/ld.so.conf.d/* If you change the ld.so configuration then don't forget to run ldconfig as root to update the cache. However, changing such configuration might be an even worse idea, as it could have unintended effects on other binaries and libraries. Edited August 30, 2022 by Norse_Harold 1 Quote Link to comment Share on other sites More sharing options...
Norse_Harold Posted August 30, 2022 Report Share Posted August 30, 2022 20 minutes ago, andy5995 said: Quote ERROR: DllLoader: dlopen(libCollada.so) failed: libCollada.so: cannot open shared object file: No such file or directory; dlopen(libCollada_dbg.so) failed: libCollada_dbg.so: cannot open shared object file: No such file or directory; I've looked at the code in DllLoader.cpp, but I don't see yet how I can have the complete path output to the console. The base filename is passed to dlopen(); doesn't really make sense to me yet. It looks like it's calling dlopen on merely the filename. That's a relative path that implies "search the current working directory for the file". You could control the current working directory before that point in the code with a bash script or C++ calls. Or, ensure that the installer places the library in the appropriate directory. Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 30, 2022 Author Report Share Posted August 30, 2022 It's working now (except for Atlas)! Putting libAtlasUI.so and libCollada.so in AppRun/usr/lib did the trick. (I thought I tried that already, as I mentioned above, but saw libCollada.so wasn't there). I'll update the howto in a few minutes, but I'd say it's ready for someone who's familiar with your CI to start adding it. I think best to create the AppImage on systems with a slightly older version of libc than the bleeding edge. That assures it's more likely to run on newer, as well as older systems. But I'm a bit hazy about that yet. Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 30, 2022 Author Report Share Posted August 30, 2022 I've gone through all the steps again and updated the script and docs accordingly. This should be easy-as-pie now. @Stan` Quote Link to comment Share on other sites More sharing options...
andy5995 Posted August 30, 2022 Author Report Share Posted August 30, 2022 For Atlas, I expect that the linuxdeploy-plugin-gtk will be the best (maybe only) option. (more info about linuxdeploy plugins in the linuxdeploy user guide ) When I run the appimage with the '-editor' option, this is the output Quote TIMER| LoadDLL: 186.59 ms Gtk-Message: 15:30:30.448: Failed to load module "canberra-gtk-module" Gtk-Message: 15:30:30.448: Failed to load module "canberra-gtk-module" TIMER| InitVfs: 3.80243 ms FILES| Main log written to '/home/andy/.config/0ad/logs/mainlog.html' FILES| Interesting log written to '/home/andy/.config/0ad/logs/interestinglog.html' TIMER| CONFIG_Init: 2.9302 ms Sound: AlcInit success, using OpenAL Soft (atlas:56487): Gtk-WARNING **: 15:30:31.099: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found. ** Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3) Bail out! Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3) Aborted (core dumped) Quote Link to comment Share on other sites More sharing options...
andy5995 Posted September 1, 2022 Author Report Share Posted September 1, 2022 On 30/08/2022 at 3:37 PM, andy5995 said: For Atlas, I expect that the linuxdeploy-plugin-gtk will be the best (maybe only) option. (more info about linuxdeploy plugins in the linuxdeploy user guide ) Yes, this works. I'll update the wiki shortly. Everyone who has a GitHub account and loves Atlas should star the linuxdeploy-plugin-gtk project. Quote Link to comment Share on other sites More sharing options...
andy5995 Posted September 10, 2022 Author Report Share Posted September 10, 2022 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted September 10, 2022 Author Report Share Posted September 10, 2022 @hyperionI've opened a ticket 1 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted September 14, 2022 Author Report Share Posted September 14, 2022 Presently using linuxdeploy to create an appimage, there's no option to disable compression. I've opened a ticket about that on the appimage plugin repo here. Someone familiar with how 0ad decompresses the data at runtime want to comment or have a look @Stan`@vladislavbelov Quote Link to comment Share on other sites More sharing options...
vladislavbelov Posted September 14, 2022 Report Share Posted September 14, 2022 11 minutes ago, andy5995 said: Someone familiar with how 0ad decompresses the data at runtime want to comment or have a look Answered. In short: we don't decompress data. 1 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted September 29, 2022 Author Report Share Posted September 29, 2022 Anyone who tried the a26 appimage and got **libc errors** should try the newer a26 appimage at https://github.com/0ad-matters/0ad-appimage/releases/tag/v0.0.26-alpha (Though no errors like that have been reported yet) 1 Quote Link to comment Share on other sites More sharing options...
andy5995 Posted October 1, 2022 Author Report Share Posted October 1, 2022 I pushed some changes so now `ActorEditor` will be accessible by using a symlink. As noted on README.md now: cd /path/to/<Appimage-File> ln -s <Appimage-File> ActorEditor The new images should be on the release page in about an hour. cc @hyperion@Stan` Quote Link to comment Share on other sites More sharing options...
hyperion Posted October 1, 2022 Report Share Posted October 1, 2022 $ ./ActorEditor /tmp/.mount_ActorEge8Yqx/usr/bin/ActorEditor: error while loading shared libraries: libthai.so.0: cannot open shared object file: No such file or directory $ ./0ad-0.0.26-alpha-2210010553-x86_64.AppImage -editor TIMER| LoadDLL: 53.6057 ms Unable to open crashlog.txt for writing (please ensure the log directory is writable) Location: debug.cpp:195 (debug_WriteCrashlog) Call stack: (0x5623a5de2b5e) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x5e2b5e) [0x5623a5de2b5e] (0x5623a5d97361) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x597361) [0x5623a5d97361] (0x5623a5d988eb) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x5988eb) [0x5623a5d988eb] (0x5623a5d98569) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x598569) [0x5623a5d98569] (0x5623a5d988fd) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x5988fd) [0x5623a5d988fd] (0x5623a5a9b44b) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x29b44b) [0x5623a5a9b44b] (0x5623a5a9b52a) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x29b52a) [0x5623a5a9b52a] (0x5623a58a664c) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0xa664c) [0x5623a58a664c] (0x5623a5893817) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0x93817) [0x5623a5893817] (0x7f268c81934a) /lib64/libc.so.6(+0x2934a) [0x7f268c81934a] (0x7f268c8193fc) /lib64/libc.so.6(__libc_start_main+0x7c) [0x7f268c8193fc] (0x5623a58a4bba) /tmp/.mount_0ad-0.UaI40J/usr/bin/pyrogenesis(+0xa4bba) [0x5623a58a4bba] errno = 30 (?) OS error = ? Btw, the game runs fine, no performance issues either. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.