Re: [CYGWIN] postgresql 8.0 with cygwin - success - Mailing list pgsql-patches
From | Reini Urban |
---|---|
Subject | Re: [CYGWIN] postgresql 8.0 with cygwin - success |
Date | |
Msg-id | 4170BE3E.5040902@x-ray.at Whole thread Raw |
In response to | Re: [CYGWIN] postgresql 8.0 with cygwin - success (Bruce Momjian <pgman@candle.pha.pa.us>) |
List | pgsql-patches |
Bruce Momjian schrieb: > I did things a little differently. I #undef WIN32 after including > windows.h on Cygwin and kept the defines the same except for the use of > START. This makes things more consistent. But more verbose. :) But consistency is also good. > Applied. Thanks. BTW, FYI: The current remaining cygwin problems I have seem to have are all related with cygwin's IPC, cygserver corruption. That's what my debugging sessions tell me. And it's reproducable. cygserver -e -d & ipcs ok initdb fail icps bad signal (cygserver corrupt) So it looks like it's not postgresql' fault. But I'll revive the old ipc_test app and do more testing. > --------------------------------------------------------------------------- > > Reini Urban wrote: > >>Marek Lewczuk schrieb: >> >>>Reini Urban wrote: >>> >>>>Bruce Momjian schrieb: >>>> >>>>>Great. Thanks. I was getting conflicting reports of Cygwin problems >>>>>before. >>>> >>>>Not for me: >>>>I found a problem with my pg_ctl patch (WIN32 is always defined in >>>>cygwin when windows.h is included, and the START /B postmaster cmdline >>>>doesn't work on cygwin). Patch will be posted soon. >>> >>>Right. pg_ctl is not working - I didn't noticed that, because I use >>>postmaster instead pg_ctl. Below pg_ctl error: >>>$ pg_ctl start >>>START: not found >>>pg_ctl: could not start postmaster: exit code was 32512 >> >>Bruce: >> > was wondering about that use of START. What I think we will do >> >is to add a comment that including windows.h in that file defines WIN32 >> >and have an #ifndef __CYGWIN__ in places that need it --- just let me >> >know. >> >>Attached is my improved version: (just as you said) >> >>* Fix previous pg_ctl patch (WIN32 is always defined in cygwin when >> windows.h is included, and the START /B postmaster cmdline doesn't >> work on cygwin. >> >>You can safely ignore the patches of other two files, but these are my >>remaining issues. (cygpg.dll just for overall conformancy). >> >>I still have to test how it interacts with the eventlog if started as >>service. (under different users) >>However it should be better than the 7.x versions, which had lotta >>problems with logfile file-permissions, because services are run as the >>SYSTEM user. >> >> >>>>But I finished now the plperl.sql regression tests and wait for >>>>a clean regression suite to run through. >>> >>>It would be great - I've just tried to run some plperl function, but no >>>luck (postgresql crashed). >> >>:( as with 7.x >> >>But first I have to find the SUBST problem (errno 140). >>Then I will do some heavy IPC debugging with plperl. >>(src/backend/port/ipc_test.c has to be fixed for old-style elog handling) >>Then I have to do the mbregress tests (multibyte on cygwin? maybe newlib >>has some remaining issues) >>-- >>Reini Urban > > >>--- postgresql-8.0.0cvs/src/bin/pg_ctl/pg_ctl.c.orig 2004-10-15 13:35:42.000000000 +0200 >>+++ postgresql-8.0.0cvs/src/bin/pg_ctl/pg_ctl.c 2004-10-15 18:17:30.093750000 +0200 >>@@ -23,6 +23,9 @@ >> >> #if defined(__CYGWIN__) >> #include <windows.h> >>+#ifndef WIN32 >>+#define WIN32 >>+#endif >> #endif >> >> #ifndef HAVE_OPTRESET >>@@ -99,7 +102,7 @@ >> static void do_status(void); >> static void do_kill(pgpid_t pid); >> >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> static bool pgwin32_IsInstalled(SC_HANDLE); >> static char *pgwin32_CommandLine(bool); >> static void pgwin32_doRegister(); >>@@ -120,7 +123,7 @@ >> static char conf_file[MAXPGPATH]; >> >> >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> static void >> write_eventlog(int level, const char *line) >> { >>@@ -158,7 +161,7 @@ >> va_list ap; >> >> va_start(ap, fmt); >>-#if !defined(WIN32) && !defined(__CYGWIN__) >>+#if !defined(WIN32) >> /* On Unix, we just fprintf to stderr */ >> vfprintf(stderr, fmt, ap); >> #else >>@@ -322,7 +325,7 @@ >> * http://dev.remotenetworktechnology.com/cmd/cmdfaq.htm >> */ >> if (log_file != NULL) >>-#if !defined(WIN32) && !defined(__CYGWIN__) >>+#if !defined(WIN32) || defined(__CYGWIN__) >> snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &%s", >> #else >> snprintf(cmd, MAXPGPATH, "%sSTART /B \"\" \"%s\" %s%s < \"%s\" >> \"%s\" 2>&1%s", >>@@ -330,7 +333,7 @@ >> SYSTEMQUOTE, postgres_path, pgdata_opt, post_opts, >> DEVNULL, log_file, SYSTEMQUOTE); >> else >>-#if !defined(WIN32) && !defined(__CYGWIN__) >>+#if !defined(WIN32) || defined(__CYGWIN__) >> snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" 2>&1 &%s", >> #else >> snprintf(cmd, MAXPGPATH, "%sSTART /B \"\" \"%s\" %s%s < \"%s\" 2>&1%s", >>@@ -811,7 +814,7 @@ >> } >> } >> >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> >> static bool >> pgwin32_IsInstalled(SC_HANDLE hSCM) >>@@ -1089,14 +1092,14 @@ >> printf(_(" %s reload [-D DATADIR] [-s]\n"), progname); >> printf(_(" %s status [-D DATADIR]\n"), progname); >> printf(_(" %s kill SIGNALNAME PROCESSID\n"), progname); >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> printf(_(" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR] [-w] [-o \"OPTIONS\"]\n"), progname); >> printf(_(" %s unregister [-N SERVICENAME]\n"), progname); >> #endif >> printf(_("Common options:\n")); >> printf(_(" -D, --pgdata DATADIR location of the database storage area\n")); >> printf(_(" -s, --silent only print errors, no informational messages\n")); >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> printf(_(" -N service name with which to register PostgreSQL server\n")); >> printf(_(" -P password of account to register PostgreSQL server\n")); >> printf(_(" -U user name of account to register PostgreSQL server\n")); >>@@ -1205,7 +1208,7 @@ >> int c; >> pgpid_t killproc = 0; >> >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> setvbuf(stderr, NULL, _IONBF, 0); >> #endif >> >>@@ -1352,7 +1355,7 @@ >> set_sig(argv[++optind]); >> killproc = atol(argv[++optind]); >> } >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> else if (strcmp(argv[optind], "register") == 0) >> ctl_command = REGISTER_COMMAND; >> else if (strcmp(argv[optind], "unregister") == 0) >>@@ -1442,8 +1445,8 @@ >> case KILL_COMMAND: >> do_kill(killproc); >> break; >>-#if defined(WIN32) || defined(__CYGWIN__) >>+#if defined(WIN32) >> case REGISTER_COMMAND: >> pgwin32_doRegister(); >> break; >>--- postgresql-8.0.0cvs/contrib/spi/Makefile.orig 2004-08-20 22:13:08.000000000 +0200 >>+++ postgresql-8.0.0cvs/contrib/spi/Makefile 2004-10-04 12:50:55.000000000 +0200 >>@@ -17,4 +17,6 @@ >> include $(top_builddir)/src/Makefile.global >> include $(top_srcdir)/contrib/contrib-global.mk >> endif >>+ >>+SHLIB_LINK += -L$(top_builddir)/src/port -lpgport >>--- postgresql-8.0.0cvs/src/interfaces/libpq/Makefile.orig 2004-10-15 13:35:50.000000000 +0200 >>+++ postgresql-8.0.0cvs/src/interfaces/libpq/Makefile 2004-10-15 13:39:05.000000000 +0200 >>@@ -30,6 +30,10 @@ >> dllist.o md5.o ip.o wchar.o encnames.o noblock.o pgstrcasecmp.o thread.o \ >> $(filter crypt.o getaddrinfo.o inet_aton.o open.o snprintf.o strerror.o, $(LIBOBJS)) >> >>+ifeq ($(PORTNAME), cygwin) >>+override shlib = cyg$(NAME)$(DLSUFFIX) >>+endif >>+ >> ifeq ($(PORTNAME), win32) >> OBJS += win32.o libpqrc.o >> libpqrc.o : libpq.rc >> >> >>---------------------------(end of broadcast)--------------------------- >>TIP 5: Have you checked our extensive FAQ? >> >> http://www.postgresql.org/docs/faqs/FAQ.html > > > > ------------------------------------------------------------------------ > > Index: src/bin/pg_ctl/pg_ctl.c > =================================================================== > RCS file: /cvsroot/pgsql/src/bin/pg_ctl/pg_ctl.c,v > retrieving revision 1.39 > diff -c -c -r1.39 pg_ctl.c > *** src/bin/pg_ctl/pg_ctl.c 16 Oct 2004 03:10:14 -0000 1.39 > --- src/bin/pg_ctl/pg_ctl.c 16 Oct 2004 03:29:22 -0000 > *************** > *** 23,28 **** > --- 23,30 ---- > > #if defined(__CYGWIN__) > #include <windows.h> > + /* Cygwin defines WIN32 in windows.h, but we don't want it. */ > + #undef WIN32 > #endif > > #ifndef HAVE_OPTRESET > *************** > *** 333,339 **** > * http://dev.remotenetworktechnology.com/cmd/cmdfaq.htm > */ > if (log_file != NULL) > ! #if !defined(WIN32) && !defined(__CYGWIN__) > snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &%s", > #else > snprintf(cmd, MAXPGPATH, "%sSTART /B \"\" \"%s\" %s%s < \"%s\" >> \"%s\" 2>&1%s", > --- 335,341 ---- > * http://dev.remotenetworktechnology.com/cmd/cmdfaq.htm > */ > if (log_file != NULL) > ! #if !defined(WIN32) /* Cygwin doesn't have START */ > snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &%s", > #else > snprintf(cmd, MAXPGPATH, "%sSTART /B \"\" \"%s\" %s%s < \"%s\" >> \"%s\" 2>&1%s", > *************** > *** 341,347 **** > SYSTEMQUOTE, postgres_path, pgdata_opt, post_opts, > DEVNULL, log_file, SYSTEMQUOTE); > else > ! #if !defined(WIN32) && !defined(__CYGWIN__) > snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" 2>&1 &%s", > #else > snprintf(cmd, MAXPGPATH, "%sSTART /B \"\" \"%s\" %s%s < \"%s\" 2>&1%s", > --- 343,349 ---- > SYSTEMQUOTE, postgres_path, pgdata_opt, post_opts, > DEVNULL, log_file, SYSTEMQUOTE); > else > ! #if !defined(WIN32) /* Cygwin doesn't have START */ > snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" 2>&1 &%s", > #else > snprintf(cmd, MAXPGPATH, "%sSTART /B \"\" \"%s\" %s%s < \"%s\" 2>&1%s", -- Reini Urban http://xarch.tu-graz.ac.at/home/rurban/
pgsql-patches by date: