Bug#1086937: pfstools: build against imagemagick 7

Emilio Pozuelo Monfort pochu at debian.org
Mon Nov 11 08:39:07 GMT 2024


On 09/11/2024 17:51, Andreas Metzler wrote:
> On 2024-11-07 pochu at debian.org wrote:
>> Source: pfstools
>> Severity: serious
> 
>> Hi,
> 
>> pfstools is still built against imagemagick 6, but we're transitioning
>> to imagemagick 7, see [1].
> 
>> Your package may be build-depending on imagemagick 6 binaries (e.g.
>> libmagickwand-6.q16-dev), in which case it should switch to the new
>> binary packages, or generic ones if possible.
> 
>> If your package build-depends on unversioned packages (e.g.
>> libmagick++-dev) then most likely it failed to build against the
>> new version, and will need fixes for ImageMagick 7. See the buildd
>> status for logs [2].
> [...]
> 
> Hello Emilio,
> 
> pfstools FTBFS against imagemagick 7 with
> 
> In file included from /usr/include/ImageMagick-7/Magick++/Include.h:16,
>                   from /usr/include/ImageMagick-7/Magick++.h:12,
>                   from /tmp/PFSTOOLS/pfstools/src/fileformat/pfsinimgmagick.cpp:3
> 0:
> /usr/include/ImageMagick-7/MagickCore/magick-config.h:25:10: fatal error: Magick
> Core/magick-baseconfig.h: No such file or directory
>     25 | #include "MagickCore/magick-baseconfig.h"
>        |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> 
> And afaict this looks like a either a bug in cmake-data 3.30.5-1 or the
> imagemagick 7 debian package uses different paths than cmake's
> /usr/share/cmake-3.30/Modules/FindImageMagick.cmake expects.
> 
> 
> The issue is that
> find_package(ImageMagick COMPONENTS Magick++ MagickCore)
> fails to locate "the ImageMagick arch-specific include dir" with v7.
> 
> Using cmake -Wdev --log-level=TRACE --log-context --debug-find
> we find:
> ----------
> CMake Debug Log at /usr/share/cmake-3.30/Modules/FindImageMagick.cmake:131 (find_path):
>    find_path called with the following settings:
> 
>      VAR: ImageMagick_Magick++_ARCH_INCLUDE_DIR
>      NAMES: "magick/magick-baseconfig.h"
>      Documentation: Path to the ImageMagick arch-specific include dir.
>      Framework
>        Only Search Frameworks: 0
>        Search Frameworks Last: 0
>        Search Frameworks First: 0
>      AppBundle
>        Only Search AppBundle: 0
>        Search AppBundle Last: 0
>        Search AppBundle First: 0
>      NO_DEFAULT_PATH Enabled
> 
>    find_path considered the following locations:
> 
>      /usr/include/ImageMagick-7/ImageMagick/magick/magick-baseconfig.h
>      /usr/include/ImageMagick-7/ImageMagick-6/magick/magick-baseconfig.h
>      /usr/include/ImageMagick-7/ImageMagick-7/magick/magick-baseconfig.h
>      /usr/include/ImageMagick-7/magick/magick-baseconfig.h
>      /usr/include/x86_64-linux-gnu/ImageMagick-7/ImageMagick/magick/magick-baseconfig.h
>      /usr/include/x86_64-linux-gnu/ImageMagick-7/ImageMagick-6/magick/magick-baseconfig.h
>      /usr/include/x86_64-linux-gnu/ImageMagick-7/ImageMagick-7/magick/magick-baseconfig.h
>      /usr/include/x86_64-linux-gnu/ImageMagick-7/magick/magick-baseconfig.h
> 
>    The item was not found.
> ----------
> 
> With imagemagick 7 magick-baseconfig.h was moved from
> /usr/include/x86_64-linux-gnu/ImageMagick-6/magick/magick-baseconfig.h
> to
> /usr/include/x86_64-linux-gnu/ImageMagick-7/MagickCore/magick-baseconfig.h
> and FindImageMagick.cmake only looks in magick/ not in MagickCore/.

A simple pkg-config call gives the correct includes, e.g.:

pkg-config --cflags Magick++
-I/usr/include/x86_64-linux-gnu/ImageMagick-7 -I/usr/include/ImageMagick-7 
-fopenmp -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 
-DMAGICKCORE_CHANNEL_MASK_DEPTH=32

I'm not sure what cmake is doing.

Cheers,
Emilio



More information about the Pkg-phototools-devel mailing list