wiki:PythonPort/Status

Version 21 (modified by ghost, 16 years ago) ( diff )

--

Boost.Build Python port overall status

Status at a glance

The majority of core modules are done. The low-level interfaces with bjam are also finalized. The 'hello, world' projects builds with gcc. A simple performance test shows promising 7x speedup.

Steps

The port will proceed like this:

  1. Initial port of core modules and the gcc toolset.
  2. Getting all unit tests and system tests to pass, with the gcc toolset.
  3. Cleanup the few terrible design issues (really few!)
  4. Port all other tools.
  5. Port all docs
  6. Release.

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.

FileLinesStatusNotes
targets.jam1550almost
feature.jam1284almost
virtual-target.jam1231almostNeed to fix dependency properties
generators.jam1214almostNeed to port debug prints
project.jam1018almost
property.jam694almost
toolset.jam510almostaction inheritance remain
property-set.jam464done
type.jam370done
build-request.jam301pending
modifiers.jam241skipped
scanner.jam151done
alias.jam75done
version.jam20pending

Status of porting tools

We'll start by porting gcc, and proceed to other compilers only when all tests pass with gcc.

FileLinesStatusNotes
python.jam1167pending
msvc.jam1003pending
builtin.jam919pending
gcc.jam878pending
common.jam830pending
qt4.jam591pending
testing.jam518pending
mpi.jam501pending
stage.jam493pending
doxygen.jam459pending
boostbook.jam456pending
quickbook.jam314pending
stlport.jam296pending
cw.jam245pending
gettext.jam234pending
qcc.jam228pending
borland.jam224pending
unix.jam223pending
qt3.jam212pending
hp_cxx.jam168pending
intel-win.jam161pending
rc.jam155pending
pathscale.jam149pending
mipspro.jam145pending
midl.jam142pending
pgi.jam139pending
symlink.jam138pending
sun.jam137pending
dmc.jam134pending
vacpp.jam130pending
whale.jam116pending
xsltproc.jam112pending
como-win.jam112pending
generate.jam108pending
acc.jam107pending
fop.jam102pending
intel-linux.jam101pending
como-linux.jam101pending
package.jam98pending
pch.jam97pending
darwin.jam96pending
cast.jam89pending
docutils.jam81pending
make.jam73pending
notfile.jam71pending
fortran.jam55pending
boostbook-config.jam53pending
quickbook-config.jam44pending
mc.jam44pending
ifort.jam44pending
xlf.jam39pending
gfortran.jam39pending
xsltproc-config.jam37pending
hpfortran.jam35pending
cw-config.jam34pending
lex.jam33pending
bison.jam32pending
intel.jam30pending
como.jam30pending
python-config.jam27pending
qt.jam17pending
msvc-config.jam12pending
doxygen-config.jam11pending

Design cleanups

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
  • Introduce Feature class, and don't use icky dict.
  • Cleanup error reporting -- review all raise statements. Make sure they don't include 'error' in messages. Convert them to use errors() as appropriate. Implement --stacktrace option for error reporting.

Post port: design cleanup

  • Use 'Metatarget' prefix for classes in the 'target' module
  • Kill ProjectAttributes and keep all information about project inside ProjectTarget

Note: See TracWiki for help on using the wiki.