SCons 4.0.0 Released

Bill Deegan <bill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org> Sat, 4 Jul 2020 15:57:33 -0700
Newsgroups gmane.comp.programming.tools.scons.devel
Message-ID <CAEyG4CEc11n5Bwa4zkhye=MsPV5bJkWUg2w++RPiRPvsdiUXTw__38998.2980837644$1593903936$gmane$org@mail.gmail.com>
--===============5924740722097690776==
Content-Type: multipart/alternative; boundary="000000000000ca617305a9a59165"

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

  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)

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

<div dir=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">https://scons.org/pages/do=
wnload.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 support for s=
canning multiple entries in an action string if<br>=C2=A0 =C2=A0 =C2=A0 IMP=
LICIT_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 c=
ommand line is scanned to determine<br>=C2=A0 =C2=A0 =C2=A0 if it is a non-=
source and non-target path and added to the list of implicit dependencies<b=
r>=C2=A0 =C2=A0 =C2=A0 for the target.<br>=C2=A0 =C2=A0 - Added 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 - Ad=
ded a new flag called &quot;linedraw&quot; for the command line argument =
=C2=A0&quot;--tree&quot;<br>=C2=A0 =C2=A0 =C2=A0 that instructs scons to us=
e 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 T=
rue|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 during developm=
ent.<br>=C2=A0 =C2=A0 - Extended `Environment.Dump()` to select a format to=
 serialize construction variables (pretty, json).<br>=C2=A0 =C2=A0 - New co=
nditional C Scanner (`SCons.Scanner.C.CConditionalScanner()`)<br>=C2=A0 =C2=
=A0 =C2=A0 which interprets C/C Preprocessor conditional syntax (#ifdef, #i=
f, #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 variable is set,<br=
>=C2=A0 =C2=A0 =C2=A0 SCons will cache the results of past calls to vcvarsa=
ll.bat to<br>=C2=A0 =C2=A0 =C2=A0 a file; integrates with existing memoizin=
g of such vars.<br>=C2=A0 =C2=A0 - Preliminary Python 3.9 support.<br><br>=
=C2=A0 DEPRECATED FUNCTIONALITY<br><br>=C2=A0 =C2=A0 - Drop support for Pyt=
hon 2.7. SCons will be Python 3.5+ going forward.<br>=C2=A0 =C2=A0 - Remove=
 deprecated SourceCode()<br><br>=C2=A0 CHANGED/ENHANCED EXISTING FUNCTIONAL=
ITY<br><br>=C2=A0 =C2=A0 - Added check for SONAME in environment to setup s=
ymlinks correctly (Github Issue #3246)<br>=C2=A0 =C2=A0 - Resolve Issue #32=
48 - Removing &#39;-Wl,-Bsymbolic&#39; from SHLIBVERSIONFLAGS<br>=C2=A0 =C2=
=A0 =C2=A0 NOTE: If your build depends on the above you must now add to you=
r SHLIBVERSIONFLAGS<br>=C2=A0 =C2=A0 - Microsoft Visual Studio - 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 ch=
ange affects the following builders&#39; output. If your build depends on t=
he output of these builders<br>=C2=A0 =C2=A0 =C2=A0 you will likely see a r=
ebuild.<br>=C2=A0 =C2=A0 =C2=A0 * Package() (with PACKAGETYPE=3D&#39;msi&#3=
9;)<br>=C2=A0 =C2=A0 =C2=A0 * MSVSSolution()<br>=C2=A0 =C2=A0 =C2=A0 * MSVS=
Project()<br>=C2=A0 =C2=A0 - Improve Visual Studio solution/project generat=
ion code to add support<br>=C2=A0 =C2=A0 =C2=A0 for a per-variant 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 specifies<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 cppflags when a /std=
:c++* flag is found as this is<br>=C2=A0 =C2=A0 =C2=A0 required for intelli=
sense to use the C++ standard version from cppflags.<br>=C2=A0 =C2=A0 - All=
ow user specified location for vswhere.exe specified by VSWHERE.<br>=C2=A0 =
=C2=A0 =C2=A0 NOTE: This must be set at the time the &#39;msvc&#39; &#39;ms=
vs&#39; and/or &#39;mslink&#39; tool(s) are initialized to have any effect.=
<br>=C2=A0 =C2=A0 - Fixed Github Issue 3628 - Hardcoding pickle protocol to=
 4 (supports python 3.4+)<br>=C2=A0 =C2=A0 =C2=A0 and skipping Python 3.8&#=
39;s new pickle protocol 5 whose main advantage is for out-of-band data buf=
fers.<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 your<br>=C2=A0 =C2=
=A0 =C2=A0 .sconsign.dblite. You will end up with a full rebuild.<br>=C2=A0=
 =C2=A0 - MSVC updates: When there are multiple product installations (e.g,=
 Community and<br>=C2=A0 =C2=A0 =C2=A0 Build Tools) of MSVC 2017 or MSVC 20=
19, an Enterprise, Professional,<br>=C2=A0 =C2=A0 =C2=A0 or Community insta=
llation 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 requested, respective=
ly. (GH Issue #3699).<br>=C2=A0 =C2=A0 - MSVC updates: When there are multi=
ple product installations of MSVC 2017 (e.g.,<br>=C2=A0 =C2=A0 =C2=A0 Commu=
nity 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 Express will be retu=
rned when &quot;14.1Exp&quot; is requested.<br>=C2=A0 =C2=A0 =C2=A0 (GH Iss=
ue #3699).<br>=C2=A0 =C2=A0 - MSVC updates: pass on VSCMD_DEBUG and VSCMD_S=
KIP_SENDTELEMETRY to msvc<br>=C2=A0 =C2=A0 =C2=A0 tool setup if set in envi=
ronment. Add Powershell to default env<br>=C2=A0 =C2=A0 =C2=A0 (used to cal=
l telemetry script).<br>=C2=A0 =C2=A0 - Renamed as.py to asm.py and left re=
directing tool. =C2=A0&#39;as&#39; is a reserved word and so<br>=C2=A0 =C2=
=A0 =C2=A0 changing the name was required as we wanted to import symbols fo=
r use in compilation_db<br>=C2=A0 =C2=A0 =C2=A0 tool.<br>=C2=A0 =C2=A0 - Ad=
d 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 first 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 - Subs=
titutionEnvironment and OverrideEnvironment now have keys()<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 dangling symlinks b=
efore running builders (Issue #3516)<br>=C2=A0 =C2=A0 - Fixed usage of absp=
ath and path for RootDir objects on Windows. Previously<br>=C2=A0 =C2=A0 =
=C2=A0 env.fs.Dir(&quot;T:&quot;).abspath would return &quot;T:\T:&quot; an=
d now it correctly returns &quot;T:&quot;.<br>=C2=A0 =C2=A0 - Fix Issue #34=
69 - Fixed improper reuse of temporary and compiled files by Configure when=
 changing<br>=C2=A0 =C2=A0 =C2=A0 the order and/or number of tests.=C2=A0 T=
his is done by using the hash of the generated temporary files<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 named:<br>=C2=A0 =
=C2=A0 =C2=A0 - config_1.c, config_1.o, config_1<br>=C2=A0 =C2=A0 =C2=A0 Th=
e will now be named (For example)<br>=C2=A0 =C2=A0 =C2=A0 - conftest_68b375=
d16e812c43e6d72d6e93401e7c_0.c,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 conftest_68b=
375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187.o<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 or<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 conftest_68b375d=
16e812c43e6d72d6e93401e7c_0.o<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 conftest_68b37=
5d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187 (for executa=
ble)<br>=C2=A0 =C2=A0 - Updated documentation toolchain to work properly un=
der Python3, also<br>=C2=A0 =C2=A0 =C2=A0 removed libxslt support 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 p=
ropagate &#39;VCINSTALLDIR&#39; and &#39;VCToolsInstallDir&#39; which clang=
 tools use to locate<br>=C2=A0 =C2=A0 =C2=A0 header files and libraries fro=
m MSVC install. (Fixes GH Issue #3480)<br>=C2=A0 =C2=A0 - Fix Github Issue =
#2904 - Provide useful error message when more than one Configure Contexts =
are opened.<br>=C2=A0 =C2=A0 =C2=A0 Only one open is allowed. You must call=
 conf.Finish() to complete the currently open one before creating another<b=
r><br>=C2=A0 IMPROVEMENTS<br><br>=C2=A0 =C2=A0 - Improve performance of Sub=
st by preventing unnecessary frame<br>=C2=A0 =C2=A0 =C2=A0 allocations by n=
o longer defining the *Subber classes inside of their<br>=C2=A0 =C2=A0 =C2=
=A0 respective function calls.<br>=C2=A0 =C2=A0 - Improve performance of Su=
bst in some cases by preventing<br>=C2=A0 =C2=A0 =C2=A0 unnecessary calls t=
o 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 subst by rem=
oving unnecessary recursion.<br><br>=C2=A0 PACKAGING<br><br>=C2=A0 =C2=A0 -=
 Resolve Issue #3451 and Issue #3450 - Rewrite SCons setup.py and 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 DOCUM=
ENTATION<br><br>=C2=A0 =C2=A0 - Significant rework of documentation: API do=
cs are now generated<br>=C2=A0 =C2=A0 =C2=A0 using Sphinx; manpage and user=
 guide now use more &quot;standard&quot;<br>=C2=A0 =C2=A0 =C2=A0 markup ele=
ments (which could facilitate later conversion to a<br>=C2=A0 =C2=A0 =C2=A0=
 different doc format, should that choice be made); significant<br>=C2=A0 =
=C2=A0 =C2=A0 rewordings in manpage.=C2=A0 Manpage Examples moved to an ext=
ernal<br>=C2=A0 =C2=A0 =C2=A0 repository / website (<a href=3D"http://scons=
-cookbook.readthedocs.io">scons-cookbook.readthedocs.io</a>).<br><br>=C2=A0=
 Thanks to the following contributors listed below for their contributions =
to this release.<br><br>git shortlog --no-merges -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=A0Math=
ew Robinson<br>=C2=A0 =C2=A0 =C2=A06 =C2=A0Paul 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 Morro=
w<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0Iosif Daniel 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<br>=C2=A0 =C2=A0 =C2=A01 =C2=A0=
Andrii Doroshenko (Xrayez)</div>

--000000000000ca617305a9a59165--

--===============5924740722097690776==
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

--===============5924740722097690776==--