Subject: Cygwin support

From: Andrew Dunstan <[email-masked]>
Date: Mon, 21 Apr 2025 12:29:40 -0400

Last year the old Windows machine where I was running the buildfarm 
member lorikeet died, and since then we've had no buildfarm coverage for 
Cygwin. I now have a new (but slow) W11pro machine and I have been 
testing out Cygwin builds on it. I wanted to have it running the TAP 
tests, unlike lorikeet. Attached is a set of very small patches aimed at 
enabling this.

The first patch makes us use our getopt implementation, just like we do 
in Mingw. meson.build already has this, so this would just be bringing 
configure into line with that.

The second patch makes cygwin use the WIN32 pattern for psql's \watch 
command. Without that, the Unix style implementation hangs.

The third patch make Cygwin skip a permissions test in the SSL tests, 
just like we do elsewhere in Windows.

The fourth test ensures that we honor MAX_CONNECTIONS in a couple of 
places where we rerun the regression suite. MAX_CONNECTIONS was 
originally designed mainly for Cygwin, where too many concurrent 
connections cause issues.

The fifth patch disables one of the pgbench tests which is unstable on 
Cygwin.

There are still some issues, with the pg_dump, pg_upgrade, recovery and 
subscription test sets. But apart from that, with these patches I can 
consistently get a successful run.

My intention is to apply these soon, and backpatch them as appropriate. 
These are all pretty low risk. I'm going to be away for a while starting 
in a day or so, but I'd like to get a buildfarm animal going with these 
before I disappear.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

---

From: Aleksander Alekseev <[email-masked]>
Date: Tue, 22 Apr 2025 15:10:51 +0300

Hi Andrew,

> [...]

Thanks for the patches.

I wonder though if it is advisable to support Cygwin if this requires
extra effort from our side, compared to a regular Linux or Windows
environment. I actually like the project but I wouldn't recommend
running Postgres on prod, and for development these days it's simpler
to use WSL / VirtualBox / Raspberry Pi, or running Postgres natively
on Windows.

-- 
Best regards,
Aleksander Alekseev

---

From: Andrew Dunstan <[email-masked]>
Date: Tue, 22 Apr 2025 10:22:55 -0400

> to use WSL / VirtualBox / Raspberry Pi, or running Postgres natively

I agree that I would not normally use Cygwin to run a Postgres instance. 
But its psql is nicer than others on Windows because unlike the native 
builds we build it with readline. That's why I've kept a buildfarm 
animal going all these years. If the maintenance burden were high I 
wouldn't do so - but it's not really. And these patches are tiny.

What I might do with the new animal is run just enough TAP tests to 
exercise psql. That would reduce the errors we get, so it would be less 
bother to anyone.

cheers

andrew

---

From: Tom Lane <[email-masked]>
Date: Tue, 22 Apr 2025 10:26:15 -0400

> wouldn't do so - but it's not really. And these patches are tiny.

I vaguely recall some discussion about whether building with readline
has become possible under MSVC.  I think it'd make a lot of people
happy if that could happen (but I hasten to add that I'm not
volunteering).

			regards, tom lane

---

From: Andrew Dunstan <[email-masked]>
Date: Tue, 22 Apr 2025 10:54:46 -0400

> happy if that could happen (but I hasten to add that I'm not

Neither am I, although I'll test it if somebody sends in a patch. If 
that happens I'll be happy enough to retire Cygwin support.

cheers

andrew