Thread: Removing service-related code in pg_ctl for Cygwin

Removing service-related code in pg_ctl for Cygwin

From
Michael Paquier
Date:
Hi all,

Beginning a new thread seems more adapted regarding $subject but
that's mentioned here as well:
http://www.postgresql.org/message-id/CAB7nPqQXghm_SdB5iniupz1atzMxk=95gv9A8ocdo83SXCNjeg@mail.gmail.com

It happens based on some investigation from Andrew that cygwin does
not need to use the service-related code, aka register/unregister
options or similar that are proper to WIN32 and rely instead on
cygrunsrv with a SYSV-like init file to manage the service. Based on
my tests with cygwin, I am able to see as well that a server started
within a cygwin session is able to persist even after it is closed,
which is kind of nice and I think that it is a additional reason to
not use the service-related code paths. Hence what about the following
patch, that makes cygwin behave like any *nix OS when using pg_ctl?
This simplifies a bit the code.

Marco, as I think you do some packaging for Postgres in Cygwin, and
others, does that sound acceptable?

Regards,
--
Michael

Attachment

Re: Removing service-related code in pg_ctl for Cygwin

From
Marco Atzeri
Date:
On 14/01/2016 06:38, Michael Paquier wrote:
> Hi all,
>
> Beginning a new thread seems more adapted regarding $subject but
> that's mentioned here as well:
> http://www.postgresql.org/message-id/CAB7nPqQXghm_SdB5iniupz1atzMxk=95gv9A8ocdo83SXCNjeg@mail.gmail.com
>
> It happens based on some investigation from Andrew that cygwin does
> not need to use the service-related code, aka register/unregister
> options or similar that are proper to WIN32 and rely instead on
> cygrunsrv with a SYSV-like init file to manage the service. Based on
> my tests with cygwin, I am able to see as well that a server started
> within a cygwin session is able to persist even after it is closed,
> which is kind of nice and I think that it is a additional reason to
> not use the service-related code paths. Hence what about the following
> patch, that makes cygwin behave like any *nix OS when using pg_ctl?
> This simplifies a bit the code.
>
> Marco, as I think you do some packaging for Postgres in Cygwin, and
> others, does that sound acceptable?
>
> Regards,
>

In general cygwin to behave like any *nix OS is the preferred solution.



Re: Removing service-related code in pg_ctl for Cygwin

From
Andrew Dunstan
Date:

On 01/14/2016 12:38 AM, Michael Paquier wrote:
> Hi all,
>
> Beginning a new thread seems more adapted regarding $subject but
> that's mentioned here as well:
> http://www.postgresql.org/message-id/CAB7nPqQXghm_SdB5iniupz1atzMxk=95gv9A8ocdo83SXCNjeg@mail.gmail.com
>
> It happens based on some investigation from Andrew that cygwin does
> not need to use the service-related code, aka register/unregister
> options or similar that are proper to WIN32 and rely instead on
> cygrunsrv with a SYSV-like init file to manage the service. Based on
> my tests with cygwin, I am able to see as well that a server started
> within a cygwin session is able to persist even after it is closed,
> which is kind of nice and I think that it is a additional reason to
> not use the service-related code paths. Hence what about the following
> patch, that makes cygwin behave like any *nix OS when using pg_ctl?
> This simplifies a bit the code.
>
> Marco, as I think you do some packaging for Postgres in Cygwin, and
> others, does that sound acceptable?
>



I think we can be a bit more adventurous and remove all the
Cygwin-specific code. See attached patch, which builds fine on buildfarm
cockatiel.

cheers

andrew




Attachment

Re: Removing service-related code in pg_ctl for Cygwin

From
Alvaro Herrera
Date:
Andrew Dunstan wrote:

> I think we can be a bit more adventurous and remove all the Cygwin-specific
> code. See attached patch, which builds fine on buildfarm cockatiel.

Hopefully you also tested that it builds under MSVC :-)

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: Removing service-related code in pg_ctl for Cygwin

From
Andrew Dunstan
Date:

On 01/18/2016 12:38 PM, Alvaro Herrera wrote:
> Andrew Dunstan wrote:
>
>> I think we can be a bit more adventurous and remove all the Cygwin-specific
>> code. See attached patch, which builds fine on buildfarm cockatiel.
> Hopefully you also tested that it builds under MSVC :-)
>


Why would I? This isn't having the slightest effect on MSVC builds.

cheers

andrew




Re: Removing service-related code in pg_ctl for Cygwin

From
Alvaro Herrera
Date:
Andrew Dunstan wrote:
> 
> 
> On 01/18/2016 12:38 PM, Alvaro Herrera wrote:
> >Andrew Dunstan wrote:
> >
> >>I think we can be a bit more adventurous and remove all the Cygwin-specific
> >>code. See attached patch, which builds fine on buildfarm cockatiel.
> >Hopefully you also tested that it builds under MSVC :-)
> 
> Why would I? This isn't having the slightest effect on MSVC builds.

You never know ... you might have inadvertently broken some WIN32 block.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: Removing service-related code in pg_ctl for Cygwin

From
Andrew Dunstan
Date:

On 01/18/2016 03:46 PM, Alvaro Herrera wrote:
> Andrew Dunstan wrote:
>>
>> On 01/18/2016 12:38 PM, Alvaro Herrera wrote:
>>> Andrew Dunstan wrote:
>>>
>>>> I think we can be a bit more adventurous and remove all the Cygwin-specific
>>>> code. See attached patch, which builds fine on buildfarm cockatiel.
>>> Hopefully you also tested that it builds under MSVC :-)
>> Why would I? This isn't having the slightest effect on MSVC builds.
> You never know ... you might have inadvertently broken some WIN32 block.
>

If you can point out a line where that might be true I'll test it ;-)

cheers

andrew




Re: Removing service-related code in pg_ctl for Cygwin

From
Michael Paquier
Date:
On Tue, Jan 19, 2016 at 2:32 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
>
>
> On 01/14/2016 12:38 AM, Michael Paquier wrote:
>>
>> Hi all,
>>
>> Beginning a new thread seems more adapted regarding $subject but
>> that's mentioned here as well:
>>
>> http://www.postgresql.org/message-id/CAB7nPqQXghm_SdB5iniupz1atzMxk=95gv9A8ocdo83SXCNjeg@mail.gmail.com
>>
>> It happens based on some investigation from Andrew that cygwin does
>> not need to use the service-related code, aka register/unregister
>> options or similar that are proper to WIN32 and rely instead on
>> cygrunsrv with a SYSV-like init file to manage the service. Based on
>> my tests with cygwin, I am able to see as well that a server started
>> within a cygwin session is able to persist even after it is closed,
>> which is kind of nice and I think that it is a additional reason to
>> not use the service-related code paths. Hence what about the following
>> patch, that makes cygwin behave like any *nix OS when using pg_ctl?
>> This simplifies a bit the code.
>>
>> Marco, as I think you do some packaging for Postgres in Cygwin, and
>> others, does that sound acceptable?
>>
>
>
>
> I think we can be a bit more adventurous and remove all the Cygwin-specific
> code. See attached patch, which builds fine on buildfarm cockatiel.

Ah, OK. I see the difference. It builds as well for me.

-#ifndef __CYGWIN__
-       AddUserToTokenDacl(restrictedToken);
-#endif
[...]
-#if defined(WIN32) || defined(__CYGWIN__)
+#ifdef WIN32       setvbuf(stderr, NULL, _IONBF, 0);#endif
Fine for me, those two do not seem to matter much as far as I have tested.
-- 
Michael



Re: Removing service-related code in pg_ctl for Cygwin

From
Marco Atzeri
Date:
On 18/01/2016 18:32, Andrew Dunstan wrote:
>
>
> On 01/14/2016 12:38 AM, Michael Paquier wrote:
>> Hi all,
>>
>> Beginning a new thread seems more adapted regarding $subject but
>> that's mentioned here as well:
>> http://www.postgresql.org/message-id/CAB7nPqQXghm_SdB5iniupz1atzMxk=95gv9A8ocdo83SXCNjeg@mail.gmail.com
>>
>>

>>
>> Marco, as I think you do some packaging for Postgres in Cygwin, and
>> others, does that sound acceptable?
>>
>
>
>
> I think we can be a bit more adventurous and remove all the
> Cygwin-specific code. See attached patch, which builds fine on buildfarm
> cockatiel.
>
> cheers
>
> andrew
>

builds fine also here on 64bit