Thread: Re: [CYGWIN] Where is the link to cygwin?
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) {
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
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
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