[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