Re: VS2022: Support Visual Studio 2022 on Windows
Hi On Wed, Nov 24, 2021 at 11:36 AM Michael Paquier wrote: > On Wed, Nov 24, 2021 at 10:00:19AM +, 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
Re: VS2022: Support Visual Studio 2022 on Windows
On Wed, Nov 24, 2021 at 10:00:19AM +, 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 signature.asc Description: PGP signature
Re: VS2022: Support Visual Studio 2022 on Windows
Hi On Wed, Nov 24, 2021 at 9:12 AM Hans Buschmann 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
AW: VS2022: Support Visual Studio 2022 on Windows
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
Re: VS2022: Support Visual Studio 2022 on Windows
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 signature.asc Description: PGP signature
Re: VS2022: Support Visual Studio 2022 on Windows
On Sat, Nov 20, 2021 at 05:54:30PM +, 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/yyttuyykpvxef...@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 signature.asc Description: PGP signature
AW: VS2022: Support Visual Studio 2022 on Windows
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 0001_support_vs2022_v4.patch Description: 0001_support_vs2022_v4.patch
Re: VS2022: Support Visual Studio 2022 on Windows
> On 6 Nov 2021, at 10:29, Hans Buschmann 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/
AW: VS2022: Support Visual Studio 2022 on Windows
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 0001_support_vs2022_v2.patch Description: 0001_support_vs2022_v2.patch
Re: AW: VS2022: Support Visual Studio 2022 on Windows
On 10/13/21 3:49 PM, Tom Lane wrote: > Hans Buschmann 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
Re: AW: VS2022: Support Visual Studio 2022 on Windows
Hans Buschmann 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
AW: VS2022: Support Visual Studio 2022 on Windows
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 Gesendet: Montag, 11. Oktober 2021 08:03 An: Andrew Dunstan Cc: Laurenz Albe; Hans Buschmann; pgsql-hack...@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
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 signature.asc Description: PGP signature
Re: VS2022: Support Visual Studio 2022 on Windows
On 10/4/21 6:13 AM, Laurenz Albe wrote: > On Fri, 2021-10-01 at 15:15 +, 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
Re: VS2022: Support Visual Studio 2022 on Windows
On Fri, 2021-10-01 at 15:15 +, 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
VS2022: Support Visual Studio 2022 on Windows
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 0001_support_vs2022.patch Description: 0001_support_vs2022.patch