AppImageCommunity / pkg2appimage

Tool and recipes to convert existing deb packages to AppImage
http://appimage.org
MIT License
683 stars 209 forks source link

Help needed for RawTherapee AppImage creation #278

Open aferrero2707 opened 6 years ago

aferrero2707 commented 6 years ago

I am currently setting-up an AppImage recipe for RawTherapee, and I would like to make use of Travis+Docker for the automated generation of the package.

However, RT requires GTKMM>=3.16 which is not available on every system.

Does anybody know which are the most recommended Docker containers for building an AppImage that requires GTKMM3?

Thanks a lot in advance!

P.S: I'm pinging @Beep6581 so that he can follow the discussion as well.

probonopd commented 6 years ago

It is generally recommended not to use versions of Gtk+ newer than what comes with the oldest version of Linux that you still want to support, because if you do, then you most likely need to bundle Gtk+ (and all of it!) into the AppImage. Unfortunately, some developers seem to not care about supporting anything else but the very latest distributions, which is a pity and makes it harder than necessary to distribute such applications in a generic, distribution-independent way.

The answer to your question is "the oldest distribution that the code still compiles on and on which you can build or install GTKMM>=3.16".

aferrero2707 commented 6 years ago

the oldest distribution that the code still compiles on and on which you can build or install GTKMM>=3.16

That's exactly the point... I was hoping that someone here had already faced such a need, and could give me an advice before I dig into the various existing options...

probonopd commented 6 years ago

Since I haven't tried to compile RawTherapee, I can't answer this unfortunately. Maybe some RawTherapee developers know the minimal compile-time system requirements.

Beep6581 commented 6 years ago

@probonopd

It is generally recommended not to use versions of Gtk+ newer than what comes with the oldest version of Linux that you still want to support

That is exactly the case - we decided a long time ago to stop supporting obsolete systems and move on - that includes 32-bit systems. Had we not done that, the project would have likely stalled for lack of developers. And it's not just about "the oldest version of Linux that you still want to support", our program is cross-platform.

Unfortunately, some developers seem to not care about supporting anything else but the very latest distributions

I hope that's a general statement and not specifically about us.

RT originally used GTK2, but as GTK3 support became a requirement we ended up supporting two parallel branches - GTK2 and GTK3. GTK+ 3.16 was released in March 2015, 2.5 years ago. Despite being far from "the very latest", it was not even initially the latest required version for the GTK3 branch of RT. RT initially required an older version of GTK3 (I don't remember the initial minimal-required version), but 3.16 became a requirement only after it turned out that GTK3 was at the time quite buggy and not well documented and older versions were simply unusable for our needs.

As we became tired and overwhelmed by the effort required to support both the GTK2 and GTK3 codebases, we eventually dropped GTK2 support with the release of RT-5.0-r1 in February 2017.

@aferrero2707 I keep http://rawpedia.rawtherapee.com/Linux up to date. If you have questions, shoot. You can also catch us on IRC for real-time chat http://rawpedia.rawtherapee.com/IRC

probonopd commented 6 years ago

I hope that's a general statement and not specifically about us.

Yes.

GTK+ 3.16 was released in March 2015, 2.5 years ago.

Which makes it "too new" for being in Ubuntu trusty, even more for CentOS 6.x, which are not "obsolete" but still supported (by their vendors) distributions.

Which means that (in any application bundling scheme), if you want to use an application that requires GTK+ 3.16 on those systems, then you have to bundle GTK+ 3.16 with the application. Which can be done but comes at the cost of a larger download size. (Systems like Snappy and Flatpak would define a dependency on GTK+ which would also result in a different GTK+ from the one coming with the system being downloaded, so this is not an AppImage-specific thing).

aferrero2707 commented 6 years ago

Which means that (in any application bundling scheme), if you want to use an application that requires GTK+ 3.16 on those systems, then you have to bundle GTK+ 3.16 with the application. Which can be done but comes at the cost of a larger download size.

I think we have no choice in this case. Also, IMHO one of the advantages of AppImages is to allow running bleeding-edge applications on older systems, without messing up with the system itself... so bundling the GTK+ libraries is the good thing to do.

I am currently preparing an Ubuntu 14.04 docker container with GTKMM 3.22 installed from sources. This could be a good starting point for building AppImages for GTKMM3 applications, not only RawTherapee.

Once the Ubuntu 14.04 container is ready and tested, I will try to do the same with Centos6, however it seems it will require to compile from sources even more dependencies.