[Scons-users] Is it possible to use Copy Action Functions outside of SConscript?
Bill Deegan
bill at baddogconsulting.com
Fri Mar 16 11:21:03 EDT 2018
>From manpage:
Builder methods that can be called without an explicit environment may be
called from custom Python modules that you import into an SConscript file
by adding the following to the Python module:
from SCons.Script import *
On Fri, Mar 16, 2018 at 11:16 AM, Pierre-Luc Boily <
pierreluc.boily at gmail.com> wrote:
> But then I have : NameError: global name 'Copy' is not defined:
>
> And I can`t use env.Copy, because it refers to a deprecated function.
>
> I really think it is related with the fact that def
> compile_idl_files(env): function is outside of my SConscript.
>
> On Fri, Mar 16, 2018 at 11:13 AM, Bill Deegan <bill at baddogconsulting.com>
> wrote:
>
>> 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
>>>
>>>
>>
>> _______________________________________________
>> 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/44853b57/attachment-0001.html>
More information about the Scons-users
mailing list