Re: DBD::Informix Build Error On 64bit AIX 5.2



Dear Darryl,

Please note the corrected email address (dbd.informix@xxxxxxxxx) for
reporting problems.

Please can you send me the CORE/perl.h file where the problem starts (I
suggest this stays off the dbi-users list simply because most people won't
need it). I've had someone else with faintly similar problems - and need to
get to the bottom of what's up. I'm currently suspecting that something that
is in some CSDK or DBD::Informix header is clashing horribly but silently
with something in the Perl core - but that's a conjecture rather than
anything better.

One possibility, on AIX, is that the _H_LOCALEDEF in the DBD::Informix
command line is screwing up something that Perl itself is relying on. If you
remove it, you'll run into different errors - related to loc_t - but the
change of message would indicate that we're onto something. And, if this is
the issue, it is going to be hell to fix properly. We'll bodge our way
around it without too much difficulty, but the proper fix...that's well over
a decade overdue (IDS/CSDK should not use loc_t for locators - it should use
a systematic Informix-specific prefix such as ifx_loc_t if it must go with
an _t suffix; the _t suffix is reserved to the implementation, and this is
merely the oldest of the clashes that we've ever had with systems over the
naming convention.)

On 7/19/05, Priest, Darryl <darryl.priest@xxxxxxxxxxxx> wrote:
>
>
> I'm having a strange compile error when compiling DBD::Informix on AIX
> 5.2 using the IBM vac C compiler. DBI 1.48 installed without problems.
>
> I am using IDS 10.00.FC1 with the most recent Client-SDK, esql -V shows:
> IBM Informix CSDK Version 2.90, IBM Informix-ESQL Version 2.90.FC1
>
> I've tried with both tried threaded perl and non-threaded, to no avail.
> I've upgraded the C compiler to the most recent version 6 filesets and
> still no joy.
>
> Creating the makefile seems ok
>
> perl rmautoinst.pl Makefile.PL | perl -
>
> Configuring IBM Informix Database Driver for Perl DBI Version 2005.01
> (2005-03-14) (aka DBD::Informix)
> You are using DBI version 1.48 and Perl version 5.008006
> Remember to actually read the README file!
>
> Perl: perl v5.008006 aix-thread-multi-64all dl_aix.xs
> System: aix mtwaas01 2 5 000bd53d4c00
> Using INFORMIXDIR=/informix/v10.00.FC1 and ESQL/C compiler esql
> Using IBM Informix CSDK Version 2.90, IBM Informix-ESQL Version 2.90.FC1
> from /informix/v10.00.FC1
>
> Beware: DBD::Informix is not yet aware of all the new IUS data types.
>
> Assert macro will be disabled!
>
> lib/DBD/Informix/Defaults.pm written OK
> esqlvrsn.h written OK
> esqlinfo.h written OK
>
> Testing whether your Informix test environment will work...
> ESQLTEST Program Running:
> @(#)$Id: esqltest.ec <http://esqltest.ec>,v 2004.1 2004/11/16 22:29:43
> jleffler Exp $
> $INFORMIXDIR is set to '/informix/v10.00.FC1'.
> $INFORMIXSERVER is set to 'mtwaas01_str'.
> $DBI_DBNAME unset - defaulting to 'stores'.
> $DBD_INFORMIX_DATABASE set to 'son_db'.
> $DBD_INFORMIX_DATABASE2 set to 'son_db@mtwac02_tcp'.
> $DBD_INFORMIX_USERNAME is unset.
> $DBD_INFORMIX_USERNAME2 is unset.
> $DBD_INFORMIX_PASSWORD is unset.
> $DBD_INFORMIX_PASSWORD2 is unset.
> Testing connection to son_db
> CONNECT TO 'son_db' - no user info
> Testing concurrent connection to son_db@mtwac02_tcp
> CONNECT TO 'son_db@mtwac02_tcp' - no user info
> Your Informix environment is (probably) OK
>
>
> Fortunately, you are using a new version of ESQL/C. We could
> use 'esql -libs' to tell us which libraries to use, except that
> some versions of the esql script are very Clintonian and do not
> tell us the whole truth. So we have to do a fiddly workaround,
> editing the esql script on the fly and feeding the edited
> version to the shell and ... Oh, you really don't want to know
> what we do; it's horrid but it works, usually!
> ... We are going to use the library list:
> -lifsql -lifasf -lifgen -lifos -lifgls -ltli -lc_r -lmsaa -lbsd -ldl
> -lm_r /informix/v10.00.FC1/lib/esql/checkapi.o -lifglx
>
> Using DBI 1.48 (for perl 5.008006 on aix-thread-multi-64all) installed
> in
> /usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all/auto/DBI
> /
> Writing Makefile for DBD::Informix
>
>
>
> But make produces:
>
>
> cp lib/DBD/Informix/Summary.pm blib/lib/DBD/Informix/Summary.pm
> cp lib/DBD/Informix/TechSupport.pm blib/lib/DBD/Informix/TechSupport.pm
> cp lib/DBD/Informix/GetInfo.pm blib/lib/DBD/Informix/GetInfo.pm
> cp lib/Bundle/DBD/Informix.pm blib/lib/Bundle/DBD/Informix.pm
> cp lib/DBD/Informix/Configure.pm blib/lib/DBD/Informix/Configure.pm
> cp Informix.pm <http://Informix.pm> blib/lib/DBD/Informix.pm
> cp lib/DBD/Informix/TestHarness.pm blib/lib/DBD/Informix/TestHarness.pm
> cp lib/DBD/Informix/TypeInfo.pm blib/lib/DBD/Informix/TypeInfo.pm
> cp lib/DBD/Informix/Defaults.pm blib/lib/DBD/Informix/Defaults.pm
> cp lib/DBD/Informix/Metadata.pm blib/lib/DBD/Informix/Metadata.pm
> /usr/local/bin/perl -e 'use ExtUtils::Mksymlists; \
> Mksymlists("NAME" => "DBD::Informix", "DL_FUNCS" => { }, "FUNCLIST" =>
> [], "DL_VARS" => []);'
> /usr/local/bin/perl -p -e "s/~DRIVER~/Informix/g"
> /usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all/auto/DBI
> //Driver.xst > Informix.xsi
> /usr/local/bin/perl /usr/local/perl5.8.6/lib/5.8.6/ExtUtils/xsubpp
> -typemap /usr/local/perl5.8.6/lib/5.8.6/ExtUtils/typemap Informix.xs >
> Informix.xsc && mv Informix.xsc Informix.c
> cc_r -c -I/informix/v10.00.FC1/incl/esql
> -I/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/auto/DBI
> -I/usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all/auto/D
> BI -I/auto/DBI
> -I/usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all/auto/D
> BI -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1
> -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT
> -I/usr/local/include -q64 -DUSE_64_BIT_ALL -q64 -O
> -DVERSION=\"2005.01\" -DXS_VERSION=\"2005.01\"
> "-I/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE"
> -DESQLC_VERSION=290 -DNDEBUG -DUSE_REAL_MALLOC -D__H_LOCALEDEF
> Informix.c
> INFORMIXC="/usr/local/bin/perl esqlcc" ESQLCC="cc_r" esql -c -shared
> -I/informix/v10.00.FC1/incl/esql
> -I/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/auto/DBI
> -I/usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all/auto/D
> BI -I/auto/DBI
> -I/usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all/auto/D
> BI -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1
> -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT
> -I/usr/local/include -q64 -DUSE_64_BIT_ALL -q64 -O
> -DVERSION=\"2005.01\" -DXS_VERSION=\"2005.01\"
> -I/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE
> -DESQLC_VERSION=290 -DNDEBUG -DUSE_REAL_MALLOC -D__H_LOCALEDEF dbdimp.ec<http://dbdimp.ec>
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/perl.h",
> line 2291.31: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/perl.h",
> line 2301.26: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/perl.h",
> line 2301.15: 1506-166 (S) Definition of function filter_t requires
> parentheses.
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/regexp.h",
> line 23.2: 1506-137 (E) Declaration must declare at least one
> declarator, tag, or the members of an enumeration.
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/regexp.h",
> line 50.17: 1506-194 (S) Incomplete type is not allowed.
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/sv.h", line
> 349.27: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/sv.h", line
> 349.33: 1506-160 (S) Object CV cannot be declared as type void.
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/sv.h", line
> 376.5: 1506-046 (S) Syntax error.
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/cv.h", line
> 26.30: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/cv.h", line
> 26.36: 1506-160 (S) Object CV cannot be declared as type void.
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/op.h", line
> 227.5: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/op.h", line
> 231.5: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/op.h", line
> 236.5: 1506-277 (S) Syntax error: possible missing ')' or ','?
> "/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/op.h", line
> 242.5: 1506-277 (S) Syntax error: possible missing ')' or ','?
> make: *** [dbdimp.o] Error 1
>
>
>
> Summary of my perl5 (revision 5 version 8 subversion 6) configuration:
> Platform:
> osname=aix, osvers=5.2.0.0 <http://5.2.0.0>,
> archname=aix-thread-multi-64all
> uname='aix mtwaas01 2 5 000bd53d4c00 '
> config_args='-Duse64bitall -Dprefix=/usr/local/perl5.8.6
> -Dusethreads'
> hint=recommended, useposix=true, d_sigaction=define
> usethreads=define use5005threads=undef useithreads=define
> usemultiplicity=define
> useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
> use64bitint=define use64bitall=define uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='cc_r', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE
> -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT
> -I/usr/local/include -q64 -DUSE_64_BIT_ALL -q64',
> optimize='-O',
> cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1
> -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT
> -I/usr/local/include'
> ccversion='6.0.0.12 <http://6.0.0.12>', gccversion='', gccosandvers=''
> intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
> ivtype='long long', ivsize=8, nvtype='double', nvsize=8,
> Off_t='off_t', lseeksize=8
> alignbytes=8, prototype=define
> Linker and Libraries:
> ld='ld', ldflags ='-brtl -bdynamic -bmaxdata:0x80000000
> -L/usr/local/lib -q64 -b64'
> libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib
> libs=-lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lpthreads -lc -lbsd
> perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -lbsd
> libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a
> gnulibc_version=''
> Dynamic Linking:
> dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='
> -bE:/usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all/CORE/perl.exp'
> cccdlflags=' ', lddlflags='-b64 -bhalt:4 -bexpall -G -bnoentry
> -lpthreads -lc -L/usr/local/lib'
>
>
> Characteristics of this binary (from libperl):
> Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT
> USE_64_BIT_ALL USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
> Built under aix
> Compiled at Jul 19 2005 08:27:07
> @INC:
> /usr/local/perl5.8.6/lib/5.8.6/aix-thread-multi-64all
> /usr/local/perl5.8.6/lib/5.8.6
> /usr/local/perl5.8.6/lib/site_perl/5.8.6/aix-thread-multi-64all
> /usr/local/perl5.8.6/lib/site_perl/5.8.6
> /usr/local/perl5.8.6/lib/site_perl
> .
>
>
> The pertinant environment variables are:
>
>
> AUTHSTATE=compat
> A__z=! LOGNAME
> BOX=ibm
> CGI_DIRECTORY=/var/docsearch/cgi-bin
> COCKPITSERVICE=cockpit
> DBCENTURY=C
> DBD_INFORMIX_DATABASE2=son_db@mtwac02_tcp
> DBD_INFORMIX_DATABASE=son_db
> DBD_INFORMIX_DEBUG_ESQLCC=1
> DBPRINT=xlp -onb
> DEFAULT_BROWSER=netscape
> DOCUMENT_DIRECTORY=/usr/docsearch/html
> DOCUMENT_SERVER_MACHINE_NAME=localhost
> DOCUMENT_SERVER_PORT=49213
> DOC_LANG=en_US
> EDITOR=vi
> HOME=/
> INFORMIXDIR=/informix/v10.00.FC1
> INFORMIXSERVER=mtwaas01_str
> INFORMIXSTACKSIZE=128
> LANG=en_US
> LC__FASTMSG=true
> LD_LIBRARY_PATH=/usr/lib:/elite/fulcrum/lib:/informix/v10.00.FC1/lib:/in
> formix/v10.00.FC1/lib/esql:/informix/v10.00.FC1/lib/tools:/usr/local/lib
> LIBPATH=/var/adm/ifx_loader_domain:/usr/lib:/elite/fulcrum/lib:/informix
> /v10.00.FC1/lib:/informix/v10.00.FC1/lib/esql:/informix/v10.00.FC1/lib/t
> ools:/usr/local/lib
> LOCPATH=/usr/lib/nls/loc
> LOGDIR=/convert/logs
> LOGIN=root
> LOGNAME=root
> MAIL=/usr/spool/mail/root
> MAILMSG=[YOU HAVE NEW MAIL]
> MANPATH=/usr/share/man:/usr/local/man:/usr/dt/man:
> MARKET=/elite/prog/market.prog
> NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat
> ODMDIR=/etc/objrepos
> ONCONFIG=onconfig.mtwaas01
> PATH=.:/custom/bin:/usr/local/bin:/informix/v10.00.FC1/bin:/usr/bin:/etc
> :/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/elite/custom:/elite/prog/elbs.pr
> og:/elite/prog/dms.prog:/elite/prog/conf.prog:/elite/prog/cost.prog:/eli
> te/prog/dms.prog:/elite/prog/eacs.prog:/elite/prog/erms.prog::/elite/pro
> g/inqry.prog:/elite/prog/market.prog:/elite/prog/fms.prog:/elite/fulcrum
> /bin:/var/ifor:/usr/opt/ifor/ls/conf
> PS1=mtwaas01:$PWD%
> PWD=/tmp/DBD-Informix-2005.01
> SHELL=/usr/bin/ksh
> TERM=xterm
> TERMCAP=/informix/v10.00.FC1/etc/termcap
> TZ=EST5EDT
> USER=root
> _=/usr/bin/env
>
>
>
> _____________________________________________________________________________________
>
> The information contained in this email may be confidential and/or legally
> privileged. It has been sent for the sole use of the intended recipient(s).
> If the reader of this message is not an intended recipient, you are hereby
> notified that any unauthorized review, use, disclosure, dissemination,
> distribution, or copying of this communication, or any of its contents, is
> strictly prohibited. If you have received this communication in error,
> please contact the sender by reply email and destroy all copies of the
> original message. To contact our email administrator directly, send to
> postmaster@xxxxxxxxxxxx
>
> Thank you.
>
> _____________________________________________________________________________________
>



--
Jonathan Leffler <jonathan.leffler@xxxxxxxxx> #include <disclaimer.h>
Guardian of DBD::Informix - v2005.01 - http://dbi.perl.org
"I don't suffer from insanity - I enjoy every minute of it."