on an ARM (SheevaPlug) platform: emerge sci-libs/geos fails during linking with multiple definitions found. Reproducible: Always Steps to Reproduce: 1.emerge sci-libs/geos Actual Results: ... 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): In function `.LANCHOR1': MCIndexSnapRounder.cpp:(.rodata+0x144): multiple definition of `typeinfo name for geos::noding::snapround::MCIndexSnapRounder' .libs/inlines.o:inlines.cpp:(.rodata+0x2e0): 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 collect2: ld returned 1 exit status ... * ERROR: sci-libs/geos-3.2.0-r1 failed: * emake failed * * Call stack: * ebuild.sh, line 54: Called src_compile * environment, line 4972: Called die * The specific snippet of code: * emake || die "emake failed"; Expected Results: successful installation log files to follow in the next 15 minutes
Created attachment 246380 [details] environment
Created attachment 246381 [details] emerge --info =sci-libs/geos-3.2.0-r1
Created attachment 246383 [details] emerge -pqv =sci-libs/geos-3.2.0-r1
Created attachment 246385 [details] build.log 398 Kb
For what it is worth, I downloaded geos-3.2.2, currently the latest release, from http://download.osgeo.org/geos/geos-3.2.2.tar.bz2 and performed: ./configure make and got: distcc[24080] (dcc_spawn_child) forking to execute: armv5tel-softfloat-linux-gnueabi-g++ -shared -nostdlib /usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/../../../crti.o /usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/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 linearref/.libs/liblinearref.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/armv5tel-softfloat-linux-gnueabi/4.4.4 -L/usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/../../../../armv5tel-softfloat-linux-gnueabi/lib -L/usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/crtendS.o /usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/../../../crtn.o -Wl,-soname -Wl,libgeos-3.2.2.so -o .libs/libgeos-3.2.2.so distcc[24080] (dcc_spawn_child) child started as pid24081 distcc[24081] (dcc_increment_safeguard) setting safeguard: _DISTCC_SAFEGUARD=2 noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.rodata+0x0): multiple definition of `vtable for geos::noding::snapround::MCIndexSnapRounder' .libs/inlines.o:(.rodata+0x10): first defined here noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.rodata+0x15c): multiple definition of `typeinfo name for geos::noding::snapround::MCIndexSnapRounder' .libs/inlines.o:(.rodata+0x390): first defined here noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.rodata+0x18c): multiple definition of `typeinfo for geos::noding::snapround::MCIndexSnapRounder' .libs/inlines.o:(.rodata+0x3c0): first defined here /usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/4.4.4/../../../../armv5tel-softfloat-linux-gnueabi/bin/ld: warning: creating a DT_TEXTREL in object. collect2: ld returned 1 exit status distcc[24080] (dcc_collect_child) cc child 24081 terminated with status 0x100 distcc[24080] (dcc_collect_child) cc times: user 0.000000s, system 0.000000s, 0 minflt, 0 majflt distcc[24080] ERROR: compile (null) on localhost failed distcc[24080] elapsed compilation time 6.816399s distcc[24080] (dcc_exit) exit: code 1; self: 0.000000 user 0.000000 sys; children: 6.090000 user 0.570000 sys distcc[24080] (dcc_cleanup_tempfiles_inner) deleted 0 temporary files distcc[24079] (dcc_collect_child) cc child 24080 terminated with status 0x100 distcc[24079] (dcc_collect_child) cc times: user 0.000000s, system 0.000000s, 0 minflt, 0 majflt distcc[24079] ERROR: compile (null) on localhost failed distcc[24079] (dcc_unlock) release lock fd3 distcc[24079] elapsed compilation time 6.825200s distcc[24079] (dcc_exit) exit: code 1; self: 0.010000 user 0.000000 sys; children: 6.090000 user 0.570000 sys distcc[24079] (dcc_cleanup_tempfiles_inner) deleted 0 temporary files make[2]: *** [libgeos.la] Error 1 make[2]: Leaving directory `/usr/local/src/geos-3.2.2/source' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/src/geos-3.2.2/source' make: *** [all-recursive] Error 1 plug geos-3.2.2 # Note: the manual compile was with the aid of distcc. It appears that this may be an error in the source which manifests itself in the later release. Is that what is referred to as an "upstream" bug?
I found there is a patch for the ARM platform, see http://bugs.gentoo.org/show_bug.cgi?id=336375 I downloaded the patch and applied it and make resumed and completed, as did 'make install'. I then tried 'make test" and met with failure. Since this compile effort of release 3.2.2 is outside of the release this bug was based upon I'll not include the make test results unless someone wants or indicates it would be helpful to have. I'll pursue the make test failure with the GEOS folks. If someone can provide me some instructions to apply the patch within the ebuild for 3.2.0-r1, I'll be happy to try it out.
(In reply to comment #6) > I found there is a patch for the ARM platform, see > http://bugs.gentoo.org/show_bug.cgi?id=336375 Incorrect URL, I meant to provide: http://trac.osgeo.org/geos/ticket/222
FYI: http://trac.osgeo.org/geos/ticket/376 to track 'make check' failure
The response from Paul Ramsey, a developer on the project and one whose name I've seen in relation to postgresql and other projects, is: No, your problem seems to be a bogus compiler, as GeometryComponentFilter::filter_ro should not be called, but rather its implementation in derivative class should. GeometryComponentFilter?.cpp:35: virtual void geos::geom::GeometryComponentFilter::filter_ro(const geos::geom::Geometry*): Assertion `0' failed.
3.3.1 should build. please test and keyword
(In reply to comment #10) > 3.3.1 should build. please test and keyword I'm not seeing 3.3.1 in portage; only 3.2.2. Today I: emerge --sync ... eix-update ... and plug / # eix sci-libs/geos * sci-libs/geos Available versions: *3.2.2 {doc python ruby static-libs} Homepage: http://trac.osgeo.org/geos/ Description: Geometry engine library for Geographic Information Systems plug / #
If anyone is still interested in adding the arm keyword, please check sci-libs/geos-3.3.8.
02 Mar 2013; Aaron W. Swenson <titanofold@gentoo.org> geos-3.3.8-r1.ebuild: Add arm keyword. Thanks Roy "NeddySeagoon" Bamford for checking.