[Scons-users] Clone error upgrading from 1.2.0 to 2.2.0
    Marc Branchaud 
    marcnarc at xiplink.com
       
    Tue Sep 25 18:20:53 EDT 2012
    
    
  
Hi all,
I'm attempting to upgrade our SCons from 1.2.0.r3842 to 2.2.0, and I'm
getting an error on a call to env.Clone(): "TypeError: cannot semi_deepcopy a
BuilderDict".
Here's the stack below the Clone() call in my SConscript:
  File "/usr/local/lib/scons-2.2.0/SCons/Environment.py", line 1387:
    clone._dict = semi_deepcopy_dict(self._dict, ['BUILDERS'])
  File "/usr/local/lib/scons-2.2.0/SCons/Util.py", line 451:
    copy[key] = semi_deepcopy(val)
  File "/usr/local/lib/scons-2.2.0/SCons/Util.py", line 466:
    return copier(x)
  File "/usr/local/lib/scons-2.2.0/SCons/Util.py", line 451:
    copy[key] = semi_deepcopy(val)
  File "/usr/local/lib/scons-2.2.0/SCons/Util.py", line 469:
    return x.__semi_deepcopy__()
  File "/usr/local/lib/scons-2.2.0/SCons/Environment.py", line 309:
    raise TypeError( 'cannot semi_deepcopy a BuilderDict' )
This environment is cloned all over the place, so I'd really like this to
work!  The original environment is created with several custom Builders:
e_default = Environment(
    CXXTEST='#/build/unittest/cxxtest/cxxtestgen.py',
    CXXTEST_DIR = '#/build/unittest/cxxtest',
    GMAKE = 'gmake',
    GZIP = 'gzip',
    HOST_ARCH = host_arch,
    HOST_NAME = host_name,
    HOST_OS = host_os,
    HOST_OSVER = host_osver,
    HOST_OSVER_LONG = host_osver_long,
    LAUNCH_DIR = GetLaunchDir(),
    CRYPTO_FREE_PASS = False,
    MAKE = 'make',
    OBJCOPY = 'objcopy',
    ROOT_DIR = os.getcwd(),
    STRIP = 'strip',
    READELF = 'readelf',
    tools = ['default',
             'AutoConfig',
             'AutoReconf',
             'cxxtest',
             'DetokInstall',
             'Make',
             'OpenSSLConfig',
             'SymLink',
             'UnTar',
             'UnZip',
             'XsltProc'
             ],
    USERNAME = os.environ['LOGNAME'],
    USERGROUP = (grp.getgrgid(pwd.getpwuid(os.getuid())[3])[0]
                 if os.getuid() != 0
                 else 'wheel' if host_os == 'FreeBSD' else 'root'),
    variables = vars
    )
Do I need to account for some change since 1.2.0?  Possibly the fix for issue
#2821?
Thanks,
		M.
    
    
More information about the Scons-users
mailing list