Bug #42036 AIX537 with VAC 6.0 compile issue
Submitted: 11 Jan 2009 22:47 Modified: 3 Jul 2009 13:44
Reporter: John T Mills Email Updates:
Status: Won't fix Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:5.0.67, 5.0.74 OS:IBM AIX (AIX 5.3 TL7)
Assigned to: CPU Architecture:Any
Triage: Triaged: D3 (Medium)

[11 Jan 2009 22:47] John T Mills
Description:
I'm compiling mysql versus VisualAge C/C++ 6.0 on AIX 5.3TL7.  The configure completes normally, but, on the make, there is an error on item_sum.cc.

# ./configure \
--prefix=/opt/mysql/5.0.67 \
--enable-thread-safe-client \
--enable-large-files
...
# make
...
Target "all" is up to date.
        source='item_sum.cc' object='item_sum.o' libtool=no  DEPDIR=.deps depmode=aix /bin/sh ../depcomp  xlC_r -DMYSQL_SERVER  -DDEFAULT_MYSQL_HOME="\"/opt/mysql/5.0.67\""  -DDATADIR="\"/opt/mysql/5.0.67/var\""  -DSHAREDIR="\"/opt/mysql/5.0.67/share/mysql\""  -DHAVE_CONFIG_H -I. -I. -I../include -I../zlib  -I../innobase/include -I../innobase/include   -I../include -I../include  -I../regex -I.       -DDBUG_OFF -I /usr/vac/include -I /usr/include -ma   -c -o item_sum.o item_sum.cc
"/usr/include/alloca.h", line 34.9: 1540-1401 (W) An unknown "pragma __alloca" is specified.
"item_sum.cc", line 1305.10: 1540-0274 (S) The name lookup for "__sqrt" did not find a declaration.
"item_sum.cc", line 2349.10: 1540-0274 (S) The name lookup for "__sqrt" did not find a declaration.
"item_sum.cc", line 2369.7: 1540-0274 (S) The name lookup for "__sqrt" did not find a declaration.
make: 1254-004 The error code from the last command is 1.

Stop.
make: 1254-004 The error code from the last command is 1.

Stop.
make: 1254-004 The error code from the last command is 2.

Stop.
make: 1254-004 The error code from the last command is 1.

Stop.
make: 1254-004 The error code from the last command is 2.

Stop.

How to repeat:
# export PATH=/usr/vacpp/bin:/usr/vac/bin:$PATH
# export CFLAGS="-I /usr/vac/include -I /usr/include -ma"
# export CXXFLAGS="-I /usr/vac/include -I /usr/include -ma"
# ./configure \
--prefix=/opt/mysql/5.0.67 \
--enable-thread-safe-client \
--enable-large-files
...
# make
[11 Jan 2009 22:53] John T Mills
bug-data-42036.tar.gz file data

Attachment: bug-data-42036.readme.txt (text/plain), 27 bytes.

[12 Jan 2009 5:16] Valeriy Kravchuk
Please, try to revert the order of includes in CFLAGS and CXXFLAGS to:

-I /usr/include -I /usr/vac/include

and check if this will help.
[12 Jan 2009 13:55] John T Mills
It drops in the same place.

# make clean
# export CXXFLAGS="-I /usr/include -I /usr/vac/include -ma"
# export CFLAGS="-I /usr/include -I /usr/vac/include -ma"
# ./configure \
--prefix=/opt/mysql/5.0.67 \
--enable-thread-safe-client \
--enable-large-files
...
# make
...
Target "all" is up to date.
        source='item_sum.cc' object='item_sum.o' libtool=no  DEPDIR=.deps depmode=aix /bin/sh ../depcomp  xlC_r -DMYSQL_SERVER  -DDEFAULT_MYSQL_HOME="\"/opt/mysql/5.0.67\""  -DDATADIR="\"/opt/mysql/5.0.67/var\""  -DSHAREDIR="\"/opt/mysql/5.0.67/share/mysql\""  -DHAVE_CONFIG_H -I. -I. -I../include -I../zlib  -I../innobase/include -I../innobase/include   -I../include -I../include  -I../regex -I.       -DDBUG_OFF -I /usr/include -I /usr/vac/include -ma   -c -o item_sum.o item_sum.cc
"item_sum.cc", line 1305.10: 1540-0274 (S) The name lookup for "__sqrt" did not find a declaration.
"item_sum.cc", line 2349.10: 1540-0274 (S) The name lookup for "__sqrt" did not find a declaration.
"item_sum.cc", line 2369.7: 1540-0274 (S) The name lookup for "__sqrt" did not find a declaration.
make: 1254-004 The error code from the last command is 1.

Stop.
make: 1254-004 The error code from the last command is 1.

Stop.
make: 1254-004 The error code from the last command is 2.

Stop.
[12 Jan 2009 20:21] Valeriy Kravchuk
Strange. Please, send the results of:

find /usr -name math.h -print 2>/dev/null
[13 Jan 2009 13:39] John T Mills
# find /usr -name math.h -print 2>/dev/null
/usr/include/math.h
[13 Jan 2009 13:40] John T Mills
# grep sqrt /usr/include/math.h
extern  double sqrt();
extern float        sqrtf();
long double __sqrtl128();
extern  double sqrt(double);
extern float        sqrtf(float);
extern long double  sqrtl(long double);
long double __sqrtl128(long double);
#define sqrt(__x)         __sqrt(__x)
#define sqrtl(__x)              __sqrtl128((long double) (__x))
#define sqrtl(__x)              sqrt((double) (__x))
#define sqrtl           __sqrtl128
 * M_2_SQRTPI   -- 2/(sqrt(pi))
 * M_SQRT2      -- sqrt(2)
 * M_SQRT1_2    -- 1/sqrt(2)
extern     double   rsqrt();
extern     double   rsqrt(double);
[13 Jan 2009 16:40] Valeriy Kravchuk
Strange. I remember it helped with newer VAC version (9) in the same situation. 

As you do not have math.h in /usr/vac/include, please, try with -I /usr/include only.
[13 Jan 2009 18:52] John T Mills
Well, I think you found my issue.  The include fileset had not been installed.  I re-ran the sequence and installing the below fileset and it went just fine.  I think I'll create a bundle, so, c++ completely installs in the future.

# lslpp -w /usr/vacpp/include/math.h
  File                                        Fileset               Type
  ----------------------------------------------------------------------------
  /usr/vacpp/include/math.h                   vacpp.cmp.include     File
# lslpp -l vacpp.cmp.include
  Fileset                      Level  State      Description         
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  vacpp.cmp.include         6.0.0.13  COMMITTED  VisualAge C++ Compiler Include
                                                 Files

# /opt/mysql/5.0.67/bin/mysql --version
/opt/mysql/5.0.67/bin/mysql  Ver 14.12 Distrib 5.0.67, for ibm-aix5.3.0.0 (powerpc) using  EditLine wrapper
[13 Jan 2009 19:28] Valeriy Kravchuk
So, I assume that some ommisions in your VAC environment were the real reason for this problem.
[13 Jan 2009 19:55] John T Mills
Yes the header files for the c++ sections of code were missing.  The client compile doesn't require these, and, the server compile will go a little further but fail.  It might be helpful to add some of these notes to the INSTALL source documentation.  I think vac and gcc are the most popular compilers on AIX.
[14 Jan 2009 8:59] Valeriy Kravchuk
Actually, I'd say it is a bug. If some important header is missing in the system configure should be able to determine that.
[3 Jul 2009 13:44] Daniel Fischer
This file is part of the language standard and can therefore be expected to be available. There is no need to verify that major parts of the language standard are implemented by the compiler.