[Mailman-Developers] Major updates to Mailman 3.0 branch

Barry Warsaw barry at python.org
Sat Jul 21 22:25:07 CEST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've just merged in my 'setuptools' branch to the official Mailman 3  
branch.  This means that all the autoconf-based building cruft is  
gone, dead, and buried.  Can you say "Yay"? :)

Instead, Mailman is now a setuptools based project, which is rapidly  
becoming the standard for Python applications and libraries.  There  
are lots and lots of benefits to this change; for developers, the  
most immediate benefit is that there's no more configure/make/ 
makeinstall dance for every little change.  It means you can build a  
'development' installation of Mailman and edit and test right in  
place.  This will hugely reduce the overhead for developing the code.

Also gone are the C wrapper programs, so Mailman is now a pure Python  
application.  With the change to wsgi-based web integration, and  
maildir delivery from the MTA, we really don't need them any more.

You'll notice a bunch of other things have disappeared too, like the  
3rd party packages we were distributing in the misc/ directory.   
Instead, these are downloaded on demand from the Python Cheeseshop  
<http://cheeseshop.python.org>.  All the packages Mailman depends on  
live in the Cheeseshop so we don't need to distribute them any more.   
And now that we're a setuptools-based project, when you build Mailman  
(see below), these dependent packages will be automatically  
downloaded and installed as necessary.  You'll need a net connection  
for the initial build, but after that, once the packages are  
installed, you're good to go.

To prepare your existing branch for the update, start by doing a  
'make distclean' followed by a 'bzr revert'.  IMPORTANT - don't do  
this if you have uncommitted changes!  'bzr stat' should now report  
no changes.

Next, cd into your 'misc' directory and remove the following  
directories:

- - Elixir-0.3.0
- - SQLAlchemy-0.3.3
- - setuptools-0.6c3
- - zope.interface-3.3.0.1

These are the unpacked dependent packages and you don't need them any  
more (in fact, they'll get in your way now).  Next, remove any  
residual .pyc files laying around, via:

% find . -name \*.pyc -print | xargs rm

Now do your 'bzr pull' to get the latest 3.0 branch changes.  If you  
have local modifications, you'll need to do a 'bzr merge' and resolve  
any conflicts.

To see if everything's cool, pick a 'development' directory.  I  
usually use a subdirectory called 'staging' in my 3.0 working tree.   
This development directory can be anything, but then do this:

% export PYTHONPATH=<my staging dir>

for me "<my staging dir>" would be `pwd`/staging.  Make sure this  
directory exists.

Next do this:

% python2.5 setup.py develop --install-dir <my staging dir>

After churning for a bit, downloaded some stuff, etc., look in your  
staging directory.  You'll have a bin directory there with all the  
Mailman command line scripts, but all the code will remain in your  
working tree.

You can now do this to run the test suite:

% <my staging dir>/bin/testall

You should see 72 tests passing and no failures.

Though you probably won't get very far, the way this is going to work  
in deployed installations is that you'll have to run bin/ 
make_instance to create some directories and do a few other things  
that the configure and Makefile.in's used to do.  After running that,  
you'll have an etc/mailman.cfg file that you can tweak for your  
installation.  Note that you don't need to do this for bin/testall  
because the testing infrastructure creates a temporary instance that  
it uses.

Let me now if you have any problems.
- -Barry

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iQCVAwUBRqJro3EjvBPtnXfVAQL0OgQAktryl9zYZlZrm9dC644EL2hF+FMHs50v
2JTh2w6UhULAdpj+xneKR04pEfCw6HHNult03jo6NoNjYjMmzpUycDHXj7e0RaKE
mbhMkX2v2b6d01OsMrAbAyWBTZH+2rtmjEKANd/1/+LlIdy3KlJe09m+xgNY9VsV
keEIEdVQcYc=
=J3Mq
-----END PGP SIGNATURE-----


More information about the Mailman-Developers mailing list