[Scons-users] [Scons-dev] SCons 4.0.0 Released
Eric Fahlgren
ericfahlgren at gmail.com
Sun Jul 5 10:30:36 EDT 2020
Bill,
Issue filed along with some further experiments.
https://github.com/SCons/scons/issues/3736
I vaguely remember playing with the case-sensitivity options in Windows on
this machine years ago, so I tested everything on another machine where
Windows is pristine, but no joy, same issue presented in the same manner
there, too.
Eric
On Sat, Jul 4, 2020 at 9:48 PM Bill Deegan <bill at baddogconsulting.com>
wrote:
> 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 <ericfahlgren at gmail.com>
> 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 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
>>>
>> _______________________________________________
>> Scons-dev mailing list
>> Scons-dev at scons.org
>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>
> _______________________________________________
> 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/20200705/7f9b00bd/attachment-0001.html>
More information about the Scons-users
mailing list