Thread: Re: BUG #18940: PostgreSQL 18beta1 fails 'collate.windows.win1252' regression when building with MSYS/mingw
Re: BUG #18940: PostgreSQL 18beta1 fails 'collate.windows.win1252' regression when building with MSYS/mingw
From
Thomas Munro
Date:
On Fri, May 30, 2025 at 7:42 AM PG Bug reporting form <noreply@postgresql.org> wrote: > The following bug has been logged on the website: > > Bug reference: 18940 > Logged by: Joe Ayers > Email address: joseph.ayers@crunchydata.com > PostgreSQL version: 18beta1 > Operating system: Windows Server 2022 > Description: > > Hey there! > In working on some test builds, PostgreSQL 18beta1 is failing the > 'collate.windows.win1252' regression test due to missing locales. When > building with MYS2/mingw (Tested Windows Server 2022 and Windows Server > 2019), default locale that's pulled in is typically 'american_usa' as > opposed to 'en_US', which causes the test to fail citing: > +ERROR: could not create locale "en-US": No such file or directory > +DETAIL: The operating system could not find any locale data for the > locale name "en-US". > The above error is repeated several times. Hoping to learn how to adjust the > config to get this to pass, as the error did not occur for PG17 and below. > Any info is appreciated. > I can attach the full regression.diffs file for additional information if it > would be of help. Huh. It passes on our CI: https://cirrus-ci.com/task/4738549062303744 And on our build farm machine: https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=fairywren&br=master I wonder what is different. Are you using ucrt? We started removing bits and pieces related to the old msvcrt C runtime, but my understanding is that msys2 compile should target ucrt by default.
Re: BUG #18940: PostgreSQL 18beta1 fails 'collate.windows.win1252' regression when building with MSYS/mingw
From
Joseph Ayers
Date:
On Wed, Jun 4, 2025 at 4:40 AM Thomas Munro <thomas.munro@gmail.com> wrote:
On Fri, May 30, 2025 at 7:42 AM PG Bug reporting form
<noreply@postgresql.org> wrote:
> The following bug has been logged on the website:
>
> Bug reference: 18940
> Logged by: Joe Ayers
> Email address: joseph.ayers@crunchydata.com
> PostgreSQL version: 18beta1
> Operating system: Windows Server 2022
> Description:
>
> Hey there!
> In working on some test builds, PostgreSQL 18beta1 is failing the
> 'collate.windows.win1252' regression test due to missing locales. When
> building with MYS2/mingw (Tested Windows Server 2022 and Windows Server
> 2019), default locale that's pulled in is typically 'american_usa' as
> opposed to 'en_US', which causes the test to fail citing:
> +ERROR: could not create locale "en-US": No such file or directory
> +DETAIL: The operating system could not find any locale data for the
> locale name "en-US".
> The above error is repeated several times. Hoping to learn how to adjust the
> config to get this to pass, as the error did not occur for PG17 and below.
> Any info is appreciated.
> I can attach the full regression.diffs file for additional information if it
> would be of help.
Huh. It passes on our CI:
https://cirrus-ci.com/task/4738549062303744
And on our build farm machine:
https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=fairywren&br=master
I wonder what is different. Are you using ucrt? We started removing
bits and pieces related to the old msvcrt C runtime, but my
understanding is that msys2 compile should target ucrt by default.
(Forgot to reply-all, apologies)
We're using the mingw64 toolchain for this. I think per the MSYS environments guide here: https://www.msys2.org/docs/environments/
that this would mean we're using msvcrt and not ucrt? That may be the issue. Would we maybe have to move to a different kind of MSYS environment?
Thanks!
--
Re: BUG #18940: PostgreSQL 18beta1 fails 'collate.windows.win1252' regression when building with MSYS/mingw
From
Andres Freund
Date:
Hi, On 2025-06-04 09:28:15 -0700, Joseph Ayers wrote: > On Wed, Jun 4, 2025 at 4:40 AM Thomas Munro <thomas.munro@gmail.com> wrote: > > > On Fri, May 30, 2025 at 7:42 AM PG Bug reporting form > > <noreply@postgresql.org> wrote: > > > The following bug has been logged on the website: > > > > > > Bug reference: 18940 > > > Logged by: Joe Ayers > > > Email address: joseph.ayers@crunchydata.com > > > PostgreSQL version: 18beta1 > > > Operating system: Windows Server 2022 > > > Description: > > > > > > Hey there! > > > In working on some test builds, PostgreSQL 18beta1 is failing the > > > 'collate.windows.win1252' regression test due to missing locales. When > > > building with MYS2/mingw (Tested Windows Server 2022 and Windows Server > > > 2019), default locale that's pulled in is typically 'american_usa' as > > > opposed to 'en_US', which causes the test to fail citing: > > > +ERROR: could not create locale "en-US": No such file or directory > > > +DETAIL: The operating system could not find any locale data for the > > > locale name "en-US". > > > The above error is repeated several times. Hoping to learn how to adjust > > the > > > config to get this to pass, as the error did not occur for PG17 and > > below. > > > Any info is appreciated. > > > I can attach the full regression.diffs file for additional information > > if it > > > would be of help. > > > > Huh. It passes on our CI: > > > > https://cirrus-ci.com/task/4738549062303744 > > > > And on our build farm machine: > > > > > > https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=fairywren&br=master > > > > I wonder what is different. Are you using ucrt? We started removing > > bits and pieces related to the old msvcrt C runtime, but my > > understanding is that msys2 compile should target ucrt by default. > > > > (Forgot to reply-all, apologies) > > We're using the mingw64 toolchain for this. I think per the MSYS > environments guide here: https://www.msys2.org/docs/environments/ > that this would mean we're using msvcrt and not ucrt? That may be the > issue. Would we maybe have to move to a different kind of MSYS environment? I would *strongly* advise to moving to ucrt. Personally I think we should just refuse to build with msvcrt. Greetings, Andres Freund
Re: BUG #18940: PostgreSQL 18beta1 fails 'collate.windows.win1252' regression when building with MSYS/mingw
From
Joseph Ayers
Date:
On Wed, Jun 4, 2025 at 9:32 AM Andres Freund <andres@anarazel.de> wrote:
Hi,
On 2025-06-04 09:28:15 -0700, Joseph Ayers wrote:
> On Wed, Jun 4, 2025 at 4:40 AM Thomas Munro <thomas.munro@gmail.com> wrote:
>
> > On Fri, May 30, 2025 at 7:42 AM PG Bug reporting form
> > <noreply@postgresql.org> wrote:
> > > The following bug has been logged on the website:
> > >
> > > Bug reference: 18940
> > > Logged by: Joe Ayers
> > > Email address: joseph.ayers@crunchydata.com
> > > PostgreSQL version: 18beta1
> > > Operating system: Windows Server 2022
> > > Description:
> > >
> > > Hey there!
> > > In working on some test builds, PostgreSQL 18beta1 is failing the
> > > 'collate.windows.win1252' regression test due to missing locales. When
> > > building with MYS2/mingw (Tested Windows Server 2022 and Windows Server
> > > 2019), default locale that's pulled in is typically 'american_usa' as
> > > opposed to 'en_US', which causes the test to fail citing:
> > > +ERROR: could not create locale "en-US": No such file or directory
> > > +DETAIL: The operating system could not find any locale data for the
> > > locale name "en-US".
> > > The above error is repeated several times. Hoping to learn how to adjust
> > the
> > > config to get this to pass, as the error did not occur for PG17 and
> > below.
> > > Any info is appreciated.
> > > I can attach the full regression.diffs file for additional information
> > if it
> > > would be of help.
> >
> > Huh. It passes on our CI:
> >
> > https://cirrus-ci.com/task/4738549062303744
> >
> > And on our build farm machine:
> >
> >
> > https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=fairywren&br=master
> >
> > I wonder what is different. Are you using ucrt? We started removing
> > bits and pieces related to the old msvcrt C runtime, but my
> > understanding is that msys2 compile should target ucrt by default.
> >
>
> (Forgot to reply-all, apologies)
>
> We're using the mingw64 toolchain for this. I think per the MSYS
> environments guide here: https://www.msys2.org/docs/environments/
> that this would mean we're using msvcrt and not ucrt? That may be the
> issue. Would we maybe have to move to a different kind of MSYS environment?
I would *strongly* advise to moving to ucrt. Personally I think we should just
refuse to build with msvcrt.
Greetings,
Andres Freund
Re: BUG #18940: PostgreSQL 18beta1 fails 'collate.windows.win1252' regression when building with MSYS/mingw
From
Thomas Munro
Date:
On Thu, Jun 5, 2025 at 4:32 AM Andres Freund <andres@anarazel.de> wrote: > I would *strongly* advise to moving to ucrt. Personally I think we should just > refuse to build with msvcrt. Yeah, I didn't realise that it'd still build but not work correctly, so +1 for adding an #error like the attached. The attached passed on CI in the MinGW and Visual Studio tasks (and in passing removes some more trace of msvcrt), but the Debian cross-compilation step helpfully shows how it fails with an msvcrt build: https://cirrus-ci.com/task/4559077411389440 It cross-builds successfully on my local Debian system after installing these packages: gcc-mingw-w64-ucrt64 g++-mingw-w64-ucrt64 ... and selecting those compilers, as shown in the attached fixup. So I think we'll first need to get them added to the CI image, in here: https://github.com/anarazel/pg-vm-images/blob/main/scripts/linux_debian_install_deps.sh And then we could push something like this.