Обсуждение: Bug #865: PostgreSQL 7.3 and 7.3.1 fails to compile pg_dump

Поиск
Список
Период
Сортировка

Bug #865: PostgreSQL 7.3 and 7.3.1 fails to compile pg_dump

От
pgsql-bugs@postgresql.org
Дата:
D. Wright (wright@pair.com) reports a bug with a severity of 2
The lower the number the more severe it is.

Short Description
PostgreSQL 7.3 and 7.3.1 fails to compile pg_dump

Long Description
While I can get PostgreSQL 7.2 to compile fine on my machine (running FreeBSD), I can not get 7.3 or 7.3.1 to compile.

I run configure with the following options (same as I used to compile 7.2):

--with-perl --enable-syslog --with-maxbackends=256 --with-libraries=/usr/lib:/usr/local/lib/:/usr/local/lib/lp

Then, when I run gmake, I get the following error:

pg_dump.c:192: elements of array `long_options' have incomplete type
pg_dump.c:193: warning: excess elements in struct initializer after `long_options[0]'
pg_dump.c:193: `no_argument' undeclared (first use in this function)
pg_dump.c:193: (Each undeclared identifier is reported only once
pg_dump.c:193: for each function it appears in.)
pg_dump.c:193: warning: excess elements in struct initializer after `long_options[0]'
pg_dump.c:193: warning: excess elements in struct initializer after `long_options[0]'
pg_dump.c:193: warning: excess elements in struct initializer after `long_options[0]'
pg_dump.c:194: warning: excess elements in struct initializer after `long_options[1]'
pg_dump.c:194: warning: excess elements in struct initializer after `long_options[1]'
pg_dump.c:194: warning: excess elements in struct initializer after `long_options[1]'
pg_dump.c:194: warning: excess elements in struct initializer after `long_options[1]'
...

Sample Code


No file was uploaded with this report

Re: Bug #865: PostgreSQL 7.3 and 7.3.1 fails to compile pg_dump

От
Tom Lane
Дата:
pgsql-bugs@postgresql.org writes:
> Then, when I run gmake, I get the following error:

> pg_dump.c:192: elements of array `long_options' have incomplete type
> pg_dump.c:193: warning: excess elements in struct initializer after `long_options[0]'
> pg_dump.c:193: `no_argument' undeclared (first use in this function)

Apparently, our configure script thinks you have getopt_long(), but you
really don't.  Can you look into the situation and figure out why
configure is confused?

It surprises me that this would happen when 7.2 worked okay --- I don't
think we changed that configure test since 7.2.  Are you sure nothing
changed on your machine since you last built 7.2?

A stopgap solution is just to remove #define HAVE_GETOPT_LONG from the
pg_config.h file made by configure; but if you don't want to fight the
problem in future, you'll need to help us figure out why configure is
making the wrong choice.

            regards, tom lane

Re: Bug #865: PostgreSQL 7.3 and 7.3.1 fails to compile

От
Dan Wright
Дата:
On Tue, 7 Jan 2003, Tom Lane wrote:

> Apparently, our configure script thinks you have getopt_long(), but you
> really don't.  Can you look into the situation and figure out why
> configure is confused?
>
> It surprises me that this would happen when 7.2 worked okay --- I don't
> think we changed that configure test since 7.2.  Are you sure nothing
> changed on your machine since you last built 7.2?

Yes, I'm sure.  This is what happens when I run configure with the 7.2.3 source:

root@dev# ./configure --with-perl --enable-syslog --with-maxbackends=256
--with-libraries=/usr/lib:/usr/local/lib/:/usr/local/lib/lpe | grep -i getopt
checking for getopt.h... no
checking for getopt_long... no


And this is with 7.3.1 (run several minutes later on the same machine):

root@dev# !./conf
./configure --with-perl --enable-syslog --with-maxbackends=256
--with-libraries=/usr/lib:/usr/local/lib/:/usr/local/lib/lpe | grep -i getopt
checking for library containing getopt_long... -lgnugetopt
checking getopt.h usability... no
checking getopt.h presence... no
checking for getopt.h... no
checking for getopt_long... yes


This is from config.log (in the 7.3.1 source):

configure:9866: gcc -o conftest -pipe     -L/usr/lib -L/usr/local/lib/
-L/usr/local/lib/lpe conftest.c -lz -lreadline -lcrypt -lgnugetopt -lcompat -lm
-lutil  >&5
configure:9869: $? = 0
configure:9872: test -s conftest
configure:9875: $? = 0
configure:9885: result: yes

I have confirmed the conftest.c which tests getopt_long in that section of the
code does indeed complie without errors.

I'm a bit stumped as to what to check next.

-Dan