[Scons-users] emitter create dependency cycle

Philipp Kraus philipp.kraus at flashpixx.de
Tue Sep 3 17:56:32 EDT 2013


On 2013-09-03 19:32:05 +0000, Arvid Rosén said:


> Yeah, this is tricky, and I would like to know how to handle stuff like

> this too in a good way!

>

> I have been facing similar problems on Mac OS when trying to write

> builders that operate on a bundle (which is a directory with a bunch of

> files).

>

> Wouldn't it be good to have a Node object that represents a directory

> as a single entity? That way you could write a builder that operates on

> the directory using a single action, and no need to have emitters to

> track all files in it. This would make it easy to copy and sign bundles

> etc. All these things tend to be difficult using Dir and File nodes.


I'm thinking about a own Dir node, derivated from a Python.Value or an
overloaded Filsystem.Node. Do you have any code excerpt, because I need
some good ideas?

Thanks

Phil




> 3 sep 2013 kl. 20:29 skrev Philipp Kraus <philipp.kraus at flashpixx.de>:

>

>> On 2013-09-03 11:48:13 +0000, Philipp Kraus said:

>>

>>> Hi,

>>> I have written a builder with an emitter. Input is a SCons.Node.FS.Dir

>>> object and out SCons.Node.FS.File objects, but the input directory

>>> exists, so only files will be append to the directory.

>>> The emitter creates the file list and returns only the files (the

>>> directories are removed first). In this step I get a dependency cycle

>>> between the input source dir and the returning target files.

>>> If I replace in the emitter the source with a pseudo name, everything

>>> works fine, but I can not work with a dir object.

>>> The emitter shows something like this

>>> def __emitter(target, source, env) :

>>> // do something with source and create target list

>>> return target, source

>>> This creates the cycle, on changing to

>>> return target, str(source[0])+"#pseudo"

>>> the cycle does not exists anymore, but the source object is not a Dir

>>> object in my builder call, so I need to remove the "#pseudo" string,

>>> but in this case I can not create a new Dir object,

>>> eg SCons.Node.FS.Dir( str(source[0]).replace("#pseudo", "") ) does not work.

>>> I need a solution to rename the single source object and transfer it to

>>> the builder call and use it in the builder than a Dir object

>>

>> eg my source directory is librarydir/ and the emitter should return

>> librarydir/file1, librarydir/file2, library/file3, so I get the cycle

>> between source and target

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20130903/43de595c/attachment.html


More information about the Scons-users mailing list