[Scons-users] SCons 4.5.0 Released
Mats Wichmann
mats at wichmann.us
Mon Mar 6 15:51:49 EST 2023
On 3/6/23 13:08, Mats Wichmann wrote:
> On 3/6/23 12:19, Olivier, Jeffrey V wrote:
>> unfortunately, it's hard to narrow down what the problem is. My
>> colleague added the following patch and in looking at the build
>> output, NO_SUCH_ARG was used in denv even though it was only added to
>> new_env. In trying to reproduce this with a simpler example, I have
>> so far been unable to do so. For now, we will just pin to 4.4.
>>
>> diff --git a/src/bio/SConscript b/src/bio/SConscript
>> index 2f8c86f4e..b09d86926 100644
>> --- a/src/bio/SConscript
>> +++ b/src/bio/SConscript
>> @@ -34,6 +34,9 @@ def scons():
>> # Other libs
>> libs += ['numa', 'dl', 'smd']
>>
>> + new_env = denv.Clone()
>> + new_env.Append(CPPDEFINES=['-DNO_SUCH_ARG'])
>> +
>> tgts = FILES + control_tgts
>> bio = denv.d_library("bio", tgts, install_off="../..", LIBS=libs)
>> denv.Install('$PREFIX/lib64/daos_srv', bio)
>
> will see if can reproduce something off this info. first effort was to
> expand unittests:
>
> env1 = self.TestEnvironment(CPPDEFINES="SOME_DEFINE")
> env2 = env1.Clone()
> env2.Append(CPPDEFINES=["NO_SUCH_DEFINE"])
> self.assertEqual(list(env2.Dictionary('CPPDEFINES')),
> ['SOME_DEFINE', 'NO_SUCH_DEFINE'])
> self.assertEqual(env1.Dictionary('CPPDEFINES'), "SOME_DEFINE")
>
> that didn't fail...
Okay, it looks like the utilitiy routine semi_deepcopy, which is called
when doing Replace on the various construction variables after a Clone,
has funky special-case code for some types, and may need a new special
case for the current setup. Don't have complete proof of this yet.
Should have a short patch (probably tomorrow) to try to see if it helps
your situation.
More information about the Scons-users
mailing list