Re: [PATCHES] Shlib exports file refactoring

2008-02-25 Thread Tom Lane
Peter Eisentraut <[EMAIL PROTECTED]> writes:
> After seeing four nearly-identical copies of multiplatform shared library 
> exports file generation code, I figured this should be put in a common place. 
>  
> If you like, please test the attached patch on darwin and win32, since these 
> platforms are mostly affected (besides linux) and I can't test them.  Just 
> see if it builds and runs correctly.  Thanks.

[ shrug... ]  Apply it to HEAD and see if the buildfarm complains.
We're in devel cycle now, so transient breakage isn't going to be a big
problem.  If you were asking for tests that the buildfarm wouldn't make,
I might think differently ... but then you'd need to be giving some more
detailed directions than these.

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


[PATCHES] Shlib exports file refactoring

2008-02-25 Thread Peter Eisentraut
After seeing four nearly-identical copies of multiplatform shared library 
exports file generation code, I figured this should be put in a common place.  
If you like, please test the attached patch on darwin and win32, since these 
platforms are mostly affected (besides linux) and I can't test them.  Just 
see if it builds and runs correctly.  Thanks.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/
diff -ur ../cvs-pgsql/src/interfaces/ecpg/compatlib/Makefile ./src/interfaces/ecpg/compatlib/Makefile
--- ../cvs-pgsql/src/interfaces/ecpg/compatlib/Makefile	2008-02-17 16:30:26.0 +0100
+++ ./src/interfaces/ecpg/compatlib/Makefile	2008-02-25 21:43:46.0 +0100
@@ -25,16 +25,14 @@
 SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) -lm \
 	$(PTHREAD_LIBS)
 
+SHLIB_EXPORTS = exports.txt
+
 # Need to recompile any libpgport object files
 LIBS := $(filter-out -lpgport, $(LIBS))
 
 OBJS= informix.o $(filter snprintf.o, $(LIBOBJS))
 
-ifeq ($(PORTNAME), win32)
-DLL_DEFFILE=libecpg_compatdll.def
-endif
-
-all: def-files all-lib
+all: all-lib
 
 # Shared library stuff
 include $(top_srcdir)/src/Makefile.shlib
@@ -42,55 +40,6 @@
 snprintf.c: % : $(top_srcdir)/src/port/%
 	rm -f $@ && $(LN_S) $< .
 
-# We need several not-quite-identical variants of .DEF files to build libecpg
-# DLLs for Windows.  These are made from the single source file exports.txt.
-# Since we can't assume that Windows boxes will have sed, the .DEF files are
-# always built and included in distribution tarballs.
-
-distprep: def-files
-
-.PHONY: def-files
-
-def-files: $(srcdir)/libecpg_compatdll.def $(srcdir)/blibecpg_compatdll.def
-
-$(srcdir)/libecpg_compatdll.def: exports.txt
-	echo '; DEF file for MS VC++' > $@
-	echo 'LIBRARY LIBECPG_COMPAT' >> $@
-	echo 'EXPORTS' >> $@
-	sed -e '/^#/d' -e 's/^\(.* \)\([0-9][0-9]*\)/\1@ \2/' < $< >> $@
-
-$(srcdir)/blibecpg_compatdll.def: exports.txt
-	echo '; DEF file for Borland C++ Builder' > $@
-	echo 'LIBRARY BLIBECPG_COMPAT' >> $@
-	echo 'EXPORTS' >> $@
-	sed -e '/^#/d' -e 's/^\(.* \)\([0-9][0-9]*\)/_\1@ \2/' < $< >> $@
-	echo '' >> $@
-	echo '; Aliases for MS compatible names' >> $@
-	sed -e '/^#/d' -e 's/^\(.* \)\([0-9][0-9]*\)/\1= _\1/' < $< | sed 's/ *$$//' >> $@
-
-# Where possible, restrict the symbols exported by the library to just the
-# official list, so as to avoid unintentional ABI changes.
-
-ifeq ($(PORTNAME), darwin)
-$(shlib): exports.list
-
-exports.list: exports.txt
-	$(AWK) '/^[^#]/ {printf "_%s\n",$$1}' $< >$@
-
-exported_symbols_list = -exported_symbols_list exports.list
-endif
-
-ifeq ($(PORTNAME), linux)
-$(shlib): exports.list
-
-exports.list: exports.txt
-	echo '{ global:' >$@
-	$(AWK) '/^[^#]/ {printf "%s;\n",$$1}' $< >>$@
-	echo ' local: *; };' >>$@
-
-exported_symbols_list = -Wl,--version-script=exports.list
-endif
-
 install: all installdirs install-lib
 
 installdirs:
@@ -99,7 +48,6 @@
 uninstall: uninstall-lib
 
 clean distclean: clean-lib
-	rm -f $(OBJS) snprintf.c exports.list
+	rm -f $(OBJS) snprintf.c
 
-maintainer-clean: distclean
-	rm -f $(srcdir)/libecpg_compatdll.def $(srcdir)/blibecpg_compatdll.def
+maintainer-clean: distclean maintainer-clean-lib
diff -ur ../cvs-pgsql/src/interfaces/ecpg/ecpglib/Makefile ./src/interfaces/ecpg/ecpglib/Makefile
--- ../cvs-pgsql/src/interfaces/ecpg/ecpglib/Makefile	2008-02-17 16:30:26.0 +0100
+++ ./src/interfaces/ecpg/ecpglib/Makefile	2008-02-25 21:43:45.0 +0100
@@ -36,13 +36,14 @@
 
 SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) -lm $(PTHREAD_LIBS)
 
+SHLIB_EXPORTS = exports.txt
+
 ifeq ($(PORTNAME), win32)
 # Link to shfolder.dll instead of shell32.dll
 SHLIB_LINK += -lshfolder
-DLL_DEFFILE=libecpgdll.def
 endif
 
-all: def-files all-lib
+all: all-lib
 
 # Shared library stuff
 include $(top_srcdir)/src/Makefile.shlib
@@ -60,55 +61,6 @@
 $(top_builddir)/src/port/pg_config_paths.h:
 	$(MAKE) -C $(top_builddir)/src/port pg_config_paths.h
 
-# We need several not-quite-identical variants of .DEF files to build libecpg
-# DLLs for Windows.  These are made from the single source file exports.txt.
-# Since we can't assume that Windows boxes will have sed, the .DEF files are
-# always built and included in distribution tarballs.
-
-distprep: def-files
-
-.PHONY: def-files
-
-def-files: $(srcdir)/libecpgdll.def $(srcdir)/blibecpgdll.def
-
-$(srcdir)/libecpgdll.def: exports.txt
-	echo '; DEF file for MS VC++' > $@
-	echo 'LIBRARY LIBECPG' >> $@
-	echo 'EXPORTS' >> $@
-	sed -e '/^#/d' -e 's/^\(.* \)\([0-9][0-9]*\)/\1@ \2/' < $< >> $@
-
-$(srcdir)/blibecpgdll.def: exports.txt
-	echo '; DEF file for Borland C++ Builder' > $@
-	echo 'LIBRARY BLIBECPG' >> $@
-	echo 'EXPORTS' >> $@
-	sed -e '/^#/d' -e 's/^\(.* \)\([0-9][0-9]*\)/_\1@ \2/' < $< >> $@
-	echo '' >> $@
-	echo '; Aliases for MS compatible names' >> $@
-	sed -e '/^#/d' -e 's/^\(.* \)\([0-9][0-9]*\)/\1= _\1/' < $< | sed 's/ *$$//' >> $@
-
-# Where possible, restrict the symbols exported by the library