Package: gegl
Version: 0.2.0-5
Severity: wishlist
Usertags: goto-cc

During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder
and pbuilder) the build failed with the following error. Please note that we
use our research compiler tool-chain (using tools from the cbmc package), which
permits extended reporting on type inconsistencies at link time.

[...]
libtool: link: gcc -shared  -fPIC -DPIC  .libs/gegl-c.o .libs/gegl-apply.o 
.libs/gegl-config.o .libs/gegl-cpuaccel.o .libs/gegl-dot.o 
.libs/gegl-dot-visitor.o .libs/gegl-enums.o .libs/gegl-init.o 
.libs/gegl-instrument.o .libs/gegl-utils.o .libs/gegl-lookup.o .libs/gegl-xml.o 
.libs/gegl-matrix.o  -Wl,--whole-archive ../gegl/buffer/.libs/libbuffer.a 
../gegl/module/.libs/libmodule.a ../gegl/operation/.libs/liboperation.a 
../gegl/graph/.libs/libgraph.a ../gegl/process/.libs/libprocess.a 
../gegl/property-types/.libs/libpropertytypes.a ../gegl/opencl/.libs/libcl.a 
-Wl,--no-whole-archive  -lgmodule-2.0 -lgio-2.0 -lgobject-2.0 -lgthread-2.0 
-lglib-2.0 -lbabl-0.1 -lm  -pthread -O2 -Wl,-z -Wl,relro -Wl,--as-needed 
-Wl,--export-dynamic -pthread -pthread   -pthread -Wl,-soname 
-Wl,libgegl-0.2.so.0 -o .libs/libgegl-0.2.so.0.199.1

error: conflicting function declarations "gegl_buffer_backend"
old definition in module gegl-buffer file gegl-buffer.c line 448
struct _GeglTileBackend * (struct _GeglBuffer *buffer)
new definition in module gegl-tile-storage file gegl-tile-storage.c line 65
struct _GeglTileBackend * (struct _GObject *)

reason for conflict in types listed below (struct/struct):
composite type component counts differ (17/4)
struct _GeglBuffer {
  struct _GeglTileHandler parent_instance;
  struct _GeglRectangle extent;
  const union _Babl * format;
  const union _Babl * soft_format;
  signed int shift_x;
  signed int shift_y;
  struct _GeglRectangle abyss;
  struct _GeglSampler * sampler;
  const union _Babl * sampler_format;
  struct _GeglTileStorage * tile_storage;
  signed int tile_width;
  signed int tile_height;
  char * path;
  signed int lock_count;
  unsigned int $pad0;
  char * alloc_stack_trace;
  void * backend;
}
struct _GObject {
  struct _GTypeInstance g_type_instance;
  volatile unsigned int ref_count;
  unsigned int $pad0;
  struct _GData * qdata;
}
Makefile:703: recipe for target 'libgegl-0.2.la' failed
make[4]: *** [libgegl-0.2.la] Error 64
make[4]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-gegl/gegl-0.2.0/gegl'
Makefile:843: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1

I've included the detailed conflict report provided by the tool to clarify that
a _GeglBuffer isn't a _GObject at all - hence the forward declaration in
gegl-tile-storage.c really is just wrong. This is not expected to introduce any
undefined behaviour, but should be fixed in order to avoid spurious warnings by
the compiler.

Best,
Michael

Attachment: pgpdUFmi4HYlt.pgp
Description: PGP signature

Reply via email to