[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