On 09/11/2024 17:51, Andreas Metzler wrote:
On 2024-11-07 po...@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