From: Prabhakara_Janardhan at emc.com (Prabhakara_Janardhan at emc.com) Date: Wed, 18 Mar 2009 19:50:17 -0400 Subject: [Pljava-dev] Build Errors while building PL/Java 1.4.0 on Solaris 10 In-Reply-To: <49C167BA.1050005@ejurka.com> References: <6ECF8F2E89FB354F9D3E26F7A398842BCCDAA0@CORPUSMX100A.corp.emc.com> <49C167BA.1050005@ejurka.com> Message-ID: <6ECF8F2E89FB354F9D3E26F7A398842BCCDBAC@CORPUSMX100A.corp.emc.com> Hi, Yes! The server was built elsewhere... Are you saying that PL/Java should always be built on the same server as the server itself? That is kind of a severe restriction, esp. when we have pg_config etc - to tell us all the flags that were used and essentially that should be all that should be known. Anyhow, I was quite convinced that the way I built it was fine - was just wondering why I got that error in the first place. Thanks, Janardhan -----Original Message----- From: Kris Jurka [mailto:books at ejurka.com] Sent: Wednesday, March 18, 2009 4:30 PM To: Prabhakara, Janardhan Cc: pljava-dev at pgfoundry.org Subject: Re: [Pljava-dev] Build Errors while building PL/Java 1.4.0 on Solaris 10 Prabhakara_Janardhan at emc.com wrote: >> Hi, >> >> I had the following error while building PL/Java 1.4.0 on Solaris 10: >> >> /opt/voyence/db/controldb/pljava-1.4.0/src/C/pljava/type/BigDecimal.c >> -o type/BigDecimal.o >> In file included from >> /opt/voyence/db/controldb/include/postgresql/server/c.h:826, >> from >> /opt/voyence/db/controldb/include/postgresql/server/postgres.h:48, >> from >> /opt/voyence/db/controldb/pljava-1.4.0/src/C/pljava/type/BigDecimal.c: >> 9: >> /opt/voyence/db/controldb/include/postgresql/server/port.h:377: error: >> conflicting types for 'unsetenv' >> /usr/include/stdlib.h:188: error: previous declaration of 'unsetenv' >> was here >> /opt/voyence/db/controldb/include/postgresql/server/port.h:377: error: >> conflicting types for 'unsetenv' >> /usr/include/stdlib.h:188: error: previous declaration of 'unsetenv' >> was here >> gmake[1]: *** [type/BigDecimal.o] Error 1 >> gmake[1]: Leaving directory >> `/opt/voyence/db/controldb/pljava-1.4.0/build/objs' >> gmake: *** [c_all] Error 2 >> >> >> The way I fixed the buiild error was to modify the Makefile under: >> >> src/C/pljava/Makefile: >> >> -bash-3.00$ diff src/C/pljava/Makefile src/C/pljava/Makefile.orig >> 23c23 >> < $(CC) -c $(CFLAGS) $(CPPFLAGS) -DHAVE_UNSETENV $< -o $@ >> --- >>> $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ >> Now the discrepency is that >> >> >> /usr/include/stdlib.h has: >> >> extern int unsetenv(const char *); >> >> >> And >> >> $DBHOME/include/postgresql/server/port.h has: >> >> #ifndef HAVE_UNSETENV >> extern void unsetenv(const char *name); >> #endif >> >> >> I chose to do the -DHAVE_UNSETENV since the functions only differ in >> the return type. Did others who built face the same issue? What >> approach was taken to build PL/Java 1.4.0 on Solaris? >> >> The definition of HAVE_UNSETENV should be in $DBHOME/include/postgresql/server/pg_config.h and matches up with what the server compile environment found. This could be different than the pljava compile environment if the server was built on a different machine or if additional libraries were installed after the server build. If you build the server and then immediately build pljava against that server it should definitely work. Can you clarify how your server was built? Kris Jurka