Thread: 9.0Beta2 Build on Mac (64 bit) of pg_upgrade fails with duplicate symbols

9.0Beta2 Build on Mac (64 bit) of pg_upgrade fails with duplicate symbols

From
Chris Ruprecht
Date:
I'm building the contrib modules and get this:

gcc -no-cpp-precomp -O3 -fno-common -arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement-Wendif-labels -fno-strict-aliasing -fwrapv check.o controldata.o dump.o exec.o file.o
function.oinfo.o option.o page.o pg_upgrade.o relfilenode.o server.o tablespace.o util.o version.o version_old_8_3.o
-L../../src/port-lpgport -L../../src/interfaces/libpq -lpq -L../../src/port -O3 -fno-common -arch x86_64
-Wl,-dead_strip_dylibs -lpgport -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm  -o pg_upgrade 
ld: duplicate symbol _scandir_file_pattern in controldata.o and check.o

My configure script looks like:

export MACOSX_DEPLOYMENT_TARGET=10.6
export CC=gcc
export CPP="gcc -E"
export CXX=g++
export CXXFLAGS='-O3 -fno-common -arch x86_64'
export CFLAGS='-O3 -fno-common -arch x86_64'
export LDFLAGS='-O3 -fno-common -arch x86_64'

./configure  \
  --prefix=/usr \
  --enable-integer-datetimes \
  --with-tcl              \
  --with-perl             \
  --with-python           \
  --with-gssapi           \
  --with-krb5             \
  --with-pam              \
  --with-ldap             \
  --with-bonjour          \
  --with-openssl       \
  --with-zlib

make of the normal sources worked.
But
cd contrib
make
resulted in the error above.


best regards,
chris
--
chris ruprecht
specialist in obscure details


> make of the normal sources worked.
> But
> cd contrib
> make
> resulted in the error above.

cd contrib, or cd contrib/pg_upgrade?


--
                                  -- Josh Berkus
                                     PostgreSQL Experts Inc.
                                     http://www.pgexperts.com

Chris Ruprecht wrote:
> I'm building the contrib modules and get this:
>
> gcc -no-cpp-precomp -O3 -fno-common -arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement-Wendif-labels -fno-strict-aliasing -fwrapv check.o controldata.o dump.o exec.o file.o
function.oinfo.o option.o page.o pg_upgrade.o relfilenode.o server.o tablespace.o util.o version.o version_old_8_3.o
-L../../src/port-lpgport -L../../src/interfaces/libpq -lpq -L../../src/port -O3 -fno-common -arch x86_64
-Wl,-dead_strip_dylibs -lpgport -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm  -o pg_upgrade 
> ld: duplicate symbol _scandir_file_pattern in controldata.o and check.o

Oops.  That global variable was not properly defined;  not sure why none
of the other compilers caught that bug.  Anyway, the attached patch
should fix your problem, and will appear in 9.0 beta3.  Thanks for the
report.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + None of us is going to be here forever. +
Index: contrib/pg_upgrade/pg_upgrade.h
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_upgrade/pg_upgrade.h,v
retrieving revision 1.7
diff -c -c -r1.7 pg_upgrade.h
*** contrib/pg_upgrade/pg_upgrade.h    12 Jun 2010 17:45:28 -0000    1.7
--- contrib/pg_upgrade/pg_upgrade.h    15 Jun 2010 02:01:48 -0000
***************
*** 237,243 ****
  /*
   * Global variables
   */
! char        scandir_file_pattern[MAXPGPATH];


  /* check.c */
--- 237,243 ----
  /*
   * Global variables
   */
! extern char        scandir_file_pattern[];


  /* check.c */
Index: contrib/pg_upgrade/relfilenode.c
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_upgrade/relfilenode.c,v
retrieving revision 1.3
diff -c -c -r1.3 relfilenode.c
*** contrib/pg_upgrade/relfilenode.c    13 May 2010 22:51:00 -0000    1.3
--- contrib/pg_upgrade/relfilenode.c    15 Jun 2010 02:01:48 -0000
***************
*** 17,22 ****
--- 17,25 ----
                   const char *oldnspname, const char *oldrelname,
                   const char *newnspname, const char *newrelname);

+ /* used by scandir(), must be global */
+ char     scandir_file_pattern[MAXPGPATH];
+
  /*
   * transfer_all_new_dbs()
   *

Re: 9.0Beta2 Build on Mac (64 bit) of pg_upgrade fails with duplicate symbols

From
Chris Ruprecht
Date:
Sorry for the late reply Josh, but apparently, Bruce already has a fix for the issue - Thanks Bruce!!
Thanks a bunch, I'll put the patch in when I get back home on Saturday.

.... if only my commercial RDBMS provider had turn-around times like you guys ....

best regards,
chris
-- 
chris ruprecht
specialist in obscure details

On Jun 14, 2010, at 22:12 , Bruce Momjian wrote:

Chris Ruprecht wrote:
I'm building the contrib modules and get this:

gcc -no-cpp-precomp -O3 -fno-common -arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv check.o controldata.o dump.o exec.o file.o function.o info.o option.o page.o pg_upgrade.o relfilenode.o server.o tablespace.o util.o version.o version_old_8_3.o  -L../../src/port -lpgport -L../../src/interfaces/libpq -lpq -L../../src/port -O3 -fno-common -arch x86_64  -Wl,-dead_strip_dylibs  -lpgport -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm  -o pg_upgrade
ld: duplicate symbol _scandir_file_pattern in controldata.o and check.o

Oops.  That global variable was not properly defined;  not sure why none
of the other compilers caught that bug.  Anyway, the attached patch
should fix your problem, and will appear in 9.0 beta3.  Thanks for the
report.

--
 Bruce Momjian  <bruce@momjian.us>        http://momjian.us
 EnterpriseDB                             http://enterprisedb.com

 + None of us is going to be here forever. +
Index: contrib/pg_upgrade/pg_upgrade.h
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_upgrade/pg_upgrade.h,v
retrieving revision 1.7
diff -c -c -r1.7 pg_upgrade.h
*** contrib/pg_upgrade/pg_upgrade.h 12 Jun 2010 17:45:28 -0000 1.7
--- contrib/pg_upgrade/pg_upgrade.h 15 Jun 2010 02:01:48 -0000
***************
*** 237,243 ****
 /*
  * Global variables
  */
! char scandir_file_pattern[MAXPGPATH];


 /* check.c */
--- 237,243 ----
 /*
  * Global variables
  */
! extern char scandir_file_pattern[];


 /* check.c */
Index: contrib/pg_upgrade/relfilenode.c
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_upgrade/relfilenode.c,v
retrieving revision 1.3
diff -c -c -r1.3 relfilenode.c
*** contrib/pg_upgrade/relfilenode.c 13 May 2010 22:51:00 -0000 1.3
--- contrib/pg_upgrade/relfilenode.c 15 Jun 2010 02:01:48 -0000
***************
*** 17,22 ****
--- 17,25 ----
  const char *oldnspname, const char *oldrelname,
  const char *newnspname, const char *newrelname);

+ /* used by scandir(), must be global */
+ char     scandir_file_pattern[MAXPGPATH];
+
 /*
  * transfer_all_new_dbs()
  *