On Thu, 13 May 2021 19:11:26 GMT, John Neffenger <[email protected]> wrote:
>> John Neffenger has updated the pull request incrementally with one
>> additional commit since the last revision:
>>
>> Skip sending telemetry to fix "file in use" error
>
> I wrote a Bash shell script, included below, that can help in reviewing this
> pull request. It isolates the call to `vcvarsall.bat`, making it easier to
> experiment with different choices, such as:
>
> - leaving `VSCMD_SKIP_SENDTELEMETRY` undefined,
> - adding the `/q` option to `cmd`,
> - removing `2>&1` to use the default standard error, or
> - discarding standard output with `> /dev/null`.
>
>
> #!/bin/bash
> # Tests the Visual Studio 'vcvarsall.bat' batch file
> trap exit INT TERM
> set -o errexit
>
> # Path to 'vcvarsall.bat' batch file
> vsroot="C:\\Program Files (x86)\\Microsoft Visual Studio"
> vcfile="2019\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat"
> vcpath="$vsroot\$vcfile"
>
> # Windows command interpreter and options
> # /C Carries out the command specified by string and then terminates
> # /Q Turns echo off
> command="cmd /c"
>
> # Skips calling PowerShell script to send telemetry
> export VSCMD_SKIP_SENDTELEMETRY="1"
> printf "VSCMD_SKIP_SENDTELEMETRY="%s"\n" "$VSCMD_SKIP_SENDTELEMETRY"
>
> # VSCMD_DEBUG undefined
> unset VSCMD_DEBUG
> printf "Testing VSCMD_DEBUG="%s"\n" "$VSCMD_DEBUG"
> $command "$vcpath" x86 > 0-debug.log 2>&1
> $command "$vcpath" x64 >> 0-debug.log 2>&1
>
> # VSCMD_DEBUG = 1 (basic), 2 (detailed), and 3 (trace)
> for n in 1 2 3; do
> export VSCMD_DEBUG="$n"
> printf "Testing VSCMD_DEBUG="%s"\n" "$VSCMD_DEBUG"
> $command "$vcpath" x86 > $n-debug.log 2>&1
> $command "$vcpath" x64 >> $n-debug.log 2>&1
> done
>
>
> I run the script under Cygwin on Windows and evaluate its output as follows:
>
>
> $ ./vcvarstest.sh
> VSCMD_SKIP_SENDTELEMETRY="1"
> Testing VSCMD_DEBUG=""
> Testing VSCMD_DEBUG="1"
> Testing VSCMD_DEBUG="2"
> Testing VSCMD_DEBUG="3"
> $ wc -l *.log
> 10 0-debug.log
> 92 1-debug.log
> 508 2-debug.log
> 5690 3-debug.log
> 6300 total
> @jgneff, do you have an idea of what kind of errors would be better detected
> with these changes?
Thanks for trying it, Joeri. The intent is to make all such errors better
detected, but that can happen only when you run the build with `VSCMD_DEBUG=3`
and when you're able to find the errors in the log file.
Without `VSCMD_DEBUG=3`, the batch files discard the output and errors of each
`reg query` command, as shown below in the file `winsdk.bat`:
:GetWin10SdkDir
if "%VSCMD_DEBUG%" GEQ "3" goto :GetWin10SdkDirVerbose
call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node > nul 2>&1
In addition, it helps to have an idea what to look for in the log file because
not all errors are prefixed with something helpful like `ERROR`. In the test
that you ran, the following steps could lead you to the source of the problem:
$ export VSCMD_DEBUG=3
$ gradle sdk
︙
> FAIL: WINSDK_DIR not defined
︙
$ grep -A2 'reg query' build/vcvarsall.log
C:\cygwin64\home\john\src\jfx>for /F "tokens=1,2*" %i in
('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0"
-------------
PR: https://git.openjdk.java.net/jfx/pull/488