Re: BUG #16336: Undefined symbols since upgrade of VS to 2019.5.2,and other issues - Mailing list pgsql-bugs

From Mario Emmenlauer
Subject Re: BUG #16336: Undefined symbols since upgrade of VS to 2019.5.2,and other issues
Date
Msg-id f2496c70-4980-3710-ecb2-3e378bc0e25f@emmenlauer.de
Whole thread Raw
In response to Re: BUG #16336: Undefined symbols since upgrade of VS to 2019.5.2,and other issues  (Mario Emmenlauer <mario@emmenlauer.de>)
List pgsql-bugs
On 02.04.20 13:59, Mario Emmenlauer wrote:
> 
> On 02.04.20 11:58, PG Bug reporting form wrote:
>> The following bug has been logged on the website:
>> I've recently upgraded Visual Studio from 2019.3 to 2019.5.2. This broke
>> my
>> build of PostgreSQL. First I tried 11.5 which fails with the same errors,
> 
> Sorry for this, but it seems that PostgreSQL is not (directly) at fault for
> this problem. I can now isolate that within some of the Perl methods of the
> build, the PATH gets reset to the default Windows PATH. This seems to be
> related to the recent update of Visual Studio.
> 
> Now this in turn triggers some unfortunate events:
>  - I ensure that a native Perl is in PATH before any other Perl
>  - I furthermore set the native Perl path in buildenv.pl
>  - I start the build from the native Perl
>  - But this PATH is reset to the default system PATH somewhere in the build
>  - In the default system PATH, there is Cygwin Perl, which I require for
>    building a few other packages

So I've finally found the root cause of the problem. I'm reporting
this here in the hope it may be useful to somebody else in the future.
Since more recent versions of Visual Studio 2019 (somewhere between
VS 2019.3 and VS2019.5.2) a behavior with respect to PATH was changed.
Since VS2017, the script `vcvarsall.bat` preserves the PATH before
adding Visual Studio directories in `__VSCMD_PREINIT_PATH`. However
as far as I could see, it is not used later anywhere again. This has
changed in recent Visual Studio, where __VSCMD_PREINIT_PATH is later
appended to PATH again!

It turns out in my environment I clean Cygwin from PATH before
building PostgreSQL, but I did not clean __VSCMD_PREINIT_PATH. So
via this route, Cygwin was re-added to PATH, leading to build
problems.

Please close this issue, and thanks for your consideration.

All the best,

    Mario Emmenlauer



pgsql-bugs by date:

Previous
From: Sandeep Thakkar
Date:
Subject: Re: Postgres Installer not Appearing When Exe Is Run
Next
From: Bert Brezel
Date:
Subject: Re: BUG #16341: Installation with EnterpriseDB Community installer inNT AUTHORITY\SYSTEM context not possible