[Scons-users] Is it possible to use Copy Action Functions outside of SConscript?
Bill Deegan
bill at baddogconsulting.com
Fri Mar 16 12:05:18 EDT 2018
Not env.Copy, just Copy().
On Fri, Mar 16, 2018 at 11:56 AM, Pierre-Luc Boily <
pierreluc.boily at gmail.com> wrote:
> I shall read better the man page. Thx. Now I have this error below. I
> thought that I might need to import SCons.Node, but no luck.
>
> AttributeError: <class 'SCons.Node.FS.File'> object has no attribute
> 'startswith':
> File "/svn/localroot/faa_mx/integ-scons/SConstruct", line 58:
> build()
> File "/svn/localroot/faa_mx/integ-scons/SConstruct", line 29:
> cache = not SConscript(str(script).strip(), exports='envService
> vcxprojList', variant_dir=utils.createVariantDir(envService, script),
> duplicate=0)
> File "/usr/local/lib/scons-2.5.1/SCons/Script/SConscript.py", line 604:
> return method(*args, **kw)
> File "/usr/local/lib/scons-2.5.1/SCons/Script/SConscript.py", line 541:
> return _SConscript(self.fs, *files, **subst_kw)
> File "/usr/local/lib/scons-2.5.1/SCons/Script/SConscript.py", line 250:
> exec _file_ in call_stack[-1].globals
> File "/svn/localroot/faa_mx/integ-scons/fwk/dds_model/dds_model.sc",
> line 12:
> idlGeneratedHeaders = env.compile_idl_files()
> File "/svn/localroot/faa_mx/integ-scons/cm/scons/adacelBuilders/pseudoBuilders.py",
> line 131:
> action = [env.Copy(env.File(os.path.join(env['LOCALROOT'],
> variantDirOutput, idlFile)), idlFile),
> File "/usr/local/lib/python2.7/posixpath.py", line 68:
> if b.startswith('/'):
> File "/usr/local/lib/scons-2.5.1/SCons/Node/FS.py", line 682:
> (self.__class__, attr))
>
>
> On Fri, Mar 16, 2018 at 11:21 AM, Bill Deegan <bill at baddogconsulting.com>
> wrote:
>
>> 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
>>>
>>>
>>
>> _______________________________________________
>> 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/0474e97e/attachment-0001.html>
More information about the Scons-users
mailing list