On Tue, Jan 23, 2007 at 09:50:32AM -0500, Ken Murchison wrote: > Gary Mills wrote: > > >This behavior is annoying because I build the Cyrus software on a > >development server but then install it on other servers where there > >is no compiler and the source tree is mounted read-only. This breaks > >`make install', which should only install things, not recompile them. > >Can this be fixed, or am I condemned to hack Makefiles myself? > > A 'make install' shouldn't compile anything if all of the generated > files already exist. I would consider this a bug and would gladly > accept a patch which fixes this behavior. I've attached a patch, against cyrus-imapd-2.3.8, that does just that. -- -Gary Mills- -Unix Support- -U of M Academic Computing and Networking-
--- imap/Makefile.Oin Tue Jan 9 11:41:35 2007 +++ imap/Makefile.in Sat Feb 10 09:50:27 2007 @@ -123,7 +123,7 @@ lmtpstats.c lmtpstats.h xversion.h mupdate_err.c mupdate_err.h \ nntp_err.c nntp_err.h -all: $(BUILTSOURCES) $(PROGS) $(SUIDPROGS) +all: xversion $(BUILTSOURCES) $(PROGS) $(SUIDPROGS) pure: imapd.pure lmtpd.pure mupdate.pure @@ -151,11 +151,10 @@ ### Built Source Files -xversion: - rm -f version.o +xversion xversion.h: AWK=$(AWK) $(srcdir)/xversion.sh -xversion.h: xversion +version.o: xversion.h pushstats.c: pushstats.snmp $(srcdir)/../snmp/snmpgen $(srcdir)/../snmp/snmpgen $(srcdir)/pushstats.snmp @@ -199,7 +198,7 @@ $(SERVICE) lmtpd.o proxy.o $(LMTPOBJS) $(SIEVE_OBJS) \ mutex_fake.o libimap.a $(SIEVE_LIBS) $(DEPLIBS) $(LIBS) $(LIB_WRAP) -imapd: xversion $(IMAPDOBJS) mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) +imapd: $(IMAPDOBJS) mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) $(CC) $(LDFLAGS) -o imapd \ $(SERVICE) $(IMAPDOBJS) mutex_fake.o \ libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) --- imap/xversion.Osh Wed Oct 22 13:03:00 2003 +++ imap/xversion.sh Sat Feb 10 08:04:31 2007 @@ -9,12 +9,13 @@ AWK=awk fi +TMPF=/tmp/xversion.$$ DATEPAT=[1-2][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9] TIMEPAT=[0-2][0-9]:[0-5][0-9]:[0-5][0-9] -printf "/* Generated automatically by xversion.sh */\n\n" > xversion.h +printf "/* Generated automatically by xversion.sh */\n\n" > $TMPF -printf "#define CYRUS_CVSDATE " >> xversion.h +printf "#define CYRUS_CVSDATE " >> $TMPF find .. -name '*.[chly]' -print | \ xargs egrep '\$Id: ' | \ @@ -22,4 +23,12 @@ match ($0, pattern) { printf "\"%s\"\n", substr($0, RSTART, RLENGTH) }' pattern="$DATEPAT $TIMEPAT" | \ - sort | tail -1 >> xversion.h + sort | tail -1 >> $TMPF + +if [ -f xversion.h ] && cmp -s $TMPF xversion.h +then + rm $TMPF +else + mv $TMPF xversion.h +fi + --- perl/Makefile.Oin Wed Oct 22 13:50:17 2003 +++ perl/Makefile.in Fri Feb 9 17:54:37 2007 @@ -77,7 +77,7 @@ @for d in $(SUBDIRS); \ do \ (cd $$d; echo "### Making" all "in" `pwd`; \ - if [ -f Makefile.PL ]; then \ + if [ -f Makefile.PL -a ! -f Makefile ]; then \ LIB_RT="$(LIB_RT)" \ BDB_LIB="$(BDB_LIB)" BDB_INC="$(BDB_INC)" \ OPENSSL_LIB="$(OPENSSL_LIB)" OPENSSL_INC="$(OPENSSL_INC)" \ --- perl/sieve/Makefile.Oin Wed Oct 22 13:50:24 2003 +++ perl/sieve/Makefile.in Fri Feb 9 18:02:16 2007 @@ -79,7 +79,7 @@ @for d in $(SUBDIRS); \ do \ (cd $$d; echo "### Making" all "in" `pwd`; \ - if [ -f Makefile.PL ]; then \ + if [ -f Makefile.PL -a ! -f Makefile ]; then \ LIB_RT="$(LIB_RT)" \ BDB_LIB="$(BDB_LIB)" BDB_INC="$(BDB_INC)" \ OPENSSL_LIB="$(OPENSSL_LIB)" OPENSSL_INC="$(OPENSSL_INC)" \
---- 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