[Scons-users] Is it possible to use Copy Action Functions outside of SConscript?
Bill Deegan
bill at baddogconsulting.com
Fri Mar 16 12:15:37 EDT 2018
This looks screwy to me..
action = [Copy(os.path.join(env['LOCALROOT'],
variantDirOutput, idlFile), idlFile),
'idlpp -S -l cpp -d ' + variantDirOutput + '
$SOURCE'])
Why are you building up the target file path?
Are you using duplicate=0?
Looks like you're trying to copy the source file to the variant dir, and
then calling idlpp on the source?
Why did you want add Copy in the first place?
On Fri, Mar 16, 2018 at 12:10 PM, Pierre-Luc Boily <
pierreluc.boily at gmail.com> wrote:
> Same error with env.Copy and Copy :\
>
> 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 132:
> action = [Copy(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 12:05 PM, Bill Deegan <bill at baddogconsulting.com>
> wrote:
>
>> 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
>>>
>>>
>>
>> _______________________________________________
>> 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/89eef9fc/attachment-0001.html>
More information about the Scons-users
mailing list