From: | Reini Urban <rurban(at)x-ray(dot)at> |
---|---|
To: | |
Cc: | pgsql-patches <pgsql-patches(at)postgresql(dot)org>, Lista dyskusyjna pgsql-cygwin <pgsql-cygwin(at)postgresql(dot)org> |
Subject: | Re: [PATCHES] postgresql 8.0 with cygwin - success |
Date: | 2004-10-16 06:22:54 |
Message-ID: | 4170BE3E.5040902@x-ray.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-cygwin 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/
From | Date | Subject | |
---|---|---|---|
Next Message | Phil Shaw | 2004-10-16 10:13:49 | Re: error in cygwin - please help me |
Previous Message | Bruce Momjian | 2004-10-16 03:31:44 | Re: [PATCHES] postgresql 8.0 with cygwin - success |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Stark | 2004-10-16 21:42:46 | Re: Nearing final release? |
Previous Message | Tatsuo Ishii | 2004-10-16 05:30:44 | Re: Nearing final release? |