[Numpy-discussion] Bento question: Fortran 90 & Cython support
Fri Aug 13 09:28:12 CDT 2010
On Thu, Aug 12, 2010 at 8:51 PM, David <email@example.com> wrote:
> Hi Kurt,
> 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 (
This is all very good to hear. I've been struggling with
numpy.distutils for fwrap, and it is a nightmare. My current
problem---requiring yet-another-monkeypatch---is getting try_compile
in the 'config' stage to work with Fortran 90 sources and .mod files
that have to be generated before the 'config' stage begins.
Sounds like the best long-term solution is to put effort into better
fortran support in waf, unless you plan on yaku's fortran support
covering all cases (fortran 77/9X, .mod files, etc.). I'll start
looking into that. Is there a repo somewhere, or are you contributing
to waf directly?
>> 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.
Are you referring to waf? Or are you speaking of Bento/yaku? I don't
know waf that well, but my impression was that the configure & build
stages are fairly separate with compilation only in the latter. But
that was just an initial impression from a quick look at the source.
A somewhat separate question: Since both waf & bento have 'configure'
steps how do they coordinate with each other, i.e. what is the
'responsibility' for each configure step? (same goes for bento/scons,
or any other build tool, I reckon.)
>> 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:
> 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).
Interesting. Kinda like waf's recommendation to include waf with the
project, which I like. Is this recommended for bento/yaku, too, or
just a current stopgap?
> NumPy-Discussion mailing list
More information about the NumPy-Discussion