Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from Mar 24, 2020
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -1,65 +1,8 @@
@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
IF %ERRORLEVEL% NEQ 0 (
python mach %*
) ELSE (
py -2 mach %*
)

GOTO exit

:bad_exit
endlocal
EXIT /B 1

:exit
endlocal
exit /B
@@ -10,6 +10,7 @@
from __future__ import print_function, unicode_literals

import datetime
import locale
import os
import os.path as path
import platform
@@ -318,6 +319,16 @@ def build(self, release=False, dev=False, jobs=None, params=None, media_stack=No
"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)))

This comment has been minimized.

Copy link
@Manishearth

Manishearth Apr 16, 2020

Member

Does this actually do anything? All of the calls below use env with the call, so os.environ doesn't actually get used. Am I missing something?

I have my VS installation on E: and this causes the build to be unable to find msvcrt.lib (and other core libs)


# Ensure that GStreamer libraries are accessible when linking.
if 'windows' in target_triple:
gst_root = gstreamer_root(target_triple, env)
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.