Announcement: Faber, a new build system based on bjam

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Announcement: Faber, a new build system based on bjam

Boost - Build mailing list

Hello,

about a year ago I started to experiment with a new Python frontend for Boost.Build. After many iterations of prototyping things are starting to fall into place, and the project stabilizes.

I'm thus happy to announce the release of Faber version 0.2:

code: https://github.com/stefanseefeld/faber

docs: https://stefanseefeld.github.io/faber

While Faber retains most of the features from Boost.Build, it is redesigned from the ground up. bjam is still used as scheduling engine, but everything else is written in Python. In particular, Jamfiles are replaced by fabscripts, which are essentially Python scripts. The project contains a range of examples to demonstrate various simple use-cases, from a simple "hello world" example to demos involving autoconf-style config checks, and unit testing.

I have added build logic to Boost.Python to use Faber on Travis-CI as well as AppVeyor, which also is a good litmus test for Faber's capabilities.

I'd be very interested in feedback as well as contributions. Perhaps it might become possible one day to integrate Faber with other efforts to add a Python frontend to Boost.Build.

Regards,

Stefan
-- 

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

_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: [boost] Announcement: Faber, a new build system based on bjam

Boost - Build mailing list
On Thu, Nov 30, 2017 at 8:29 AM, Richard Hodges <[hidden email]> wrote:


On 30 November 2017 at 16:16, Rene Rivera <[hidden email]> wrote:
On Thu, Nov 30, 2017 at 6:37 AM, Richard Hodges via Boost <[hidden email]> wrote:

Have you tried getting bjam to correctly build boost for c++14 on iOS for a
specific version of iOS, as a universal library?

I have in the past when I used to do iOS programming for a living.
 
It's a dark art.

It is.. But the darkness of it is all Apple's fault. 

Have you tried to build for emscripten? (internal rules do not work).

Yes. Have you tried using the built-in b2 emscripten toolset?

Yes. It doesn't work.

I have to compile for 'generic linux' and then cheat on all the include paths an compiler flags. It's a nightmare.

I just checked.. I don't see a reported bug about that. What doesn't work?


--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net


_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: [boost] Announcement: Faber, a new build system based on bjam

Boost - Build mailing list
Forwarding to appropriate Boost list..

On Fri, Dec 1, 2017 at 3:09 AM, Richard Hodges <[hidden email]> wrote:


On 30 November 2017 at 17:15, Rene Rivera <[hidden email]> wrote:
On Thu, Nov 30, 2017 at 8:29 AM, Richard Hodges <[hidden email]> wrote:


On 30 November 2017 at 16:16, Rene Rivera <[hidden email]> wrote:
On Thu, Nov 30, 2017 at 6:37 AM, Richard Hodges via Boost <[hidden email]> wrote:

Have you tried getting bjam to correctly build boost for c++14 on iOS for a
specific version of iOS, as a universal library?

I have in the past when I used to do iOS programming for a living.
 
It's a dark art.

It is.. But the darkness of it is all Apple's fault. 

Have you tried to build for emscripten? (internal rules do not work).

Yes. Have you tried using the built-in b2 emscripten toolset?

Yes. It doesn't work.

I have to compile for 'generic linux' and then cheat on all the include paths an compiler flags. It's a nightmare.

I just checked.. I don't see a reported bug about that. What doesn't work?

Most of the libraries simply refuse to build if you compile with --toolset=emscripten. From memory, bjam/b2 reports errors around ambiguous rule definitions. The error message were cryptic and of course b2/bjam is a dark art in itself with no documentation or examples so I simply did not have time to investigate. In order to get a product out, I compile with --toolset=generic-linux and imbue CCFLAGS and LDFLAGS with all the magic pixie dust that emscripten needs to produce a reasonable static library. Of course I avoid libraries like coroutine etc.

For me, it would be easier if boost simply used a Makefile. At least that has a well-known syntax and interface, with obvious and easy-to-find rules. I have always felt that the very presence of bjam/b2 was an impediment to using boost, and in no way useful to end-users, particularly in cross-compiled environments.

Perhaps this is why I baulk at the idea of building any tool on top of this house of cards.

emscripten:  A standards-compliant c++14 to javascript/webassembly transpiler suite - http://kripken.github.io/emscripten-site/

My use case is that I need the same source code to run under Linux, Windows, OSX, iOS, Android and in a web page. It turns out that c++ does all of that efficiently, neatly and compatibly.    

--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net


_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: [boost] Announcement: Faber, a new build system based on bjam

Boost - Build mailing list
On 01.12.2017 09:28, Rene Rivera via Boost-build wrote:
Forwarding to appropriate Boost list..

On Fri, Dec 1, 2017 at 3:09 AM, Richard Hodges <[hidden email]> wrote:

[...]
Perhaps this is why I baulk at the idea of building any tool on top of this house of cards.

Just to be clear: Faber is built on top of bjam (used purely as a task scheduling tool), not b2. It is precisely this kind of frustration (which I very much sympathise with) that led me to creating Faber, as it presented the opportunity not only to use an established scripting language, but also to redesign the APIs used to define tools, features, etc. In other words, to replace what you call "house of cards" by something more solid, robust, and (hopefully eventually) better documented.


Stefan
-- 

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

_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build