[Python-Dev] Status of packaging in 3.3

Tarek Ziadé tarek at ziade.org
Thu Jun 21 23:04:37 CEST 2012


On 6/21/12 10:46 PM, Dag Sverre Seljebotn wrote:
...
>> I think we should, as you proposed, list a few projects w/ compilation
>> needs -- from the simplest to the more complex, then see how a standard
>> *description* could be used by any tool
>
> It's not clear to me what you mean by description. Package metadata, 
> install information or description of what/how to build?
>
> I hope you don't mean the latter, that would be insane...it would 
> effectively amount to creating a build tool that's both more elegant 
> and more powerful than any option that's currently already out there.
>
> Assuming you mean the former, that's what David did to create Bento. 
> Reading and understanding Bento and the design decisions going into it 
> would be a better use of time than redoing a discussion, and would at 
> least be a very good starting point.

What I mean is : what would it take to use Bento (or another tool) as 
the compiler in a distutils-based project, without having to change the 
distutils metadata.


>
> But anyway, some project types from simple to advanced:
>
>  - Simple library using Cython + NumPy C API
>  - Wrappers around HPC codes like mpi4py, petsc4py
>  - NumPy
>  - SciPy (uses Fortran compilers too)
>  - Library using code generation, Cython, NumPy C API, Fortran 90 
> code, some performance tuning with CPU characteristics (instruction 
> set, cache size, optimal loop structure) decided compile-time

I'd add:

- A Distutils project with a few ExtensionsThe other thing is, the folks 
in distutils2 and myself, have zero
>> knowledge about compilers. That's why we got very frustrated not to see
>> people with that knowledge come and help us in this area.
>
> Here's the flip side: If you have zero knowledge about compilers, it's 
> going to be almost impossible to have a meaningful discussion about a 
> compilation PEP. It's very hard to discuss standards unless everybody 
> involved have the necessary prerequisite knowledge. You don't go 
> discussing details of the Linux kernel without some solid C experience 
> either.
Consider me as the end user that want to have his 2 C modules compiled 
in their Python project.

>
> The necessary prerequisites in this case is not merely "knowledge of 
> compilers". To avoid repeating mistakes of the past, the prerequisites 
> for a meaningful discussion is years of hard-worn experience building 
> software in various languages, on different platforms, using different 
> build tools.
>
> Look, these problems are really hard to deal with. Myself I have 
> experience with building 2-3 languages using 2-3 build tools on 2 
> platforms, and I consider myself a complete novice and usually decide 
> to trust David's instincts over trying to make up an opinion of my own 
> -- simply because I know he's got a lot more experience than I have.
>
> Theoretically it is possible to separate and isolate concerns so that 
> one set of people discuss build integration and another set of people 
> discuss installation. Problem is that all the problems tangle -- in 
> particular when the starting point is distutils!
>
> That's why *sometimes*, not always, design by committee is the wrong 
> approach, and one-man-shows is what brings technology forwards.

I am not saying this should be designed by a commitee, but rather - if 
such a tool can be made compatible with simple Distutils project, the 
guy behind this tool can probably help on a PEP with feedback from a 
larger audience than the sci community.

What bugs me is to say that we live in two separate worlds and cannot 
build common pieces. This is not True.

>
>> So, I reiterate my proposal, and it could also be expressed like this:
>>
>> 1/ David writes a PEP where he describes how Bento interact with a
>> project -- metadata, description files, etc
>> 2/ Someone from distutils2 completes the PEP by describing how setup.cfg
>> works wrt Extensions
>> 3/ we see if we can have a common standard even if it's a subset of
>> bento capabilities
>
> bento isn't a build tool, it's a packaging tool, competing directly 
> with distutils2. It can deal with simple distutils-like builds using a 
> bundled build tool, and currently has integration with waf for 
> complicated builds; integration with other build systems will 
> presumably be added later as people need it (the main point is that 
> bento is designed for it).
I am not interested in Bento-the-tool. I am interested in what such a 
tool needs from a project to use it =>

"It can deal with simple distutils-like builds using a bundled build 
tool"  => If I understand this correctly, does that mean that Bento can 
build a distutils project with the distutils Metadata ?

If this is the case it means that there a piece of function that 
translates Distutils metadata into something Bento deals with.

That's the part I am interested in for interoperability.



>
> Dag
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: 
> http://mail.python.org/mailman/options/python-dev/ziade.tarek%40gmail.com



More information about the Python-Dev mailing list