[Scons-users] Should PseudoBuilder's get access to OverrideEnvironment values if called via one

Gary Oberbrunner garyo at oberbrunner.com
Fri Apr 26 10:21:01 EDT 2019


I agree with you -- it definitely should get the env it's called from no
matter if it's an OverrideEnvironment or a normal one.

On Thu, Apr 25, 2019 at 10:14 PM Bill Deegan <bill at baddogconsulting.com>
wrote:

> Indeed it shoud.
> repo updated.
> Here's fixed example:
>
> from SCons.Environment import OverrideEnvironment
>
> DefaultEnvironment(tools=[])
> env=Environment(BIN='mybin',LOCALBIN='localbin')
>
> def install_in_bin_dirs(env, source):
> """Install source in both bin dirs"""
> i1 = env.Install("$BIN", source)
> i2 = env.Install("$LOCALBIN", source)
> print("TEST_VAR=%s"%env['TEST_VAR'])
> return [i1[0], i2[0]] # Return a list, like a normal builder
>
> env.AddMethod(install_in_bin_dirs, "InstallInBinDirs")
>
> oenv=OverrideEnvironment(env,TEST_VAR='abc')
>
> oenv.InstallInBinDirs(env.Program('main.c')) # installs hello in both bin
> dirs
>
> print("Override id:%s"%id(oenv))
>
>
>
> And output:
> $ python ~/devel/scons/git/as_scons/src/script/scons.py --debug=explain
> scons: Reading SConscript files ...
> TypeError: __init__() got an unexpected keyword argument 'TEST_VAR':
>   File
> "/Users/bdbaddog/devel/scons/bugs/Scons-psuedobuilder_no_override_access/SConstruct",
> line 15:
>     oenv=OverrideEnvironment(env,TEST_VAR='abc')
>
>
>
> On Thu, Apr 25, 2019 at 6:39 PM Gary Oberbrunner <garyo at oberbrunner.com>
> wrote:
>
>> Sorry, I have a cold.
>>  Still: oenv.InstallInBinDirs(...) ?
>>
>> --Gary
>>
>> On Thu, Apr 25, 2019, 6:37 PM Gary Oberbrunner <garyo at oberbrunner.com>
>> wrote:
>>
>>> Shouldn't that say oenv.install_in_bin_dir(...)?
>>>
>>> --Gary
>>>
>>> On Thu, Apr 25, 2019, 6:06 PM Bill Deegan <bill at baddogconsulting.com>
>>> wrote:
>>>
>>>> Currently they don't
>>>>
>>>> See sample git repo:
>>>>
>>>> https://github.com/bdbaddog/Scons-psuedobuilder_no_override_access/tree/master
>>>>
>>>> SConstruct:
>>>>
>>>> DefaultEnvironment(tools=[])
>>>> env=Environment(BIN='mybin',LOCALBIN='localbin')
>>>>
>>>> def install_in_bin_dirs(env, source):
>>>>     """Install source in both bin dirs"""
>>>>     i1 = env.Install("$BIN", source)
>>>>     i2 = env.Install("$LOCALBIN", source)
>>>>     print("TEST_VAR=%s"%env['TEST_VAR'])
>>>>     return [i1[0], i2[0]] # Return a list, like a normal builder
>>>>
>>>> env.AddMethod(install_in_bin_dirs, "InstallInBinDirs")
>>>>
>>>> env.InstallInBinDirs(env.Program('main.c')) # installs hello in both bin dirs
>>>>
>>>> oenv=OverrideEnvironment(env,TEST_VAR='abc')
>>>> print("Override id:%s"%id(oenv))
>>>>
>>>>
>>>> Yields:
>>>> $ python ~/devel/scons/git/as_scons/src/script/scons.py
>>>> scons: Reading SConscript files ...
>>>> KeyError: 'TEST_VAR':
>>>>   File "/Users/bdbaddog/devel/scons/bugs/Scons-psuedobuilder_no_override_access/SConstruct", line 13:
>>>>     env.InstallInBinDirs(env.Program('main.c')) # installs hello in both bin dirs
>>>>   File "/Users/bdbaddog/devel/scons/git/as_scons/src/script/../engine/SCons/Environment.py", line 224:
>>>>     return self.method(*nargs, **kwargs)
>>>>   File "/Users/bdbaddog/devel/scons/bugs/Scons-psuedobuilder_no_override_access/SConstruct", line 8:
>>>>     print("TEST_VAR=%s"%env['TEST_VAR'])
>>>>   File "/Users/bdbaddog/devel/scons/git/as_scons/src/script/../engine/SCons/Environment.py", line 410:
>>>>     return self._dict[key]
>>>>
>>>> This is because PsuedoBuilder's are wrapped with the Environment() they are added to.
>>>>
>>>> Via MethodWrapper()
>>>>
>>>> Which caused a couple hours of debugging to find today..
>>>>
>>>> Unless someone can propose a reasonable reason it shouldn't I'll file a github issue.
>>>>
>>>> -Bill
>>>>
>>>> _______________________________________________
>>>> 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
>


-- 
Gary
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20190426/02210d3d/attachment.html>


More information about the Scons-users mailing list