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>