[scribus] Conflict with inkscape caused by Scribus PPA (Ubuntu 18.04)
bertd.fpevohf.arg at taw.playbeing.com
Mon Dec 9 17:07:03 UTC 2019
> I'm the maintainer of the mentioned PPA, and I've been pointed to this
> Incidentally, I also maintain inkscape in Debian/Ubuntu, so I'm double
> interested :)
Oooh, wonderful, just the right guy! Thanks for joining us so quickly!
The problem is that Inkscape does not link to libpoppler73 directly,
but rather through libpoppler-glib8. So by updating libpoppler-glib8
through the Scribus PPA, the Inkscape linkage changes to libpoppler85
indirectly. I haven't checked how Scribus links to libpoppler. If it
doesn't use libpoppler-glib8, the problem could be solved by simply
not including that library in the PPA. If libpoppler-glib8 is just
glue, as it would appear to be, building it as a .a rather than a .so
for the PPA would also resolve the issue, as it would not affect
packages not specifically built against it. But static libraries are a
bit hacky and I don't think the package build infrastructure makes
that solution easy.
> > The libpoppler package itself is properly versioned, which allows multiple
> > ABI versions to coexist. E.g., libpoppler-glib8 0.74.0-0ubuntu1.2~ppa0
> > depends on libpoppler85.
> Indeed, this part can't be the bit that causes a crash; if it does,
> that's a bug in the running application (it _is_ techinically possible
> for an application to load multiple versions of the same library,
> disregarding the actually different SONAME, but why would anybody do
That appears not to be the case, fortunately.
> > The version of libpoppler-glib8
> > (0.62.0-2ubuntu2.10) which comes with the OS depends on libpoppler73.
> > Unfortunately, libpoppler-glib8 gets updated by the Scribus PPA. And
> > because inkscape depends on libpoppler-glib8, which drags in the
> > libpoppler85 library, it then crashes.
> This is inherently interesting. So, the Glib bindings are ABI
> compatible, but most likely this is causing some ugly conflict as
> inkscape continue to load poppler73, but libpoppler-glib8 loads
> poppler85 in the same address space, likely leading to madness.
It's less complicated than that. Inkscape expects the poppler73 ABI,
because it is built to poppler73's .h files, but through
libpoppler-glib8 gets the incompatible poppler85 shared library.
Probably, the maintainers of Poppler added a parameter to a call,
causing a null pointer deference when the newer library is used.
> I wonder if that's something that could be nicely fixed. I doubt
> regular people ever run in such situation themselves, even if we had a
> similar case in Debian during the OpenSSL transition from 1.0.2 to 1.1.
Every Ubuntu 18.04 user who uses the stock Ubuntu Inkscape with
Scribus from the PPA will experience this issue (and as you can see,
history repeats itself; the original bug was for the same problem in
> > Would it be possible to name the libpoppler-glib8 with the ABI number in
> > the PPA, e.g. libpoppler85-glib8, to avoid this clash? For good measure,
> > libpoppler-qt5-1 probably needs the same treatment.
> My proposed "fix" here would be to just not build anything but
> libpoppler85 in the PPA. That way no unrelated package would be
> accidentally updated. Unfortunately, this wouldn't fix the situation to
> all the current users that have the current libpoppler-glib8 installed.
> Also your proposal wouldn't fix current systems either, but since
> nothing in the scribus PPA makes use of those other binaries, I'd just
> discard them all.
> Can you think of anything better?
If not including the conflicting glue libraries is an option, then
that is the best way forward. You could (in the bionic PPA only) add a
Conflicts: line with specific version numbers to kill off the
incompatible libraries, but I think most people would be happy if they
got manual cleanup instructions somehow. In my experience, Conflicts
will sooner or later bite the maintainer in a place where it hurts.
And most PPA users know that PPA's aren't meant to be perfect.
With kind regards,
More information about the scribus