Subject: Re: make install and includes vs. domestic
To: Chris G. Demetriou <cgd@netbsd.org>
From: Simon Burge <simonb@telstra.com.au>
List: current-users
Date: 04/08/1999 11:57:37
Chris G. Demetriou wrote:

> I just noticed -- by accident -- that make install and make and make
> includes at the top level seem to do _nothing_ with domestic.  This is
> broken.

I can't comment on domestic because that's naughty and I can't look in
there.  But, this raises something else I've thought of every now and
then...

> Currently, to build domestic bits, you have to make build, or do it by
> hand.
> 
> When doing a minor update of the system, i.e. between two 'near'
> versions of the source, previously you could do:
> 
> 	make -k includes
> 	<wait a little bit>
> 	su then make -k includes
> 	<wait a little bit>
> 	make -k
> 	<go away for a long time>
> 	su then make -k install
>
> [[ stuff deleted ]]
> 
> 'make build' is simply not a reasonable solution; it requires both the
> ability to write to an object tree and the ability to install
> software.  That is, if your objects are on NFS, you have to use
> -root=0 or the equivalent.
> 
> Until we can actually do a complete build without privilege (which
> should be the goal; the need to install things is broken), in my
> opinion, even though they do the potentially-wrong thing, the
> top-level build and install targets _should_ descend into domestic, or
> warn loudly about it in a 'break the build unless you define a special
> option indicating you know what's going on' kind of way.

I get the feeling (just a hunch!) that not many people try to do as
much of a build as they can without root privileges.  Your sequence
above mirrors what I usually do, except for "release" builds where
it's just "su" then "make release".

Alistair's ${SU_CMD} for pkgsrc was a _marvelous_ idea - with "priv"
(and probably with some of the other root-privilege-giving commands)
it's way cool and requires no extra interaction.  Whether it scales
for "make build" as joe-ordinary-user is another thing ("Enter root
password: " for _each_ call to ${INSTALL} - yech :-)...

Simon.