Bug#750383: gdal: Conflicting declarations of struct DBFInfo

Michael Tautschnig mt at debian.org
Tue Jun 3 00:19:47 UTC 2014


Package: gdal
Version: 1.10.1+dfsg-5
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: g++  -fPIC -DPIC -shared -nostdlib [...] -Wl,-z -Wl,relro -Wl,-Bsymbolic -Wl,--version-script -Wl,/srv/jenkins-slave/workspace/sid-goto-cc-gdal/gdal-1.10.1+dfsg/debian/gdal.ver   -pthread -Wl,-soname -Wl,libgdal.so.1 -o .libs/libgdal.so.1.17.1
/srv/jenkins-slave/workspace/sid-goto-cc-gdal/gdal-1.10.1+dfsg/ogr/ogrsf_frmts/o/.libs/iom_utilities.o: In function `iom_gettmpnam':
/srv/jenkins-slave/workspace/sid-goto-cc-gdal/gdal-1.10.1+dfsg/ogr/ogrsf_frmts/ili/iom/iom_utilities.cpp:238: warning: the use of `tempnam' is dangerous, better use `mkstemp'

error: conflicting function declarations "DBFOpen"
old definition in module avc_bin file dbfopen.h line 154
DBFInfo * DBFOpen(const char * pszDBFFile, const char * pszAccess);
new definition in module dbfopen file dbfopen.c line 366
DBFInfo * DBFOpen(const char * pszDBFFile, const char * pszAccess);

reason for conflict in types listed below (struct/struct):
composite type component counts differ (15/23)
struct {
  struct _IO_FILE * fp;
  signed int nRecords;
  signed int nRecordLength;
  signed int nHeaderLength;
  signed int nFields;
  signed int * panFieldOffset;
  signed int * panFieldSize;
  signed int * panFieldDecimals;
  char * pachFieldType;
  char * pszHeader;
  signed int nCurrentRecord;
  signed int bCurrentRecordModified;
  char * pszCurrentRecord;
  signed int bNoHeader;
  signed int bUpdated;
} DBFInfo
struct {
  SAHooks sHooks;
  signed int * fp;
  signed int nRecords;
  signed int nRecordLength;
  signed int nHeaderLength;
  signed int nFields;
  signed int * panFieldOffset;
  signed int * panFieldSize;
  signed int * panFieldDecimals;
  char * pachFieldType;
  char * pszHeader;
  signed int nCurrentRecord;
  signed int bCurrentRecordModified;
  char * pszCurrentRecord;
  signed int nWorkFieldLength;
  unsigned int <padding>;
  char * pszWorkField;
  signed int bNoHeader;
  signed int bUpdated;
  double dfDoubleField;
  signed int iLanguageDriver;
  unsigned int <padding>;
  char * pszCodePage;
} DBFInfo

GNUmakefile:41: recipe for target 'libgdal.la' failed
make[3]: *** [libgdal.la] Error 1
make[3]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-gdal/gdal-1.10.1+dfsg'
GNUmakefile:51: recipe for target 'check-lib' failed
make[2]: *** [check-lib] Error 2

According to the comment at the top of avc/dbfopen.h it ought to be a copy of
shape/shapefil.h - yet it seems shapefil.h has evolved since. The above conflict
will inevitable cause problems if any of the fields are actually being accessed
from within the code in the avc/ folder. This might not be happening right now,
in which case the struct declaration should simply be removed from avc/dbfopen.h
(merely replacing it with "typedef struct DBFInfo DBFInfo;" should do) to avoid
any future breakage.

Best,
Michael

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 859 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20140603/ae1915a0/attachment.sig>


More information about the Pkg-grass-devel mailing list