tomclegg.net


Diary
Examples
    256-router
    adzap
    cacti-adodb-php4
    debian-quota
    diskonmodule
    dynip
  >ezmlm-linux<
    fbsdhabits
    freebsdclone
    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
    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
    toyotastereo
    vm
    vn-file
    wmp-invalid
    xcode-remote-install
    xen-eth0-renamed
    xen3-ubuntu-dapper
Hire Tom
Mostly Mozart
Patches
School
Scrapbook
Software
Telephones




colocation
comments
davidireland
edsgranola
faq
funsites
goodlooking
goodmovies
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.