tomclegg.net


Diary
Examples
    256-router
    adzap
    apache-double-reverse
    cacti-adodb-php4
    debian-quota
    diskonmodule
    dollarsperbyte
    dynip
  >ezmlm-linux<
    fbsdhabits
    freebsdclone
    macbook-quantal-sound
    maildirpop3d-awfulhak
    mandy
    md
    mrtg
    net-snmp
    nodefaultroute
    oracle9i
    oracle9i-bsd5
    oracle9i-client
    oracle9i-nat
    php-cgi
    php-commandline
    php-image
    php-kics
    php-mini_httpd
    pinouts
    pizzaperdollar
    plesk-symlink-php
    pxe
    qmail-linux
    qmail-qfilter
    racoon-sonicwall
    redundant-vpn
    rewriterule
    seahorse-workaround
    setting-locale-failed
    smalldog
    snmpv3-cacti
    spamassassin
    squid-tproxy
    supfile
    suse73
    svc-nmbd
    svc-smbd
    svc-smtpd
    switch-virtualbox-virsh
    toyotastereo
    vm
    vn-file
    wmp-invalid
    xcode-remote-install
    xen-eth0-renamed
    xen-monowall
    xen3-ubuntu-dapper
    zz-update-grub-fail
Hire Tom
Mostly Mozart
Patches
School
Scrapbook
Software
Telephones




colocation
comments
davidireland
edsgranola
faq
funsites
goodlooking
goodmovies
google-earth-saucy-amd64
houserules
liberating
resume
resume2
scratch
shopping
snacks
todo
university
warisbogus

Install ezmlm on linux
Posted December 6, 2008

Here's how to install ezmlm on a modern linux system (tested on ubuntu "hardy").

(
set -e
cd /tmp
wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
tar xzf ezmlm-0.53.tar.gz
cd ezmlm-0.53
perl -pi~ -e 's{([^\"]log)}{${1}_}g; s{extern int errno;}{\#include }' *.c *.h
make
make man
sudo make setup
cd /usr/local/bin
sudo ln -s ezmlm/* ./
)

Why?

The point of the above recipe is to avoid the following problems.

If you compile ezmlm-0.53 out of the box, you get this:

./load auto-str substdio.a error.a str.a 
/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches
non-TLS reference in substdio.a(substdo.o)
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [auto-str] Error 1
(As far as I know, this is the most obscure known way of telling you to include "errno.h" instead of just declaring "extern int errno"...)

If you fix errno, you find that log is now a built-in function in gcc.

./compile ezmlm-manage.c
ezmlm-manage.c: In function 'main':
ezmlm-manage.c:320: warning: incompatible implicit declaration of built-in function 'log'
ezmlm-manage.c:320: error: incompatible type for argument 1 of 'log'
ezmlm-manage.c:320: error: too many arguments to function 'log'
ezmlm-manage.c:331: warning: incompatible implicit declaration of built-in function 'log'
ezmlm-manage.c:331: error: incompatible type for argument 1 of 'log'
ezmlm-manage.c:331: error: too many arguments to function 'log'
ezmlm-manage.c:135: warning: return type of 'main' is not 'int'
make: *** [ezmlm-manage.o] Error 1

Finally, if you don't make the symlinks, .qmail files might not find the ezmlm-* programs.