Opened 15 years ago

Closed 15 years ago

#2616 closed defect (fixed)

[PATCH] xerces-c-3.0.0 breaks gdal building in 64bit environment (up through 1.5.3)

Reported by: nerdboy Owned by: pka
Priority: normal Milestone: 1.6.0
Component: OGR_SF Version: 1.5.2
Severity: normal Keywords: xerces 3 interlis 64 bit
Cc: warmerdam, Even Rouault, kyngchaos

Description

Building gdal now fails with:

... x86_64-pc-linux-gnu-g++ -O2 -pipe -fPIC -Wall -I/usr/include -I/usr/include/xercesc -DOGR_ENABLED -I/var/tmp/portage/sci-libs/gdal-1.5.2/work/gdal-1.5.2/port -I.. -c -o ../../o/iom_utilities.o iom_utilities.cpp iom_utilities.cpp: In function 'char* iom_toUTF8(const XMLCh*)': iom_utilities.cpp:177: error: no matching function for call to 'xercesc_3_0::XMLTranscoder::transcodeTo(const XMLCh*&, unsigned int&, unsigned char*, int&, unsigned int&, xercesc_3_0::XMLTranscoder::UnRepOpts)' /usr/include/xercesc/util/TransService.hpp:297: note: candidates are: virtual XMLSize_t xercesc_3_0::XMLTranscoder::transcodeTo(const XMLCh*, XMLSize_t, XMLByte*, XMLSize_t, XMLSize_t&, xercesc_3_0::XMLTranscoder::UnRepOpts)

Build system info:

Portage 2.2_rc12 (default/linux/amd64/2008.0, gcc-4.3.2, glibc-2.8_p20080602-r0, 2.6.26.5 x86_64) System uname: Linux-2.6.26.5-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_4800+-with-glibc2.2.5

ccache version 2.4 [enabled]
app-shells/bash:     3.2_p39
dev-java/java-config: 1.3.7, 2.1.6-r1
dev-lang/python:     2.4.4-r15, 2.5.2-r8
dev-python/pycrypto: 2.0.1-r6
dev-util/ccache:     2.4-r7
dev-util/cmake:      2.4.6-r1
sys-apps/baselayout: 2.0.0
sys-apps/openrc:     0.3.0-r1
sys-apps/sandbox:    1.2.18.1-r3
sys-devel/autoconf:  2.13, 2.63
sys-devel/automake:  1.4_p6, 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   2.2.6a
virtual/os-headers:  2.6.25-r4

CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="-march=athlon64 -O2 -pipe"
LANG="C"
LDFLAGS="-Wl,-O1"
LINGUAS="en"
MAKEOPTS="-j5"

Attachments (1)

fix_2616.patch (2.0 KB ) - added by Even Rouault 15 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 by Even Rouault, 15 years ago

Cc: pka added
Component: defaultOGR_SF
Keywords: xerces 3 interlis 64 bit added

I can also reproduce it with trunk, xerces 3.0 and 64bit environment. (it compiles fine on 32bit environment with xerces 3.0).

I'd suggest the attached patch that enables me to make it compile. However it is completely untested. Pirmin ?

by Even Rouault, 15 years ago

Attachment: fix_2616.patch added

comment:2 by Even Rouault, 15 years ago

Summary: xerces-c-3.0.0 breaks gdal interface (up through 1.5.3)[PATCH] xerces-c-3.0.0 breaks gdal building in 64bit environment (up through 1.5.3)

comment:3 by warmerdam, 15 years ago

Cc: warmerdam Even Rouault added; pka removed
Owner: changed from warmerdam to pka

The patch looks reasonable to me. I'll leave it to Pirmin to apply.

in reply to:  3 comment:4 by pka, 15 years ago

The patch causes errors compiling with Xerces 2.8 on a 32bit environment:

iom_utilities.cpp: In function 'char* iom_toUTF8(const XMLCh*)':
iom_utilities.cpp:181: error: no matching function for call to 'xercesc_2_8::XMLTranscoder::transcodeTo(const XMLCh*&, XMLSize_t&, XMLByte*&, XMLSize_t&, XMLSize_t&, xercesc_2_8::XMLTranscoder::UnRepOpts)'
/usr/include/xercesc/util/TransService.hpp:305: note: candidates are: virtual unsigned int xercesc_2_8::XMLTranscoder::transcodeTo(const XMLCh*, unsigned int, XMLByte*, unsigned int, unsigned int&, xercesc_2_8::XMLTranscoder::UnRepOpts)
iom_utilities.cpp:186: error: no matching function for call to 'xercesc_2_8::XMLTranscoder::transcodeTo(const XMLCh*&, XMLSize_t&, XMLByte*&, XMLSize_t&, XMLSize_t&, xercesc_2_8::XMLTranscoder::UnRepOpts)'
/usr/include/xercesc/util/TransService.hpp:305: note: candidates are: virtual unsigned int xercesc_2_8::XMLTranscoder::transcodeTo(const XMLCh*, unsigned int, XMLByte*, unsigned int, unsigned int&, xercesc_2_8::XMLTranscoder::UnRepOpts)
iom_utilities.cpp: In function 'XMLCh* iom_fromUTF8(const char*)':
iom_utilities.cpp:201: error: no matching function for call to 'xercesc_2_8::XMLTranscoder::transcodeFrom(const XMLByte*, XMLSize_t&, XMLCh*&, XMLSize_t&, XMLSize_t&, unsigned char*&)'
/usr/include/xercesc/util/TransService.hpp:282: note: candidates are: virtual unsigned int xercesc_2_8::XMLTranscoder::transcodeFrom(const XMLByte*, unsigned int, XMLCh*, unsigned int, unsigned int&, unsigned char*)
make: *** [../../o/iom_utilities.o] Fehler 1

@rouault: Is

#if XERCES_VERSION_MAJOR >= 3

needed?

comment:5 by Even Rouault, 15 years ago

hum, maybe yes, it looks like they changed the signature of the transcodeTo function...

comment:6 by Even Rouault, 15 years ago

Cc: kyngchaos added
Milestone: 1.6.0
Resolution: fixed
Status: newclosed

I've applied a patch that defines a compatibility length type conditionnaly to XERCES_VERSION_MAJOR so that the code is the same for Xerces-2.8 and Xerces-3.0.

Applied in trunk in r15857 and in branches/1.6 in r15858

Note: See TracTickets for help on using tickets.