[Scons-users] Modifying the provided environment in an emitter?

Andrew C. Morrow andrew.c.morrow at gmail.com
Fri Apr 21 17:29:34 EDT 2017


Hi all -

Is it legit to modify the passed in env in an emitter?

    def add_lib_foo_emitter(target, source, env):
        libs = env.get('LIBS', [])
        libs.append('foo')
        env['LIBS'] = libs
        return (target, source)

    def add_emitter(builder):
        base_emitter = builder.emitter
        new_emitter = SCons.Builder.ListEmitter([add_lib_foo_emitter,
base_emitter])
        builder.emitter = new_emitter

    target_builders = ['Program', 'SharedLibrary', 'LoadableModule',
'StaticLibrary']
    for builder in target_builders:
        add_emitter(env['BUILDERS'][builder])

I've found myself wanting to do this with increasing frequency, but am
unclear on whether this is acceptable. It appears to work, but the
documentation doesn't seem to offer any clear guidance that I've found on
whether it is guaranteed to work. If so (which would be great!), am I
guaranteed that the modification of env is scoped only to the passed in
targets?

Thanks,
Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20170421/e8310ba5/attachment.html>


More information about the Scons-users mailing list