On Sunday, April 25, 2021 at 1:53:03 PM UTC-5 Samuel Lelievre wrote:
Marc Culler's SageMath-macOS app could provide inspiration for that. After having done some research on this, my preference would be to package Sage as an AppImage, and I have plans for doing that. An AppImage needs to be relocatable, and I believe that the scripts I use for the macOS app to make it relocatable would be easily adapted to do the same thing on linux. I have not built an AppImage for Sage yet, but as a warmup I packaged SnapPy as a linux AppImage, and that was successful. It is very easy to work with AppImages. They are not sandboxed in the way that a snap or flatpak is sandboxed (e.g. restricting where files can be read from or written to), which I view as a plus, but they do not need to depend on any local libraries other than the C runtime. The Sage macOS app is technically a GUI app, since it opens one window which is used to launch Sage, but there is no GUI provided for Sage itself. The GUI is a few lines of tkinter code which could be re-used on linux. So my plan would be to make the linux AppImage work the same way as the macOS app, with essentially the same code. An AppImage is a single file which is an ELF executable (although you must run chmod +x after downloading it) and which also contains an appended (compressed) squashfs filesystem that includes all code and libraries needed to run the main program. It works completely in user space and need not require any external system packages. The AppImage can go anywhere (although ~/bin is a recommended location). It can also be easily integrated with an XDG desktop system by just adding a .desktop file and an icon. (The Snappy AppImage installs those two files if run with an option --install.) Ideally one would build the appimage on a manylinux docker image so that it would be compatible at least with 5 year old linux systems. The Appimage executable simply mounts the squashfs filesystem and execs the main program, which can be a script, from a standard location in the filesystem. It requires FUSE to mount the filesystem, which unfortunately mans that it will not work on WSL since, supposedly, WSL does not support FUSE. - Marc -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/sage-devel/88bf4d1f-f440-4d93-9c77-7420c1017392n%40googlegroups.com.