Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Rocco Altier
OK.  I see now.  It looks like it wouldn't have worked right anyhow,
since the file is installed in $(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP).

So either we need to change backend/Makefile or Makefile.aix, to be
consistent with each other.  I would suggest Makefile.aix, since
historically its been installed in $libdir.

Thanks,
-rocco

> -Original Message-
> From: Tom Lane [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, January 19, 2006 6:28 PM
> To: Rocco Altier
> Cc: Bruce Momjian; Andrew Dunstan; Magnus Hagander; PostgreSQL-patches
> Subject: Re: [PATCHES] [HACKERS] pgxs/windows 
> 
> 
> "Rocco Altier" <[EMAIL PROTECTED]> writes:
> > If we take the DESTDIR out of here, where should we get the 
> POSTGRES_IMP
> > file from?
> 
> In the PGXS case, $(bindir) has been gotten from pg_config, and it's
> correct as-is by definition.  Adding $(DESTDIR) to it cannot be right.
> 
>   regards, tom lane
> 

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Tom Lane
"Rocco Altier" <[EMAIL PROTECTED]> writes:
> If we take the DESTDIR out of here, where should we get the POSTGRES_IMP
> file from?

In the PGXS case, $(bindir) has been gotten from pg_config, and it's
correct as-is by definition.  Adding $(DESTDIR) to it cannot be right.

regards, tom lane

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Andrew Dunstan
On Thu, 2006-01-19 at 15:33 -0500, Tom Lane wrote:
> Bruce Momjian  writes:
> > The difference between Magnus's and Andrew's is
> > that Magnus used MODULE_big (which means create a shared library), while
> > Andrew used MODULES.  So, Magnus's only worked because he was creating a
> > DLL and that brought in the -L from MODULE_big.
> 
> Ah, good catch.

As I understand the docs, one can use either to produce a dll. The
difference is how it processes the name.

> 
> > I have applied the following patch to change /bin to /lib for Cygwin and
> > Win32.
> 
> What about the question of whether $(DESTDIR) belongs there or not?
> I think we had concluded that PGXS shouldn't ever use $(DESTDIR),
> because that's only for install-time stuff.


Looks that way to me - IIRC it's only used by the regression suite.

cheers

andrew


---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Rocco Altier
If I understand correctly, atleast for the AIX case, the reason that
Makefile.aix is referencing DESTDIR is for the PGXS case.

I thought that PGXS was supposed to be able to be run after things were
installed, and you might not have the compile tree anymore.  Basically,
if you wanted to build some extensions on top of a precompiled set of
binaries.

If we take the DESTDIR out of here, where should we get the POSTGRES_IMP
file from?

-rocco

> -Original Message-
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Tom Lane
> Sent: Thursday, January 19, 2006 3:54 PM
> To: Bruce Momjian
> Cc: Andrew Dunstan; Magnus Hagander; PostgreSQL-patches
> Subject: Re: [PATCHES] [HACKERS] pgxs/windows 
> 
> 
> Bruce Momjian  writes:
> > Tom Lane wrote:
> >> What about the question of whether $(DESTDIR) belongs there or not?
> >> I think we had concluded that PGXS shouldn't ever use $(DESTDIR),
> >> because that's only for install-time stuff.
> 
> > I considered that a separate issue and didn't explore it, 
> but I think
> > you are right that $(DESTDIR) makes no sense so I will remove it.
> 
> > Patch attached.
> 
> If these are bogus then so are the uses in Makefile.aix and
> Makefile.darwin.
> 
> I'm a bit bothered by the ones in pgxs.mk, too, although I suspect we
> have to leave those there for the benefit of contrib?
> 
>   regards, tom lane
> 
> ---(end of 
> broadcast)---
> TIP 5: don't forget to increase your free space map settings
> 

---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Bruce Momjian
Tom Lane wrote:
> Bruce Momjian  writes:
> > Tom Lane wrote:
> >> What about the question of whether $(DESTDIR) belongs there or not?
> >> I think we had concluded that PGXS shouldn't ever use $(DESTDIR),
> >> because that's only for install-time stuff.
> 
> > I considered that a separate issue and didn't explore it, but I think
> > you are right that $(DESTDIR) makes no sense so I will remove it.
> 
> > Patch attached.
> 
> If these are bogus then so are the uses in Makefile.aix and
> Makefile.darwin.

Done, and backpatched.

> I'm a bit bothered by the ones in pgxs.mk, too, although I suspect we
> have to leave those there for the benefit of contrib?

No idea, sorry.

-- 
  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, Pennsylvania 19073
Index: src/makefiles/Makefile.aix
===
RCS file: /cvsroot/pgsql/src/makefiles/Makefile.aix,v
retrieving revision 1.23
diff -c -c -r1.23 Makefile.aix
*** src/makefiles/Makefile.aix  28 Oct 2005 17:32:22 -  1.23
--- src/makefiles/Makefile.aix  19 Jan 2006 21:16:36 -
***
*** 22,28 
  POSTGRES_IMP= postgres$(IMPSUFF)
  
  ifdef PGXS
! BE_DLLLIBS= -Wl,-bI:$(DESTDIR)$(bindir)/postgres/$(POSTGRES_IMP)
  else
  BE_DLLLIBS= -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP)
  endif
--- 22,28 
  POSTGRES_IMP= postgres$(IMPSUFF)
  
  ifdef PGXS
! BE_DLLLIBS= -Wl,-bI:$(bindir)/postgres/$(POSTGRES_IMP)
  else
  BE_DLLLIBS= -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP)
  endif
Index: src/makefiles/Makefile.darwin
===
RCS file: /cvsroot/pgsql/src/makefiles/Makefile.darwin,v
retrieving revision 1.8
diff -c -c -r1.8 Makefile.darwin
*** src/makefiles/Makefile.darwin   17 Dec 2004 03:52:48 -  1.8
--- src/makefiles/Makefile.darwin   19 Jan 2006 21:16:36 -
***
*** 5,11 
  CFLAGS_SL =
  
  ifdef PGXS
! BE_DLLLIBS= -bundle_loader $(DESTDIR)$(bindir)/postgres
  else
  BE_DLLLIBS= -bundle_loader $(top_builddir)/src/backend/postgres
  endif
--- 5,11 
  CFLAGS_SL =
  
  ifdef PGXS
! BE_DLLLIBS= -bundle_loader $(bindir)/postgres
  else
  BE_DLLLIBS= -bundle_loader $(top_builddir)/src/backend/postgres
  endif

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Tom Lane
Bruce Momjian  writes:
> Tom Lane wrote:
>> What about the question of whether $(DESTDIR) belongs there or not?
>> I think we had concluded that PGXS shouldn't ever use $(DESTDIR),
>> because that's only for install-time stuff.

> I considered that a separate issue and didn't explore it, but I think
> you are right that $(DESTDIR) makes no sense so I will remove it.

> Patch attached.

If these are bogus then so are the uses in Makefile.aix and
Makefile.darwin.

I'm a bit bothered by the ones in pgxs.mk, too, although I suspect we
have to leave those there for the benefit of contrib?

regards, tom lane

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Bruce Momjian
Tom Lane wrote:
> Bruce Momjian  writes:
> > The difference between Magnus's and Andrew's is
> > that Magnus used MODULE_big (which means create a shared library), while
> > Andrew used MODULES.  So, Magnus's only worked because he was creating a
> > DLL and that brought in the -L from MODULE_big.
> 
> Ah, good catch.
> 
> > I have applied the following patch to change /bin to /lib for Cygwin and
> > Win32.
> 
> What about the question of whether $(DESTDIR) belongs there or not?
> I think we had concluded that PGXS shouldn't ever use $(DESTDIR),
> because that's only for install-time stuff.

I considered that a separate issue and didn't explore it, but I think
you are right that $(DESTDIR) makes no sense so I will remove it.

Patch attached.

-- 
  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, Pennsylvania 19073
Index: src/makefiles/Makefile.cygwin
===
RCS file: /cvsroot/pgsql/src/makefiles/Makefile.cygwin,v
retrieving revision 1.7
diff -c -c -r1.7 Makefile.cygwin
*** src/makefiles/Makefile.cygwin   19 Jan 2006 20:00:54 -  1.7
--- src/makefiles/Makefile.cygwin   19 Jan 2006 20:42:50 -
***
*** 2,8 
  DLLTOOL= dlltool
  DLLWRAP= dllwrap
  ifdef PGXS
! BE_DLLLIBS= -L$(DESTDIR)$(libdir) -lpostgres
  else
  BE_DLLLIBS= -L$(top_builddir)/src/backend -lpostgres
  endif
--- 2,8 
  DLLTOOL= dlltool
  DLLWRAP= dllwrap
  ifdef PGXS
! BE_DLLLIBS= -L$(libdir) -lpostgres
  else
  BE_DLLLIBS= -L$(top_builddir)/src/backend -lpostgres
  endif
Index: src/makefiles/Makefile.win32
===
RCS file: /cvsroot/pgsql/src/makefiles/Makefile.win32,v
retrieving revision 1.8
diff -c -c -r1.8 Makefile.win32
*** src/makefiles/Makefile.win3219 Jan 2006 20:00:54 -  1.8
--- src/makefiles/Makefile.win3219 Jan 2006 20:42:50 -
***
*** 6,12 
  DLLTOOL= dlltool
  DLLWRAP= dllwrap
  ifdef PGXS
! BE_DLLLIBS= -L$(DESTDIR)$(libdir) -lpostgres
  else
  BE_DLLLIBS= -L$(top_builddir)/src/backend -lpostgres
  endif
--- 6,12 
  DLLTOOL= dlltool
  DLLWRAP= dllwrap
  ifdef PGXS
! BE_DLLLIBS= -L$(libdir) -lpostgres
  else
  BE_DLLLIBS= -L$(top_builddir)/src/backend -lpostgres
  endif

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Tom Lane
Bruce Momjian  writes:
> The difference between Magnus's and Andrew's is
> that Magnus used MODULE_big (which means create a shared library), while
> Andrew used MODULES.  So, Magnus's only worked because he was creating a
> DLL and that brought in the -L from MODULE_big.

Ah, good catch.

> I have applied the following patch to change /bin to /lib for Cygwin and
> Win32.

What about the question of whether $(DESTDIR) belongs there or not?
I think we had concluded that PGXS shouldn't ever use $(DESTDIR),
because that's only for install-time stuff.

regards, tom lane

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match


Re: [PATCHES] [HACKERS] pgxs/windows

2006-01-19 Thread Bruce Momjian

OK, I found the cause.  Using tests from Magnus and Andrew, I could
reproduce Magnus's success and Andrew's failure in an 8.1.2 pginstaller
install using MinGW.  The difference between Magnus's and Andrew's is
that Magnus used MODULE_big (which means create a shared library), while
Andrew used MODULES.  So, Magnus's only worked because he was creating a
DLL and that brought in the -L from MODULE_big.

I have applied the following patch to change /bin to /lib for Cygwin and
Win32.  Looking at Darwin and AIX, both those are pointing to the
postgres binary, so they should be using /bin, so we are OK on those.

I patched CVS HEAD, and 8.1.X and 8.0.X.  Earlier releases didn't
support pgxs.

---

Andrew Dunstan wrote:
> 
> 
> Bruce Momjian wrote:
> 
> >>
> >>OK, thanks.  Next question --- are the installed file locations the same
> >>for a MinGW install and a pginstaller install?  I don't think
> >>pginstaller does a MinGW install because it doesn't have the build
> >>environment in the tarball.
> >>
> >>However, the big difference seems to be that Magnus has -Llib and -Lbin,
> >>while you have only the -Lbin.  I have MinGW and pginstaller installed
> >>here.  How can I set things up to test this?
> >>
> >>
> >
> >Now looking at the Makefile.global in the 8.1.2 pginstaller install, in
> >Makefile.global, $libdir is set in a pgxs-specific block:
> >
> > libdir := $(shell pg_config --libdir)
> >
> >and that seems to work:
> >
> > C:\Program Files\PostgreSQL\8.1\bin>pg_config --libdir
> > C:/PROGRA~1/POSTGR~1/8.1/lib
> >
> >and that is set to LDFLAGS, which is later propogated to SHLIB_LINK,
> >though SHLIB_LINK moves all the -L flags to the front, so what you see
> >on the link line is not the ordering used to create the value.
> >
> >Andrew, can you try echoing $libdir and $SHLIB_LINK in the Makefile to
> >find those values?
> >
> >  
> >
> 
> here is a test case log (including a test makefile). I ran the tests as 
> you can see with both installer 8.1 and mingw installed CVS tip, with 
> the same results.
> 
> 
> cheers
> 
> andrew
> 
> $ touch foo.c
> $ cat Makefile
> 
> MODULES = foo
> SRCS += foo.c
> OBJS = $(SRCS:.c=.o)
> PGXS := $(shell pg_config --pgxs)
> include $(PGXS)
> override CFLAGS := $(filter-out -Wendif-labels 
> -Wdeclaration-after-statement, $(shell pg_config --cflags))
> showme:
> @echo libdir = $(libdir)
> @echo SHLIB_LINK = $(SHLIB_LINK)
> $ which pg_config
> /c/Program Files/PostgreSQL/8.1/bin/pg_config
> $ rm -f foo.dll
> $ make
> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline 
> -fno-strict-aliasing -I. -Ic:/PROGRA~1/POSTGR~1/8.1/include/server 
> -Ic:/PROGRA~1/POSTGR~1/8.1/include/internal -I./src/include/port/win32 
> -DEXEC_BACKEND  -I/mingw/include/krb5 
> "-Ic:/PROGRA~1/POSTGR~1/8.1/lib/pgxs/src/MAKEFI~1/../../src/include/port/win32"
>  
> -Ic:/PROGRA~1/POSTGR~1/8.1/include/server/port/win32  -c -o foo.o foo.c
> dlltool --export-all --output-def foo.def foo.o
> dllwrap -o foo.dll --def foo.def foo.o 
> c:/PROGRA~1/POSTGR~1/8.1/lib/pgxs/src/MAKEFI~1/../../src/utils/dllinit.o 
> -Lc:/PROGRA~1/POSTGR~1/8.1/bin -lpostgres
> c:\mingw\bin\..\lib\gcc-lib\mingw32\3.2.3\..\..\..\..\mingw32\bin\ld.exe: 
> cannot find -lpostgres
> c:\mingw\bin\dllwrap.exe: c:\mingw\bin\gcc exited with status 1
> make: *** [foo.dll] Error 1
> rm foo.o
> $ make showme
> libdir = c:/PROGRA~1/POSTGR~1/8.1/lib
> SHLIB_LINK = -Lc:/PROGRA~1/POSTGR~1/8.1/bin -lpostgres
> $ export PATH=/usr/local/pgsql/bin:$PATH
> $ which pg_config
> /usr/local/pgsql/bin/pg_config
> $ rm -f foo.dll
> $ make
> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline 
> -fno-strict-aliasing -I. -IC:/msys/1.0/local/pgsql/include/server 
> -IC:/msys/1.0/local/pgsql/include/internal -I./src/include/port/win32 
> -DEXEC_BACKEND  
> "-IC:/msys/1.0/local/pgsql/lib/pgxs/src/MAKEFI~1/../../src/include/port/win32"
>  
> -IC:/msys/1.0/local/pgsql/include/server/port/win32  -c -o foo.o foo.c
> dlltool --export-all --output-def foo.def foo.o
> dllwrap -o foo.dll --def foo.def foo.o 
> C:/msys/1.0/local/pgsql/lib/pgxs/src/MAKEFI~1/../../src/utils/dllinit.o 
> -LC:/msys/1.0/local/pgsql/bin -lpostgres
> c:\mingw\bin\..\lib\gcc-lib\mingw32\3.2.3\..\..\..\..\mingw32\bin\ld.exe: 
> cannot find -lpostgres
> c:\mingw\bin\dllwrap.exe: c:\mingw\bin\gcc exited with status 1
> make: *** [foo.dll] Error 1
> rm foo.o
> $ make showme
> libdir = C:/msys/1.0/local/pgsql/lib
> SHLIB_LINK = -LC:/msys/1.0/local/pgsql/bin -lpostgres
> 
> 
> ---(end of broadcast)---
> TIP 1: if posting/reading through Usenet, please send an appropriate
>subscribe-nomail command to [EMAIL PROTECTED] so that your
>message can get through to the mailing list cleanly
> 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  pgman@candle.pha.pa.us   |  (610) 359-1001
  +  If your li