tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Different behavior for make update?

On Sun, Jan 01, 2012 at 09:32:20PM +0000, John Klos wrote:
 > I used to like "make update" because it used to clean up after
 > itself (unlike "make install ; make clean" which only cleans up the
 > current package, not dependencies also installed). However, that
 > changed sometime:
 > cd /usr/pkgsrc/www/apache22 ; make update
 > ...
 > ls -ld /usr/pkgsrc/*/*/work
 > drwxr-xr-x  16 root  wheel  1024 Jan  1 19:48 devel/apr-util/work
 > drwxr-xr-x  16 root  wheel  1024 Jan  1 19:46 devel/apr/work
 > drwxr-xr-x  16 root  wheel  1024 Jan  1 19:40 devel/pkg-config/work
 > drwxr-xr-x  15 root  wheel  1024 Jan  1 19:41 pkgtools/osabi/work
 > drwxr-xr-x  16 root  wheel  1024 Jan  1 19:41 pkgtools/x11-links/work
 > What happened? What target won't leave a mess lying around to screw
 > up later installs and updates?

Nothing happened and it hasn't changed; it's just somewhat stupid and
nobody's taken the trouble to fix it.

The problem you've run into is that it only cleans the packages that
it removes for recompilation, the ones that end up in work/.DDIR.
Others get left around. It may be possible to fix this by setting
UPDATE_TARGET in mk.conf, although I would think it should be the
default behavior.

The other problem is that for some reason I completely don't
understand, after it finishes building it regenerates work/.DDIR and
uses that list for cleaning. This means that if you do an update build
from package X, and package Y no longer depends on X after being
recompiled, it won't clean Y.

I have a tool that allows doing large rebuilds with a single update
invocation; it works by making itself the bottom-devel dep of all the
packages you want to rebuild, so you can rebuild everything in one go
by making update in its package directory. This is handy for e.g. Perl
updates, where you may not want to do "make update" in lang/perl5 due
to expensive deps like ghc, but want to rebuild everything matching
p5-*. Unfortunately, since afterwards nothing still depends on it,
nothing gets cleaned; this makes it not that useful in practice.

David A. Holland

Home | Main Index | Thread Index | Old Index