Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 1994 20:04:03 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        root@io.cts.com, wollman@halloran-eldar.lcs.mit.edu
Cc:        hackers@freebsd.org
Subject:   Re: Error building libncurses
Message-ID:  <199412220904.UAA01005@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>I almost never do a `make world' unless I know some dramatic change
>has occurred which forces a bootstrap (like the upgrade from GCC 2.6.0
>to 2.6.1).  Instead, here's what I do:

>1) Install any new /usr/src/include include files by hand.

I never do a `make world', but I install non-dramatic changes similarly:

0a) Save the list of files changed by ctm.

0b) Sort this list.

0c) Read the the diffs for interesting files.  It helps to have cvs
access and read the commit logs too, but for looking at the diffs I
usually copy the old files, cvs-update to the new files and then run
non-cvs diff.

>2) Run beforeinstall targets for any likely-sounding directories.

The list of changes gives the likely-sounding directories.

>3) Run `make depend' at the top level, and watch which dependencies
>get rebuilt.

I normally only run `make depend' on the directories in which a file
has changed.  I run it at the top level every now and then.  It should
be run whenever something in /usr/include has changed, but `make depend'
doesn't notice such changes, so there is no point.

>4) Go to /usr/src/lib and /usr/src/secure/lib, and do a `make all' in
>both directories.  ONLY INSTALL THE LIBRARIES THAT ACTUALLY GET
>REBUILT.  (This part is important, because a `make install' at the
>/usr/src/lib level will cause crt0 to get reinstalled, thus forcing a
>re-link of the entire known universe.)

My `install' is hacked to not clobber the timestamps of unchanged files,
so I can afford to reinstall the entire library.  Installing the man
pages still takes too long.  libc.a usually changes, thus forcing a
link of the entire known universe anywyay.  This link is usually bogus
because most executables use libc.so.major.minor and not libc.a so they
should only depend on major.minor.

4a) I usually run `make; make install' on directories with changed files
at this point.

>5) Go back to /usr/src and do a `make most'.  This will do a
>single-pass rebuild of all the programs in the system.

I normally use `make ECHODIR=true'.  Any output from this (apart from
relinks) probably means that I forgot something in a previous step.

>6) If this succeeds, do a `make installmost'.  This will install the
>programs, but not the libraries or /usr/src/share stuff.

I use plain `make install'.  The non-timestamp-clobbering install increases
the amount of work to be done, but ensures that the next make will find
nothing to do.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199412220904.UAA01005>