  ])
  
  SConscript(['third_party/SConscript'])
  
  SConscript(['common/kalman/SConscript'])
  SConscript(['common/transformations/SConscript'])
  
  SConscript(['selfdrive/boardd/SConscript'])
  SConscript(['selfdrive/controls/lib/lateral_mpc_lib/SConscript'])
  SConscript(['selfdrive/controls/lib/longitudinal_mpc_lib/SConscript'])
  SConscript(['selfdrive/locationd/SConscript'])
  SConscript(['selfdrive/navd/SConscript'])
 
</s> remove # Cython
envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])
 </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') </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')
  ])
  
  SConscript(['third_party/SConscript'])
  



  SConscript(['selfdrive/boardd/SConscript'])
  SConscript(['selfdrive/controls/lib/lateral_mpc_lib/SConscript'])
  SConscript(['selfdrive/controls/lib/longitudinal_mpc_lib/SConscript'])
  SConscript(['selfdrive/locationd/SConscript'])
  SConscript(['selfdrive/navd/SConscript'])
keep keep keep keep replace replace replace keep keep keep keep keep
 scons: fix multithreaded builds (#29716)

* common_python export

* Single scons call

* transformations_python 
SConstruct