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:
Can you try with the new AppImage?
https://github.com/RicardoEPRodrigues/3Engine/releases/download/v1.0.1-AppImagev2/3Engine.AppImage
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.
@probonopd do you mind trying it out? (only works on x64 systems)
https://github.com/RicardoEPRodrigues/3Engine/releases/tag/v1.0.2-AppImage