    env.Program('tests/test_common',
                ['tests/test_runner.cc', 'tests/test_util.cc', 'tests/test_swaglog.cc', 'tests/test_ratekeeper.cc'],
                LIBS=[_common, 'json11', 'zmq', 'pthread'])
  
  # Cython
  envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])
 
</s> remove lenv.Depends(generated_long, messaging_python)
 </s> add lenv.Depends(generated_long, [messaging_python, common_python]) </s> remove Import('env', 'envCython', 'arch', 'messaging_python')
 </s> add Import('env', 'envCython', 'arch', 'messaging_python', 'common_python') </s> remove Export('transformations')

envCython.Program('transformations.so', 'transformations.pyx')
 </s> add transformations_python = envCython.Program('transformations.so', 'transformations.pyx')
Export('transformations', 'transformations_python') </s> remove SConscript(['common/kalman/SConscript'])
SConscript(['common/transformations/SConscript'])

 </s> add 
# Cython bindings
params_python = envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])

SConscript([
  'kalman/SConscript',
  'transformations/SConscript'  
])

Import('simple_kalman_python', 'transformations_python')
common_python = [params_python, simple_kalman_python, transformations_python]

Export('common_python')
    env.Program('tests/test_common',
                ['tests/test_runner.cc', 'tests/test_util.cc', 'tests/test_swaglog.cc', 'tests/test_ratekeeper.cc'],
                LIBS=[_common, 'json11', 'zmq', 'pthread'])
  
# Cython bindings
params_python = envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])

SConscript([
  'kalman/SConscript',
  'transformations/SConscript'  
])

Import('simple_kalman_python', 'transformations_python')
common_python = [params_python, simple_kalman_python, transformations_python]

Export('common_python')
# Cython bindings
params_python = envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])

SConscript([
  'kalman/SConscript',
  'transformations/SConscript'  
])

Import('simple_kalman_python', 'transformations_python')
common_python = [params_python, simple_kalman_python, transformations_python]

Export('common_python')
keep keep keep keep replace replace
 scons: fix multithreaded builds (#29716)

* common_python export

* Single scons call

* transformations_python 
common/SConscript