> We recommend to _bundle everything that cannot be reasonably expected to be 
> part of each target system (default install) in a recent enough version_. 
> This means that if you build on an old enough build system, we can expect 
> something like glibc to "be part of each target system in a recent enough 
> version". However, if you build on a very recent build system, this may not 
> hold true, because your build artifacts will require a too new glibc version 
> which "cannot be reasonably expected to be part of each target system in a 
> recent enough version". So as always, it depends.

Yes, I'm well aware about binary compatibility.

> For practical reasons, I maintain a list of 
> [libraries](https://github.com/probonopd/AppImages/blob/master/excludelist) 
> and [debs](https://github.com/probonopd/AppImages/blob/master/excludedeblist) 
> that I currently assume to "be part of each target system".

I see you list GTK+2 as a base library, so the bundle shouldn't require much 
libraries.

> These lists are not perfect, however, so if you think that 
> `libpangoft2-1.0.so.0` should be added, you may well be right.

PangoFT is a GTK2 dependency, so there's no reason to bundle it more.  We don't 
depend on it directly either, only through GTK.

> Effectively, it is exactly what you'd do if you target the macOS or Windows 
> platforms.

Unfortunately those are terribly painful, so it's not really a selling point :)

> AppImage is a self-mounting filesystem that simply executes what you put 
> inside. It's up to you what you put inside, […]

Well, actually it seems far less "magical" than I hoped for, and a lot more 
like a mere unpack-and-run type of thing.  For example, the need to patch 
everything under the installation directory to create relative installation 
directories.  BTW, about that:
* running `sed` on binary files requires care.  Basically, you need to make 
sure that `LANG=C` (IIRC), otherwise it might not work and/or mess up the 
result.
* running `sed` is hacky, but also might catch inappropriate things, in the 
string */usr* ever happens in something else than a path to a bundled data 
file/library.

I somewhat had the crazy hope there was a way to somehow overlay a filesystem 
over `/` for the context of an app, and so that it would really be transparent.

---

Anyway, it doesn't change much yet.  At least for setting it up initially, we 
probably would need someone motivated -- and sorry, knowing exactly what 
he/she's doing.  I'm not dismissing any effort here, and I definitely know that 
many things come with trial and error, I'm just saying that it'll likely take 
more time to end up with a "good" result.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/1303#issuecomment-260731250

Reply via email to