Boost logo

Boost :

Subject: Re: [boost] [VS2017][release] vswhere.exe
From: Rene Rivera (grafikrobot_at_[hidden])
Date: 2017-04-04 21:13:26


On Tue, Apr 4, 2017 at 9:34 AM, Rene Rivera <grafikrobot_at_[hidden]> wrote:

>
> On Tue, Apr 4, 2017 at 4:09 AM, Mateusz Loskot via Boost <
> boost_at_[hidden]> wrote:
>
>> On 4 April 2017 at 10:59, Paul A. Bristow via Boost
>> <boost_at_[hidden]> wrote:
>> >> -----Original Message-----
>> >> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of
>> Andrey Semashev via Boost
>> >> Sent: 30 March 2017 17:45
>> >> To: boost_at_[hidden]
>> >> Cc: Andrey Semashev
>> >> Subject: Re: [boost] [VS2017][release] vswhere.exe
>> >>
>> >> On 03/30/17 18:46, Rene Rivera via Boost wrote:
>> >> > On Thu, Mar 30, 2017 at 10:20 AM, Glen Fernandes via Boost <
>> >> > boost_at_[hidden]> wrote:
>> >> >
>> >> >> Mateusz wrote:
>> >> >>> The utility is not deployed by any VS installer.
>> >> >>> You need to download it separately, from GitHub.
>> >> >>
>> >> >> I hope that does not mean the Boost release itself would have to
>> contain a
>> >> >> Windows executable for the purpose of finding VS.
>> >> >
>> >> > That is the general recommendation from Microsoft.
>> >>
>> >> IMO, requiring a BLOB executable in a source distribution is
>> >> unacceptable (regardless of the license of the BLOB). This compromises
>> >> distribution transparency and may affect its review and certification,
>> >> if one is performed by Boost users. This also raises a security issue
>> >> since the executable may be compromised and contain malware.
>> >>
>> >> I consider vswhere a part of the toolchain. We do not distribute
>> >> toolchains in our releases, and we should not make an exception for
>> >> MSVC. If MS cannot supply this tool in VS installers or as an OS
>> update,
>> >> and we still want to use it, make it a precondition for the users to
>> >> install first and add a link to the Getting Started page. But please,
>> >> don't put BLOBs into the source distributions.
>> >
>> > +1
>> >
>> > (Perhaps install process can assume that, if needed, vswhere.exe exists
>> and in PATH.
>> >
>> > But if not found then produce an error message telling the user where
>> and how to install it in order to proceed).
>>
>> +1 Andrey's idea is very good
>>
>
> Given the choices:
>
> * Brittle BAT+Powershell+C# detection script dance.
> * Including vswhere in distribution.
> * Requiring vswhere preinstall (either by user or OS or VS2017).
>
> I'd also prefer for the last one. And it's essentially what I'm been
> pushing Microsoft to do for weeks now.
>

Scratch that.. I've now tried to make build changes to use the vswhere
tool. And it's useless. It has too many bugs. It tells you nothing about
specific msvc installs (ie cl.exe). It only tells you about the overall
VS2017 install. As far as I can tell, when one install multiple cl.exe-s
(as will be possible in some mythical future according to Microsoft) it
will not tell you about them individually. You still have to put it the
logic for guessing the individual versions by navigating the filesystem.
And if we are going to ask users to install this thing it's not worth it.
My recommendation...

We just ask users to run the bootstrap/build from the VS command prompt
which defines VS150COMNTOOLS. That way we can use the existing logic we
have for that. And the user doesn't have to install mystery executables.
When Microsoft fixes this mess we can support their fix.

Thoughts?

-- 
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk