wiki:PythonPort

Version 5 (modified by ghost, 17 years ago) ( diff )

--

Boost.Build V2 python port

This page describes porting of Boost.Build to Python. This page is only of interest of developers willing to help with the port.

Why?

Boost.Build V2 is mostly implemented in the interpreted language of the underlying build tool, and it has a number of problems:

  • No user knows that language, making it hard to extend Boost.Build or become new developer.
  • The language is strange at times, and not very nicely documented.
  • There's no standard libraries, so every new functionality should be implemented from scratch
  • The only data structure in the language is list of strings. This makes many tests cumbersome, and leads to excessive memory consumption and poor performance on some workloads.

How?

The Python port is mostly 1:1 translation, with only mechanical changes. The language used to describe targets will not change, and the Boost.Build testsuite won't be altered. The port will be declared complete when all files are ported, and all tests pass using ported version.

Hacking and trying

The source for the Python port is in Boost SVN: http://svn.boost.org/svn/boost/branches/build/python_port. There are some changes required in the Boost.Jam build engine, those changes are checked in to trunk: http://svn.boost.org/svn/boost/trunk/tools/jam. If you're a Boost developer, for read-write checkout, use the "https" scheme when checking out the source.

See PythonPort/Quickstart for getting up and running. The PythonPort/Design page documents the design decision specific to the python port, as well as important parts of pre-existing design. The PythonPort/Process documents how the porting is performed.

Note: See TracWiki for help on using the wiki.