The annoyance of repeating Makefiles

Gary Mills mills at cc.umanitoba.ca
Thu Mar 15 19:29:09 EST 2007


On Thu, Mar 15, 2007 at 12:53:33PM -0400, Ken Murchison wrote:
> Gary Mills wrote:
> >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.
> 
> I'm finally looking at this patch, but what if I just do 'make imapd'? 
> If any of the source files has been updated, we won't get an update 
> CYRUS_CVSDATE

The perl portions are okay, but in the imap portion it seems that I've
fixed my problem but not yours.  The thing is that it's not possible to
have a file that's updated when any component is updated, and also
required by one of those components.  That's what causes the repeat.
My fix was not to change the timestamp on the file when its contents
had not changed.  That stopped the repeat, but doesn't give you what
you need for CVS.

However, since `make' only cares about the timestamp, and CVS only cares
about the content, of the xversion.h file, it might be possible to make
this work for both.  The trick would be to get the dependancies correct
in the Makefile.  I'll have another attempt, unless somebody beats me
to it.

-- 
-Gary Mills-    -Unix Support-    -U of M Academic Computing and Networking-


More information about the Info-cyrus mailing list