Re: Should PseudoBuilder's get access to OverrideEnvironment values if called via one
Gary Oberbrunner <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAFChFygX8CbhEPHYt2HptR8WR52eKfDB0-TH4QC7JqDdjO9AMw@mail.gmail.com> |
Sorry, I have a cold. Still: oenv.InstallInBinDirs(...) ? --Gary On Thu, Apr 25, 2019, 6:37 PM Gary Oberbrunner <[email protected]> wrote: > Shouldn't that say oenv.install_in_bin_dir(...)? > > --Gary > > On Thu, Apr 25, 2019, 6:06 PM Bill Deegan <[email protected]> > 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 >> [email protected] >> https://pairlist4.pair.net/mailman/listinfo/scons-users >> > _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users