Thread: 8.0 libpq: missing get_home_path()

8.0 libpq: missing get_home_path()

From
Karel Zak
Date:
Hi,
I tried compile some program with latest CVS libpq:
gcc -O2 -O2 -g -pipe -march=i386 -mcpu=i686 -I/usr/include/httpd-Wall -I/usr/lib/postgresql/include
-DLIBAPMOM_FUNCALL=1-Wall-Wmissing-prototypes -Wmissing-declarations `xml2-config --cflags``Wand-config --cppflags` -o
jsn-importermain.o file.o db.o md5.o-L/usr/lib/postgresql/lib -lpq `xml2-config --libs` -lMagick
-lWand/usr/lib/postgresql/lib/libpq.so:undefined reference to `get_home_path'collect2: ld returned 1 exit statusmake:
***[jsn-importer] Error 1
 
It looks like port/path.c (libpgport) isn't compiled in PostgreSQL client libs,but the get_home_path() is used there. 
   Karel

-- Karel Zak  <zakkr@zf.jcu.cz>http://home.zf.jcu.cz/~zakkr/


Re: 8.0 libpq: missing get_home_path()

From
Tom Lane
Date:
Karel Zak <zakkr@zf.jcu.cz> writes:
>  I tried compile some program with latest CVS libpq:

>  gcc -O2 -O2 -g -pipe -march=i386 -mcpu=i686 -I/usr/include/httpd
>  -Wall -I/usr/lib/postgresql/include -DLIBAPMOM_FUNCALL=1 -Wall
>  -Wmissing-prototypes -Wmissing-declarations `xml2-config --cflags`
>  `Wand-config --cppflags` -o jsn-importer main.o file.o db.o md5.o
>  -L/usr/lib/postgresql/lib -lpq `xml2-config --libs` -lMagick -lWand
>  /usr/lib/postgresql/lib/libpq.so: undefined reference to `get_home_path'

There's another problem here, which is that pulling port/path.c into
libpq to fix this will pollute application namespace with a whole bunch
of global symbols that don't use a PQ or pq prefix.
        regards, tom lane


Re: 8.0 libpq: missing get_home_path()

From
Bruce Momjian
Date:
Tom Lane wrote:
> Karel Zak <zakkr@zf.jcu.cz> writes:
> >  I tried compile some program with latest CVS libpq:
> 
> >  gcc -O2 -O2 -g -pipe -march=i386 -mcpu=i686 -I/usr/include/httpd
> >  -Wall -I/usr/lib/postgresql/include -DLIBAPMOM_FUNCALL=1 -Wall
> >  -Wmissing-prototypes -Wmissing-declarations `xml2-config --cflags`
> >  `Wand-config --cppflags` -o jsn-importer main.o file.o db.o md5.o
> >  -L/usr/lib/postgresql/lib -lpq `xml2-config --libs` -lMagick -lWand
>  
> >  /usr/lib/postgresql/lib/libpq.so: undefined reference to `get_home_path'
> 
> There's another problem here, which is that pulling port/path.c into
> libpq to fix this will pollute application namespace with a whole bunch
> of global symbols that don't use a PQ or pq prefix.

Yea, I am seeing that now too.  My guess is that I am going to have to
go with a macro for get_home_path like I did for is_absolute_path.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: 8.0 libpq: missing get_home_path()

From
Bruce Momjian
Date:
Bruce Momjian wrote:
> Tom Lane wrote:
> > Karel Zak <zakkr@zf.jcu.cz> writes:
> > >  I tried compile some program with latest CVS libpq:
> > 
> > >  gcc -O2 -O2 -g -pipe -march=i386 -mcpu=i686 -I/usr/include/httpd
> > >  -Wall -I/usr/lib/postgresql/include -DLIBAPMOM_FUNCALL=1 -Wall
> > >  -Wmissing-prototypes -Wmissing-declarations `xml2-config --cflags`
> > >  `Wand-config --cppflags` -o jsn-importer main.o file.o db.o md5.o
> > >  -L/usr/lib/postgresql/lib -lpq `xml2-config --libs` -lMagick -lWand
> >  
> > >  /usr/lib/postgresql/lib/libpq.so: undefined reference to `get_home_path'
> > 
> > There's another problem here, which is that pulling port/path.c into
> > libpq to fix this will pollute application namespace with a whole bunch
> > of global symbols that don't use a PQ or pq prefix.
> 
> Yea, I am seeing that now too.  My guess is that I am going to have to
> go with a macro for get_home_path like I did for is_absolute_path.

I need to call canonicalize_path() in the macro.  That kills the macro
idea.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: 8.0 libpq: missing get_home_path()

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I need to call canonicalize_path() in the macro.

There is only one use of get_home_path in libpq.  Lose it and do
a direct getenv(HOMEDIR).  You do not really need to do a
canonicalize_path there; it'd be sufficient to insert the appropriate
directory separator ('/' or '\') when forming pgpassfile just below.
        regards, tom lane


Re: 8.0 libpq: missing get_home_path()

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I need to call canonicalize_path() in the macro.
> 
> There is only one use of get_home_path in libpq.  Lose it and do
> a direct getenv(HOMEDIR).  You do not really need to do a
> canonicalize_path there; it'd be sufficient to insert the appropriate
> directory separator ('/' or '\') when forming pgpassfile just below.

OK, sounds like a plan. I will add a comment about its purpose.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073