Re: SCons very slow on GitHub actions

Bill Deegan <[email protected]> Thu, 1 May 2025 10:48:42 -0700
Newsgroups gmane.comp.programming.tools.scons.user
Message-ID <CAEyG4CGMc7X-4BFbkU=Ocj_RNMnYhMJfZ4+6eyEHoHcQpvBBqQ@mail.gmail.com>
--===============6194468912158147105==
Content-Type: multipart/alternative; boundary="000000000000aa929a063416a5b8"

--000000000000aa929a063416a5b8
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Does GH Actions allow caching files between runs? If so a MSVC cache file
would be a good candidate.
Though you'd need to invalidate it when newer MSVC's are installed in the
GHA's VM..


On Thu, May 1, 2025 at 9:53=E2=80=AFAM Leonard de Ruijter <alderuijter@gmai=
l.com>
wrote:

> Dear Joseph,
>
>
> Thanks for your extensive breakdown of the process.
>
> I have tried running cvarsall64.bat outside scons. Invocation of that
> takes approximately 5 seconds. I tried running vswhere earlier but withou=
t
> arguments, that's definitely smooth enough.
>
>
> Initializing an environment with tools=3D[] is fast, with tools=3D["msvc"=
] is
> slow. So we at least know for sure what tool is causing the delay.
>
>
> Regards,
>
>
> Leonard
> On 5/1/2025 4:20 PM, Joseph C. Brill wrote:
>
> There are a significant number of IO reads of the OS drive file system fo=
r
> MSVC batch file invocations and SCons MSVC initialization.
>
>
>
> In general, modern MSVC batch file invocations are =E2=80=9Cexpensive=E2=
=80=9D.
>
>
>
> It wouldn=E2=80=99t hurt to add the following to your build environment:
>
>     set VSCMD_SKIP_SENDTELEMETRY=3D1
>
>
>
> If nothing else, this may skip a powershell invocation to setup sending
> telemetry.
>
>
>
> After a brief look at the SConstructs in the SCons example, OSARA, and
> NVDA projects, I believe that the number of MSVC batch file invocations o=
n
> an amd64 box for each is likely:
>
>    - 1: SCons example (0 default environments and 1 user environment)
>    - 2: OSARA (0 default environments and 2 user environments)
>    - 4: NVDA (1 default environment and 3 user environments)
>
>
>
> What follows is a high-level description of how MSVC is initialized.
> Errors are possible.  It may be easier to discuss in an SCons discussion.
>
>
>
> Simplified steps for MSVC initialization:
>
>    - Find the location of the vswhere executable
>    - Invoke vswhere
>    - For each version of MSVC detected:
>       - Check for the existence of a set of required compiler files
>    - For each Environment() unique combination of MSVC instance and
>    arguments:
>       - Call the MSVC batch file to configure environment
>
>
>
> Vswhere uses a =E2=80=9C%ProgramData%=E2=80=9D subdirectory  (OS drive) t=
o load the COM
> server and possibly read data.
>
>
>
> Calling the 2022 MSVC batch file to configure the environment entails
> (local configuration):
>
>    - 17 or more batch file invocations
>    - 1 vswhere.exe invocation
>    - 0 or 1 powershell invocations to setup telemetry (
>    "%VSCMD_SKIP_SENDTELEMETRY%"=3D=3D"")
>
>
>
> MSVC batch files may perform any of the following zero of more times:
>
>    - Check for the existence of directories and/or files
>    - Use the =E2=80=9Cwhere=E2=80=9D command to search the system path
>    - Query the registry
>    - Change directories (cd/push/pop)
>    - File read
>
>
>
> The MSVC batch file skeleton call sequence below is for an amd64 box with
> HOST_ARCH=3D=E2=80=9Damd64=E2=80=9D and TARGET_ARCH=3D=E2=80=9Damd64=E2=
=80=9D.
>
>
>
> C:\Program Files\Microsoft Visual
> Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat:
>
> =C2=B7         "%~dp0vcvarsall.bat" x64 %*
>
> o "%~dp0..\..\..\Common7\Tools\vsdevcmd.bat"
>
> =C2=A7  "%~dp0vsdevcmd\core\vsdevcmd_start.bat"
>
> =C2=B7         "%~dp0parse_cmd.bat" %*
>
> =C2=A7  vswhere.exe
>
> =C2=A7  "%VS170COMNTOOLS%VsDevCmd\core\dotnet.bat"
>
> =C2=B7         Reg queries
>
> =C2=A7  "%VS170COMNTOOLS%VsDevCmd\core\msbuild.bat"
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%VsDevCmd\core\winsdk.bat"
>
> =C2=B7         Reg queries
>
> =C2=B7         Paths existence
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\ConnectionManagerExe.bat"
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\diaghub.bat"
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\html_help.bat"
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\netfxsdk.bat"
>
> =C2=B7         Reg queries
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\perf_tools.bat"
>
> =C2=B7         Reg queries
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\roslyn.bat"
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\team_explorer.bat"
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\testwindow.bat"
>
> =C2=B7         Path existence
>
> =C2=B7         Where
>
> =C2=A7  "%VS170COMNTOOLS%vsdevcmd\ext\vcvars.bat"
>
> =C2=B7         Path existence
>
> =C2=B7         Dir contents
>
> =C2=B7         Where
>
> =C2=B7         File read
>
> =C2=A7  if "%VSCMD_SKIP_SENDTELEMETRY%"=3D=3D""
>
> =C2=B7         Powershell Send Telemetry
>
> =C2=A7  "%~dp0vsdevcmd\core\vsdevcmd_end.bat"
>
> =C2=B7         Possible directory changes
>
>
>
> _______________________________________________
> Scons-users mailing [email protected]://pairlist4.pair.net/m=
ailman/listinfo/scons-users
>
> _______________________________________________
> Scons-users mailing list
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>

--000000000000aa929a063416a5b8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Does GH Actions allow caching files between runs? If =
so a MSVC cache file would be a good candidate.</div><div>Though you&#39;d =
need to invalidate it when newer MSVC&#39;s are installed in the GHA&#39;s =
VM..</div><div><br></div></div><br><div class=3D"gmail_quote gmail_quote_co=
ntainer"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, May 1, 2025 at 9:53=
=E2=80=AFAM Leonard de Ruijter &lt;<a href=3D"mailto:[email protected]"=
>[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2=
04);padding-left:1ex"><u></u>

 =20
   =20
 =20
  <div>
    <p>Dear Joseph,</p>
    <p><br>
    </p>
    <p>Thanks for your extensive breakdown of the process.</p>
    <p>I have tried running cvarsall64.bat outside scons. Invocation of
      that takes approximately 5 seconds. I tried running vswhere
      earlier but without arguments, that&#39;s definitely smooth enough.</=
p>
    <p><br>
    </p>
    <p>Initializing an environment with tools=3D[] is fast, with
      tools=3D[&quot;msvc&quot;] is slow. So we at least know for sure what=
 tool is
      causing the delay. <br>
    </p>
    <p><br>
    </p>
    <p>Regards,</p>
    <p><br>
    </p>
    <p>Leonard</p>
    <div>On 5/1/2025 4:20 PM, Joseph C. Brill
      wrote:<br>
    </div>
    <blockquote type=3D"cite">
     =20
     =20
     =20
      <div>
        <p class=3D"MsoNormal">There are a significant number of IO reads
          of the OS drive file system for MSVC batch file invocations
          and SCons MSVC initialization.<u></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">In general, modern MSVC batch file
          invocations are =E2=80=9Cexpensive=E2=80=9D.<u></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">It wouldn=E2=80=99t hurt to add the followin=
g to
          your build environment:<u></u><u></u></p>
        <p class=3D"MsoNormal">=C2=A0=C2=A0=C2=A0 set <span style=3D"color:=
black">VSCMD_SKIP_SENDTELEMETRY=3D1</span><u></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">If nothing else, this may skip a powershell
          invocation to setup sending telemetry.<u></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">After a brief look at the SConstructs in
          the SCons example, OSARA, and NVDA projects, I believe that
          the number of MSVC batch file invocations on an amd64 box for
          each is likely:<u></u><u></u></p>
        <ul style=3D"margin-top:0in" type=3D"disc">
          <li style=3D"margin-left:0in">1: SCons
            example (0 default environments and 1 user environment)<u></u><=
u></u></li>
          <li style=3D"margin-left:0in">2: OSARA (0
            default environments and 2 user environments)<u></u><u></u></li=
>
          <li style=3D"margin-left:0in">4: NVDA (1
            default environment and 3 user environments) <u></u><u></u></li=
>
        </ul>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">What follows is a high-level description of
          how MSVC is initialized.=C2=A0 Errors are possible.=C2=A0 It may =
be
          easier to discuss in an SCons discussion.<u></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">Simplified steps for MSVC initialization:<u>=
</u><u></u></p>
        <ul style=3D"margin-top:0in" type=3D"disc">
          <li style=3D"margin-left:0in">Find the
            location of the vswhere executable<u></u><u></u></li>
          <li style=3D"margin-left:0in">Invoke
            vswhere<u></u><u></u></li>
          <li style=3D"margin-left:0in">For each
            version of MSVC detected:<u></u><u></u></li>
          <ul style=3D"margin-top:0in" type=3D"circle">
            <li style=3D"margin-left:0in">Check for
              the existence of a set of required compiler files<u></u><u></=
u></li>
          </ul>
          <li style=3D"margin-left:0in">For each
            Environment() unique combination of MSVC instance and
            arguments:<u></u><u></u></li>
          <ul style=3D"margin-top:0in" type=3D"circle">
            <li style=3D"margin-left:0in">Call the
              MSVC batch file to configure environment<u></u><u></u></li>
          </ul>
        </ul>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">Vswhere uses a =E2=80=9C%ProgramData%=E2=80=
=9D subdirectory
          =C2=A0(OS drive) to load the COM server and possibly read data.<u=
></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">Calling the 2022 MSVC batch file to
          configure the environment entails (local configuration):<u></u><u=
></u></p>
        <ul style=3D"margin-top:0in" type=3D"disc">
          <li style=3D"margin-left:0in">17 or more
            batch file invocations<u></u><u></u></li>
          <li style=3D"margin-left:0in">1
            vswhere.exe invocation<u></u><u></u></li>
          <li style=3D"margin-left:0in">0 or 1
            powershell invocations to setup telemetry (<span style=3D"color=
:black">&quot;%VSCMD_SKIP_SENDTELEMETRY%&quot;=3D=3D&quot;&quot;)</span><u>=
</u><u></u></li>
        </ul>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">MSVC batch files may perform any of the
          following zero of more times:<u></u><u></u></p>
        <ul style=3D"margin-top:0in" type=3D"disc">
          <li style=3D"margin-left:0in">Check for
            the existence of directories and/or files<u></u><u></u></li>
          <li style=3D"margin-left:0in">Use the
            =E2=80=9Cwhere=E2=80=9D command to search the system path<u></u=
><u></u></li>
          <li style=3D"margin-left:0in">Query the
            registry<u></u><u></u></li>
          <li style=3D"margin-left:0in">Change
            directories (cd/push/pop)<u></u><u></u></li>
          <li style=3D"margin-left:0in">File read<u></u><u></u></li>
        </ul>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">The MSVC batch file skeleton call sequence
          below is for an amd64 box with HOST_ARCH=3D=E2=80=9Damd64=E2=80=
=9D and
          TARGET_ARCH=3D=E2=80=9Damd64=E2=80=9D.<u></u><u></u></p>
        <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
        <p class=3D"MsoNormal">C:\Program Files\Microsoft Visual
          Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat:<u></u><u><=
/u></p>
        <p style=3D"margin-left:0.25in;background:white"><span style=3D"fon=
t-family:Symbol;color:black"><span>=C2=B7<span style=3D"font:7pt &quot;Time=
s New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
              </span></span></span><span style=3D"color:black">&quot;%~dp0v=
cvarsall.bat&quot;
            x64 %*<u></u><u></u></span></p>
        <pre style=3D"margin-left:0.75in;background:white"><span style=3D"f=
ont-size:12pt;color:black"><span>o<span style=3D"font:7pt &quot;Times New R=
oman&quot;"> </span></span></span><span style=3D"font-size:12pt;font-family=
:&quot;Aptos&quot;,sans-serif;color:black">&quot;%~dp0..\..\..\Common7\Tool=
s\vsdevcmd.bat&quot;<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%~dp0vsdevcmd\core\vsdevcmd_start.bat&quot;<u></u><u></u></span></pr=
e>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">&quot;%~dp0parse_cmd.bat&quot; %*<u=
></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>vswhere.exe<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%VsDevCmd\core\dotnet.bat&quot;<u></u><u></u></span><=
/pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Reg queries<u></u><u></u></span></p=
re>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%VsDevCmd\core\msbuild.bat&quot;<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%VsDevCmd\core\winsdk.bat&quot;<u></u><u></u></span><=
/pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Reg queries<u></u><u></u></span></p=
re>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Paths existence<u></u><u></u></span=
></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\ConnectionManagerExe.bat&quot;<u></u><u=
></u></span></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\diaghub.bat&quot;<u></u><u></u></span><=
/pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\html_help.bat&quot;<u></u><u></u></span=
></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\netfxsdk.bat&quot;<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Reg queries<u></u><u></u></span></p=
re>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\perf_tools.bat&quot;<u></u><u></u></spa=
n></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Reg queries<u></u><u></u></span></p=
re>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\roslyn.bat&quot;<u></u><u></u></span></=
pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\team_explorer.bat&quot;<u></u><u></u></=
span></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\testwindow.bat&quot;<u></u><u></u></spa=
n></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%VS170COMNTOOLS%vsdevcmd\ext\vcvars.bat&quot;<u></u><u></u></span></=
pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Path existence<u></u><u></u></span>=
</pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Dir contents<u></u><u></u></span></=
pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Where<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">File read<u></u><u></u></span></pre=
>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>if &quot;%VSCMD_SKIP_SENDTELEMETRY%&quot;=3D=3D&quot;&quot;<u></u><u></u><=
/span></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Powershell Send Telemetry<u></u><u>=
</u></span></pre>
        <pre style=3D"margin-left:1.25in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Wingdings;color:black"><span>=C2=A7<span style=3D=
"font:7pt &quot;Times New Roman&quot;">=C2=A0 </span></span></span><span st=
yle=3D"font-size:12pt;font-family:&quot;Aptos&quot;,sans-serif;color:black"=
>&quot;%~dp0vsdevcmd\core\vsdevcmd_end.bat&quot;<u></u><u></u></span></pre>
        <pre style=3D"margin-left:1.75in;background:white"><span style=3D"f=
ont-size:12pt;font-family:Symbol;color:black"><span>=C2=B7<span style=3D"fo=
nt:7pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 </span></span></span><span style=3D"font-size:12pt;font-family:&q=
uot;Aptos&quot;,sans-serif;color:black">Possible directory changes<u></u><u=
></u></span></pre>
        <p class=3D"MsoNormal"><span style=3D"font-size:11pt"><u></u>=C2=A0=
<u></u></span></p>
      </div>
      <br>
      <fieldset></fieldset>
      <pre>_______________________________________________
Scons-users mailing list
<a href=3D"mailto:[email protected]" target=3D"_blank">Scons-users@scon=
s.org</a>
<a href=3D"https://pairlist4.pair.net/mailman/listinfo/scons-users" target=
=3D"_blank">https://pairlist4.pair.net/mailman/listinfo/scons-users</a>
</pre>
    </blockquote>
  </div>

_______________________________________________<br>
Scons-users mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">Scons-users@scon=
s.org</a><br>
<a href=3D"https://pairlist4.pair.net/mailman/listinfo/scons-users" rel=3D"=
noreferrer" target=3D"_blank">https://pairlist4.pair.net/mailman/listinfo/s=
cons-users</a><br>
</blockquote></div>

--000000000000aa929a063416a5b8--

--===============6194468912158147105==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users

--===============6194468912158147105==--