[Numpy-discussion] Bento question: Fortran 90 & Cython support

David david at silveregg.co.jp
Thu Aug 12 21:51:46 EDT 2010


Hi Kurt,

On 08/13/2010 03:40 AM, Kurt Smith wrote:
> Hi,
>
> I'm very interested in Bento and think it will be a killer project.
>
> My question: do you anticipate supporting Fortran 90 within Bento, or
> will that be delegated to an external build tool?

Bento does not support building at all. The idea is that you will be 
able to plug your build tool of choice if desired, and bento will just 
gives you a very high level description of your extensions.

Right now, I am working on yaku, which is a simple build tool designed 
as a library, and would be used by bento by default. If I can build 
scipy with it and keep it simple, I will integrate yaku and bento. This 
means at least basic fortran spuport. Otherwise, I may just give up yaku 
- if it ends up being as big as say waf, there is really no point in it.

I was not using waf directly because previous to 1.6, using waf as a 
library was not as easy as expected (much better than scons, though), 
but this is changing in 1.6. This means I will also need to add fortran 
support to waf. I really like waf but was a bit concerned with the lack 
of usage - now that samba is working on it, the prospect of long term 
support for waf look much better (
http://wiki.samba.org/index.php/Waf).

>  There are some
> intricacies with Fortran 90 that make it difficult to use with the
> usual configure-then-build ordering, specifically when the configure
> step depends on .mod files that don't exist until after compilation.

Could you expand on this ? Nothing prevents the configure step from 
building some mod files necessary for configuration a priori.

>
> Also, what about projects with Pyrex/Cython sources: will Bento
> internally support .pyx files?

You can already build extensions with cython with bento+yaku. You just 
add .pyx files as sources in the Extension section of the bento.info, 
and it is then up to the build tool to deal with .pyx.

You can see an example in the port of nipy build to bento, which has 
cython files:

http://github.com/cournape/nipy/tree/bento_build

Note that even though the bento.info format itself is pretty stable, 
anything that goes in bscript files (to customize build) keeps changing 
and is highly unstable. I still have no clear idea about the API 
(scipy's build idiosyncraties keep breaking the assumptions I have made 
so far :) ).

To somewhat deal with the unstability API-wise, you can include a copy 
of bento+yaku in your project, as I have done in nipy. It is a 
self-contained file which is about 350 kb (and down to 80 kb if you 
don't care about supporting building windows installers).

cheers,

David



More information about the NumPy-Discussion mailing list