[Numpy-discussion] For review: first milestone of scons support in numpy

David Cournapeau david at ar.media.kyoto-u.ac.jp
Thu Oct 11 06:12:22 EDT 2007


Pearu Peterson wrote:
>
> I think this is good.
> Does scons require python-dev? If not then this will solve one of the
> frequent issues that new users may experience: not installed distutils.
Isn't distutils included in python library ? Anyway, scons does not 
require anything else than a python interpreter. Actually, an explicit 
requirement of scons is to support any python starting at version 1.5.2 
(this is another important point which I consider important for a 
replacement of numpy.distutils).

But please remember that this work is not intended at replacing 
distutils entirely, only the build_ext/build_lib commands. All the build 
process would still be driven by distutils (in particular, supporting 
distutils is a requirement to support setuptools and eggs).
> I think numpy is quite stable now that it's safe to develop in a branch
> (if trunk is very actively developed then merging branches
> can be a nightmare). However, IMHO using a branch makes other
> developers to stay aside from branch development and in time it is
> more and more difficult to merge.
I don't have strong experience in subversion, so I was afraid of that. 
Do I understand correctly that you suggest opening a new dev branch, and 
then do all subsequent dev (including non distutils/scons related ones) 
there ?

>
> The third approach would be to cache those checks that are called
> frequently to, say, $HOME/.numpy/scons.
>
> numpy.distutils setup.py script gathers the information from
> subpackage setup.py scripts recursively and then passes all the
> information to one setup function call.
> I think setupscons.py should do the same. If scons does not support
> recursive reading of scons scripts then the corresponding feature
> should be implemented, I guess it would not be difficult.
Scons supports recursive calls. To be more clear about the possibilities 
of scons wrt to this, let's take a simplified example:

root/Sconstruct
root/numpy/Sconscript
root/numpy/core/Sconscript
root/numpy/linalg/Sconscript

If you are in root and call scons (> is a shell prompt):

root > scons

Then it will call recursively all the sconscript (as long as you request 
it in the sconscript files). The other supported method is

root/numpy/linalg > scons -u

this will look every parent directory to find the "root" Sconstruct. So 
as long as we configure everything (by everything, I mean checking for 
libraries and compilers) in the root Sconscript, this should work. To 
sum it up: the build process would be more like projects using 
autotools; a configure step, and a build step (this would be internal; 
there is no need to expose this mechanism to the user).
>
> I meant that Configuration class could have a method, say 
> toscons(<filename>),  that will generate SConstruct script
> from the information that Configuration instance holds. I thought that 
> this would just ease creating SConstruct scripts from
> existing setup.py files.
I don't think it would worth the effort for numpy (the main work really 
is to implement and test all the checkers: blas/lapack, fortran). Now, 
as a general migration tool, this may be useful. But since we would 
still use distutils, it would only be useful if it is easy to develop 
such as tool.

cheers,

David

P.S: would it be easy for you to make a list of requirements for fortran 
? By requirement, I mean things like name mangling and so on ? Something 
like the autoconf macros: 
http://www.gnu.org/software/autoconf/manual/autoconf-2.57/html_node/autoconf_66.html



More information about the NumPy-Discussion mailing list