On 24 Aug 2007 16:04:06 +0200, Piotr Poloczek <[EMAIL PROTECTED]> wrote:
> Hello!
>
> I have problem with compiling DBD::Informix.
> Could anybody help me ?

Note the part of the diagnostic output that says:

===QUOTE===
Using INFORMIXDIR=/u/informix and ESQL/C compiler esql
Using INFORMIX-ESQL Version 7.24.UC7 from /u/informix

Your version of ESQL/C is crippled and will not link with shared
libraries even if you tell the script to use them (PTS Bug
102265).  We are going to make a hacked copy of the script and
use that.

If the hacked ESQL/C script does not work, then you will probably
have to make a static version of Perl with DBD::Informix and the
ESQL/C.  Read the Notes/static.build file for more information.

Or (a much better idea) upgrade to Client SDK 2.40 or later!
===EOQ===

Really and truly, with IDS 7.31, you should be using a CSDK from the
21st century, rather than ESQL/C 7.24 which dates back a decade or so.

The following message in the build information indicates a bug in esqlcc:

Testing whether your Informix test environment will work...
Argument "yes" isn't numeric in numeric gt (>) at esqlcc line 102.
esqlcc: Num args = 27

I'll get that fixed - but it won't be doing much harm either.  (A
workaround is to set DBD_INFORMIX_DEBUG_ESQLCC=1 instead of 'yes'.)

The real immediate problem is:
esqlc: "dbdimp.ec", line 1328: Error -33200: Invalid statement on
symbol 'ifx_int8_t'.
esqlc: "dbdimp.ec", line 2202: Error -33200: Invalid statement on
symbol 'ifx_int8_t'.
2 error(s) found
make: *** [dbdimp.o] Error 1

That's another bug - the ESQL/C 7.2x compiler should not be seeing
ifx_int8_t because that is only supported by CSDK versions of ESQL/C.

OK - it will take time to get a fixed release of DBD::Informix out -
I've been working on and off on it for several months, and I'm having
some problems.

So, you need a workaround.  The simplest from my perspective would be
if you upgrade to CSDK 2.90 or thereabouts (which would give you
ESQL/C 2.90, which really is newer than ESQL/C 7.24 and 9.52 -- I
didn't get a say in the version numbering!).

Failing that:
Line 1324 of dbdimp.ec says "#ifdef SQLINT8"
change it to read "$ifdef POLLYWOGS_ARE_WONDERFUL;",
and the matching "#else" to "$else;" and the matching "#endif" to
"$endif;", noting carefully the new semi-colons that are mandatory.

Line 2202 is in the middle of a #if 0 / #endif section - but it is the
ESQL/C compiler that is complaining, not the C compiler.  The best
thing to do, then, is delete the whole block of code - lines 2192 to
2211.  If you prefer to leave it there, then you'll have to embed it
in comments, but there are already comments in that section, so it
ain't trivial.  Alternatively, wrap the #if 0 / #endif section in
"$ifdef POLLYWOGS_ARE_STUPENDOUS;" and "$endif;" as above.

With luck, those two changes will get you on to the next hurdle.

-- 
Jonathan Leffler <[EMAIL PROTECTED]>  #include <disclaimer.h>
Guardian of DBD::Informix - v2007.0226 - http://dbi.perl.org
"Blessed are we who can laugh at ourselves, for we shall never cease
to be amused."

Reply via email to