Re: Where is the link to cygwin?

Reini Urban <[email protected]> Wed, 20 Oct 2004 03:07:05 +0200
Newsgroups gmane.comp.db.postgresql.cygwin,gmane.comp.db.postgresql.devel.patches
Message-ID <[email protected]>
Marek Lewczuk schrieb:
> Reini Urban wrote:
>> Richard Sydney-Smith schrieb:
>> A new initd script will come with 8.0,
>> which just calls pg_ctl and
>> adds service install/uninstall args.
> 
> Reini,
> a few days ago you wrote that you are working on plperl patch for cygwin 
> - how are doing with this ? 

well, bruce said that it should work now.
I got reproducable crashes with IPC.
But I really think that are problems with our cygserver,
not with postgresql. That's why I'm busy with testing our cygserver,
and a few libtool bugs.

> I also found a bug in "pg_ctl register" 
> function - it adds a service, but the path to the pg_ctl file is 
> /usr/local/pgsl/bin/pg_ctl.exe  - which is not available in windows.... 
> or "pg_ctl register" will not work on cygwin ?

Ah, thanks Marek!

$ psservice config PostgreSQL

PsService v1.01 - local and remote services viewer/controller
Copyright (C) 2001 Mark Russinovich
Sysinternals - www.sysinternals.com

SERVICE_NAME: PostgreSQL
(null)
         TYPE              : 10 WIN32_OWN_PROCESS
         START_TYPE        : 2  AUTO_START
         ERROR_CONTROL     : 1  NORMAL
         BINARY_PATH_NAME  : 
/usr/src/postgresql/postgresql-8.0.0cvs/.inst/usr/sbin/./pg_ctl.exe
runservice -N "PostgreSQL" -D "/usr/share/postgresql/data"
         LOAD_ORDER_GROUP  :
         TAG               : 0
         DISPLAY_NAME      : PostgreSQL
         DEPENDENCIES      : RPCSS
         SERVICE_START_NAME: LocalSystem

We need another patch to pg_ctl to convert the exe path.

cd /usr/src/postgresql/postgresql-8.0.0cvs/src/bin/pg_ctl
patch -p0 < cyg-ctlpaths.patch
make
cp ./pg_ctl.exe /usr/src/postgresql/postgresql-8.0.0cvs/.inst/usr/sbin

$ ./pg_ctl.exe unregister

rurban@reini /usr/src/postgresql/postgresql-8.0.0cvs/.inst/usr/sbin
$ ./pg_ctl.exe register

rurban@reini /usr/src/postgresql/postgresql-8.0.0cvs/.inst/usr/sbin
$ psservice config PostgreSQL

PsService v1.01 - local and remote services viewer/controller
Copyright (C) 2001 Mark Russinovich
Sysinternals - www.sysinternals.com

SERVICE_NAME: PostgreSQL
(null)
         TYPE              : 10 WIN32_OWN_PROCESS
         START_TYPE        : 2  AUTO_START
         ERROR_CONTROL     : 1  NORMAL
         BINARY_PATH_NAME  : 
f:\prog\gnu\cygwin\postgresql\postgresql-8.0.0cvs\.inst\usr\sbin\pg_ctl.
exe runservice -N "PostgreSQL" -D "/usr/share/postgresql/data"
         LOAD_ORDER_GROUP  :
         TAG               : 0
         DISPLAY_NAME      : PostgreSQL
         DEPENDENCIES      : RPCSS
         SERVICE_START_NAME: LocalSystem

-- 
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/


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

               http://archives.postgresql.org
cyg-ctlpaths.patch (text/plain, 974 B)
Index: pg_ctl.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_ctl/pg_ctl.c,v
retrieving revision 1.39
diff -u -b -c -r1.39 pg_ctl.c
*** pg_ctl.c	16 Oct 2004 03:10:14 -0000	1.39
--- pg_ctl.c	20 Oct 2004 01:02:56 -0000
***************
*** 22,27 ****
--- 22,28 ----
  #include "getopt_long.h"
  
  #if defined(__CYGWIN__)
+ #include <sys/cygwin.h>
  #include <windows.h>
  #endif
  
***************
*** 814,819 ****
--- 815,823 ----
  {
  	static char cmdLine[MAXPGPATH];
  	int			ret;
+ #ifdef __CYGWIN__
+ 	static char buf[MAXPGPATH];
+ #endif
  	
  	if (registration)
  		ret = find_my_exec(argv0, cmdLine);
***************
*** 824,829 ****
--- 828,838 ----
  		write_stderr(_("%s: could not find exe"), progname);
  		exit(1);
  	}
+ #ifdef __CYGWIN__
+ 	/* need to convert to windows path */
+ 	cygwin_conv_to_full_win32_path (cmdLine, buf);
+ 	strcpy(cmdLine, buf);
+ #endif
  
  	if (registration)
  	{