Re: VS 2015 support in src/tools/msvc

From: Petr Jelinek <petr(at)2ndquadrant(dot)com>
To: pgsql-hackers(at)postgresql(dot)org, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Subject: Re: VS 2015 support in src/tools/msvc
Date: 2016-03-03 14:25:36
Message-ID: 56D84960.1080607@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 03/03/16 15:02, Michael Paquier wrote:
> Hi all,
>
> Microsoft provides a set of VMs that one can use for testing and
> Windows 10 is in the set:
> https://dev.windows.com/en-us/microsoft-edge/tools/vms/windows/
> I have grabbed one and installed the community version of Visual
> Studio 2015 so I think that I am going to be able to compile Postgres
> with VS2015 with a bit of black magic.
>
> My goal is double:
> 1) As far as things have been discussed, VS2015 is making difficult
> the compilation of Postgres, particularly for locales. So I'd like to
> see what are the problems behind that and see if we can patch it
> properly. This would facilitate the integration of cmake as well for
> Windows.

The locale problem is that:
a) the MS crt headers are broken for this particular part due to
unfinished refactoring, even their msvcrt sources don't compile with
them, if you read them it's obvious they forgot to put one variable in
the struct
b) we are using somewhat legacy API there that's internally implemented
as hacks over the new API (string parsing and generation and stuff is
happening there)
c) the non-legacy API works only on Vista+ and does not support the old
locale names (which is why the legacy api that is written on top of this
has to do the string parsing and generation)

To me the least bad solution for MSVC 2015 and codepage detection seemed
to use the new API when possible (GetLocaleInfoEx and friends) and fall
back to our old string parsing that we did pre-VC2013 when it's not,
since afaics it works correctly on all the locale names that are not
supported by the new API. It means that MSVC 2015 builds would be Vista+
but I honestly don't see that as big issue given Microsoft's own policy
about old Windows versions.

> 2) src/tools/msvc stuff has support only up to VS2013. I think that it
> would be nice to bump that a bit and get something for 9.5~.
>

Yeah, we'll also have to do something about perl 5.22 compatibility
there as psed is not included in the core distribution anymore from that
version and we use it to generate one header file IIRC.

> So, would there be interest for a patch on the perl scripts in
> src/tools/msvc or are they considered a lost cause? Having a look at
> the failures could be done with the cmake work, but it seems a bit
> premature to me to look at that for the moment, and having support for
> VS2015 with 9.5 (support for new versions of VS won a backpatch the
> last couple of years) would be a good thing I think.
>

+1, and I can help (at least review and testing if nothing else).

--
Petr Jelinek http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Masahiko Sawada 2016-03-03 14:30:49 Re: Support for N synchronous standby servers - take 2
Previous Message Teodor Sigaev 2016-03-03 14:15:07 Re: WIP: Upper planner pathification