[Distutils] project description files?

Greg Stein gstein@lyra.org
Sat, 5 Feb 2000 04:36:35 -0800 (PST)


On Fri, 4 Feb 2000, Greg Ward wrote:
>...
> <sarcasm degree="heavy">
> Now Greg, I know you recently moved to California, but I don't know
> where.  From reading that code, I'd have to guess you either live in
> Mountain View, just down the street from a certain Mr. Wall; or you have

I'm in Palo Alto. Next town over. Two in the same town might be... um...
dangerous. :-)

> taken up residence in a low-rent district of San Francisco, and now
> spend your time smoking crack in between "joke" posts to various Python
> mailing lists.

Joke?! Joke!! I was serious. Really!

> </sarcasm>

Ditto :-)

>...
> Now, you can always make things look nicer with some temp. variable
> assignments just before the setup() call, eg.
> 
>   ext1 = ('ext1', { ... hairy build info dict ... })
>   ext2 = ('ext2', { ... another hairy build info dict ... })
> 
>   setup (...
>          ext_modules = [ext1, ext2]
>         )
> 
> But that really only papers over the problem.

This would be my real suggestion to the issue, but that suggestion
wouldn't have been as much fun :-)

> The thing that keeps hitting me on the head is "What are these deeply
> nested data structure for?".  Well, they describe a project: in this
> case, a set of Python extension modules.  So perhaps the answer is a
> simple declarative "project description language".  Meaning that people
> will have to write (simple declarative) "project description files"
> along with their setup scripts.
> 
> Is this sounding to much like make-land for some people?  Or do you
> think it's just the ticket?

Ack! I thought we threw out the "new little language" a while back.

But if you insist, maybe there is a way to break down the structure into
something that fits nicely with ConfigParser? For example:

[global]
target = ooky

[ext1]
flag1 = foo
modules = bar, baz

[ext2]
flag3 = bogle
...

Then use "setup(conf='project.conf')". 

Of course, this throws out all possibility of computed values, which is
why we kept the config "language" in Python. You could state that the
.conf file is used IFF the corresponding parameter is not provided to
setup().

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/