[Scons-dev] env.Clone() vs an overide environment

William Deegan bill at baddogconsulting.com
Tue Feb 12 20:50:59 EST 2013


On 02/12/2013 03:30 PM, Kenny, Jason L wrote:

>

> Hi guys,

>

> I have been looking at the memory monster that SCons can be inside my

> view of the Parts addon.

>

> On object that I get a lot of in Parts is SCons.Environment.Base

> objects. Parts of this is that I make a clone based every Parts, to

> prevent a huge host of problems that come from sharing environments in

> different "components". It seems to me that maybe whole way we look at

> Clone() is wrong. Instead of making a clean copy of all the possible

> mutable values, it seems that maybe it would better to use an

> OverrideEnvironment object. This would save a lot of memory. I need to

> clarify this would have to be a slightly more conservative object than

> the current OverrideEnvironment object in SCons in that the main issue

> with using it in the current form is the code:

>

> if "/md" in env['CPPFLAGS']:

>

> env['CPPFLAGS'].remove(/'md')

>

> The reason for this is that copy one write logic would not see the

> remove() function being called, effecting other components that would

> want the '/md' flags to exists.

>

> To correct this one could make Scons overrides to the python object

> that could notify environment that it was modify, so it make a copy of

> the given object before the modification would happen. I see this is

> ideal, but probably technical problematic for many different reasons.

>

> The more realistic option I think might be to just have __getitem__

> function make a copy in the overrides if the user called it ( can

> probably do this with a state var, that says we are in Scons/internal

> code such as subst(), vs reading a build files). Given that most of

> the values are not touched by the user, only a minimum of values need

> to copy, ideally a lot less that we do with a normal Clone().

>

> Any thoughts on this? I was thinking of testing this idea in Parts. It

> seems that this code would be a pretty simple object that would just

> copy paste straight into Scons if I got it working.

>


How big are the Base objects you're seeing?
How many Clone()'s are you doing?

-Bill
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/scons-dev/attachments/20130212/f636c562/attachment.html>


More information about the Scons-dev mailing list