ECPG interface: 7.4beta3 compile failure; CVS tip compile failure

Started by Oliver Elphickover 22 years ago6 messages
#1Oliver Elphick
olly@lfix.co.uk

System: i386 (Athlon) - Debian GNU/Linux unstable

PostgreSQL 7.4beta3 fails to compile:

i386-linux-gcc -O2 -g -Wall -Wmissing-prototypes -Wmissing-declarations -pipe -fPIC -I../../../../src/interfaces/ecpg/include -I../../../../src/include/utils -I../../../../src/include -I/usr/include/tcl8.4 -I/usr/lib/R/include -g -c -o timestamp.o timestamp.c
timestamp.c: In function `tm2timestamp':
timestamp.c:71: error: syntax error before numeric constant
timestamp.c:73: error: syntax error before "long"
timestamp.c:76: error: syntax error before '>=' token
timestamp.c:76: error: syntax error before '<' token
make[5]: *** [timestamp.o] Error 1
make[5]: Leaving directory
`/usr/src/mypackages/postgresql/postgresql-7.3.99.7.4beta3/build-tree/postgresql-7.4beta3/src/interfaces/ecpg/pgtypeslib'

This error is fixed in CVS tip by Tom Lane's patch of 2 days ago.
However CVS tip still fails to compile:

make[4]: Entering directory
`/home/olly/pgsql.cvs/pgsql/src/interfaces/ecpg/compatlib'
i386-linux-gcc -O2 -g -Wall -Wmissing-prototypes -Wmissing-declarations -D_GNU_SOURCE -fpic -I../../../../src/interfaces/ecpg/include -I../../../../src/interfaces/libpq -I../../../../src/include/utils -I../../../../src/include -I/usr/include/tcl8.4 -I/usr/lib/R/include -c -o informix.o informix.c
informix.c:138: error: syntax error before "__extension__"
informix.c:138: error: syntax error before "len"
informix.c:138: error: syntax error before "if"
...etc....

Line 138 begins the definition of strndup(). However, strndup() is also
declared in string.h, which is included by this file. If I rename this
function to estrndup() (and also where it is called, further down) the
compilation succeeds.

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Give, and it shall be given unto you; good measure,
pressed down, and shaken together, and running over,
shall men pour into your lap. For by your standard of
measure it will be measured to you in return."
Luke 6:38

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Oliver Elphick (#1)
Re: ECPG interface: 7.4beta3 compile failure; CVS tip compile failure

Oliver Elphick <olly@lfix.co.uk> writes:

Line 138 begins the definition of strndup(). However, strndup() is also
declared in string.h, which is included by this file. If I rename this
function to estrndup() (and also where it is called, further down) the
compilation succeeds.

Hm, is strndup defined as a macro in your string.h? I suspect it's not
a good idea to be providing a local definition of something that might
be considered a standard function.

regards, tom lane

#3Oliver Elphick
olly@lfix.co.uk
In reply to: Tom Lane (#2)
Re: ECPG interface: 7.4beta3 compile failure; CVS tip

On Thu, 2003-09-18 at 19:25, Tom Lane wrote:

Oliver Elphick <olly@lfix.co.uk> writes:

Line 138 begins the definition of strndup(). However, strndup() is also
declared in string.h, which is included by this file. If I rename this
function to estrndup() (and also where it is called, further down) the
compilation succeeds.

Hm, is strndup defined as a macro in your string.h? I suspect it's not
a good idea to be providing a local definition of something that might
be considered a standard function.

/* Return a malloc'd copy of at most N bytes of STRING. The
resultant string is terminated even if no null terminator
appears before STRING[N]. */
#if defined __USE_GNU
extern char *strndup (__const char *__string, size_t __n)
__THROW __attribute_malloc__;
#endif

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Give, and it shall be given unto you; good measure,
pressed down, and shaken together, and running over,
shall men pour into your lap. For by your standard of
measure it will be measured to you in return."
Luke 6:38

#4Michael Meskes
meskes@postgresql.org
In reply to: Oliver Elphick (#1)
Re: ECPG interface: 7.4beta3 compile failure; CVS tip compile failure

On Thu, Sep 18, 2003 at 06:53:00PM +0100, Oliver Elphick wrote:

Line 138 begins the definition of strndup(). However, strndup() is also
declared in string.h, which is included by this file. If I rename this
function to estrndup() (and also where it is called, further down) the
compilation succeeds.

I included strndup because some systems didn't seem to have it. Any idea
what else I could do? Okay, I could rename it and use only the renamed
function as it's just used internally.

What surprises me is that it compiles fine for me despite using the very
same system as Oliver to compile.

Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!

#5Oliver Elphick
olly@lfix.co.uk
In reply to: Michael Meskes (#4)
Re: ECPG interface: 7.4beta3 compile failure; CVS tip

On Fri, 2003-09-19 at 07:38, Michael Meskes wrote:

I included strndup because some systems didn't seem to have it. Any idea
what else I could do? Okay, I could rename it and use only the renamed
function as it's just used internally.

What surprises me is that it compiles fine for me despite using the very
same system as Oliver to compile.

Perhaps you should enclose your definition in
#ifndef __USE_GNU
#endif

src/include/port/linux.h now forces _GNU_SOURCE on, which in turn
defines __USE_GNU. Do you somehow override the definition of
_GNU_SOURCE?

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Bring ye all the tithes into the storehouse, that
there may be meat in mine house, and prove me now
herewith, saith the LORD of hosts, if I will not open
you the windows of heaven, and pour you out a
blessing, that there shall not be room enough to
receive it." Malachi 3:10

#6Michael Meskes
meskes@postgresql.org
In reply to: Oliver Elphick (#5)
Re: ECPG interface: 7.4beta3 compile failure; CVS tip compile failure

For now I simply renamed the function. We can look for the reason later.
I'd prefer to get ecpg release ready first. :-)

Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!