Thread

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add support for Visual Studio 2022 in build scripts

  1. VS2022: Support Visual Studio 2022 on Windows

    Hans Buschmann <buschmann@nidsa.net> — 2021-10-01T15:15:59Z

    During testing of the new Visual Studio 2022 Preview Version 4.1 from Microsoft I also tried PG14.0 on it.
    
    The x64 version built without error!.
    
    Even when this is only a preview version (the real thing is to expected soon) it seems appropriate to include the support to Postgres msvc tools directory.
    
    I followed the guideline of the patch msvc-2019-support-v4.patch for VS2019 support. New patch attached.
    
    The only thing that will change later in the first non-preview release is the exact version number, which seems to change allways on every minor VS upgrade and is not used explicitely:
    
    $self->{VisualStudioVersion}        = '17.0.31717.71';
    
    The patch is not invasive, so it should follow the practice of backpatching it to (most) supported versions.
    
    I have tested the x64 compile and install with the release source code of PG14.0 from 2021-09-30.
    
    Due to bad development environment I did not a full run of all tests afterwords.
    
    
    Visual Studio is co-installable to an already existing VS version on the same machine (I had VS2019 installed) and is separately choosable as compile environment.
    
    Compilation time and file sizes are almost identical, but the GUI promises a native 64bit implementation, so it may appealing to use the new version.
    
    HELP NEEDED:
    
    Please could somebody test the patch and enter it to the next commit fest?
    (Only my second patch, not much experience with the tool chain :-( )
    
    Another point is the failure of using VS2019/VS2022 for building the 32bit version, but this has to be discussed in another thread (if the Windows 32bit Version is still important to support on newer VS Versions)
    
    Thanks for looking at it
    
    Hans Buschmann
    
    
  2. Re: VS2022: Support Visual Studio 2022 on Windows

    Laurenz Albe <laurenz.albe@cybertec.at> — 2021-10-04T10:13:45Z

    On Fri, 2021-10-01 at 15:15 +0000, Hans Buschmann wrote:
    > During testing of the new Visual Studio 2022 Preview Version 4.1 from Microsoft I also tried PG14.0 on it.
    > The x64 version built without error!.
    > 
    > Even when this is only a preview version (the real thing is to expected soon) it seems appropriate to include the support to Postgres msvc tools directory.
    > 
    > I followed the guideline of the patch msvc-2019-support-v4.patch for VS2019 support. New patch attached.
    [...]
    > HELP NEEDED:
    > 
    > Please could somebody test the patch and enter it to the next commit fest?
    
    Thanks for that work; help with Windows is always welcome.
    
    Please go ahead and add the patch to the commitfest yourself.
    Testing will (hopefully) be done by a reviewer who has access to MSVC 2022.
    
    Yours,
    Laurenz Albe
    
    
    
    
    
  3. Re: VS2022: Support Visual Studio 2022 on Windows

    Andrew Dunstan <andrew@dunslane.net> — 2021-10-04T12:21:52Z

    On 10/4/21 6:13 AM, Laurenz Albe wrote:
    > On Fri, 2021-10-01 at 15:15 +0000, Hans Buschmann wrote:
    >> During testing of the new Visual Studio 2022 Preview Version 4.1 from Microsoft I also tried PG14.0 on it.
    >> The x64 version built without error!.
    >>
    >> Even when this is only a preview version (the real thing is to expected soon) it seems appropriate to include the support to Postgres msvc tools directory.
    >>
    >> I followed the guideline of the patch msvc-2019-support-v4.patch for VS2019 support. New patch attached.
    > [...]
    >> HELP NEEDED:
    >>
    >> Please could somebody test the patch and enter it to the next commit fest?
    > Thanks for that work; help with Windows is always welcome.
    >
    > Please go ahead and add the patch to the commitfest yourself.
    > Testing will (hopefully) be done by a reviewer who has access to MSVC 2022.
    >
    
    I think we'll want to wait for the official release before we add
    support for it.
    
    
    cheers
    
    
    andew
    
    --
    Andrew Dunstan
    EDB: https://www.enterprisedb.com
    
    
    
    
    
  4. Re: VS2022: Support Visual Studio 2022 on Windows

    Michael Paquier <michael@paquier.xyz> — 2021-10-11T06:03:30Z

    On Mon, Oct 04, 2021 at 08:21:52AM -0400, Andrew Dunstan wrote:
    > I think we'll want to wait for the official release before we add
    > support for it.
    
    Agreed.  I am pretty sure that the version strings this patch is using
    are going to change until the release happens.
    --
    Michael
    
  5. AW: VS2022: Support Visual Studio 2022 on Windows

    Hans Buschmann <buschmann@nidsa.net> — 2021-10-13T16:44:53Z

    During October Patchday 2021 the Visual Studio components where upraded too.
    
    Now VS2022 Preview 5 is out, also Visual Studio 2022 RC is available to be used for production use (seems like our RC with respect to features).
    
    In the long of this process Microsoft announced the general availability of VS200 for Monday, November 8, see
    
    https://devblogs.microsoft.com/visualstudio/join-us-november-8th-for-the-launch-of-visual-studio-2022/
    
    This date is just some hours after the wrapup for our minor release on November 11.
    
    Barring any objections I suggest to apply the patch just before this weekend in November to have the support for Microsofts Developer Suite for the following 3 months available. (PS: no one is OBLIGUED to use the new version of VS, the interest for PG14 will grow with PG14.1 and this support effects only experienced users self-compiling on windows).
    
    I will watch the development in the first week of November and will update the patch to include the latest version number.
    
    It seems clear that VS2022 will take the 14.30 range as Version number (seen from the VC runtime versions installed)
    
    Only the VisualStudioVersion (17.0.31717.71) will be changed like on EVERY update of a Visual Studio installation/upgrade.
    
    VS2019 is now on 16.11.5, Postgres never upgrades this number for older versions and always uses the initial number when introduced (here 16.0.28729.10 for VS2019).
    
    So it seems safe to use a number of a version which can be used for building PG without errors.
    
    Thanks
    
    Hans Buschmann
    
    ________________________________________
    Von: Michael Paquier <michael@paquier.xyz>
    Gesendet: Montag, 11. Oktober 2021 08:03
    An: Andrew Dunstan
    Cc: Laurenz Albe; Hans Buschmann; pgsql-hackers@postgresql.org
    Betreff: Re: VS2022: Support Visual Studio 2022 on Windows
    
    On Mon, Oct 04, 2021 at 08:21:52AM -0400, Andrew Dunstan wrote:
    > I think we'll want to wait for the official release before we add
    > support for it.
    
    Agreed.  I am pretty sure that the version strings this patch is using
    are going to change until the release happens.
    --
    Michael
    
    
    
    
  6. Re: AW: VS2022: Support Visual Studio 2022 on Windows

    Tom Lane <tgl@sss.pgh.pa.us> — 2021-10-13T19:49:41Z

    Hans Buschmann <buschmann@nidsa.net> writes:
    > In the long of this process Microsoft announced the general availability of VS200 for Monday, November 8, see
    > https://devblogs.microsoft.com/visualstudio/join-us-november-8th-for-the-launch-of-visual-studio-2022/
    > This date is just some hours after the wrapup for our minor release on November 11.
    
    Ugh, bad timing.
    
    > Barring any objections I suggest to apply the patch just before this weekend in November to have the support for Microsofts Developer Suite for the following 3 months available.
    
    Immediately before a release is the worst possible time to be applying
    non-critical patches.  I think better options are to
    (1) commit now, using the RC release's version as the minimum, or
    (2) wait till just after our release cycle.
    
    Of course, if we only plan to commit to HEAD and not back-patch,
    this is all moot.
    
    			regards, tom lane
    
    
    
    
  7. Re: AW: VS2022: Support Visual Studio 2022 on Windows

    Andrew Dunstan <andrew@dunslane.net> — 2021-10-13T20:11:12Z

    On 10/13/21 3:49 PM, Tom Lane wrote:
    > Hans Buschmann <buschmann@nidsa.net> writes:
    >> In the long of this process Microsoft announced the general availability of VS200 for Monday, November 8, see
    >> https://devblogs.microsoft.com/visualstudio/join-us-november-8th-for-the-launch-of-visual-studio-2022/
    >> This date is just some hours after the wrapup for our minor release on November 11.
    > Ugh, bad timing.
    >
    >> Barring any objections I suggest to apply the patch just before this weekend in November to have the support for Microsofts Developer Suite for the following 3 months available.
    > Immediately before a release is the worst possible time to be applying
    > non-critical patches.  I think better options are to
    > (1) commit now, using the RC release's version as the minimum, or
    > (2) wait till just after our release cycle.
    >
    > Of course, if we only plan to commit to HEAD and not back-patch,
    > this is all moot.
    >
    > 		
    
    
    No, we always try to backpatch these so that we can have buildfarm
    animals that build all live branches.
    
    
    I really don't see that we need to be in a hurry with this. There is no
    requirement that we support VS2022 on day one of its release. Three
    months really won't matter. Impatience doesn't serve us well here.
    
    
    cheers
    
    
    andrew
    
    --
    Andrew Dunstan
    EDB: https://www.enterprisedb.com
    
    
    
    
    
  8. AW: VS2022: Support Visual Studio 2022 on Windows

    Hans Buschmann <buschmann@nidsa.net> — 2021-11-06T09:29:34Z

    Now it is three days before release of VS2022.
    
    I updated to the latest Preview 7 (= RC3) and recompiled PG14 64bit Release without issues.
    There seem to be not many internal differences from previous versions in the tools used for building Postgres.
    
    My intention for an early support is to catch the momentum for signalling to any user:  "We support current tools".
    The risks seem non-existent.
    
    Updated the patch to reflect the VisualStudioVersion for Preview 7, which is the version number compiled into the main  devenv.exe image.
    This version number seems to be of no interest elsewhere in the postgres source tree.
    
    I will reflect any updates after official release on monday, November 8
    
    Hans Buschmann
    
    
  9. Re: VS2022: Support Visual Studio 2022 on Windows

    Daniel Gustafsson <daniel@yesql.se> — 2021-11-17T14:11:24Z

    > On 6 Nov 2021, at 10:29, Hans Buschmann <buschmann@nidsa.net> wrote:
    
    > Updated the patch to reflect the VisualStudioVersion for Preview 7, which is the version number compiled into the main  devenv.exe image.
    > This version number seems to be of no interest elsewhere in the postgres source tree.
    
    This patch fails to apply as it's anchored beneath the root of the source tree,
    please create the patch from inside the sourcetree such that others (and the CF
    patch tester) can apply it without tweaking:
    
    --- a/postgresql-14.0_orig/doc/src/sgml/install-windows.sgml
    +++ b/postgresql-14.0_vs2022/doc/src/sgml/install-windows.sgml
    
    Also note that patches should be against Git HEAD unless fixing a bug only
    present in a backbranch.
    
    > I will reflect any updates after official release on monday, November 8
    
    Any updates on this following the November 8 release?
    
    --
    Daniel Gustafsson		https://vmware.com/
    
    
    
    
    
  10. AW: VS2022: Support Visual Studio 2022 on Windows

    Hans Buschmann <buschmann@nidsa.net> — 2021-11-20T17:54:30Z

    Hello Daniel,
    
    Thank you for looking into it.
    
    My skills with git are minmal yet and I am working on a correct development platform, so sorry for any inconveniances from my side .
    
    When upgraded Microsoft jumped directly from Preview 7 to Preview 7.1 of VS2022 by skipping the release version of 7.0.
    
    I had to install it on a different machine to test it with the final VS2022 version from november 8.
    
    On both platforms the build of snapshot from 19.11.2021 is successfull but gives the following  warnings which seem not correlated to the proposed patch:
    
    Der Buildvorgang wurde erfolgreich ausgeführt.
    
    "C:\pgdev\postgresql-15devel\pgsql.sln" (Standardziel) (1) ->
    "C:\pgdev\postgresql-15devel\postgres.vcxproj" (Standardziel) (2) ->
    (ClCompile Ziel) ->
      C:\pgdev\postgresql-15devel\src\backend\access\heap\pruneheap.c(858,18): warning C4101: "htup": Unreferenzierte lokale Variable [C:\pgdev\postgresql-15devel\postgres.vcxproj]
      C:\pgdev\postgresql-15devel\src\backend\access\heap\pruneheap.c(870,11): warning C4101: "tolp": Unreferenzierte lokale Variable [C:\pgdev\postgresql-15devel\postgres.vcxproj]
    
        2 Warnung(en)
        0 Fehler
    
    (Meaning 2 unreferenced local variables in pruneheap.c)
    
    The build produced .vcxproj files with ToolsVersion="17.0", so it recognized the new environment correctly.
    
    I corrected some ommissions in _GetVisualStudioVersion in VSObjectFactory.pm.
    
    Please find attached the corrected patch version v4.
    
    Due to my restricted devlopment environment I appreciate if anybody can test the resulting binaries (but MS seems not have changed much on the C Build environment internally).
    
    Thanks
    
    Hans Buschmann
    
  11. Re: VS2022: Support Visual Studio 2022 on Windows

    Michael Paquier <michael@paquier.xyz> — 2021-11-21T01:41:17Z

    On Sat, Nov 20, 2021 at 05:54:30PM +0000, Hans Buschmann wrote:
    > My skills with git are minmal yet and I am working on a correct
    > development platform, so sorry for any inconveniances from my side.
    
    No need to worry here.  We all learn all the time.  I have been able
    to apply your patch with a "patch -p2", which is fine enough.  If you
    want to generate cleaner diffs, you could use a "git diff" or a "git
    format-patch".  Folks around here rely on those commands heavily when
    generating patches.
    
    > On both platforms the build of snapshot from 19.11.2021 is
    > successfull but gives the following  warnings which seem not
    > correlated to the proposed patch:
    
    That's fine by me.
    
    > Der Buildvorgang wurde erfolgreich ausgeführt.
    > 
    > "C:\pgdev\postgresql-15devel\pgsql.sln" (Standardziel) (1) ->
    > "C:\pgdev\postgresql-15devel\postgres.vcxproj" (Standardziel) (2) ->
    > (ClCompile Ziel) ->
    >   C:\pgdev\postgresql-15devel\src\backend\access\heap\pruneheap.c(858,18): warning C4101: "htup": Unreferenzierte lokale Variable [C:\pgdev\postgresql-15devel\postgres.vcxproj]
    >   C:\pgdev\postgresql-15devel\src\backend\access\heap\pruneheap.c(870,11): warning C4101: "tolp": Unreferenzierte lokale Variable [C:\pgdev\postgresql-15devel\postgres.vcxproj]
    > 
    >     2 Warnung(en)
    >     0 Fehler
    > 
    > (Meaning 2 unreferenced local variables in pruneheap.c)
    
    Those warnings are knows.  A commit from Peter G is at the origin of
    that but nothing has been done about these yet:
    https://www.postgresql.org/message-id/YYTTuYykpVXEfnOr@paquier.xyz
    
    So don't worry about that :)
    
    Glad to see that we should have nothing to do about locales this
    time.  I have not tested, but I think that you covering all the areas
    that need a refresh here.  Nice work.
    
    +   # The version of nmake bundled in Visual Studio 2022 is greater
    +   # than 14.30 and less than 14.40.  And the version number is
    +   # actually 17.00.
    +   elsif (
    +       ($visualStudioVersion ge '14.30' && $visualStudioVersion lt '14.40')
    +       || $visualStudioVersion eq '17.00')
    +   {
    +       return new VS2022Solution(@_);
    +   }
    Wow, really?  MSVC has not yet simplified their version numbering with
    nmake.
    
    +VC2017Project,VC2019Project or VC2022Project from MSBuildProject.pm) to it.
    Nit: you should use a space when listing elements in a comma-separated
    list.
    
    -      method for compressing table or WAL data. Binaries and source can be
    +      method for compressing the table data. Binaries and source can be
    Diff unrelated to your patch.       
    
    I'll double-check your patch later, but that looks rather good to me.
    Will try to apply and back-patch, and it would be better to check the
    version numbers assigned in the patch, as well.
    --
    Michael
    
  12. Re: VS2022: Support Visual Studio 2022 on Windows

    Michael Paquier <michael@paquier.xyz> — 2021-11-24T04:11:12Z

    On Sun, Nov 21, 2021 at 10:41:17AM +0900, Michael Paquier wrote:
    > I'll double-check your patch later, but that looks rather good to me.
    > Will try to apply and back-patch, and it would be better to check the
    > version numbers assigned in the patch, as well.
    
    I have spent a couple of hours on that today, and applied that down to
    10 so as all branches benefit from that.  There was a hidden problem
    in 10 and 11, where we need to be careful to use VC2012Project as base 
    in MSBuildProject.pm.
    
    Thanks, Hans!
    --
    Michael
    
  13. AW: VS2022: Support Visual Studio 2022 on Windows

    Hans Buschmann <buschmann@nidsa.net> — 2021-11-24T09:12:24Z

    Hello Michael,
    
    thanks for your hard work and quick response!
    It is very convenient to only use VS2022 for Windows from now on...
    
    >Diff unrelated to your patch.      
    
    Sorry for the copysoft problem from the first version.
    
    >Glad to see that we should have nothing to do about locales this
    >time.  I have not tested, but I think that you covering all the areas
    >that need a refresh here.  Nice work.
    
    I think it is almost impossible to overestimate the value of such support from experienced hackers to others starting their journey right now...
    
    I hope I can motivate you (and other experienced hackers) to give me some more support on my real project arriving anytime soon. It addresses hex_encoding (and more) targetting mostly pg_dump, but requires also some deeper knowledge of general infrastructure and building (also on Windows). Stay tuned!
    
    PS: Does anybody have good relations to EDB suggesting them to target VS2022 as the build environment for the upcoming PG15 release?
    
    postgres=# select version ();
                              version
    ------------------------------------------------------------
     PostgreSQL 14.1, compiled by Visual C++ build 1931, 64-bit
    (1 row)
    
    Thanks!
    
    Hans Buschmann
    
    
    
    
  14. Re: VS2022: Support Visual Studio 2022 on Windows

    Dave Page <dpage@pgadmin.org> — 2021-11-24T10:00:19Z

    Hi
    
    On Wed, Nov 24, 2021 at 9:12 AM Hans Buschmann <buschmann@nidsa.net> wrote:
    
    > Hello Michael,
    >
    > thanks for your hard work and quick response!
    > It is very convenient to only use VS2022 for Windows from now on...
    >
    > >Diff unrelated to your patch.
    >
    > Sorry for the copysoft problem from the first version.
    >
    > >Glad to see that we should have nothing to do about locales this
    > >time.  I have not tested, but I think that you covering all the areas
    > >that need a refresh here.  Nice work.
    >
    > I think it is almost impossible to overestimate the value of such support
    > from experienced hackers to others starting their journey right now...
    >
    > I hope I can motivate you (and other experienced hackers) to give me some
    > more support on my real project arriving anytime soon. It addresses
    > hex_encoding (and more) targetting mostly pg_dump, but requires also some
    > deeper knowledge of general infrastructure and building (also on Windows).
    > Stay tuned!
    >
    > PS: Does anybody have good relations to EDB suggesting them to target
    > VS2022 as the build environment for the upcoming PG15 release?
    >
    
    That would be me...
    
    
    >
    > postgres=# select version ();
    >                           version
    > ------------------------------------------------------------
    >  PostgreSQL 14.1, compiled by Visual C++ build 1931, 64-bit
    > (1 row)
    >
    
    It's extremely unlikely that we'd shift to such a new version for PG15. We
    build many components aside from PostgreSQL, and need to use the same
    toolchain for all of them (we've had very painful experiences with mix n
    match CRT versions in the past) so it's not just PG that needs to support
    VS2022 as far as we're concerned - Perl, Python, TCL, MIT Kerberos,
    OpenSSL, libxml2, libxslt etc. are all built with the same toolchain for
    consistency.
    
    -- 
    Dave Page
    Blog: https://pgsnake.blogspot.com
    Twitter: @pgsnake
    
    EDB: https://www.enterprisedb.com
    
  15. Re: VS2022: Support Visual Studio 2022 on Windows

    Michael Paquier <michael@paquier.xyz> — 2021-11-24T11:36:27Z

    On Wed, Nov 24, 2021 at 10:00:19AM +0000, Dave Page wrote:
    > It's extremely unlikely that we'd shift to such a new version for PG15. We
    > build many components aside from PostgreSQL, and need to use the same
    > toolchain for all of them (we've had very painful experiences with mix n
    > match CRT versions in the past) so it's not just PG that needs to support
    > VS2022 as far as we're concerned
    
    Yes, I can understand that upgrading the base version of VS used is a
    very difficult exercise.  I have been through that, on Windows for
    Postgres..  As well as for the compilation of all its dependencies.
    
    > - Perl, Python, TCL, MIT Kerberos,
    > OpenSSL, libxml2, libxslt etc. are all built with the same toolchain for
    > consistency.
    
    Dave, do you include LZ4 in 14?  Just asking, as a matter of
    curiosity.
    --
    Michael
    
  16. Re: VS2022: Support Visual Studio 2022 on Windows

    Dave Page <dpage@pgadmin.org> — 2021-11-24T12:01:27Z

    Hi
    
    On Wed, Nov 24, 2021 at 11:36 AM Michael Paquier <michael@paquier.xyz>
    wrote:
    
    > On Wed, Nov 24, 2021 at 10:00:19AM +0000, Dave Page wrote:
    > > It's extremely unlikely that we'd shift to such a new version for PG15.
    > We
    > > build many components aside from PostgreSQL, and need to use the same
    > > toolchain for all of them (we've had very painful experiences with mix n
    > > match CRT versions in the past) so it's not just PG that needs to support
    > > VS2022 as far as we're concerned
    >
    > Yes, I can understand that upgrading the base version of VS used is a
    > very difficult exercise.  I have been through that, on Windows for
    > Postgres..  As well as for the compilation of all its dependencies.
    >
    > > - Perl, Python, TCL, MIT Kerberos,
    > > OpenSSL, libxml2, libxslt etc. are all built with the same toolchain for
    > > consistency.
    >
    > Dave, do you include LZ4 in 14?  Just asking, as a matter of
    > curiosity.
    >
    
    Yes we do :-)
    
    C:\Program Files\PostgreSQL\14\bin>pg_config
    BINDIR = C:/PROGRA~1/POSTGR~1/14/bin
    DOCDIR = C:/PROGRA~1/POSTGR~1/14/doc
    HTMLDIR = C:/PROGRA~1/POSTGR~1/14/doc
    INCLUDEDIR = C:/PROGRA~1/POSTGR~1/14/include
    PKGINCLUDEDIR = C:/PROGRA~1/POSTGR~1/14/include
    INCLUDEDIR-SERVER = C:/PROGRA~1/POSTGR~1/14/include/server
    LIBDIR = C:/Program Files/PostgreSQL/14/lib
    PKGLIBDIR = C:/Program Files/PostgreSQL/14/lib
    LOCALEDIR = C:/PROGRA~1/POSTGR~1/14/share/locale
    MANDIR = C:/Program Files/PostgreSQL/14/man
    SHAREDIR = C:/PROGRA~1/POSTGR~1/14/share
    SYSCONFDIR = C:/Program Files/PostgreSQL/14/etc
    PGXS = C:/Program Files/PostgreSQL/14/lib/pgxs/src/makefiles/pgxs.mk
    CONFIGURE = --enable-thread-safety --enable-nls --with-ldap
    --with-ssl=openssl --with-uuid --with-libxml --with-libxslt --with-lz4
    --with-icu --with-tcl --with-perl --with-python
    CC = not recorded
    CPPFLAGS = not recorded
    CFLAGS = not recorded
    CFLAGS_SL = not recorded
    LDFLAGS = not recorded
    LDFLAGS_EX = not recorded
    LDFLAGS_SL = not recorded
    LIBS = not recorded
    VERSION = PostgreSQL 14.1
    
    -- 
    Dave Page
    Blog: https://pgsnake.blogspot.com
    Twitter: @pgsnake
    
    EDB: https://www.enterprisedb.com