[Scons-users] Is it possible to use Copy Action Functions outside of SConscript?

Pierre-Luc Boily pierreluc.boily at gmail.com
Fri Mar 16 10:49:03 EDT 2018


No totally a builder, but like that :

#In my SConscript :
idlGeneratedHeaders = env.compile_idl_files()

#In my util file (I call those function pseudo-builder, they are not really
builder, but they actually call a builder.  In this case, env.Command)
def compile_idl_files(env):
    """
    Compile all the IDL with DDS idlpp tool.
    returns the list of header files generated.
    """
    idlFiles = env.Glob('*.idl', exclude=['*Dcps.idl'])
    idlGeneratedHeaders = []
    variantDirOutput = str(env.Dir('.').path) #Where to generate .h & .cpp
from IDL
    for idlFile in idlFiles:
        tgtCpp, tgtH, ccpp = create_target_for_idl(env, idlFile)
        idlGeneratedHeaders += tgtH + ccpp
        env.Command(target = tgtCpp + tgtH + ccpp,
                    source = idlFile,
                    action =
[env.Execute(Copy(os.path.join(env['LOCALROOT'], variantDirOutput,
idlFile), idlFile)),
                              'idlpp -S -l cpp -d ' + variantDirOutput + '
$SOURCE'])

    return idlGeneratedHeaders

On Fri, Mar 16, 2018 at 10:30 AM, Bill Deegan <bill at baddogconsulting.com>
wrote:

> So you want to use the Copy() action inside a builder?
>
> -Bill
>
> On Fri, Mar 16, 2018 at 9:34 AM, Pierre-Luc Boily <
> pierreluc.boily at gmail.com> wrote:
>
>> My SConscript contains the following code :
>>
>> Execute(Copy(os.path.join(env['LOCALROOT'], str(env.Dir('.').path),
>> 'MaxSim.idl'), 'MaxSim.idl'))
>>
>> In order to make my SConscript cleaner, I wanted to move this line into a
>> pseudo-builder, in an utility file.
>>
>> Then, when I am calling this line :
>> Execute(Copy(os.path.join(env['LOCALROOT'], variantDirOutput,
>> str(idlFile)),
>> str(idlFile)))
>>
>> from my utility function, I have error:
>> NameError: global name 'Execute' is not defined
>>
>> I understood that because I am outside of the SConscript context, Execute
>> is
>> not recognized anymore.  I then added my env, like that :
>> env.Execute(Copy(os.path.join(env['LOCALROOT'], variantDirOutput,
>> str(idlFile)), str(idlFile)))
>>
>> Now, Execute is recognized, but Copy is not.  If I try to add env to the
>> Copy function (env.Copy()), I now have this error : warning: The
>> env.Copy()
>> method is deprecated;
>>
>> I understand the env.Copy() is depracated, but is it possible to use Copy
>> action outside the SConscript the same way I did for env.Execute?
>>
>> Thx
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> Sent from: http://scons.1086193.n5.nabble.com/Users-f16930.html
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20180316/46c956e7/attachment.html>


More information about the Scons-users mailing list