-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
POSIX: Add AppImage support #5023
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Wow, this is amazing! I'll check this out and review ASAP. |
|
This is interesting. I installed the lastest linuxdeploy AppImafe file to Any idea what I'm doing wrong here? |
0c2b147 to
9d8058a
Compare
|
you will laugh... |
|
BTW, as this PR also changes the appdata XML and desktop file, could you check that snap and flatpak packages are not broken? |
The snap package is not affected, because I ship a modified scummvm.desktop file with it, so this is not touched by this change. Summoning @AsciiWolf for FlatPak 😁 |
|
Currently looking into the AppImage building itself. I already found one thing that we might want to check against: AppImage requires libfuse2 to run, but current Linux distros ship with libfuse3, so we have to install this as an additional dependency. Unfortunately, this affects both building and running the AppImage. |
|
When calling I remember I had to do this for the Raspberry Pi image itself, so this doesn't seem to be an issue with how the desktop file is named. With this change, I was able to successfully build the AppImage. We might want to consider disabling the local fileserver though, because this will most likely break due to the AppImage confinement. However, I think this is an issue for a seperate task after AppImage support is working in general. If you want to give it a try, I have a test build built with Ubuntu 23.04 here: https://storage.scummvm.org/s/X7YzdbJFjsRAdcp |
|
Oh, and btw, if you want to have some referencence manual: The folder https://storage.scummvm.org/s/sckHC2iBdktEdkM contains the wrapper and build scripts I used for the current Raspberry Pi image. This is by no means a "pretty" build script, but it does the job. Adding "zenity" for a minimalistic GUI is no problem there since I only target Raspberry Pi OS, so I don't have to care about this dependency. This might be a bit more difficult if we want to do this in the "general purpose" makefile target. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a quick review for now, will do a more detailed one tomorrow. Sorry, I was too busy with other things over the weekend.
dists/redhat/scummvm.spec
Outdated
| %attr(0755,root,root)%{_bindir}/scummvm | ||
| %{_datadir}/applications/* | ||
| %{_datadir}/pixmaps/scummvm.xpm | ||
| %{_datadir}/icons/hicolor/48x48/apps/scummvm.png |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should consider renaming the icon files as well (directly in dists, not in the redhat subdirectory) to match their desktop counterpart names. This is optional, but would be helpful for the ScummVM Flatpak.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't modify icons located in icons folder because they could be used by other platforms and this id thing is quite FreeDesktop specific.
But I moved them when installing them and adapted the path in desktop and metainfo.
|
Consider renaming the AppStream metadata file to org.scummvm.scummvm.metainfo.xml. The metainfo.xml suffix is a preferred one if you install the file into the |
|
This is now done. |
|
The changes look good, thanks! |
I don't have either but with local type you need a full path... :| |
|
Is the icon tag needed? I have never used it and when reading the specification or how it is used in the example file, it looks like some fallback generic icon name. I would probably remove it, the correct icon name is already in the desktop file. |
|
Yes, you are right. Better removing it. |
| devtools/release-checks.sh | ||
|
|
||
| # Mark special targets as phony | ||
| .PHONY: deb bundle osxsnap install uninstall |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just noticed that the "deb" target was removed from being marked as phony. Was it intended?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, as the target doesn't exist anymore in our makefiles.
I mentioned it in commit message.
Indeed, it's a limitation of current AppImage (per AppImage/AppImageKit#1120). In fact, the generated AppImage also misses some libraries (like freetype, libstdc++, ...). Official AppImage build instructions recommend to use the latest LTS still supported distribution like CentOS 7 (which is unmaintained now).
I was really puzzled by what you said because it worked perfectly for me without adding any option and I realized that I run configure with
The AppImage isn't concealed itself, it's just some directory mounted and a binary run from there. Currently AppImage is a make target so we can't really disable things when running it.
Thanks, but your wrapper seems to install the binary on the filesystem (like an installer). I don't think it's the purpose of AppImage which are supposed to be run directly. |
Uh, that's interesting, I'll have a look at it and see how well it works.
Yes, that's a good idea - I didn't modify the prefix at all, so that's likely what caused the issue (I wasn't aware that /usr is expected in AppImages).
Yes, the wrapper provides an additional option to either run it "on the fly" (as usually expected) or "embed" the AppImage to the system - some users prefer this way, so I provided a solution for both. |
And update phony rules.
AppData id should really be a rDNS but its filename and desktop filename must match this id. This commit makes everything match. The provides directive must not mention its own desktop file but launchable should.
Language codes must be unique (pt is in double). In addition, rework code to make it cleaner.
And add a target to generate the image
This follows new conventions
I've added support to go-appimage. This is not completely failsafe (it fails to parse the include directive in /etc/ld.so.conf and fails to find the icon in scalable subdirectory) but it works and produces a full bundle which doesn't depend on anything on the target system (except some standard utilities like find, grep and so on)
Done.
It seems that there is now a appimaged binary which monitors appimages and "registers" them to the system. |
This is now fixed in latest tag |
This allows us to build fully static AppImage This needs appimagetool-780 or later
|
OK... Let's merge this! |
|
Thank you, everyone! |
This PR adds AppImage generation.
This also fixes AppData XML which had several problems:
In addition, the phony rules in ports.mk has been cleaned up.