[Numpy-discussion] Bento question: Fortran 90 & Cython support
Thu Aug 12 20:51:46 CDT 2010
On 08/13/2010 03:40 AM, Kurt Smith wrote:
> 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 (
> 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
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).
More information about the NumPy-Discussion