On Sat, Sep 22, 2007 at 08:02:34PM -0700, Vincent Fox wrote: > Bron Gondwana wrote: > > Do you have the 'makedepend' utility on your system? I found > > that if it wasn't there, "make depend" would not get all the > > dependencies in place. > > > In Solaris, there is a makedepend in /usr/openwin/bin. Hence my including > that directory in PATH at top of script. I suppose it might not be a > suitable > version but I don't see anything going obviously wrong during the makedepend > part of the compile. > > Also, I agree that I've had problems with "make -j 5" and > > fallen back to not parallelising, so there are probably other > > missing dependencies too. I guess the trick might be to run > > "make clean" and then try building each target by hand (erm, by > > which I mean script of course. Who likes doing things by hand?) > > and see what breaks! > > > > > > Yes, I also had make -j 2 in the previous version but removed that as one of > the steps in trying to get it to build. No dice. > > I'll keep poking at it. Building into a shared source directory leads to > an undesirable messy situation when you have multiple hardware > platforms and OS versions. Here's what the cyrus specific bit of our build script looks like: function build_package { get_file cyrus-imapd-$CYRUS_VERSION.tar.gz ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ tar -zxf /src/cyrus-imapd-$CYRUS_VERSION.tar.gz cd cyrus-imapd-$CYRUS_VERSION svn co svn://svn.internal/$SVN_BRANCH/hm/conf/patches/cyrus_quilt patches quilt push -a || exit patch -p1 < /home/mod_perl/hm/conf/patches/cyrus-fastmailsecrets.diff || exit autoheader || exit autoconf || exit ./configure --with-auth=unix --without-krb \ --with-perl=/usr/bin/perl \ --enable-idled --with-idle=idled \ --with-extraident=fmsvn$SVN_VERSION \ --prefix=/usr/cyrus \ --with-cyrus-prefix=/usr/cyrus \ --with-com_err=/usr \ --without-snmp \ --enable-replication \ --enable-pcreposix make depend || exit make all CFLAGS="-O2 -g" || exit make -C sieve test || exit make install DESTDIR=$BASEDIR/target install -o root -m 755 sieve/test $BASEDIR/target/usr/cyrus/bin/sieve-test install -o root -m 755 tools/rehash $BASEDIR/target/usr/cyrus/bin/rehash install -o root -m 755 tools/mkimap $BASEDIR/target/usr/cyrus/bin/mkimap install -o root -m 755 tools/translatesieve $BASEDIR/target/usr/cyrus/bin/translatesieve install -o root -m 755 tools/upgradesieve $BASEDIR/target/usr/cyrus/bin/upgradesieve cd $BASEDIR mkdir -p $BASEDIR/target/usr/src mv cyrus-imapd-$CYRUS_VERSION $BASEDIR/target/usr/src/ tar -zc -f target/cyrus-fastmail.tar.gz -C $BASEDIR/target usr/cyrus tar -zc -f target/cyrus-fastmail-build.tar.gz -C $BASEDIR/target usr/src/cyrus-imapd-$CYRUS_VERSION alien --version="0fmsvn$SVN_VERSION" -k $BASEDIR/target/cyrus-fastmail.tar.gz alien --version="0fmsvn$SVN_VERSION" -k $BASEDIR/target/cyrus-fastmail-build.tar.gz } This generates the Debian packages we then install (yeah, hardly better than tarballs, but at least our dependency tracking system handles them nicely. I do intend to build a _real_ Debian package one day. get_file is a function which caches a copy of the package locally and only re-fetches it if it's not present. Very handy for building somewhere random where you don't have a copy lying around - so long as you have access to the subversion server it's all good (in some places this is 127.0.0.1 and an ssh tunnel to the apropriate machine. Mostly it's just a VPN connection or the internal network) Bron. ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html