Testing a new way to distribute ASPECT

Hi all,
I was playing around with a different way to easily distribute a compiled version of ASPECT for Linux. The system is called AppImage (https://appimage.org/), and ideally it could allow us to distribute a single file that contains a working ASPECT version for all decently new Linux distributions (useful for example for tutorials, instead of big virtual machines). If you have a minute and are running Linux I would be happy to get feedback if it works on your machine. Testing works as follows:

  1. Check if you distribution is recent enough (Ubuntu >=16.04, Debian >=9, RHEL >=8, Fedora >=24)
  2. Download my preliminary image from here (90 MB): https://www.dropbox.com/s/ywoku0nj377zy4f/ASPECT-current-x86_64.AppImage?dl=0
  3. Make the image executable: chmod +x ASPECT-current-x86_64.AppImage
  4. Execute the file (./ASPECT-current-x86_64.AppImage) and check if you see the ASPECT header. If you get errors about FUSE, try to do the following instead:
./ASPECT-current-x86_64.AppImage --appimage-extract
./squashfs-root/AppRun
  1. If you use MPICH as your MPI implementation please also test if you can run it in parallel (mpirun -np 2 ASPECT-current-x86_64.AppImage). OpenMPI is currently not possible (though if we decide to do this, we could easily offer two different files, one for OpenMPI and one for MPICH).

If this works, you should be able to run parameter files like normal. The speed should be nearly identical to a natively compiled ASPECT. There are a few caveats since this is early testing:

  1. You need to trust me that the file I linked above is not malicious (run it in a virtual machine if you are concerned). Later we can sign the image like what is done for official packages.
  2. Everything in ASPECT that relies on ASPECT_SOURCE_DIR will not work unless you provide absolute paths, in particular all default paths to data files will fail (can be worked around later).
  3. You can currently not compile shared libraries (user plugins) against this binary. Again this is something we can find a solution for.

If I get enough feedback that this is interesting and useful I can spend some more time making the method more robust and convenient, for now I would like to hear if it works for most of us who are interested.

Let me know what you think.

Best,
Rene

Hi Rene,

Very cool - exceptionally easy, and would make for a much more flexible teaching tool!
Single processor runs work as advertised on my machine (Ubuntu 19.04).
I use OpenMPI, so no multiprocessing for me.

Bob

Ha, fun! This works for me, even with mpirun -np 2!

Works, very cool. I am running OpenMPI so only serial runs works here.

I am impressed by the compression: 300mb+ of libraries (deal.II, Trilinos, etc.) compressed down into a 96MB file. :slight_smile:

One could include the default ASPECT_SOURCE_DIR inside the appimage and point to it, right?

All, thanks for testing. Since it seems to work reasonably well, I will make an OpenMPI image when I have some time this week and post it here too.

Yes, including an ASPECT source dir inside the image is likely the best option. This could also allow to compile a shared library against this specific version, if it includes all the necessary information (cmake info and header files) and one extracts the image with --appimage-extract. One alternative could be to allow ASPECT_SOURCE_DIR to be read from an environment variable, but that would require more changes inside the code.