Following up to myself: On Thu, Apr 02, 2009 at 10:51:11PM +0100, Jeremy Henty wrote: > > I note that (a) SCons.Environment.Append has a lot of different > cases depending on the types of things, and (b) the bug appears to > strike CCFLAGS but not CPPPATH or CPPFLAGS. Maybe the CCFLAGS key > is associated to a value of a different type? And indeed it is! CPPPATH and CPPFLAGS map to lists but CCFLAGS amps to a CLVar, which is derived from UserList. The CCFLAGS value wraps an ordinary list. Append("-DLINUX") splits "-DLINUX" into characters and appends those characters to wrapped list. Even more interesting: $ python Python 2.6.1 (r261:67515, Dec 9 2008, 10:18:43) [GCC 4.1.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import UserList >>> UserList.UserList([]) + 'adgsdf' ['a', 'd', 'g', 's', 'd', 'f'] >>> Clearly SCons.Environment.Append() has started doing the wrong thing when the value to append to is a UserList. Either UserList has changed in Python 2.6 or something else has changed that breaks the internal logic of SCons.Environment.Append(). What does the above Python code do under Python 2.5? Regards, Jeremy Henty