Major updates to Mailman 3.0 branch
-----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-----
On Sat, Jul 21, 2007 at 04:25:07PM -0400, Barry Warsaw wrote:
I've just merged in my 'setuptools' branch to the official Mailman 3 branch.
Also gone are the C wrapper programs, so Mailman is now a pure Python application.
I suppose that means that all architecture-dependent code is gone?
All the packages Mailman depends on live in the Cheeseshop (...). 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.
With the hat of distribution packager hat on, we will need a way to disable that mechanism. To be sure that our automated builds are self-contained and will _not_ access the network in any way. Is there any way to do that? I didn't find an option for that in "python2.5 setup.py --help".
-- Lionel
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Aug 4, 2007, at 1:30 AM, Lionel Elie Mamane wrote:
On Sat, Jul 21, 2007 at 04:25:07PM -0400, Barry Warsaw wrote:
I've just merged in my 'setuptools' branch to the official Mailman 3 branch.
Also gone are the C wrapper programs, so Mailman is now a pure Python application.
I suppose that means that all architecture-dependent code is gone?
Yes. I'm going to try very hard not to bring them back. I think we
can do that by using different mechanisms to integration Mailman with
mail and web servers, though I haven't worked my way high enough up
the stack yet.
All the packages Mailman depends on live in the Cheeseshop (...). 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.
With the hat of distribution packager hat on, we will need a way to disable that mechanism. To be sure that our automated builds are self-contained and will _not_ access the network in any way. Is there any way to do that? I didn't find an option for that in "python2.5 setup.py --help".
Yes, but this is a larger issue than just Mailman because just about
any decent sized Python application your going to distribute these is
going to be built around this type of architecture. Probably the
same goes for Ruby and Perl but I don't know those language's
packaging systems very well.
I'm pretty certain eggs play well enough with various distribution
package management systems. I would start here for more information:
http://peak.telecommunity.com/DevCenter/setuptools
- -Barry
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (Darwin)
iQCVAwUBRrR+W3EjvBPtnXfVAQJC1wP+MZ4zrVuFv4OrIC+4tb54s6ZFiOdrqAr9 EenGpf9pWG3Fgu4EnU1OXHK36vz4/SBv1kdoiUyxZ1l+6nE+wFzZ+uf4NekG4uV6 MqdHA3o/lJMfQ6ERpNPKEC9M3G2VzPkhgejAcYpU3ilTQhRbAJciADZ5jzruprZQ ZUnBQx+X9BI= =V/HV -----END PGP SIGNATURE-----
participants (2)
-
Barry Warsaw
-
Lionel Elie Mamane