Обсуждение: Bug #865: PostgreSQL 7.3 and 7.3.1 fails to compile pg_dump
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
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
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