Package: graphicsmagick-libmagick-dev-compat
Severity: normal

Hi,

having a look at src:r-cran-magick, it currently Build-Depends on
libmagick++-dev. Since graphicsmagick-libmagick-dev-compat provides
libmagick++-dev it can happen that this dependency is satisfied by the
virtual package provided by graphicsmagick-libmagick-dev-compat. This in
turn leads to a build failure reported as #995302 because
src:r-cran-magick fails to build from source if graphicsmagick is used
to compile the source instead of imagemagick. The solution that fixed
the bug was to add a Build-Conflicts with
graphicsmagick-libmagick-dev-compat as well as libgraphicsmagick1-dev.
But this made me wonder: are there other packages in the archive that
might draw in graphicsmagick via graphicsmagick-libmagick-dev-compat
instead of imagemagick and then fail to build from source?

Of the source packages that have libmagick++-dev or libmagick-dev in
their build dependency installation closure we can identify the
following groups:

1. packages that explicitly build with graphicsmagick instead of
   imagemagick

    - cimg

    The Provides is not useful here, because the source package declares
    graphicsmagick explicitly

2. packages that explicitly build with imagemagick instead of
   graphicsmagick

    - converseen
    - inkscape
    - pythonmagick
    - synfigstudio

    The Provides is not useful here, because the source package declares
    imagemagick explicitly

3. packages that FTBFS anyway and thus cannot be tested

    - digikam
    - gnunet
    - k3d
    - performous
    - pfstools
    - synfig
    - libextractor

    Irrelevant here, because we cannot compile them in unstable right
    now.

4. packages that just depend on libmagick++-dev and work with either:

    - dvdauthor
    - pstoedit
    - vdr-plugin-skinenigmang
    - zbar

    The Provides is not useful here because those packages build fine
    with the real package from src:imagemagick

5. packages that don't use either but only have libmagick++-dev or
   libmagick-dev in their closure because of libzbar-dev

    - gnome-authenticator
    - megapixels
    - nitrokey-authenticator
    - otpclient
    - pyzbar
    - gst-plugins-bad1.0

    Irrelevant, because those packages don't use imagemagick but just
    zbar.

6. packages that explicitly depend on graphicsmagick-libmagick-dev-compat

    - drawtiming
    - tango-icon-theme
    - xine-lib-1.2

    The Provides is not useful here either because those packages
    explicitly build depend on graphicsmagick-libmagick-dev-compat

7. packages that explicitly conflict with graphicsmagick

    - diffoscope
    - digikam
    - dx
    - firefox
    - gem
    - r-cran-magick

    The Provides is harmful here because packages have to explicitly
    declare a Conflicts relationship so that graphicsmagick is not
    installed instead of imagemagick.

So in summary, all uses of libmagick++-dev or libmagick-dev either do
not benefit from the Provides relationship or are actively harmed by it.

What is the rationale for the Provides. Why is it useful?

Thanks!

cheers, josch

Reply via email to