Boost logo

Boost-Build :

Subject: Re: [Boost-build] prototyping alternative Boost.Build syntax
From: Stefan Seefeld (stefan_at_[hidden])
Date: 2016-10-28 09:31:23

On 28.10.2016 09:24, Vladimir Prus wrote:
> Stefan,
> On 28-Oct-16 4:12 PM, Stefan Seefeld wrote:
> (I'd like to prototype a bit with a new (Python)
>> syntax, and therefore need to hook up my own parser to feed b2 the
>> objects it expects.
> If you're doing that, you should be working with Python port, and then,
> things are much simpler. b2 is merely starting Python interpreter, and
> starts Python code. It also gives Python a few functions to put together
> a lowest-level dependency graph.

OK. Are there any resources that could help me understand the above ?
For example, what exactly is that "python port" ? Is the "b2" engine
itself being ported to Python ? I thought it's only Boost.Build that was
being ported, which is why I was wondering about the exact relationship
between b2 and Boost.Build.

> The code in Jamfiles is intepreted by b2, but it mostly calls Python
> functions that that whatever they please. So,
> exe a : a.cpp ;
> pretty directly calls this Python function:
> which does:
> return self.manager_.targets().create_typed_target(
> type, self.registry.current(), name, sources,
> requirements, default_build, usage_requirements)

OK. Is there a (more or less formal) description of "usage requirement"
as well as all the other concepts involved ? (I'm really trying to grasp
this on a conceptual level to be able to play around with new syntax
without questioning the established semantics, i.e. the underlying model.

> Native Python build description would have 'manager' variable injected
> in scope, and do exactly the above :-)

Hmm, I think I'm now even more confused than before, as I don't know
what I should be looking for / at. ;-/


      ...ich hab' noch einen Koffer in Berlin...

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at