librelist archives

« back to archive

Other build tools

Other build tools

From:
John Reid
Date:
2011-08-31 @ 06:56
Hi,

I've just been checking out bento and I'm wondering if it can help me 
build my python package. My package has an extension built using the 
boost.build v2 system. To build the extension I would typically run the 
following command:

bjam _steme

which would result in _stempy.so turning up in the python/stempy 
subdirectory. Can I configure bento to execute this command and pick up 
the resulting extension? I'm aware that I will have to ask the user to 
install the boost.build system and boost.python libraries separately.

Thanks,
John.

Re: [bento] Other build tools

From:
David Cournapeau
Date:
2011-09-06 @ 18:10
On Wed, Aug 31, 2011 at 2:56 AM, John Reid <j.reid@mail.cryst.bbk.ac.uk> wrote:
> Hi,
>
> I've just been checking out bento and I'm wondering if it can help me
> build my python package. My package has an extension built using the
> boost.build v2 system. To build the extension I would typically run the
> following command:
>
> bjam _steme
>
> which would result in _stempy.so turning up in the python/stempy
> subdirectory. Can I configure bento to execute this command and pick up
> the resulting extension? I'm aware that I will have to ask the user to
> install the boost.build system and boost.python libraries separately.

Yes, this is definitely possible. The main issue is that the API for
doing so is not documented and even subject to changes. The good news
is that this is one of the main goal of the next bento release.

Basically, you need to do the following:

 - running bjam itself (through subprocess I would guess)
 - registering the output of bjam build process to bento (see my
ipython fork: https://github.com/cournape/ipython/blob/bento_build/bscript
for an example to do so)
 - depending on whether all the extensions or only some of them are
built through bjam, disable all or only the relevant extension so that
it does not get rebuilt/overwritten by the bento build system.

cheers,

David