Thread: Re: [CYGWIN] Where is the link to cygwin?

Re: [CYGWIN] Where is the link to cygwin?

From
Reini Urban
Date:
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/
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)
      {

Re: [CYGWIN] Where is the link to cygwin?

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------


Reini Urban wrote:
> 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/

> 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)
>       {
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org

--
  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

Re: [CYGWIN] Where is the link to cygwin?

From
Bruce Momjian
Date:
We just added code to add the *.exe suffix for MinGW and I am hoping
this will fix your register problem on Cygwin too.  Would you test a
recent snapshot and let me know if it works?

---------------------------------------------------------------------------

Reini Urban wrote:
> 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/

> 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)
>       {
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org

--
  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

Re: [CYGWIN] Where is the link to cygwin?

From
Marek Lewczuk
Date:
Bruce Momjian wrote:
> We just added code to add the *.exe suffix for MinGW and I am hoping
> this will fix your register problem on Cygwin too.  Would you test a
> recent snapshot and let me know if it works?

Latest CVS compilation fails, so I was not able to check pg_ctl.

make[4]: Leaving directory `/usr/src/pgsql/src/backend/parser'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels
-fno-strict-al
iasing pg_dump.o common.o pg_dump_sort.o pg_backup_archiver.o
pg_backup_db.o pg_
backup_custom.o pg_backup_files.o pg_backup_null.o pg_backup_tar.o
dumputils.o
../../../src/backend/parser/keywords.o -L../../../src/interfaces/libpq
-lpq -L..
/../../src/port -L/usr/local/lib  -lpgport -lz -lreadline -lcrypt -o
pg_dump.exe

../../../src/port/libpgport.a(pgstrcasecmp.o)(.text+0x1b0):pgstrcasecmp.c:
multi
ple definition of `_pg_tolower'
../../../src/interfaces/libpq/libpq.a(dyofs00145.o)(.text+0x0): first
defined he
re
Info: resolving _optarg by linking to __imp__optarg (auto-import)
Info: resolving _optind by linking to __imp__optind (auto-import)
collect2: ld returned 1 exit status
make[3]: *** [pg_dump] Error 1
make[3]: Leaving directory `/usr/src/pgsql/src/bin/pg_dump'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/src/pgsql/src/bin'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/pgsql/src'
make: *** [all] Error 2


Best regards
ML