[Scons-users] SCons 4.0.0 Released

Eric Fahlgren ericfahlgren at gmail.com
Sat Jul 4 22:40:49 EDT 2020


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 at baddogconsulting.com>
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
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20200704/515c7094/attachment-0001.html>


More information about the Scons-users mailing list