RicardoEPRodrigues/3Engine

AppImage Support

Closed this issue · 19 comments

Please provide an AppImage for download on the GitHub Releases page. Thank you!

I have to improve my AppImage creation, it currently doesn't include the needed libraries to run without installing additional software.

If you want to try it out, I can make a build.

I build an AppImage with a simple scene. This scene asks a lot from the GPU, so don't be surprised if it runs poorly.

https://www.dropbox.com/s/hg37fqw3g6his1w/3Engine.AppImage?dl=0

You still need to install some dependencies: sudo apt install freeglut3-dev libglew-dev libxmu-dev libxi-dev.

How do you produce the AppImage? Have you considered using linuxdeployqt?

me@host:~$ Downloads/3Engine.AppImage 
LightScene: error while loading shared libraries: libGLEW.so.2.0: cannot open shared object file: No such file or directory

linuxdeployqt -appimage would probably handle this for you automagically.

Hello again @probonopd.

linuxdeployqt seems like a good solution, I have to check if it doesn't bundle any Qt related libs (since I don't want any). On the other hand, I already have everything set up using CMAKE and some simple scripts, I wonder how much would it help me to use this tool.

When I have time, I'll give it a go, for now I prefer to use my own scripts.

If your application does not use Qt then of course linuxdeployqt will not bundle Qt. You should give it a try as it can be huge timesaver.

I've been doing some testing (not using linuxdeployqt yet) and I don't think this specific problem -- libGLEW.so.2.0: cannot open shared object file -- is solved by including libraries in the build.

It appears GLEW and FreeGLUT depend on drivers from the OS, since I'm running on NVIDIA it ties itself with it. Meaning that I need to build for NVIDIA/MESA/... etc.

I want to change to SDL and I hope that with it these problems disappear.

For now you still need to install the needed dependencies. sudo apt install freeglut3-dev libglew-dev libxmu-dev libxi-dev

I published a Release with the AppImage and some instructions.

https://github.com/RicardoEPRodrigues/3Engine/releases/tag/v1.0.1-AppImage

I'll keep this issue open and change its title. Thank you for your interest.

The *.desktop file is lacking a Categories= entry.

According to the menu spec,

By including one of the Main Categories in an application's desktop entry file, the application will be ensured that it will show up in a section of the application menu dedicated to this category. If multiple Main Categories are included in a single desktop entry file, the entry may appear more than once in the menu.

Hence, please add at least one of the following in the Categories= key.

Main Category Description Notes
AudioVideo Application for presenting, creating, or processing multimedia (audio/video)
Audio An audio application Desktop entry must include AudioVideo as well
Video A video application Desktop entry must include AudioVideo as well
Development An application for development
Education Educational software
Game A game
Graphics Application for viewing, creating, or processing graphics
Network Network application such as a web browser
Office An office type application
Science Scientific software
Settings Settings applications Entries may appear in a separate menu or as part of a "Control Center"
System System application, "System Tools" such as say a log viewer or network monitor
Utility Small utility application, "Accessories"

In addition, you could specify one or more from the longer list of Additional Categories.

Please test the result with desktop-file-validate and make sure it passes.

electron-builder offers native support for this since v19.22.1.. Please see the category key at https://www.electron.build/configuration/linux-other.

References:

Thank you very much.

@probonopd I tried using the linuxdeployqt and have a problem. In my own AppRun I specify in which directory to run the program, in this case is the base folder where I have needed assets.

Is it possible to replicate this behaviour in the linuxdeployqt?

No, but you can run linuxdeployqt -bundle-non-qt-libs on the AppDir, and then delete the AppRun symlink and replace it by your own script, and subsequently use appimagetool to turn the AppDir into an AppImage.

Here is an example:
https://github.com/ImageMagick/ImageMagick/blob/09a42b2f9cadcd3736b67d52b0a9391f1a65acaf/.travis.yml#L37

That would make my code unnecessarily complex... I'll keep watch on linuxdeployqt and see if it fits my needs in the future.

The only bit that interests me in this program is the dependencies imports, yet I believe that for this work it's better to have only a small manually set of dependencies imported.

It'd be best to load assets from a path relative to the main executable, rather than from a path relative to the current working directory (cwd).

I though of that. I'll place it as an issue.

I just reopened the issue to close it with a fix.

I finally got the AppImage with SDL to work without any weird bugs.

Thanks for the update. Still getting

Like back in AppImage/appimage.github.io#675 (comment).