#1151417 posterazor: FTBFS with freeimage 4.2.1

#1151417#5
Date:
2026-10-20 14:54:29 UTC
From:
To:
Dear Maintainer,

your package build-depends on libfreeimage-dev. A new upstream version
of freeimage, 4.2.1, has been packaged for Debian. This is a major version
change (from 3.18), which may require code changes in packages depending
on freeimage.

posterazor FTBFS with freeimage 4.2.1. Note that the FTBFS may not necessarily
be connected to freeimage - please check the build log for the actual cause.

freeimage 4.2.1 is available in experimental, so you can rebuild your
package against it to reproduce the failure and test the fix.

Note: This ticket severity will be increased to RC bug when
freeimage 4.2.1 is uploaded to unstable.

Here is the most probably relevant part of the failing build log:

==================== build log ====================

	cd src/build && make -j2 INSTALL="install --strip-program=true" VERBOSE=1
make[1]: Entering directory '/build/reproducible-path/posterazor-1.5.1/src/build'
/usr/bin/cmake -S/build/reproducible-path/posterazor-1.5.1/src -B/build/reproducible-path/posterazor-1.5.1/src/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /build/reproducible-path/posterazor-1.5.1/src/build/CMakeFiles /build/reproducible-path/posterazor-1.5.1/src/build//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make[2]: Entering directory '/build/reproducible-path/posterazor-1.5.1/src/build'
make  -f CMakeFiles/PosteRazor.dir/build.make CMakeFiles/PosteRazor.dir/depend
make[3]: Entering directory '/build/reproducible-path/posterazor-1.5.1/src/build'
cd /build/reproducible-path/posterazor-1.5.1/src/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/posterazor-1.5.1/src /build/reproducible-path/posterazor-1.5.1/src /build/reproducible-path/posterazor-1.5.1/src/build /build/reproducible-path/posterazor-1.5.1/src/build /build/reproducible-path/posterazor-1.5.1/src/build/CMakeFiles/PosteRazor.dir/DependInfo.cmake "--color=" PosteRazor
make[3]: Leaving directory '/build/reproducible-path/posterazor-1.5.1/src/build'
make  -f CMakeFiles/PosteRazor.dir/build.make CMakeFiles/PosteRazor.dir/build
make[3]: Entering directory '/build/reproducible-path/posterazor-1.5.1/src/build'
[  4%] Building CXX object CMakeFiles/PosteRazor.dir/ImageIOTypes.cpp.o
/usr/bin/x86_64-linux-gnu-g++ -DFREEIMAGE_LIB -DNO_LAUNCH_URLS_OR_FILES -DNO_OPENGL_PREVIEW -I/build/reproducible-path/posterazor-1.5.1/src/thirdparty/Fl_Native_File_Chooser -g -O2 -ffile-prefix-map=/build/reproducible-path/posterazor-1.5.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -MD -MT CMakeFiles/PosteRazor.dir/ImageIOTypes.cpp.o -MF CMakeFiles/PosteRazor.dir/ImageIOTypes.cpp.o.d -o CMakeFiles/PosteRazor.dir/ImageIOTypes.cpp.o -c /build/reproducible-path/posterazor-1.5.1/src/ImageIOTypes.cpp
[  9%] Building CXX object CMakeFiles/PosteRazor.dir/PosteRazor.cpp.o
/usr/bin/x86_64-linux-gnu-g++ -DFREEIMAGE_LIB -DNO_LAUNCH_URLS_OR_FILES -DNO_OPENGL_PREVIEW -I/build/reproducible-path/posterazor-1.5.1/src/thirdparty/Fl_Native_File_Chooser -g -O2 -ffile-prefix-map=/build/reproducible-path/posterazor-1.5.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -MD -MT CMakeFiles/PosteRazor.dir/PosteRazor.cpp.o -MF CMakeFiles/PosteRazor.dir/PosteRazor.cpp.o.d -o CMakeFiles/PosteRazor.dir/PosteRazor.cpp.o -c /build/reproducible-path/posterazor-1.5.1/src/PosteRazor.cpp
[ 14%] Building CXX object CMakeFiles/PosteRazor.dir/PosteRazorImageIO.cpp.o
/usr/bin/x86_64-linux-gnu-g++ -DFREEIMAGE_LIB -DNO_LAUNCH_URLS_OR_FILES -DNO_OPENGL_PREVIEW -I/build/reproducible-path/posterazor-1.5.1/src/thirdparty/Fl_Native_File_Chooser -g -O2 -ffile-prefix-map=/build/reproducible-path/posterazor-1.5.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -MD -MT CMakeFiles/PosteRazor.dir/PosteRazorImageIO.cpp.o -MF CMakeFiles/PosteRazor.dir/PosteRazorImageIO.cpp.o.d -o CMakeFiles/PosteRazor.dir/PosteRazorImageIO.cpp.o -c /build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:87:16: error: ‘BOOL’ does not name a type
   87 |         static BOOL hasFreeImageVersionCorrectTopDownInConvertBits(void)
      |                ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp: In member function ‘virtual bool PosteRazorImageIOImplementation::loadInputImage(const char*, char*, int)’:
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:150:33: error: ‘RGBQUAD’ was not declared in this scope
  150 |                                 RGBQUAD white = { 255, 255, 255, 0 };
      |                                 ^~~~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:151:94: error: ‘white’ was not declared in this scope; did you mean ‘fwrite’?
  151 |                                 FIBITMAP *Image24Bit = FreeImage_Composite(m_bitmap, FALSE, &white);
      |                                                                                              ^~~~~
      |                                                                                              fwrite
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp: In member function ‘virtual bool PosteRazorImageIOImplementation::getImageAsRGB(unsigned char*, int, int) const’:
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:201:47: error: ‘BYTE’ does not name a type
  201 |                                         const BYTE* const cmykBits = FreeImage_GetScanLine(m_bitmap, scanline);
      |                                               ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:202:41: error: ‘BYTE’ was not declared in this scope
  202 |                                         BYTE* const rgbBits = FreeImage_GetScanLine(temp24BPPImage, scanline);
      |                                         ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:202:47: error: expected primary-expression before ‘const’
  202 |                                         BYTE* const rgbBits = FreeImage_GetScanLine(temp24BPPImage, scanline);
      |                                               ^~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:208:55: error: ‘BYTE’ does not name a type
  208 |                                                 const BYTE cyan = cmykBits[cmykColumn];
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:209:55: error: ‘BYTE’ does not name a type
  209 |                                                 const BYTE magenta = cmykBits[cmykColumn + 1];
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:210:55: error: ‘BYTE’ does not name a type
  210 |                                                 const BYTE yellow = cmykBits[cmykColumn + 2];
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:211:55: error: ‘BYTE’ does not name a type
  211 |                                                 const BYTE black = cmykBits[cmykColumn + 3];
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:213:55: error: ‘BYTE’ does not name a type
  213 |                                                 const BYTE red = MAX(0, (255 - (unsigned char)((double)yellow/1.5) - (unsigned char)((double)black/1.5)));
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:214:55: error: ‘BYTE’ does not name a type
  214 |                                                 const BYTE green = MAX(0, (255 - (unsigned char)((double)magenta/1.5) - (unsigned char)((double)black/1.5)));
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:215:55: error: ‘BYTE’ does not name a type
  215 |                                                 const BYTE blue = MAX(0, (255 - (unsigned char)((double)cyan/1.5) - (unsigned char)((double)black/1.5)));
      |                                                       ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:217:49: error: ‘rgbBits’ was not declared in this scope
  217 |                                                 rgbBits[rgbColumn] = red;
      |                                                 ^~~~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:217:70: error: ‘red’ was not declared in this scope
  217 |                                                 rgbBits[rgbColumn] = red;
      |                                                                      ^~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:218:74: error: ‘green’ was not declared in this scope
  218 |                                                 rgbBits[rgbColumn + 1] = green;
      |                                                                          ^~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:219:74: error: ‘blue’ was not declared in this scope
  219 |                                                 rgbBits[rgbColumn + 2] = blue;
      |                                                                          ^~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:233:137: error: ‘hasFreeImageVersionCorrectTopDownInConvertBits’ was not declared in this scope
  233 |                 FreeImage_ConvertToRawBits(buffer, originalImage, width*3, 24, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, hasFreeImageVersionCorrectTopDownInConvertBits());
      |                                                                                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp: In member function ‘virtual int PosteRazorImageIOImplementation::savePoster(const char*, ImageIOTypes::eImageFormats, const PainterInterface*, int, double, double) const’:
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:290:160: error: ‘hasFreeImageVersionCorrectTopDownInConvertBits’ was not declared in this scope
  290 |                 FreeImage_ConvertToRawBits(imageData, m_bitmap, bytesPerLineCount, getBitsPerPixel(), FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, hasFreeImageVersionCorrectTopDownInConvertBits());
      |                                                                                                                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:305:23: error: ‘RGBQUAD’ does not name a type
  305 |                 const RGBQUAD* const palette = FreeImage_GetPalette(m_bitmap);
      |                       ^~~~~~~
/build/reproducible-path/posterazor-1.5.1/src/PosteRazorImageIO.cpp:309:21: error: ‘palette’ was not declared in this scope; did you mean ‘rgbPalette’?
  309 |                 if (palette) {
      |                     ^~~~~~~
      |                     rgbPalette
make[3]: *** [CMakeFiles/PosteRazor.dir/build.make:110: CMakeFiles/PosteRazor.dir/PosteRazorImageIO.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/build/reproducible-path/posterazor-1.5.1/src/build'
make[2]: *** [CMakeFiles/Makefile2:90: CMakeFiles/PosteRazor.dir/all] Error 2
make[2]: Leaving directory '/build/reproducible-path/posterazor-1.5.1/src/build'
make[1]: *** [Makefile:94: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/posterazor-1.5.1/src/build'
dh_auto_build: error: cd src/build && make -j2 INSTALL="install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
==================== end of build log =============

Thanks,

Anton Gladky