[Scons-users] Should PseudoBuilder's get access to OverrideEnvironment values if called via one
Bill Deegan
bill at baddogconsulting.com
Fri Apr 26 10:24:35 EDT 2019
I'll go ahead and file a bug.
Do you know any of the history of
MethodWrapper/BuilderWrapper
-Bill
On Fri, Apr 26, 2019 at 10:21 AM Gary Oberbrunner <garyo at oberbrunner.com>
wrote:
> 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
> _______________________________________________
> 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/20190426/60fc98b4/attachment-0001.html>
More information about the Scons-users
mailing list