Auto merge of #25365 - MeFisto94:autolaunch-vcvars, r=jdm

Launch vcvarsall.bat for the recognized VS Installation Directory from python instead of making mach.bat try that on hardcoded paths.

Move the Execution of vcvars (which sets up the environment for visual studio tools) from mach.bat to python, so that ./mach works under mozilla-build and that #25300 can be used.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #25360 #25336
- [X] These changes do not require tests because changes to build infra
This commit is contained in:
bors-servo 2020-03-23 20:55:25 -04:00 committed by GitHub
commit d1c76edecf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 57 deletions

View file

@ -1,65 +1,8 @@
@echo off @echo off
setlocal
if EXIST "%VCINSTALLDIR%" (
GOTO mach
)
pushd .
IF EXIST "%ProgramFiles(x86)%" (
set "ProgramFiles32=%ProgramFiles(x86)%"
) ELSE (
set "ProgramFiles32=%ProgramFiles%"
)
for %%v in (2019 2017) do (
for %%e in (Enterprise Professional Community BuildTools) do (
IF EXIST "%ProgramFiles32%\Microsoft Visual Studio\%%v\%%e\VC\Auxiliary\Build\vcvarsall.bat" (
set "VS_VCVARS=%ProgramFiles32%\Microsoft Visual Studio\%%v\%%e\VC\Auxiliary\Build\vcvarsall.bat"
GOTO vcvars
)
)
)
set VC14VARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat
IF EXIST "%VC14VARS%" (
set "VS_VCVARS=%VC14VARS%"
)
:vcvars
IF EXIST "%VS_VCVARS%" (
IF NOT DEFINED Platform (
IF EXIST "%ProgramFiles(x86)%" (
call "%VS_VCVARS%" x64
) ELSE (
ECHO 32-bit Windows is currently unsupported.
GOTO bad_exit
)
)
) ELSE (
ECHO Visual Studio 2015, 2017, or 2019 is not installed.
ECHO Download and install Visual Studio from https://www.visualstudio.com/
GOTO bad_exit
)
popd
:mach
where /Q py.exe where /Q py.exe
IF %ERRORLEVEL% NEQ 0 ( IF %ERRORLEVEL% NEQ 0 (
python mach %* python mach %*
) ELSE ( ) ELSE (
py -2 mach %* py -2 mach %*
) )
GOTO exit
:bad_exit
endlocal
EXIT /B 1
:exit
endlocal
exit /B

View file

@ -10,6 +10,7 @@
from __future__ import print_function, unicode_literals from __future__ import print_function, unicode_literals
import datetime import datetime
import locale
import os import os
import os.path as path import os.path as path
import platform import platform
@ -310,6 +311,16 @@ class MachCommands(CommandBase):
"lib", "pkgconfig" "lib", "pkgconfig"
) )
if 'windows' in host:
process = subprocess.Popen('("%s" %s > nul) && "python" -c "import os; print(repr(os.environ))"' %
(os.path.join(vs_dirs['vcdir'], "Auxiliary", "Build", "vcvarsall.bat"), "x64"),
stdout=subprocess.PIPE, shell=True)
stdout, _ = process.communicate()
exitcode = process.wait()
encoding = locale.getpreferredencoding() # See https://stackoverflow.com/a/9228117
if exitcode == 0:
os.environ.update(eval(stdout.decode(encoding)))
# Ensure that GStreamer libraries are accessible when linking. # Ensure that GStreamer libraries are accessible when linking.
if 'windows' in target_triple: if 'windows' in target_triple:
gst_root = gstreamer_root(target_triple, env) gst_root = gstreamer_root(target_triple, env)