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

Bill Deegan bill at baddogconsulting.com
Fri Mar 16 11:13:09 EDT 2018


get rid of env.Execute().. you're building a list of actions, just use Copy.

Execute means do it right now.


On Fri, Mar 16, 2018 at 10:49 AM, Pierre-Luc Boily <
pierreluc.boily at gmail.com> wrote:

> 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
>>
>>
>
> _______________________________________________
> 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/a8d822c3/attachment-0001.html>


More information about the Scons-users mailing list