mercurial spec broken

Matt Mackall mpm at selenic.com
Tue Dec 8 01:38:57 CST 2009


On Mon, 2009-12-07 at 12:03 +0100, Dan Villiom Podlaski Christiansen
wrote: 
> > That's it... a very thin setup.py file which is mostly used for what it
> > does best: build C extensions. So users will have to use the Makefile to
> > build man pages and to compile the translations.
> 
> I think that will break user expectations; most Python software can be
> installed with distutils alone, and I believe Mercurial ought to
> provide a fairly complete experience when installed as such.

That's a fine goal, but only if it doesn't cause the (much larger) rest
of the world -any- pain at all.

Mercurial is not "Python software". Its goal in the world is not to play
nice with other Python packages and make other Python developers happy.
It is instead an application that happens to use Python. That means no
one who isn't interfacing with its internals should ever need to know or
care that it uses Python (beyond having possibly installed that first).

This is why I actually prefer having a Makefile. It de-Pythonizes the
install process and that's a good thing. The majority of people building
from source even now don't have any particular interest in Pythonicness.
They just want the latest Mercurial and they just want to type 'make
install'. Hell, -I- like it because it's that much less -I- have to
understand about distutils.

Also, let's face it: distutils (and eggs in particular) kind of suck. 
Anyone who tries to install an egg and a binary package of the same ends
up losing in mysterious ways and get weird path interactions with other
packages. We get at least one report a week of this happening on OS X
(where people are apparently fond of eggs). And most people installing
just an egg (or building just from setup.py) will end up with an
inferior install on their system as well, simply because distutils is
ill-suited for matching the install standards of the dozen different
platforms and distributions Mercurial is used on.

-- 
http://selenic.com : development and support for Mercurial and Linux





More information about the Mercurial-devel mailing list