[Win] Use a bundled vswhere.exe instead of downloading by update-vswhere.py
authorHironori.Fujii@sony.com <Hironori.Fujii@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Apr 2019 00:08:34 +0000 (00:08 +0000)
committerHironori.Fujii@sony.com <Hironori.Fujii@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Apr 2019 00:08:34 +0000 (00:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=196760

Reviewed by Don Olmstead.

vswhere.exe has been bundled since Visual Studio 2017 version
15.2. We shouldn't download vswhere.exe.

* Scripts/build-jsc: Do not call update-vswhere.py.
* Scripts/build-webkit: Ditto.
* Scripts/update-vswhere.py: Removed.
* Scripts/webkitdirs.pm:
(requireModulesForVSWhere): Deleted.
(pickCurrentVisualStudioInstallation): Deleted.
(visualStudioInstallDirVSWhere): Return the latest installed VS
installation path by using the bundled vswhere.exe.
(setupCygwinEnv): Removed a unused variable $visualStudioPath.
(visualStudioInstallDirFallback): Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244171 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/build-jsc
Tools/Scripts/build-webkit
Tools/Scripts/update-vswhere.py [deleted file]
Tools/Scripts/webkitdirs.pm

index a1a89ea..76a566d 100644 (file)
@@ -1,3 +1,24 @@
+2019-04-10  Fujii Hironori  <Hironori.Fujii@sony.com>
+
+        [Win] Use a bundled vswhere.exe instead of downloading by update-vswhere.py
+        https://bugs.webkit.org/show_bug.cgi?id=196760
+
+        Reviewed by Don Olmstead.
+
+        vswhere.exe has been bundled since Visual Studio 2017 version
+        15.2. We shouldn't download vswhere.exe.
+
+        * Scripts/build-jsc: Do not call update-vswhere.py.
+        * Scripts/build-webkit: Ditto.
+        * Scripts/update-vswhere.py: Removed.
+        * Scripts/webkitdirs.pm:
+        (requireModulesForVSWhere): Deleted.
+        (pickCurrentVisualStudioInstallation): Deleted.
+        (visualStudioInstallDirVSWhere): Return the latest installed VS
+        installation path by using the bundled vswhere.exe.
+        (setupCygwinEnv): Removed a unused variable $visualStudioPath.
+        (visualStudioInstallDirFallback): Removed.
+
 2019-04-10  Aakash Jain  <aakash_jain@apple.com>
 
         [ews-build] PrintConfiguration should display Xcode version instead of SDKVersion
index 13e4d1a..0b3d0e3 100755 (executable)
@@ -125,7 +125,6 @@ if ($buildDir && !isCMakeBuild()) {
 
 if (isWinCairo() || (isJSCOnly() && isWindows())) {
     (system("python Tools/Scripts/update-webkit-wincairo-libs.py") == 0) or die;
-    system("python Tools/Scripts/update-vswhere.py");
 }
 
 checkRequiredSystemConfig();
index 8239674..9ecc41d 100755 (executable)
@@ -259,10 +259,6 @@ if (isAppleCocoaWebKit()) {
     setupAppleWinEnv()
 }
 
-if (isAnyWindows()) {
-    system("python Tools/Scripts/update-vswhere.py");
-}
-
 # If asked to build just the WebKit project, overwrite the projects
 # list after all of the port specific tweaks have been made to
 # build options, etc.
diff --git a/Tools/Scripts/update-vswhere.py b/Tools/Scripts/update-vswhere.py
deleted file mode 100644 (file)
index b2360f4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /usr/bin/env python
-#
-# Copyright (C) 2017 Sony Interactive Entertainment Inc.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1.  Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-# 2.  Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import importlib
-import sys
-import os
-import stat
-
-download = importlib.import_module('download-github-release')
-
-repo = 'Microsoft/vswhere'
-file = 'vswhere.exe'
-output = 'WebKitLibraries/win/tools'
-
-result = download.main(['-o', output, repo, file])
-
-if result == download.Status.COULD_NOT_FIND:
-    sys.exit(1)
-
-os.chmod(os.path.join(output, file), 0777)
index 3d597f2..e06025f 100755 (executable)
@@ -165,7 +165,6 @@ my $msBuildInstallDir;
 my $vsVersion;
 my $windowsSourceDir;
 my $winVersion;
-my $vsWhereFoundInstallation;
 
 # Defined in VCSUtils.
 sub exitStatus($);
@@ -646,47 +645,14 @@ sub programFilesPathX86
     return $programFilesPathX86;
 }
 
-sub requireModulesForVSWhere
-{
-    require Encode;
-    require Encode::Locale;
-    require JSON::PP;
-}
-
-sub pickCurrentVisualStudioInstallation
+sub visualStudioInstallDirVSWhere
 {
-    return $vsWhereFoundInstallation if defined $vsWhereFoundInstallation;
-
-    requireModulesForVSWhere();
-    determineSourceDir();
-
-    # Prefer Enterprise, then Professional, then Community, then
-    # anything else that provides MSBuild.
-    foreach my $productType ((
-        'Microsoft.VisualStudio.Product.Enterprise',
-        'Microsoft.VisualStudio.Product.Professional',
-        'Microsoft.VisualStudio.Product.Community',
-        undef
-    )) {
-        my $command = "$sourceDir/WebKitLibraries/win/tools/vswhere -nologo -latest -format json -requires Microsoft.Component.MSBuild";
-        if (defined $productType) {
-            $command .= " -products $productType";
-        }
-        my $vsWhereOut = `$command`;
-        my $installations = [];
-        eval {
-            $installations = JSON::PP::decode_json(Encode::encode('UTF-8' => Encode::decode(console_in => $vsWhereOut)));
-        };
-        print "Error getting Visual Studio Location: $@\n" if $@;
-        undef $@;
-
-        if (scalar @$installations) {
-            my $installation = $installations->[0];
-            $vsWhereFoundInstallation = $installation;
-            return $installation;
-        }
-    }
-    return undef;
+    my $vswhere = File::Spec->catdir(programFilesPathX86(), "Microsoft Visual Studio", "Installer", "vswhere.exe");
+    return unless -e $vswhere;
+    open(my $handle, "-|", $vswhere, qw(-nologo -latest -requires Microsoft.Component.MSBuild -property installationPath)) || return;
+    my $vsWhereOut = <$handle>;
+    $vsWhereOut =~ s/\r?\n//;
+    return $vsWhereOut;
 }
 
 sub visualStudioInstallDir
@@ -698,9 +664,7 @@ sub visualStudioInstallDir
         $vsInstallDir =~ s|[\\/]$||;
     } else {
         $vsInstallDir = visualStudioInstallDirVSWhere();
-        if (not -e $vsInstallDir) {
-            $vsInstallDir = visualStudioInstallDirFallback();
-        }
+        return unless defined $vsInstallDir;
     }
     chomp($vsInstallDir = `cygpath "$vsInstallDir"`) if isCygwin();
 
@@ -708,33 +672,6 @@ sub visualStudioInstallDir
     return $vsInstallDir;
 }
 
-sub visualStudioInstallDirVSWhere
-{
-    pickCurrentVisualStudioInstallation();
-    if (defined($vsWhereFoundInstallation)) {
-        return $vsWhereFoundInstallation->{installationPath};
-    }
-    return undef;
-}
-
-sub visualStudioInstallDirFallback
-{
-    foreach my $productType ((
-        'Enterprise',
-        'Professional',
-        'Community',
-    )) {
-        my $installdir = File::Spec->catdir(programFilesPathX86(),
-            "Microsoft Visual Studio", "2017", $productType);
-        my $msbuilddir = File::Spec->catdir($installdir,
-            "MSBuild", "15.0", "bin");
-        if (-e $installdir && -e $msbuilddir) {
-            return $installdir;
-        }
-    }
-    return undef;
-}
-
 sub msBuildInstallDir
 {
     return $msBuildInstallDir if defined $msBuildInstallDir;
@@ -1894,7 +1831,6 @@ sub setupCygwinEnv()
     return if $vcBuildPath;
 
     my $programFilesPath = programFilesPath();
-    my $visualStudioPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.com));
 
     print "Building results into: ", baseProductDir(), "\n";
     print "WEBKIT_OUTPUTDIR is set to: ", $ENV{"WEBKIT_OUTPUTDIR"}, "\n";