We have split ebuilds of poppler. Upstream supports qt4 and qt5; we have
only poppler-qt4. Providing -qt5 is not a problem; the problem is
something else.

(Currently qt5 on the poppler "meta package" is disabled; but I think
it's time to think about providing -qt5 - for new Calibre for example.)

Ebuilds can have something like: RDEPEND="app-misc/poppler[qt5]" or
RDEPEND="app-misc/poppler[qt4?,qt5?].

However, Sabayon has this:

[...]
../../noarch/entropy/packages/packages.server.dep_rewrite:app-office/libreoffice
(.*)app-text/poppler(.*)(\[.*\])? \1app-text/poppler-base\2
../../noarch/entropy/packages/packages.server.dep_rewrite:app-office/openoffice
(.*)app-text/poppler(.*)(\[.*\])? \1app-text/poppler-base\2
../../noarch/entropy/packages/packages.server.dep_rewrite:app-office/texmaker
(.*)app-text/poppler(.*)(\[.*\]) \1app-text/poppler-qt4\2
../../noarch/entropy/packages/packages.server.dep_rewrite:app-office/texmakerx
(.*)app-text/poppler(.*)(\[.*\]) \1app-text/poppler-qt4\2
../../noarch/entropy/packages/packages.server.dep_rewrite:app-office/texstudio
(.*)app-text/poppler(.*)(\[.*\]) \1app-text/poppler-qt4\2
[...]

Now that qt5 on poppler is disabled, it'll be easy to spot when the
first package requires it. But after it is enabled, which will happen
eventually (along with poppler-qt5::sabayon-distro), it'll be harder to
notify that a package switches from poppler qt4 to poppler qt5, so the
(rewritten) dependency will be incorrect.

Any thoughts on how to deal with it?

(If qt5 is enabled on a per package basis, it'll be easier, but this is
not the case with every package - see Calibre.)

The easiest solution: provide poppler-qt which has qt4 and qt5 parts
with "missing runtime dependency" ignored (looking at qt4, shared lib
and not binary) because it will be bad to have it depend on both qt
branches.

Another idea is to implement a hook somewhere, like this (basic error
checking skipped for clarity; I am aware that stripping numbers doesn't
support _pre etc. but that's okay, we'd notice anyway):

{{{
packages_that_require_poppler_qt4=$(eit query required
libpoppler-qt4.so.4 | sed -nr '/Package: /s/.*Package: ([^ ]+).*/\1/p' |
sed -e 's/\x1b\[[0-9;]*m//g' -e 's/[0-9r0.-]*$//' | sort -u)

for x in $packages_that_require_poppler_qt4; do grep "$x"
packages.server.dep_rewrite | grep -q poppler-qt4 || echo "$x"; done
}}}

This will print packages that don't have the qt4 dependency. Heck, I
have spotted two! (I will fix them right away.)

In the meantime, maybe someone has something simpler but something that
still works. ;)

Reply via email to