Menu

#77 ATLAS 3.10.3 fails to build if configure chooses g++

developer
open
None
5
2017-01-31
2017-01-05
No

Hello and Happy New Year!

I maintain a so-called SlackBuild script for building and installing ATLAS on Slackware Linux. Recently I got two reports regarding ATLAS not building on some Slackware 14.2 installations. I couldn't reproduce the issue on my machine. After taking a closer look at the log files provided by the users having the problem it turned out that in both cases configure had choosen g++-gcc-5.3.0 for compilation (of C-code):

cd /tmp/SBo/atlas-3.10.3/BuildDir ; ./xprobe_comp -v 2 -o atlconf.txt -O 1 -A 32 -Si nof77 0 -V 896 -b 64 -d b /tmp/SBo/atlas-3.10.3/BuildDir > config1.out
cmnd=make IRunCComp CC='/usr/bin/g++-gcc-5.3.0' CCFLAGS='-O' | fgrep SUCCESS
/usr/bin/g++-gcc-5.3.0 -O : SUCCESS!

This first resulted in the following error:

cmnd='make IRun_f2c args=" -C ic '/usr/bin/g++-gcc-5.3.0' -F ic '-fomit-frame-pointer -mfpmath=sse -O2 -msse3 -m64' -C if '/usr/bin/x86_64-slackware-linux-gfortran-5.3.0' -F if '-O -msse3 -m64'" | fgrep 'F2C=(''
/tmp/ccByVZ6Q.o: In function MAIN__': f2cnameF.f:(.text+0x21): undefined reference toc_routine_'

which lead to:

F2C name = UNKNOWN
F2C int = UNKNOWN
F2C str = UNKNOWN

and to a lot of warnings/errors during compilation of atlas_install.c, which finally failed to compile.

As much as I could understand from ATLAS's source, something like "find /usr/bin -name 'gcc'" is used to look for gcc compilers on the system. Unfortunately, the output of find is not guaranteed to be sorted in a specific way(#). On the machines with the above mentioned issue /usr/bin/g++-gcc-5.3.0 was the first in find's output. On my machine, this was not the case. Thus a workaround was to temporarily rename /usr/bin/g++-gcc-5.3.0 to something not containing gcc. Nevertheless, maybe a change to ATLAS's configure code would be appropriate: filter out occurences of g++ from the list provided by find.

Best regards,

Serban Udrea

(#) It doesn't even seem to depend on locale settings.

Discussion

  • serban udrea

    serban udrea - 2017-01-06

    Hello again,

    I created a small patch with some changes to probe_comp.c which allow for eliminating g++ and gccgo from the output of find. I attach it to this message.

    Best regards,

    Serban Udrea

    PS. In my initial post I unfortunately didn't pay attention to the special meaning of some characters. Thus, 'gcc' should actually be '*gcc*'.

     
  • R. Clint Whaley

    R. Clint Whaley - 2017-01-31

    thank you for patch, will scope when I have a moment!

    Another workaround is that that insane code generally orders things by your path, I think. So, what may work is to put the path to the real gcc earlier than the g++gcc, and this may be part of reason its hitting them and not us.

    I really need to improve that code, and particularly its controllability, but I do not have time to really get with the program on it.

     
  • R. Clint Whaley

    R. Clint Whaley - 2017-01-31

    Ticket moved from /p/math-atlas/support-requests/1041/

     
  • R. Clint Whaley

    R. Clint Whaley - 2017-01-31
    • assigned_to: R. Clint Whaley
    • Group: Stable_(v3.10.x) --> developer
     

Log in to post a comment.