Re: Problem with boot on Solaris 8/Oracle 8.1.7

[email protected] (Charles Jardine) Thu, 28 Jun 2001 11:13:27 +0100
Newsgroups perl.dbi.oracle-oci
Organization University of Cambridge Computing Service
Message-ID <[email protected]>
Charles Jardine wrote:
> 
> Versions:
>    OS          Solaris 8 (sparc)
>    Oracle      8.1.7.0.0
>    Perl        5.6.1
>    DBI         1.18
>    DBD::Oracle 1.07
>    C::Scan     0.74
>    Oracle::OCI 0.02
> 
[ snip snip ]

> Running h2xs...
> Cannot process declaration `sword
> # 105
> OCIDirPathAbort(OCIDirPathCtx *dpctx, OCIError *errhp)' without an identifier at /home/cj10/perl/lib/site_perl/5.6.1/C/Scan.pm line 720.
> h2xs failed at ./boot line 167

I have checked this out further. It seems that C::Scan cannot cope
correctly with the case where a line number control directive
intervenes between the return type and the name of a function.
I have got myself going by preventing cpp from producing
these directives, by using the flag -P. A patch to h2xs which
achieves this (at least on my platform) is appended. Note that
it is not useful to add -P to the -F option of h2xs, as this
results in -P begin passed to cc, which is bad news.

I realize that this is not the correct fix for the problem.
It would be better to fix C::Scan to cope with the normal
cpp output. However, I would rather leave this to someone
who understands C::Scan.

*** h2xs.orig   Fri Jun 22 15:06:38 2001
--- h2xs        Tue Jun 26 10:52:32 2001
***************
*** 556,561 ****
--- 556,562 ----
      my @td;
      my @good_td;
      my $addflags = $opt_F || '';
+     $addflags = "-P $addflags";
  
  use File::Basename;
      my @dirs_h = split /,/, $opt_I||'';

-- 
Charles Jardine - Computing Service, University of Cambridge
[email protected]    Tel: +44 1223 334506, Fax: +44 1223 334679