Package: geos
Version: 4.3.0-4
Severity: important
Tags: patch
User: [EMAIL PROTECTED]
Usertags: eabi

Geos currently fails to build[1] on arm eabi, most likely due to slightly
different symbol visibility rules defined in EABI.

arm-linux-gnueabi-g++ -shared -nostdlib 
/usr/lib/gcc/arm-linux-gnueabi/4.3.1/../../../crti.o 
/usr/lib/gcc/arm-linux-gnueabi/4.3.1/crtbeginS.o  .libs/inlines.o 
-Wl,--whole-archive algorithm/.libs/libalgorithm.a geom/.libs/libgeom.a 
geomgraph/.libs/libgeomgraph.a index/.libs/libindex.a io/.libs/libio.a 
noding/.libs/libnoding.a operation/.libs/liboperation.a 
planargraph/.libs/libplanargraph.a precision/.libs/libprecision.a 
simplify/.libs/libsimplify.a util/.libs/libutil.a -Wl,--no-whole-archive  
-L/usr/lib/gcc/arm-linux-gnueabi/4.3.1 
-L/usr/lib/gcc/arm-linux-gnueabi/4.3.1/../../.. -lstdc++ -lm -lc -lgcc_s 
/usr/lib/gcc/arm-linux-gnueabi/4.3.1/crtendS.o 
/usr/lib/gcc/arm-linux-gnueabi/4.3.1/../../../crtn.o  -Wl,-soname 
-Wl,libgeos-3.0.0.so -o .libs/libgeos-3.0.0.so
noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.data.rel.ro+0x0): multiple 
definition of `vtable for geos::noding::snapround::MCIndexSnapRounder'
.libs/inlines.o:(.data.rel.ro+0x0): first defined here
noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.data.rel.ro+0x18): multiple 
definition of `typeinfo for geos::noding::snapround::MCIndexSnapRounder'
.libs/inlines.o:(.data.rel.ro+0xb0): first defined here
noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.rodata+0x0): multiple 
definition of `typeinfo name for geos::noding::snapround::MCIndexSnapRounder'
.libs/inlines.o:(.rodata+0x0): first defined here
collect2: ld returned 1 exit status

On x386:

nm -a --demangle inlines.o

00000000 V typeinfo for geos::noding::snapround::MCIndexSnapRounder
00000000 V typeinfo name for geos::noding::snapround::MCIndexSnapRounder
00000000 V vtable for geos::noding::snapround::MCIndexSnapRounder

On arm eabi:

000000e0 R typeinfo for geos::noding::snapround::MCIndexSnapRounder
000000b0 R typeinfo name for geos::noding::snapround::MCIndexSnapRounder
00000000 R vtable for geos::noding::snapround::MCIndexSnapRounder

I haven't found a satisfactory explanation about how gcc chooses to create
weak and normal symbols, so it's unclear if the bug is in binutils/gcc
or in the creative inlining solution in geos. In the course of compiling
7200 source packages from debian repository no other package has had any
similar problems... You might want to discuss with upstream what's the
advantage of including normal and inlined copies of same classes in a shared
library.

However, since geos is very low in the dependency chain, causing a considerable
amount of packages being uncompilable, we (armel porters) cant wait for very 
long
for a perfect/correct solution. Therefor, please consider the attached patch.

[1] 
http://buildd.debian.org/fetch.cgi?&pkg=geos&ver=3.0.0-4&arch=armel&stamp=1209298060&file=log
diff -urN geos-3.0.0/debian/rules geos-3.0.0.new/debian/rules
--- geos-3.0.0/debian/rules     2008-05-09 16:28:50.000000000 +0300
+++ geos-3.0.0.new/debian/rules 2008-05-09 16:26:47.000000000 +0300
@@ -28,6 +29,10 @@
        INSTALL_PROGRAM += -s
 endif
 
+ifeq ($(DEB_HOST_GNU_TYPE),arm-linux-gnueabi)
+       CONFFLAGS += --disable-inline
+endif
+
 # shared library versions, option 1
 version=2.0.5
 major=2
@@ -49,7 +54,7 @@
        cp -f /usr/share/misc/config.guess config.guess
 endif
        
-       CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) 
--build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man 
--infodir=\$${prefix}/share/info
+       CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) 
--build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man 
--infodir=\$${prefix}/share/info $(CONFFLAGS)
 
 
 #Architecture

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/pkg-grass-devel

Reply via email to