[GRASS-dev] Failure to build on Itanium + Debian/sid

Hamish hamish_b at yahoo.com
Fri Nov 15 17:42:29 PST 2013


Hi, coming back to and renaming this thread,

Moritz wrote:
> > Hamish, do you know what is going on for grass 6.4.3 ? I see that it hasn't
> > migrated to testing, yet, because of failure to build on ia64:
> >
> > http://release.debian.org/migration/testing.pl?package=grass

> On Friday, November 1, 2013 Markus Neteler replied:
...
> https://buildd.debian.org/status/fetch.php?pkg=grass&arch=ia64&ver=6.4.3-2&stamp=1380196645
> shows
...
> /usr/bin/ld: OBJ.ia64-unknown-linux-gnu/driver.o: @gprel relocation
> against dynamic symbol db_driver_init
> /usr/bin/ld: OBJ.ia64-unknown-linux-gnu/driver.o: @gprel relocation
> against dynamic symbol db_driver_finish
> /usr/bin/ld: final link failed: Nonrepresentable section on output
> collect2: ld returned 1 exit status
> make[5]: ***
> [/«PKGBUILDDIR»/dist.ia64-unknown-linux-gnu/lib/libgrass_dbmidriver.6.4.3.so]
> Error 1
> ...
>
> In an old thread here there is a suggestion:
> http://software.intel.com/en-us/forums/topic/267748
> "On Itanium-based systems running Linux, when the -shared switch is
> used to create a Dynamic Shared Object (.so), there may be some
> relocation against dynamic symbol" messages generated during the ld
> phase
> ...
>
> To fix this problem, add the switches -i_dynamic and -nofor_main to
> the command line.
> "
>
> see also
> http://www.opendx.org/cgi-bin/forum/YaBB.pl?num=1139610671/1
>
> A Debian geek may know...


Hi,

fyi Paul Gevers from Debian figured out the "where" of this problem,
and the fix, but the "why" is still a bit unknown.

see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=728150#25

It's a conflict beween -fPIC and -fPIE. The same conflict was happening
for the previous Debian release so I had the work-around code in the
package build rules, left as commented out for anyone wanting to build
backported packages. Apparently the same work-around allows it to build
on Itanium.

I guess the short-term fix is to do some 
 if [ `uname -m` = "ia64" ] ; then
    ...

in the debian/rules? (which is essentialy a Makefile not a shell script)



Hamish



More information about the grass-dev mailing list