Subject: Re: install-if-change?
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Michael L. VanLoon -- HeadCandy.com <michaelv@HeadCandy.com>
List: current-users
Date: 07/06/1996 23:13:38
>On Sun, 7 Jul 1996 00:31:52 GMT 
> christos@deshaw.com (Christos Zoulas) wrote:
>
> > I'd like to see is make rules that check if the target is newer.
>
>To me, this isn't nearly as important as checking that the target is 
>_different_.  One thing I'd like, is to be able to avoid a re-link of 
>_everything_ when building the world, even if the C library doesn't 
>change (though make install in lib/libc will update the timestamp on the 
>library...)
>
>Checking that the target is newer will break if one, for example, touches 
>libc after building it ... distaster strikes if libc actually needs to be 
>reinstalled...

I really had a problem with this, once upon a time, when I was running
a 386 with 5MB of RAM.  It literally took three days to do a complete
clean make world.

One problem I faced was that install may install a library that is
actually *the* *same* library that is in /usr/lib/, but the
modification time changes to the install time, so everything
referencing that library relinks anyway.

The change I made was to add a flag that made install keep the
time/date on the file it was installing (like cp -p).  This saved me a
*lot* of time on that slow machine, since if the lib hadn't changed,
but had only been installed again from the previous build, the
time/datestamp wouldn't change, and the build system wouldn't try to
relink every program.

Someone, who shall remain nameless, thought it was a useless
cluttering of install.  So it never got any serious attention by
anyone but me.  Since then I had gotten a much faster machine, so
didn't need this optimization so much.  Since it was a hastle to
repatch install every time sup brought down new sources, I lost the
patch.

However, if someone thought this was at all interesting, the extra
code should be pretty simple to recreate.  It wasn't terribly complex.

-----------------------------------------------------------------------------
  Michael L. VanLoon                                 michaelv@HeadCandy.com
        --<  Free your mind and your machine -- NetBSD free un*x  >--
    NetBSD working ports: 386+PC, Mac 68k, Amiga, Atari 68k, HP300, Sun3,
        Sun4/4c/4m, DEC MIPS, DEC Alpha, PC532, VAX, MVME68k, arm32...
    NetBSD ports in progress: PICA, others...

   Roll your own Internet access -- Seattle People's Internet cooperative.
                  If you're in the Seattle area, ask me how.
-----------------------------------------------------------------------------