Re: [PATCHES] [HACKERS] pgxs/windows
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
"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
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
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
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
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
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
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
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