[Scons-users] emitter create dependency cycle

Philipp Kraus philipp.kraus at flashpixx.de
Wed Sep 4 09:19:18 EDT 2013


On 2013-09-04 13:05:54 +0000, Gary Oberbrunner said:


>

>

>

> On Wed, Sep 4, 2013 at 9:01 AM, Philipp Kraus

> <philipp.kraus at flashpixx.de> wrote:

> On 2013-09-04 12:51:50 +0000, Gary Oberbrunner said:

> ...

> Can you use Ignore() to make the dir ignore the new files you're creating?

>

> http://www.scons.org/doc/2.3.0/HTML/scons-user.html#AEN1275

> Hi Gary,

> IMHO I can use ignore, because only the targets are needed, but how can

> I use ignore in my builder script - not in my build (SConstruct) script?

> I need the package call, is it SCons.Ignore, isn't it?

>

> I usually do

>  from SCons.Script import *

> then you can write things in your external script the same as in SConscript.  

>

> http://www.scons.org/doc/2.3.0/HTML/scons-user.html#AEN3822


I get always the dependy cycle. My emitter shows:

def __GitFileListEmitter( target, source, env ) :
cmd = env.subst(env["mycommand"], source=source)
handle = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE )
target = handle.stdout.readlines()
handle.communicate()
if handle.returncode <> 0 :
raise SCons.Errors.StopError("error [%s]" % (cmd, source[0]) )

target = list(set( [os.path.join(source[0].abspath, i.strip()) for
i in target] ))
SCons.Script.Ignore(target, source)
return target, source

For my test build with Lua Bridge shows a cycle:

library/build/lua/bridge/README.md ->
library/build/lua/bridge/Source/LuaBridge/detail/Constructor.h ->
library/build/lua/bridge/Source/LuaBridge/detail ->
library/build/lua/bridge/Source/LuaBridge ->
library/build/lua/bridge/Source -> library/build/lua/bridge/Manual.html
-> library/build/lua/bridge/index.html ->
library/build/lua/bridge/README.md

If I remove source[0].abspath everythings fine, but the resulting files
are incorrect (path is incorrect)

The Ignore call should IMHO ignore any connection between each target
and source, but this seems to be a cycle between the targets. Each
target has got a unique path, but all targets in the "source"
directory. source is a single Dir object and target should be only a
list of files.

Thanks a lot

Phil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20130904/db6d1db9/attachment.htm


More information about the Scons-users mailing list