Thread: PGXS on VPATH?

PGXS on VPATH?

From
Alvaro Herrera
Date:
Hi,

Is PGXS on VPATH builds supported?  I was just testing tsearch2 and it
isn't working.  Note that I'm first standing on the builddir and it
doesn't work; then I'm back at the srcdir and it does work.

07:02  jovan tsearch2 2$ pwd
/pgsql/build/00orig/contrib/tsearch2
07:02  jovan tsearch2 0$ LANG=C make USE_PGXS=1
make: *** No rule to make target `tsearch.sql.in', needed by `tsearch2.sql'.  Stop.
07:02  jovan tsearch2 2$ cdsrc
07:02  jovan tsearch2 0$ pwd
/pgsql/source/00orig/contrib/tsearch2
07:02  jovan tsearch2 0$ LANG=C make USE_PGXS=1
sed -e 's,MODULE_PATHNAME,$libdir/tsearch2,g' tsearch.sql.in >tsearch2.sql
cp untsearch.sql.in untsearch2.sql
gcc -O2 -Wall -Wmissing-prototypes [...]


-- 
Alvaro Herrera                 http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Changing the world ... one keyboard at a time!"                        (www.DVzine.org)


Re: PGXS on VPATH?

From
Tom Lane
Date:
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> Is PGXS on VPATH builds supported?

Probably not in the way you're thinking.  IIRC pgxs.mk explicitly resets
VPATH, and I think it has to do that because any VPATH embedded in
Makefile.global would represent what was done at the time of building
the PG installation --- which has zip to do with where the PGXS-using
software is located.

It might work to explicitly set VPATH from the make command line:make USE_PGXS=1 VPATH=whatever
as this should override the assignments in the makefiles.
        regards, tom lane


Re: PGXS on VPATH?

From
Fabien COELHO
Date:
Dear Alvaro,

sorry for this late response.

>> Is PGXS on VPATH builds supported?
>
> Probably not in the way you're thinking.  IIRC pgxs.mk explicitly resets
> VPATH, and I think it has to do that because any VPATH embedded in
> Makefile.global would represent what was done at the time of building
> the PG installation --- which has zip to do with where the PGXS-using
> software is located.
>
> It might work to explicitly set VPATH from the make command line:
>     make USE_PGXS=1 VPATH=whatever
> as this should override the assignments in the makefiles.

Indeed.

There were some kind of issue with VPATH so that it was scratched when 
building under pgxs.

ifdef PGXS
# We assume that we are in src/makefiles/, so top is ...
top_builddir := $(dir $(PGXS))../..
include $(top_builddir)/src/Makefile.global
top_srcdir = $(top_builddir)
srcdir = .
VPATH =
endif

Maybe something clever could be done with relative VPATHs, or by trying to 
translate prefixes? On the other hand, I'm not a VPATH fan;-)

-- 
Fabien.