Subject: Re: upcoming changes
To: None <christos@NetBSD.ORG>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: current-users
Date: 03/16/1997 20:29:35
Christos writes:

[[ install that supports links,  and BUILD and UPDATE make variables
   to make "make build DESTDIR=/other" create a working independent tree ][

Christos,

For cross-directory links, the new install -l *has* to do "-l sr" when
building into DESTDIR for the purposes of making snapshots or
distributions.  Here's why: install -l uses the current system's
partitions (i.e., $DESTDIR) to decide whether to use hard or soft
links.  I have all of my DESTDIR on one partition.  That will cause
"install -l mr" to always use hard links in DESTDIR.

So when I make tarballs, the resulting tarballs contain those hard
links.  Unpacking the tarballs with e.g., /bin/rmail will typically
fail.  install -l makes
	/bin/rmail -> /usr/libexec/rmail 

be a hard link. Default installations have /bin and /usr/bin on
different partitions.  Unpacking the distribution will fail,
trying to make a hard link across partitions.

Please consider making soft links the default Makefile action, at
least for installing cross-directory links.  (or more accurately, for
link that cross ``reasonable'' partition boundaries)
And if I'm wrong, feel free to point it out bluntly :).

>When all this is done, I am planning to clean up all the Makefiles that
>have locally defined rules that they don't need to, and fix them so
>they understand DESTDIR= properly. I.e. when I am finished, you should
>be able to type make build DESTDIR=/other and have a fully populated
>independent tree, without touching your root filesystem.
>
>If you don't like the above speak now!

Sounds great to me, modulo the problem above.
Can we also get

	* move-if-change semantics (a la FreeBSD's install -C),
	  so that rebuilt manpages don't get reinstalled if
	  the new manage is byte-for-byte identical to an
	  older, apparently out-of-date, installed manpage?

	* installation that (at least for  files installed -c and
	  unstripped) preserves the inode time(s) of the original?

The intent here is for the ls -lt dates on installed man pages to
reflect when the manpage last changed, (or at least, to reflect
manpage changes later than such suggested changes to the Makefile and
install machinery get committed.)


thanks
--Jonathan