-
Notifications
You must be signed in to change notification settings - Fork 77
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
Add appimagecraft build script #106
Conversation
I'm not too familiar with appimage, but this doesn't seem to be building for me (on Pop!_OS 20.04):
|
Well, seems like your appstreamcli doesn't run at all. Have you tried running it outside appimagecraft? AppStream validation is optional; if appstreamcli isn't found, the tool should work. You should consider building your AppImage on the oldest still-supported LTS release of some major distro. We use Ubuntu xenial for most builds ourselves. Building on bionic will work, too, but some users will be excluded. |
Yes, |
Indeed. By coincidence, I created an issue related to this problem today: linuxdeploy/linuxdeploy-plugin-gtk#4 |
I was able to build with some difficulty in a set -e
apt-get update
apt-get install -y shellcheck libgtk-3-dev fuse
wget https://github.com/TheAssassin/appimagecraft/releases/download/continuous/appimagecraft-x86_64.AppImage
chmod +x appimagecraft-x86_64.AppImage
./appimagecraft-x86_64.AppImage docker run --rm -v "$PWD:/popsicle" -w "/popsicle" --privileged rust:1.40.0-stretch bash appimage.sh However, it is failing to run on Pop!_OS 20.04:
Not sure why that isn't included in the appimage. (Of course, 20.04 has |
I wonder why you had to install shellcheck, IIRC it should be bundled. Anyway. Can you please share the resulting AppImage and perhaps a log of the appimagecraft run? |
Here's a zip with the appimage and a log: |
Very strange. https://github.com/AppImage/pkg2appimage/blob/master/excludelist doesn't contain libffi, so it should be bundled if the binary depends on it. Apparently, the When I run linuxdeploy on my workstation (which runs bionic), libffi is deployed just fine. Something's wrong here. I'll have to try it myself in such a container... |
Yes, it is odd. It seems Hopefully it should be easy to reproduce (a nice advantage of docker). |
Please do build on the oldest still-supported LTS release of Ubuntu, so that the resulting binaries will be able to run on all still-supported versions of Ubuntu and other similar age distributions. If you build on a distribution from 2020, the compiled binaries will most likely not run on e.g., 2018ish systems. So xenial it is. bionic and focal are way too new. |
That might not be possible if Xenial's Rust compiler isn't kept in sync with our minimum target (Focal). |
Then this AppImage may be a candidate for bundling everything. |
The |
Stretch binaries will surely work and be more than sufficient to reach most of the target audience... Also, one should note that I had no difficulties building on bionic, which is also no longer the latest LTS (it's 2 years old...). Possibly related to linuxdeploy/linuxdeploy#145 (although #145 hasn't been proven, yet to see some real evidence). What's weird is that it does deploy the app reliably on my workstation... |
Bionic is roughly keeping in sync with Rust compiler toolchain updates, albeit it tends to lag a month behind. I'm not sure how long they intend to keep supporting Xenial, though it does have the same version as Focal now. Having popsicle execute within an isolated namespace completely separate from the host system, as the Flatpak works, would be ideal. No need to worry about any system libraries, or development dependencies on that system. |
@ids1024 the issue causing not all dependencies to be deployed was indeed in linuxdeploy. Fixed it there, should work now. |
Yep, that fixed it. Now it builds an appimage that seems to run fine. The remaining issue I see is that I had to pass |
Run |
Ah yes. With Running the appimage does result in a couple errors on the terminal when opening the file chooser:
It does however work. Some functionality of the gtk file chooser may not. If we do want to officially provide appimages for Popsicle, I'm pretty happy with the official |
Please feel free to open an issue in https://github.com/linuxdeploy/linuxdeploy-plugin-gtk. Perhaps the plugin should deploy a few more libraries? Those libs look like |
I took a look at CI for this. It seems Github Actions offers Ubuntu 16.04, which has Rustc 1.43. So it's fine as far as the Rust version... But then, it seems something calls the system's Then it gives the message |
I build most AppImages on Travis CI. There, it's not a big deal to build with Docker. Maybe that's an option here, too? I think going for the Rust Docker images is a good idea, too. PR merged, thanks. Regarding the version, you can also just specify an environment variable there ( |
Yep, it seems to have docker pre-installed, and that works: https://github.com/pop-os/popsicle/actions/runs/281263143 I thought I'd try building directly in Github Actions, but this seems better. I generally like CI based on docker (like Gitlab uses) since it can work locally and is based on whatever clean base image you choose, rather than the remarkably random assortment of software the CI provider seems to offer. It should be easy to also have Github Actions add the appimage to tagged releases automatically. @mmstick @jackpot51 So do we want to offer AppImages for Popsicle? It seems like a good thing to have available as long as it works, and the build doesn't break much or require significant maintenance. |
I think your tool has a chance to become some serious competition for all the other image writing tools out there. It's minimalistic, does its job and doesn't track every single click you take (especially without consent, like Etcher does). It's the most usable one I've seen so far, and it works well. I think you just need a little bit of marketing. And the fact that, as an AppImage, it's portable and can be used on almost every Linux desktop, is probably going to help. Perhaps you even could offer two AppImages? You also provide a CLI version, and I could imagine there's people out there who might want to use it. We could also write an AppRun script (entry point of the AppImage, usually it's just a symlink to the main binary but you can also put a script there) which decides where to route a call. That way, you could e.g., call the CLI when |
I am interested in seeing an official appimage soon. I just tried this today, and its amazing! 🎉 |
@ids1024 any update on this? Like @srevinsaju I'm really waiting for an AppImage. |
Merged in #108. |
Allows Popsicle to be built as an AppImage with appimagecraft.
CC #104.