Matthias Andree
2008-Aug-20 22:29 UTC
"make delete-old" misses files, breaking KRB5-related builds
Greetings, I am a long-time user of FreeBSD (I think my oldest installations used to be 4.0 and have been upgraded ever since). Not quite recently, the build targets for "make delete-old" and "make delete-old-libs" were added, and I thought there were sort of useful to get rid of crap after updates. However, something somehow somewhen dropped old gssapi_generic.h and related files into /usr/include/gssapi which sat there waiting to wreak havoc on port builds on later 6.X or 7.0 releases. Either some port installed outside $PREFIX, or these used to be part of the system and got removed before the "make delete-old" framework was put into place. "Wreak havoc" means mislead configure scripts of several packages (GNOME-related in my case) to believe some other installation was there, but it wouldn't work because some parts of the system were missing/changed... I ended up manually figuring out what got installed and kill everything that had no source... an enormous effort. What I would like to have is a means of "compare what gets installed into /bin /sbin /libexec /lib /usr/bin /usr/sbin /usr/include /usr/lib /usr/libexec and other standard system directories" to what's actually in those directories - such a comparison would have easily allowed me to spot the problem areas. Comparing file dates doesn't work properly, else a find /usr /lib* /*bin -name local -prune -or \( -mtime 30 -print \) after a "make installworld" would be the easiest thing to do... but some parts of the system use install -C (probably to avoid excessive recompiling or relinking). So what's the canonical way to "installworld" into a staging area so I can just compare or rsync --del system directories? -- Matthias Andree
David Wolfskill
2008-Aug-20 22:47 UTC
"make delete-old" misses files, breaking KRB5-related builds
On Thu, Aug 21, 2008 at 12:02:38AM +0200, Matthias Andree wrote:> ... > Not quite recently, the build targets for "make delete-old" and > "make delete-old-libs" were added, and I thought there were sort of > useful to get rid of crap after updates. > > However, something somehow somewhen dropped old gssapi_generic.h and > related files into /usr/include/gssapi which sat there waiting to wreak > havoc on port builds on later 6.X or 7.0 releases. Either some port > installed outside $PREFIX, or these used to be part of the system and > got removed before the "make delete-old" framework was put into place. > "Wreak havoc" means mislead configure scripts of several packages > (GNOME-related in my case) to believe some other installation was there, > but it wouldn't work because some parts of the system were > missing/changed... > ... > So what's the canonical way to "installworld" into a staging area so I > can just compare or rsync --del system directories? > ...I don't promise that it's "canonical," but an approach that has stood me in good stead for several years has been to precede "make installworld" with rm -fr /usr/include.old && mv /usr/include{,.old} thus causing the "make installword" step to completely re-create /usr/include from scratch. Granted, this will be of reduced utility if there are any other procedures you use to update /usr/include. Peace, david -- David H. Wolfskill david@catwhisker.org Depriving a girl or boy of an opportunity for education is evil. See http://www.catwhisker.org/~david/publickey.gpg for my public key. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20080820/739d5838/attachment.pgp