[Scons-dev] Announcement: Core changes for v2.4 ahead, Switching the Node class to using slots...

alexandre.feblot at gmail.com alexandre.feblot at gmail.com
Mon Mar 2 03:06:14 EST 2015


Hi Dirk,

About those new interfaces for accessing node attributes that may get initialized lazily, do I understand here the consequences properly?

- Using directly a_node.path or a_node.abspath *must* be replaced in all SConstructs/SConscripts by the new interfaces if we wan’t them to keep working properly
- This lets us with 2 solutions:
   1- Do these changes in all our product maintenance branches, and even each time we need to checkout again an old tag we want to compile again.
   2- Keep an old Scons 2.3 to build our old code, and change our build infrastructure to be able to have different SCons paths, so we can chose the proper one.



Kind Regards


> Le 28 févr. 2015 à 13:03, Dirk Bächle <tshortik at gmx.de> a écrit :
> 
> Appendix: Short list of changes to the Node* classes
> ====================================================
> 
> - Introduction of decorators for memoizer debugging/counting (we can't
> use metaclasses anymore).
> - Adding interface for accessing node attributes that may get
> initialized lazily:
>     t.abspath -> t.get_abspath()
>     t.labspath -> t.get_labspath()
>     t.tpath -> t.get_tpath()
>     t.path_elements -> t.get_path_elements()
>     t.path -> t.get_internal_path()
> 
> - Methods like t.exists(), t.rexists() and t.get_contents() can't be
> re-assigned directly anymore. They'll be realized via function maps
> internally ( {int : func} ).
> 
> - NodeInfo and BuildInfo will also get switched to __slots__, and get a
> new internal version number (1.0 -> 2.0). This means that after the
> switch *all* targets are regarded to be out-of-date on the first build.



More information about the Scons-dev mailing list