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

Gary Oberbrunner garyo at oberbrunner.com
Thu Apr 25 18:38:40 EDT 2019


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
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20190425/939436be/attachment-0001.html>


More information about the Scons-users mailing list