Re: [Scons-users] SCons 4.0.0 Released

Bill Deegan <bill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org> Sat, 4 Jul 2020 21:47:56 -0700
Newsgroups gmane.comp.programming.tools.scons.devel
Message-ID <CAEyG4CF+-Nhx8dFOk5gt2W-bCZWAwOVPHHnhu50NF=N5Ah8U=Q__10693.1176896737$1593924835$gmane$org@mail.gmail.com>
--===============1878646627967962359==
Content-Type: multipart/alternative; boundary="000000000000e7a07f05a9aa763c"

--000000000000e7a07f05a9aa763c
Content-Type: text/plain; charset="UTF-8"

Eric,

Try pip install SCons==4.0
Does that make a difference?

Packaging has been completely rewritten for 4.0.0 so I'm not surprised
there's an issue or two in the field.
(the previous code was written before there was a pip... ;) and then
duct-taped and bailing wired.. so it needed a rewrite)

Ahh. Interesting because windows is case insensitive..

Please file an Issue.

Hoping to take a break tomorrow and I'll look at it on monday.. unless
someone else feels like taking a wack at fixing that.. ;)

-Bill

On Sat, Jul 4, 2020 at 7:41 PM Eric Fahlgren <[email protected]> wrote:

> First, Bill and Mats and everyone else, thanks for your continued
> development of SCons!
>
> I ran into a strange, probably Windows-specific issue upon installing
> 4.0.0.  I simply did "pip install scons==4.0.0" without issue, but when I
> ran "scons some_target", I got this:
>
> Traceback (most recent call last):
>   File "c:\program files\python38\lib\runpy.py", line 194, in
> _run_module_as_main
>     return _run_code(code, main_globals, None,
>   File "c:\program files\python38\lib\runpy.py", line 87, in _run_code
>     exec(code, run_globals)
>   File "C:\Program Files\Python38\Scripts\scons.exe\__main__.py", line 4,
> in <module>
>     SCons.Script.main()
> ModuleNotFoundError: No module named 'SCons'
>
> It turns out that pip didn't name the installation directory
> "site-packages/*SCons*", but rather all-lower-case "site-packages/*scons*"
> (as it was with 3.1.2), so none of the run commands, scripts or tools will
> load.  I did "pip uninstall -y scons", made sure Lib/site-packages was
> clean, reinstalled 4.0.0 and everything was fine.  It appears that pip is
> not removing the old installation completely and leaving the top-level
> directory there with improper character case, but only when it does an
> "install over old".  I reproduced this a couple times, reinstalling 3.1 and
> then 4.0 over it to confirm.
>
> On Sat, Jul 4, 2020 at 3:57 PM Bill Deegan <bill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org>
> wrote:
>
>>   A new SCons release, 4.0.0, is now available
>>   on the SCons download page:
>>
>>           https://scons.org/pages/download.html
>>
>>   Here is a summary of the changes since 3.1.2:
>>
>>   NEW FUNCTIONALITY
>>
>>     - Added support for scanning multiple entries in an action string if
>>       IMPLICIT_COMMAND_DEPENDENCIES is set to 2 or 'all'. This enables
>> more thorough
>>       action scanning where every item in each command line is scanned to
>> determine
>>       if it is a non-source and non-target path and added to the list of
>> implicit dependencies
>>       for the target.
>>     - Added new module SCons.Scanner.Python to allow scanning .py files.
>>     - Added support for explicitly passing a name when creating Value()
>> nodes. This may be useful
>>       when the value can't be converted to a string or if having a name
>> is otherwise desirable.
>>     - Added a new flag called "linedraw" for the command line argument
>>  "--tree"
>>       that instructs scons to use single line drawing characters to draw
>> the dependency tree.
>>     - Add CompilationDatabase() builder in compilation_db tool.
>> Contributed by MongoDB.
>>       Setting COMPILATIONDB_USE_ABSPATH to True|False controls whether
>> the files are absolute or relative
>>       paths.  Address Issue #3693 and #3694 found during development.
>>     - Extended `Environment.Dump()` to select a format to serialize
>> construction variables (pretty, json).
>>     - New conditional C Scanner (`SCons.Scanner.C.CConditionalScanner()`)
>>       which interprets C/C Preprocessor conditional syntax (#ifdef, #if,
>> #else,
>>       #elif, #define, etc.)
>>     - Experimental New Feature: Enable caching MSVC configuration
>>       If SCONS_CACHE_MSVC_CONFIG shell environment variable is set,
>>       SCons will cache the results of past calls to vcvarsall.bat to
>>       a file; integrates with existing memoizing of such vars.
>>     - Preliminary Python 3.9 support.
>>
>>   DEPRECATED FUNCTIONALITY
>>
>>     - Drop support for Python 2.7. SCons will be Python 3.5+ going
>> forward.
>>     - Remove deprecated SourceCode()
>>
>>   CHANGED/ENHANCED EXISTING FUNCTIONALITY
>>
>>     - Added check for SONAME in environment to setup symlinks correctly
>> (Github Issue #3246)
>>     - Resolve Issue #3248 - Removing '-Wl,-Bsymbolic' from
>> SHLIBVERSIONFLAGS
>>       NOTE: If your build depends on the above you must now add to your
>> SHLIBVERSIONFLAGS
>>     - Microsoft Visual Studio - switch to using uuid module to generate
>> GUIDs rather than hand rolled
>>       method using md5 directly.
>>       NOTE: This change affects the following builders' output. If your
>> build depends on the output of these builders
>>       you will likely see a rebuild.
>>       * Package() (with PACKAGETYPE='msi')
>>       * MSVSSolution()
>>       * MSVSProject()
>>     - Improve Visual Studio solution/project generation code to add
>> support
>>       for a per-variant cppflags. Intellisense can be affected by
>> cppflags,
>>       this is especially important when it comes to /std:c++* which
>> specifies
>>       what C++ standard version to target. SCons will append
>> /Zc:__cplusplus
>>       to the project's cppflags when a /std:c++* flag is found as this is
>>       required for intellisense to use the C++ standard version from
>> cppflags.
>>     - Allow user specified location for vswhere.exe specified by VSWHERE.
>>       NOTE: This must be set at the time the 'msvc' 'msvs' and/or
>> 'mslink' tool(s) are initialized to have any effect.
>>     - Fixed Github Issue 3628 - Hardcoding pickle protocol to 4 (supports
>> python 3.4+)
>>       and skipping Python 3.8's new pickle protocol 5 whose main
>> advantage is for out-of-band data buffers.
>>       NOTE: If you used Python 3.8 with SCons 3.0.0 or above, you may get
>> a a pickle protocol error. Remove your
>>       .sconsign.dblite. You will end up with a full rebuild.
>>     - MSVC updates: When there are multiple product installations (e.g,
>> Community and
>>       Build Tools) of MSVC 2017 or MSVC 2019, an Enterprise, Professional,
>>       or Community installation will be selected before a Build Tools
>> installation when
>>       "14.1" or "14.2" is requested, respectively. (GH Issue #3699).
>>     - MSVC updates: When there are multiple product installations of MSVC
>> 2017 (e.g.,
>>       Community and Express), 2017 Express is no longer returned when
>> "14.1" is
>>       requested.  Only 2017 Express will be returned when "14.1Exp" is
>> requested.
>>       (GH Issue #3699).
>>     - MSVC updates: pass on VSCMD_DEBUG and VSCMD_SKIP_SENDTELEMETRY to
>> msvc
>>       tool setup if set in environment. Add Powershell to default env
>>       (used to call telemetry script).
>>     - Renamed as.py to asm.py and left redirecting tool.  'as' is a
>> reserved word and so
>>       changing the name was required as we wanted to import symbols for
>> use in compilation_db
>>       tool.
>>     - Add no_progress (-Q) option as a set-able option. However, setting
>> it in the
>>       SConstruct/SConscript will still cause "scons: Reading SConscript
>> files ..." to be
>>       printed, since the option is not set when the build scripts first
>> get read.
>>     - Docbook builder provides a fallback if lxml fails to generate
>>       a document with tostring().
>>     - SubstitutionEnvironment and OverrideEnvironment now have keys()
>>       and values() methods to better emulate a dict (already had items()).
>>
>>   FIXES
>>
>>     - Cleanup dangling symlinks before running builders (Issue #3516)
>>     - Fixed usage of abspath and path for RootDir objects on Windows.
>> Previously
>>       env.fs.Dir("T:").abspath would return "T:\T:" and now it correctly
>> returns "T:".
>>     - Fix Issue #3469 - Fixed improper reuse of temporary and compiled
>> files by Configure when changing
>>       the order and/or number of tests.  This is done by using the hash
>> of the generated temporary files
>>       content and (For the target files) the hash of the action.
>>       So where previously files would be named:
>>       - config_1.c, config_1.o, config_1
>>       The will now be named (For example)
>>       - conftest_68b375d16e812c43e6d72d6e93401e7c_0.c,
>>
>> conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187.o
>>         or
>>         conftest_68b375d16e812c43e6d72d6e93401e7c_0.o
>>
>> conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187
>> (for executable)
>>     - Updated documentation toolchain to work properly under Python3, also
>>       removed libxslt support from the Docbook Tool. (issue #3580)
>>     - Fix broken clang + MSVC 2019 combination by using MSVC
>> configuration logic to
>>       propagate 'VCINSTALLDIR' and 'VCToolsInstallDir' which clang tools
>> use to locate
>>       header files and libraries from MSVC install. (Fixes GH Issue #3480)
>>     - Fix Github Issue #2904 - Provide useful error message when more
>> than one Configure Contexts are opened.
>>       Only one open is allowed. You must call conf.Finish() to complete
>> the currently open one before creating another
>>
>>   IMPROVEMENTS
>>
>>     - Improve performance of Subst by preventing unnecessary frame
>>       allocations by no longer defining the *Subber classes inside of
>> their
>>       respective function calls.
>>     - Improve performance of Subst in some cases by preventing
>>       unnecessary calls to eval when a token is surrounded in braces
>>       but is not a function call.
>>     - Improve performance of subst by removing unnecessary recursion.
>>
>>   PACKAGING
>>
>>     - Resolve Issue #3451 and Issue #3450 - Rewrite SCons setup.py and
>> packaging. Move script logic to entry points so
>>       package can create scripts which use the correct version of Python.
>>
>>   DOCUMENTATION
>>
>>     - Significant rework of documentation: API docs are now generated
>>       using Sphinx; manpage and user guide now use more "standard"
>>       markup elements (which could facilitate later conversion to a
>>       different doc format, should that choice be made); significant
>>       rewordings in manpage.  Manpage Examples moved to an external
>>       repository / website (scons-cookbook.readthedocs.io).
>>
>>   Thanks to the following contributors listed below for their
>> contributions to this release.
>>
>> git shortlog --no-merges -ns 3.1.2..HEAD
>>    290  William Deegan
>>    184  Mats Wichmann
>>     46  Adam Gross
>>     22  Daniel Moody
>>     16  Joseph Brill
>>     15  Dirk Baechle
>>     12  Ivan Kravets
>>      9  Mathew Robinson
>>      6  Paul Tipei
>>      1  Rob Boehne
>>      1  Robert Boehne
>>      1  Daniel
>>      1  Andrew Morrow
>>      1  Iosif Daniel Kurazs
>>      1  James Benton
>>      1  Jeremy Elson
>>      1  Konstantin Gonchar
>>      1  Andrii Doroshenko (Xrayez)
>> _______________________________________________
>> Scons-users mailing list
>> [email protected]
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
> _______________________________________________
> Scons-dev mailing list
> [email protected]
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>

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

<div dir=3D"ltr"><div>Eric,</div><div><br></div><div>Try pip install SCons=
=3D=3D4.0</div><div>Does that make a difference?</div><div><br></div><div>P=
ackaging has been completely rewritten for 4.0.0 so I&#39;m not surprised t=
here&#39;s an issue or two in the field.</div><div>(the previous code was w=
ritten before there was a pip... ;) and then duct-taped and bailing wired..=
 so it needed a rewrite)<br></div><div><br></div><div>Ahh. Interesting beca=
use windows is case insensitive..</div><div><br></div><div>Please file an I=
ssue.</div><div><br></div><div>Hoping to take a break tomorrow and I&#39;ll=
 look at it on monday.. unless someone else feels like taking a wack at fix=
ing that.. ;)</div><div><br></div><div>-Bill<br></div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jul 4, 2020 =
at 7:41 PM Eric Fahlgren &lt;<a href=3D"mailto:[email protected]">eric=
[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote=
" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);=
padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fo=
nt-family:arial,sans-serif;color:rgb(0,0,0)">First, Bill and Mats and every=
one else, thanks for your continued development of SCons!</div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;color:rgb(0,0,0)">=
<br></div><div class=3D"gmail_default" style=3D"font-family:arial,sans-seri=
f;color:rgb(0,0,0)">I ran into a strange, probably Windows-specific issue u=
pon installing 4.0.0.=C2=A0 I simply did &quot;pip install scons=3D=3D4.0.0=
&quot; without issue, but when I ran &quot;scons some_target&quot;, I got t=
his:</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-seri=
f;color:rgb(0,0,0)"><br></div><div class=3D"gmail_default" style=3D"font-fa=
mily:arial,sans-serif;color:rgb(0,0,0)">Traceback (most recent call last):<=
br>=C2=A0 File &quot;c:\program files\python38\lib\runpy.py&quot;, line 194=
, in _run_module_as_main<br>=C2=A0 =C2=A0 return _run_code(code, main_globa=
ls, None,<br>=C2=A0 File &quot;c:\program files\python38\lib\runpy.py&quot;=
, line 87, in _run_code<br>=C2=A0 =C2=A0 exec(code, run_globals)<br>=C2=A0 =
File &quot;C:\Program Files\Python38\Scripts\scons.exe\__main__.py&quot;, l=
ine 4, in &lt;module&gt;<br>=C2=A0 =C2=A0 SCons.Script.main()<br>ModuleNotF=
oundError: No module named &#39;SCons&#39;</div><div class=3D"gmail_default=
" style=3D"font-family:arial,sans-serif;color:rgb(0,0,0)"><br></div><div cl=
ass=3D"gmail_default" style=3D"font-family:arial,sans-serif;color:rgb(0,0,0=
)">It turns out that pip didn&#39;t name the installation directory &quot;s=
ite-packages/<b>SCons</b>&quot;, but rather all-lower-case &quot;site-packa=
ges/<b>scons</b>&quot; (as it was with 3.1.2), so none of the run commands,=
 scripts or tools will load.=C2=A0 I did &quot;pip uninstall -y scons&quot;=
, made sure Lib/site-packages was clean, reinstalled 4.0.0 and everything w=
as fine.=C2=A0 It appears that pip is not removing the old installation com=
pletely and leaving the top-level directory there with improper character c=
ase, but only when it does an &quot;install over old&quot;.=C2=A0 I reprodu=
ced this a couple times, reinstalling 3.1 and then 4.0 over it to confirm.<=
br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gma=
il_attr">On Sat, Jul 4, 2020 at 3:57 PM Bill Deegan &lt;<a href=3D"mailto:b=
ill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org" target=3D"_blank">bill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div d=
ir=3D"ltr">=C2=A0 A new SCons release, 4.0.0, is now available<br>=C2=A0 on=
 the SCons download page:<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=
=3D"https://scons.org/pages/download.html" target=3D"_blank">https://scons.=
org/pages/download.html</a><br><br>=C2=A0 Here is a summary of the changes =
since 3.1.2:<br><br>=C2=A0 NEW FUNCTIONALITY<br><br>=C2=A0 =C2=A0 - Added s=
upport for scanning multiple entries in an action string if<br>=C2=A0 =C2=
=A0 =C2=A0 IMPLICIT_COMMAND_DEPENDENCIES is set to 2 or &#39;all&#39;. This=
 enables more thorough<br>=C2=A0 =C2=A0 =C2=A0 action scanning where every =
item in each command line is scanned to determine<br>=C2=A0 =C2=A0 =C2=A0 i=
f it is a non-source and non-target path and added to the list of implicit =
dependencies<br>=C2=A0 =C2=A0 =C2=A0 for the target.<br>=C2=A0 =C2=A0 - Add=
ed new module SCons.Scanner.Python to allow scanning .py files.<br>=C2=A0 =
=C2=A0 - Added support for explicitly passing a name when creating Value() =
nodes. This may be useful<br>=C2=A0 =C2=A0 =C2=A0 when the value can&#39;t =
be converted to a string or if having a name is otherwise desirable.<br>=C2=
=A0 =C2=A0 - Added a new flag called &quot;linedraw&quot; for the command l=
ine argument =C2=A0&quot;--tree&quot;<br>=C2=A0 =C2=A0 =C2=A0 that instruct=
s scons to use single line drawing characters to draw the dependency tree.<=
br>=C2=A0 =C2=A0 - Add CompilationDatabase() builder in compilation_db tool=
. Contributed by MongoDB.<br>=C2=A0 =C2=A0 =C2=A0 Setting COMPILATIONDB_USE=
_ABSPATH to True|False controls whether the files are absolute or relative<=
br>=C2=A0 =C2=A0 =C2=A0 paths.=C2=A0 Address Issue #3693 and #3694 found du=
ring development.<br>=C2=A0 =C2=A0 - Extended `Environment.Dump()` to selec=
t a format to serialize construction variables (pretty, json).<br>=C2=A0 =
=C2=A0 - New conditional C Scanner (`SCons.Scanner.C.CConditionalScanner()`=
)<br>=C2=A0 =C2=A0 =C2=A0 which interprets C/C Preprocessor conditional syn=
tax (#ifdef, #if, #else,<br>=C2=A0 =C2=A0 =C2=A0 #elif, #define, etc.)<br>=
=C2=A0 =C2=A0 - Experimental New Feature: Enable caching MSVC configuration=
<br>=C2=A0 =C2=A0 =C2=A0 If SCONS_CACHE_MSVC_CONFIG shell environment varia=
ble is set,<br>=C2=A0 =C2=A0 =C2=A0 SCons will cache the results of past ca=
lls to vcvarsall.bat to<br>=C2=A0 =C2=A0 =C2=A0 a file; integrates with exi=
sting memoizing of such vars.<br>=C2=A0 =C2=A0 - Preliminary Python 3.9 sup=
port.<br><br>=C2=A0 DEPRECATED FUNCTIONALITY<br><br>=C2=A0 =C2=A0 - Drop su=
pport for Python 2.7. SCons will be Python 3.5+ going forward.<br>=C2=A0 =
=C2=A0 - Remove deprecated SourceCode()<br><br>=C2=A0 CHANGED/ENHANCED EXIS=
TING FUNCTIONALITY<br><br>=C2=A0 =C2=A0 - Added check for SONAME in environ=
ment to setup symlinks correctly (Github Issue #3246)<br>=C2=A0 =C2=A0 - Re=
solve Issue #3248 - Removing &#39;-Wl,-Bsymbolic&#39; from SHLIBVERSIONFLAG=
S<br>=C2=A0 =C2=A0 =C2=A0 NOTE: If your build depends on the above you must=
 now add to your SHLIBVERSIONFLAGS<br>=C2=A0 =C2=A0 - Microsoft Visual Stud=
io - switch to using uuid module to generate GUIDs rather than hand rolled<=
br>=C2=A0 =C2=A0 =C2=A0 method using md5 directly.<br>=C2=A0 =C2=A0 =C2=A0 =
NOTE: This change affects the following builders&#39; output. If your build=
 depends on the output of these builders<br>=C2=A0 =C2=A0 =C2=A0 you will l=
ikely see a rebuild.<br>=C2=A0 =C2=A0 =C2=A0 * Package() (with PACKAGETYPE=
=3D&#39;msi&#39;)<br>=C2=A0 =C2=A0 =C2=A0 * MSVSSolution()<br>=C2=A0 =C2=A0=
 =C2=A0 * MSVSProject()<br>=C2=A0 =C2=A0 - Improve Visual Studio solution/p=
roject generation code to add support<br>=C2=A0 =C2=A0 =C2=A0 for a per-var=
iant cppflags. Intellisense can be affected by cppflags,<br>=C2=A0 =C2=A0 =
=C2=A0 this is especially important when it comes to /std:c++* which specif=
ies<br>=C2=A0 =C2=A0 =C2=A0 what C++ standard version to target. SCons will=
 append /Zc:__cplusplus<br>=C2=A0 =C2=A0 =C2=A0 to the project&#39;s cppfla=
gs when a /std:c++* flag is found as this is<br>=C2=A0 =C2=A0 =C2=A0 requir=
ed for intellisense to use the C++ standard version from cppflags.<br>=C2=
=A0 =C2=A0 - Allow user specified location for vswhere.exe specified by VSW=
HERE.<br>=C2=A0 =C2=A0 =C2=A0 NOTE: This must be set at the time the &#39;m=
svc&#39; &#39;msvs&#39; and/or &#39;mslink&#39; tool(s) are initialized to =
have any effect.<br>=C2=A0 =C2=A0 - Fixed Github Issue 3628 - Hardcoding pi=
ckle protocol to 4 (supports python 3.4+)<br>=C2=A0 =C2=A0 =C2=A0 and skipp=
ing Python 3.8&#39;s new pickle protocol 5 whose main advantage is for out-=
of-band data buffers.<br>=C2=A0 =C2=A0 =C2=A0 NOTE: If you used Python 3.8 =
with SCons 3.0.0 or above, you may get a a pickle protocol error. Remove yo=
ur<br>=C2=A0 =C2=A0 =C2=A0 .sconsign.dblite. You will end up with a full re=
build.<br>=C2=A0 =C2=A0 - MSVC updates: When there are multiple product ins=
tallations (e.g, Community and<br>=C2=A0 =C2=A0 =C2=A0 Build Tools) of MSVC=
 2017 or MSVC 2019, an Enterprise, Professional,<br>=C2=A0 =C2=A0 =C2=A0 or=
 Community installation will be selected before a Build Tools installation =
when<br>=C2=A0 =C2=A0 =C2=A0 &quot;14.1&quot; or &quot;14.2&quot; is reques=
ted, respectively. (GH Issue #3699).<br>=C2=A0 =C2=A0 - MSVC updates: When =
there are multiple product installations of MSVC 2017 (e.g.,<br>=C2=A0 =C2=
=A0 =C2=A0 Community and Express), 2017 Express is no longer returned when =
&quot;14.1&quot; is<br>=C2=A0 =C2=A0 =C2=A0 requested.=C2=A0 Only 2017 Expr=
ess will be returned when &quot;14.1Exp&quot; is requested.<br>=C2=A0 =C2=
=A0 =C2=A0 (GH Issue #3699).<br>=C2=A0 =C2=A0 - MSVC updates: pass on VSCMD=
_DEBUG and VSCMD_SKIP_SENDTELEMETRY to msvc<br>=C2=A0 =C2=A0 =C2=A0 tool se=
tup if set in environment. Add Powershell to default env<br>=C2=A0 =C2=A0 =
=C2=A0 (used to call telemetry script).<br>=C2=A0 =C2=A0 - Renamed as.py to=
 asm.py and left redirecting tool. =C2=A0&#39;as&#39; is a reserved word an=
d so<br>=C2=A0 =C2=A0 =C2=A0 changing the name was required as we wanted to=
 import symbols for use in compilation_db<br>=C2=A0 =C2=A0 =C2=A0 tool.<br>=
=C2=A0 =C2=A0 - Add no_progress (-Q) option as a set-able option. However, =
setting it in the<br>=C2=A0 =C2=A0 =C2=A0 SConstruct/SConscript will still =
cause &quot;scons: Reading SConscript files ...&quot; to be<br>=C2=A0 =C2=
=A0 =C2=A0 printed, since the option is not set when the build scripts firs=
t get read.<br>=C2=A0 =C2=A0 - Docbook builder provides a fallback if lxml =
fails to generate<br>=C2=A0 =C2=A0 =C2=A0 a document with tostring().<br>=
=C2=A0 =C2=A0 - SubstitutionEnvironment and OverrideEnvironment now have ke=
ys()<br>=C2=A0 =C2=A0 =C2=A0 and values() methods to better emulate a dict =
(already had items()).<br><br>=C2=A0 FIXES<br><br>=C2=A0 =C2=A0 - Cleanup d=
angling symlinks before running builders (Issue #3516)<br>=C2=A0 =C2=A0 - F=
ixed usage of abspath and path for RootDir objects on Windows. Previously<b=
r>=C2=A0 =C2=A0 =C2=A0 env.fs.Dir(&quot;T:&quot;).abspath would return &quo=
t;T:\T:&quot; and now it correctly returns &quot;T:&quot;.<br>=C2=A0 =C2=A0=
 - Fix Issue #3469 - Fixed improper reuse of temporary and compiled files b=
y Configure when changing<br>=C2=A0 =C2=A0 =C2=A0 the order and/or number o=
f tests.=C2=A0 This is done by using the hash of the generated temporary fi=
les<br>=C2=A0 =C2=A0 =C2=A0 content and (For the target files) the hash of =
the action.<br>=C2=A0 =C2=A0 =C2=A0 So where previously files would be name=
d:<br>=C2=A0 =C2=A0 =C2=A0 - config_1.c, config_1.o, config_1<br>=C2=A0 =C2=
=A0 =C2=A0 The will now be named (For example)<br>=C2=A0 =C2=A0 =C2=A0 - co=
nftest_68b375d16e812c43e6d72d6e93401e7c_0.c,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f1=
87.o<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 or<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 conft=
est_68b375d16e812c43e6d72d6e93401e7c_0.o<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 con=
ftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187 (=
for executable)<br>=C2=A0 =C2=A0 - Updated documentation toolchain to work =
properly under Python3, also<br>=C2=A0 =C2=A0 =C2=A0 removed libxslt suppor=
t from the Docbook Tool. (issue #3580)<br>=C2=A0 =C2=A0 - Fix broken clang =
+ MSVC 2019 combination by using MSVC configuration logic to<br>=C2=A0 =C2=
=A0 =C2=A0 propagate &#39;VCINSTALLDIR&#39; and &#39;VCToolsInstallDir&#39;=
 which clang tools use to locate<br>=C2=A0 =C2=A0 =C2=A0 header files and l=
ibraries from MSVC install. (Fixes GH Issue #3480)<br>=C2=A0 =C2=A0 - Fix G=
ithub Issue #2904 - Provide useful error message when more than one Configu=
re Contexts are opened.<br>=C2=A0 =C2=A0 =C2=A0 Only one open is allowed. Y=
ou must call conf.Finish() to complete the currently open one before creati=
ng another<br><br>=C2=A0 IMPROVEMENTS<br><br>=C2=A0 =C2=A0 - Improve perfor=
mance of Subst by preventing unnecessary frame<br>=C2=A0 =C2=A0 =C2=A0 allo=
cations by no longer defining the *Subber classes inside of their<br>=C2=A0=
 =C2=A0 =C2=A0 respective function calls.<br>=C2=A0 =C2=A0 - Improve perfor=
mance of Subst in some cases by preventing<br>=C2=A0 =C2=A0 =C2=A0 unnecess=
ary calls to eval when a token is surrounded in braces<br>=C2=A0 =C2=A0 =C2=
=A0 but is not a function call.<br>=C2=A0 =C2=A0 - Improve performance of s=
ubst by removing unnecessary recursion.<br><br>=C2=A0 PACKAGING<br><br>=C2=
=A0 =C2=A0 - Resolve Issue #3451 and Issue #3450 - Rewrite SCons setup.py a=
nd packaging. Move script logic to entry points so<br>=C2=A0 =C2=A0 =C2=A0 =
package can create scripts which use the correct version of Python.<br><br>=
=C2=A0 DOCUMENTATION<br><br>=C2=A0 =C2=A0 - Significant rework of documenta=
tion: API docs are now generated<br>=C2=A0 =C2=A0 =C2=A0 using Sphinx; manp=
age and user guide now use more &quot;standard&quot;<br>=C2=A0 =C2=A0 =C2=
=A0 markup elements (which could facilitate later conversion to a<br>=C2=A0=
 =C2=A0 =C2=A0 different doc format, should that choice be made); significa=
nt<br>=C2=A0 =C2=A0 =C2=A0 rewordings in manpage.=C2=A0 Manpage Examples mo=
ved to an external<br>=C2=A0 =C2=A0 =C2=A0 repository / website (<a href=3D=
"http://scons-cookbook.readthedocs.io" target=3D"_blank">scons-cookbook.rea=
dthedocs.io</a>).<br><br>=C2=A0 Thanks to the following contributors listed=
 below for their contributions to this release.<br><br>git shortlog --no-me=
rges -ns 3.1.2..HEAD<br>=C2=A0 =C2=A0290 =C2=A0William Deegan<br>=C2=A0 =C2=
=A0184 =C2=A0Mats Wichmann<br>=C2=A0 =C2=A0 46 =C2=A0Adam Gross<br>=C2=A0 =
=C2=A0 22 =C2=A0Daniel Moody<br>=C2=A0 =C2=A0 16 =C2=A0Joseph Brill<br>=C2=
=A0 =C2=A0 15 =C2=A0Dirk Baechle<br>=C2=A0 =C2=A0 12 =C2=A0Ivan Kravets<br>=
=C2=A0 =C2=A0 =C2=A09 =C2=A0Mathew Robinson<br>=C2=A0 =C2=A0 =C2=A06 =C2=A0=
Paul Tipei<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0Rob Boehne<br>=C2=A0 =C2=A0 =C2=
=A01 =C2=A0Robert Boehne<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0Daniel<br>=C2=A0 =
=C2=A0 =C2=A01 =C2=A0Andrew Morrow<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0Iosif Dan=
iel Kurazs<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0James Benton<br>=C2=A0 =C2=A0 =C2=
=A01 =C2=A0Jeremy Elson<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0Konstantin Gonchar<b=
r>=C2=A0 =C2=A0 =C2=A01 =C2=A0Andrii Doroshenko (Xrayez)</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>
_______________________________________________<br>
Scons-dev mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]=
g</a><br>
<a href=3D"https://pairlist2.pair.net/mailman/listinfo/scons-dev" rel=3D"no=
referrer" target=3D"_blank">https://pairlist2.pair.net/mailman/listinfo/sco=
ns-dev</a><br>
</blockquote></div>

--000000000000e7a07f05a9aa763c--

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

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

--===============1878646627967962359==--