build failure with openexr3
I have tried to build gegl 0.4.30 with openexr 3 and it failed:
[ 101s] ../operations/external/exr-save.cc:63:20: error: aggregate ‘Imf_3_0::FrameBuffer fbuf’ has incomplete type and cannot be defined
[ 101s] 63 | Imf::FrameBuffer fbuf;
[ 101s] | ^~~~
[ 101s] ../operations/external/exr-save.cc: At global scope:
[ 101s] ../operations/external/exr-save.cc:89:39: error: return type ‘class Imf_3_0::FrameBuffer’ is incomplete
[ 101s] 89 | const float *data)
[ 101s] | ^
[ 101s] ../operations/external/exr-save.cc: In function ‘void create_frame_buffer(int, int, int, const float*)’:
[ 101s] ../operations/external/exr-save.cc:91:20: error: aggregate ‘Imf_3_0::FrameBuffer fbuf’ has incomplete type and cannot be defined
[ 101s] 91 | Imf::FrameBuffer fbuf;
[ 101s] | ^~~~
[ 101s] ../operations/external/exr-save.cc:95:30: error: ‘Slice’ is not a member of ‘Imf’
[ 101s] 95 | fbuf.insert ("Y", Imf::Slice (Imf::FLOAT, (char *) (&data[0] + 0),
[ 101s] | ^~~~~
[ 101s] ../operations/external/exr-save.cc:100:30: error: ‘Slice’ is not a member of ‘Imf’
[ 101s] 100 | fbuf.insert ("R", Imf::Slice (Imf::FLOAT, (char *) (&data[0] + 0),
[ 101s] | ^~~~~
[ 101s] ../operations/external/exr-save.cc:102:30: error: ‘Slice’ is not a member of ‘Imf’
[ 101s] 102 | fbuf.insert ("G", Imf::Slice (Imf::FLOAT, (char *) (&data[0] + 1),
[ 101s] | ^~~~~
[ 101s] ../operations/external/exr-save.cc:104:30: error: ‘Slice’ is not a member of ‘Imf’
[ 101s] 104 | fbuf.insert ("B", Imf::Slice (Imf::FLOAT, (char *) (&data[0] + 2),
[ 101s] | ^~~~~
[ 101s] ../operations/external/exr-save.cc:109:30: error: ‘Slice’ is not a member of ‘Imf’
[ 101s] 109 | fbuf.insert ("A", Imf::Slice (Imf::FLOAT, (char *) (&data[0] + (d - 1)),
[ 101s] | ^~~~~
[ 101s] ../operations/external/exr-save.cc: In function ‘void write_tiled_exr(const float*, const Babl*, int, int, int, int, int, const string&)’:
[ 101s] ../operations/external/exr-save.cc:157:26: error: variable ‘Imf_3_0::FrameBuffer fbuf’ has initializer but incomplete type
[ 101s] 157 | Imf::FrameBuffer fbuf (create_frame_buffer (w, h, d, pixels));
[ 101s] | ^~~~~~~~~~~~~~~~~~~
[ 101s] ../operations/external/exr-save.cc: In function ‘void write_scanline_exr(const float*, const Babl*, int, int, int, const string&)’:
[ 101s] ../operations/external/exr-save.cc:195:26: error: variable ‘Imf_3_0::FrameBuffer fbuf’ has initializer but incomplete type
[ 101s] 195 | Imf::FrameBuffer fbuf (create_frame_buffer (w, h, d, pixels));
Including ImfFrameBuffer.h in exr-load.cpp and exr-save.cc had fixed the build.
Edited by Andre Klapper