Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u6u1n-007OJo-05 for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Apr 2025 16:29:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u6u1l-006lWt-1W for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Apr 2025 16:29:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u6u1k-006lWj-MV for pgsql-hackers@lists.postgresql.org; Mon, 21 Apr 2025 16:29:49 +0000 Received: from mail-qt1-x82b.google.com ([2607:f8b0:4864:20::82b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u6u1h-001FwW-2c for pgsql-hackers@lists.postgresql.org; Mon, 21 Apr 2025 16:29:48 +0000 Received: by mail-qt1-x82b.google.com with SMTP id d75a77b69052e-4774d68c670so47963171cf.0 for ; Mon, 21 Apr 2025 09:29:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1745252984; x=1745857784; darn=lists.postgresql.org; h=to:autocrypt:subject:content-language:from:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=1cM9l9rysITnLktryFqsTqGT4U6Aoy3aaF+Yc5VCMSU=; b=0BCdqrZ7Ehp+yFbCsL6n8w4NT+HrGa802zt6VspaBq+yelmaBQO9JOOTcRVkQn9tXP FcfYrGWWlvBw7jUwTP2+kfnytheeoKphsnZytDTC1UOFqF3wougDhjIJfFq5tpQ4xq4w G65gDPx+XGWgi4m4JCB0+vCZRhBPYgYXUb6+zy1ipT6uevtoRDmU43ARYYJtzDLChV1d k51+qQBKz/JuJMJv0QO9gcx/tvG9ahNVNZsX/oJBmfkBfJmC2bl9WMURo39AoJ79iP1Q 9kp/ZHqjjTIlEbVJfOKNHL4dDZnizw7XKXI4j6uKEuwFO+iGa7XQYyLEJVs/dlE0MNI+ HutQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745252984; x=1745857784; h=to:autocrypt:subject:content-language:from:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1cM9l9rysITnLktryFqsTqGT4U6Aoy3aaF+Yc5VCMSU=; b=atbyHTyEAQsIIZxWthYlUsZVYigOgtRphNMrGCjfuQdb7WCn8twieGEVHHcY/gTGKi iGN9NKfPPK8qT9EEByRvaZA6tJ0Y8oZcQSX3Pd2azBOrOXMB17ID7yw3vndk1SCS8q/I T6hQKjdNNgYqUjSCCqzPyfprK/04ZlLHolc73AAsmPcrdSl2Q5PObsg+IjTUzmVfU8hz E+q1Qdra2iGYCJN4LHlkrXMmGnF09Hs8I8nA8Ip9UdedZqtg6gTGdGYIGUuGlAnIoxS5 pPuoA+j+1yYE+uYvIMGa0oDUYiX1mA5+WOT9BxRJARZIOdD/bBQrEjb2HSIdnGFpdg4Z LcNg== X-Gm-Message-State: AOJu0YzNHxfRiDBGFryImDPBvPyEMEjfYax8tKwFVSIZtX9k3MbCWRJg Y837QkNyQ/pX1wDJ2jYdItYV2RTRSfhWn3dJhzuVsffsGDzbV14w/WdKzk7nz9I+cQiJ/CmZcuq LLtE= X-Gm-Gg: ASbGncsIcyugy3p5YVIQeTAQR7vS+gPZ8hN56b4QnLh+Z9D1/D+BY9RTBk4BTL7L8rq vS5zevNnPU+MnUnQuNxzwBJcltD2H25PTelwXjhwnDCkl6kGT+yeHzMu0aaBnutfat9dIwRYP6r naEXTI8RBQIfPzEsfwlUfcTIBgk167px5WIHay6hGZQR/hrzo1faICbQeVPwmRQCmO5FsQ6rA8H /oLBB7012vxnRpiyEjpVHO+QOZ34j1vhe6Q8G2QKHtCP0fkwxwCE8mSYjly+at6KD7wYIw/HcCx Rac5+bwHMxz1z1nG4dIeMfCbAlguUBsI7xwTBcGGvjjO6LI+HzKINKILdFXkVQ== X-Google-Smtp-Source: AGHT+IFEAQuz763gR700j+JMRicJ7q7rY7Oo+OjiBMrPorVH1coHo59XDgoAhC+QbfJacEGAF/DJAA== X-Received: by 2002:ac8:5f84:0:b0:476:8db0:8cae with SMTP id d75a77b69052e-47aec3658admr192659641cf.10.1745252982762; Mon, 21 Apr 2025 09:29:42 -0700 (PDT) Received: from ?IPV6:2605:a601:a681:6b00::1cb? ([2605:a601:a681:6b00::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-47ae9ce295fsm43666441cf.52.2025.04.21.09.29.41 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 21 Apr 2025 09:29:41 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------b6flvVOqhR2fmhUaBq7eeOdi" Message-ID: <916d0fd1-a99b-41c4-a017-ff2428bf8cca@dunslane.net> Date: Mon, 21 Apr 2025 12:29:40 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andrew Dunstan Content-Language: en-US Subject: Cygwin support Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAmwQTAQgARQIbAwIX gAIZAQULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUC ZFlxxwUJGVGAbgAKCRCZ+n/LWfw7gXikB/9ZdcUy6CTBFIIuL/bVsc1eLEW/gJBjJBF6HxNY xgEkAgXAp4Lg4A5U+QB9GouFr7+GYxF0BU4hzoGhNPUWltxnHdMWP8nC/38LAqgMi8L/bbsm HW5YPBdWYaAZAPJQVfOAgjTbRUb26KSprpyrrJKW0ZmrZfjhNPcQ72jpWzoPLQqx2X6B0fru 1jq+cBh8lb6r1mJTim1T3JIn+F/v5VpdQS+EL8xqsHkfzKjIPsW3CIXpkypSk6saA55Rkkbl 26AW8ftPVB0Q6Lnn6FLt9CP0MGNixBQ55yq8r1K+nCBvCCjvQjM8RDm0UUum0WNl+ifQgTLO E8TWEnwVtkBf+3QWzsBNBE7KWFkBCADRnOM0FCzsYW6jtncg+dWIagjUZpvaClmqn/sJluLa Q3v1VXMQJzYs3eC1gh386W+XBwLRpDj3jzH81lX+p73Re3d3oJW7X+ffsxuzu5ZVdMUkqBYo nkAbKxr6gyJ12F/+JkUVzLcoTN+d/7YsQvUVi7NaKH8mJgjz112O4fUe3p9wfAaFa0RXHc5S GPzRTYRRlv/XZBIho4J2tkZOnteZJZ+GbxQVlINt6fd8P6al3MWOvpP/ExJPguEfjOsO6Njy xjo3WfpD4lHMOR/Oc3/8mScEF84rF2jXbsFgelWnbPWAvXY+pD0dXOFRkagGmC/viwBDqq5b 5tk76kKmUbZxABEBAAHCwHwEGAEIACYCGwwWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUCZFlx 5wUJGVGAjgAKCRCZ+n/LWfw7gf+iB/4g8CPY5jihf5r/8EsoIGe2H+dpVmpPF8YGBzTIvCz/ fQoOq8AX/pE76QEuFnFZWfjw+wgBXgCVmkox2Eflkk6z4ND3pcwGZ6CfCxTQCDk/dij+2DQ4 6bmDCy/sBgcbz9mTpoLC11HLoPae6YN9nBNQRZDcEFEu54OaVOqlIdbA6m+POIBCXZdHOFc0 WoDTgxHRzC1jgQNidyd6tKqcsVJs0dzF0oKTmFFmUAqTdJO12LBuNA1rlqrR3EtpYk8B/wtS 5dIMD7Q8hwQpL+4C6GNpb6ZKnPkLi47pDOLhz2qBrqN+rqUEsT3YnExYpzj5yOBi+FlmV1Hw 49QYe1sn2ZPs To: PostgreSQL Hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------b6flvVOqhR2fmhUaBq7eeOdi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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 --------------b6flvVOqhR2fmhUaBq7eeOdi Content-Type: application/x-compressed-tar; name="cygwin-fixes.tgz" Content-Disposition: attachment; filename="cygwin-fixes.tgz" Content-Transfer-Encoding: base64 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 0NDQ0NDQ0NDQ0NDQ0PiX8QPhBQndAHgAAA== --------------b6flvVOqhR2fmhUaBq7eeOdi--