-
-
Notifications
You must be signed in to change notification settings - Fork 36
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
Ideas to improve AppImage #93
Comments
For what it's worth, the macOS .app (after extracting), is around 230MB. The .dmg just compresses really well. I definitely agree that this should be improved, but it's already good to have an AppImage in the first place. |
There's some tarballs and Windows exe files in the AppDir. They can safely be removed. |
I think for every Python file we have a |
Does Pext use Qt's web engine core plugin? It's among the largest plugin files. |
I don't believe it does, no. And sure, those make sense. |
|
Looking at both the Windows and macOS build, which are both not really optimized either, ~120MB in compressed form should be something reasonably reachable. |
That'd mean to cut the current size by half... I'd be curious to see what can be removed safely. Quite some Qt5 libraries could be removed for instance, which could save a few MB. I'm sure there's more to remove. |
|
Looking at the releases, somewhere between 0.18 and 0.19, the AppImage went from 253MB to 377MB. However, there is no change on Pext's side to explain this: v0.18...v0.19. Something third party must've changed between Aug 22 and Sep 5. Seeing how there is no size change for the macOS or Windows packages, I worry this may have changed on the AppImage side, as that is the only obvious difference between the Linux and other builds. |
On the AppImage side, only the runtime size could've increased, but that hasn't happened. I suspect that miniconda's environment grew in size. By the way, you may want to check out https://github.com/TheAssassin/linuxdeploy-plugin-conda#example. If Pext could be "packaged" as a conda package, AppImage creation could be broken down to a few lines of code using our new, unified AppDir creation tool linuxdeploy. |
Packaging as a conda package may be something to look into, but at the same time, it probably would just cause me extra maintenance work because it'd create more difference between the Linux, macOS and Windows build processes. The "remove bloat part" or that plugin, however, is definitely helpful. Miniconda's environment having grown 120MB in size, but only for Linux, seems a bit dubious to me. I'll try to compare the two AppImages when I get home to a Linux system to see where the growth actually is. |
It would've been more dubious if appimagetool had generated that amount of data somehow. That's the only AppImage tool that is used, and the only thing that it ships that will be contained in the AppImage is the runtime. Since the tool still is tiny (just a few MB), that can't have added that bloat, unless it copies the runtime like 100 times. |
It was indeed miniconda. Pext's AppImage is now WAY smaller, which is awesome! Will need to look into what Qt modules I actually need :) |
How so? Did you take any action? If yes, we should implement that in linuxdeploy-plugin-conda. By the way, linuxdeploy-plugin-conda itself doesn't require you to provide conda packages. Its basic use case is to create a miniconda environment in an AppDir in a sort-of-standardized way. It could replace parts of the AppImage build process in this project. Shall I send a PR for demonstration? |
Just the cleanups you also do in linuxdeploy-plugin-conda: 4383ac9. Hmm, well, following upstream AppImage more does make sense I suppose. The macOS and Windows builds are far from a one-on-one copy anyway, so maybe I can also improve those later by looking at the new linuxdeploy techniques. A PR is welcome :) |
With over 200 MiB, the AppImage is quite large. In this issue, ideas shall be collected how this size can be reduced.
By using upx on the Qt libraries and using the standard gzip compression, I was able to reduce the size to ~150 MiB already.
We need to compare the startup times when starting to compress files in the AppImage or changing the AppImage's compression to the big one, as they will increase. As disk size is cheap and AppImageUpdate allows for delta updating AppImages, ~100 MiB would still be okay, given there's a whole Python distribution in the AppImage.
The text was updated successfully, but these errors were encountered: