= Boost.Build Python port overall status = == What works == * Interface between Python and Boost.Jam build engine is finished. * Project loading and target declaration works * Top-level code is ported, including getting build request, loading configuration files and projects and building/cleaning. * A simple project with a 'make' rule loads and builds fine == Status of porting code modules == The below table documents the state of files in the 'build' directory. There, 'done' means the file is totally done, 'almost' means the file is essentially done, but maybe we tweaks are necessary as other files are ported and 'pending' is not yet there. ||'''File'''||'''Lines'''||'''Status'''||'''Notes'''|| ||targets.jam||1550||__almost__|| ||feature.jam||1284||pending|| ||virtual-target.jam||1231||__almost__||Need to fix dependency properties|| ||generators.jam||1214||pending|| ||project.jam||1018||pending|| ||property.jam||694||pending|| ||toolset.jam||510||pending|| ||property-set.jam||464||pending|| ||type.jam||370||pending|| ||build-request.jam||301||pending|| ||modifiers.jam||241||pending|| ||scanner.jam||151||pending|| ||alias.jam||75||'''done'''|| ||version.jam||20||pending|| == Status of porting tools == We'll start by porting gcc, and proceed to other compilers only when all tests pass with gcc. == Post port: code cleanup == After all tests are passing with gcc, the following cleanups are desired: * Convert all modules still using global variables to using 'context' object. * Introduce Property class, and no longer store properties as specially formatted strings == Post port: design cleanup == * Use 'Metatarget' prefix for classes in the 'target' module * Kill ProjectAttributes and keep all information about project inside ProjectTarget