What about this solution:

In src:poppler provide a virtual package

Package: libpoppler-glibYY
Provides: libpopplerXX-glibYY (= ${binary:Version})

(where XX and YY are the sonames of the respective packages)

and in src:inkscape (and maybe others) add some sed
manipulation to d/rules:

# generate a virtual package dependency to ensure inkscape uses
# matching versions of libpopplerXX and libpoppler-glibYY
# #969907
execute_after_dh_shlibdeps:
        sed -ri -e '/shlibs:Depends=/ s/$$/, POPPLER-GLIB/' \
                -e 's/(libpoppler[0-9]+)(.*)POPPLER/\1\2\1/' \
                -e 's/libpoppler-(glib[0-9]+)(.*)GLIB/\1\2\1/' \
                debian/inkscape.substvars

Just tried that and it generated:
Depends: ..., libpoppler-glib8 (>= 0.18.0), libpoppler123 (>= 22.08.0), ..., 
libpoppler123-glib8

This should ensure inkscape depends on libpopplerXX and
libpoppler-glibYY with matching versions (something that
cannot be expressed easily in regular shared library
package dependencies) without unneccessarily tightening
poppler dependencies in packages that use only one of
these libraries.

(This will intentionally generate an unsatisfiable meta
dependency once inkscape no longer links to both
libpopplerXX and libpoppler-glibYY.)


Andreas

Reply via email to