Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 336375 - sci-libs/geos fails to build on ARM
Summary: sci-libs/geos fails to build on ARM
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: ARM Linux
: High normal
Assignee: Sci-geo Project
URL: http://trac.osgeo.org/geos/ticket/376
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-07 18:04 UTC by John L. Poole
Modified: 2013-03-02 18:31 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
environment (environment,191.43 KB, text/plain)
2010-09-07 18:11 UTC, John L. Poole
Details
emerge --info =sci-libs/geos-3.2.0-r1 (emerge_info.txt,3.58 KB, text/plain)
2010-09-07 18:11 UTC, John L. Poole
Details
emerge -pqv =sci-libs/geos-3.2.0-r1 (emerge_pqv.txt,131 bytes, text/plain)
2010-09-07 18:12 UTC, John L. Poole
Details
build.log (build.log,397.38 KB, text/plain)
2010-09-07 18:13 UTC, John L. Poole
Details

Note You need to log in before you can comment on or make changes to this bug.
Description John L. Poole 2010-09-07 18:04:33 UTC
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
Comment 1 John L. Poole 2010-09-07 18:11:11 UTC
Created attachment 246380 [details]
environment
Comment 2 John L. Poole 2010-09-07 18:11:47 UTC
Created attachment 246381 [details]
emerge --info =sci-libs/geos-3.2.0-r1
Comment 3 John L. Poole 2010-09-07 18:12:10 UTC
Created attachment 246383 [details]
emerge -pqv =sci-libs/geos-3.2.0-r1
Comment 4 John L. Poole 2010-09-07 18:13:03 UTC
Created attachment 246385 [details]
build.log

398 Kb
Comment 5 John L. Poole 2010-09-07 19:22:20 UTC
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?
Comment 6 John L. Poole 2010-09-07 19:53:21 UTC
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.
Comment 7 John L. Poole 2010-09-07 19:54:17 UTC
(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
Comment 8 John L. Poole 2010-09-07 20:09:46 UTC
FYI: http://trac.osgeo.org/geos/ticket/376 to track 'make check' failure
Comment 9 John L. Poole 2010-10-25 14:23:59 UTC
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.
Comment 10 Sébastien Fabbro (RETIRED) gentoo-dev 2012-01-05 20:10:32 UTC
3.3.1 should build. please test and keyword
Comment 11 John L. Poole 2012-01-05 20:50:17 UTC
(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 / #
Comment 12 Aaron W. Swenson gentoo-dev 2013-03-02 04:40:05 UTC
If anyone is still interested in adding the arm keyword, please check sci-libs/geos-3.3.8.
Comment 13 Aaron W. Swenson gentoo-dev 2013-03-02 18:31:39 UTC
  02 Mar 2013; Aaron W. Swenson <titanofold@gentoo.org> geos-3.3.8-r1.ebuild:
  Add arm keyword. Thanks Roy "NeddySeagoon" Bamford for checking.