Subject: redundant "make clean" when bulk building
To: None <pkgsrc-bulk@NetBSD.org, tech-pkg@NetBSD.org>
From: Krister Walfridsson <cato@df.lth.se>
List: tech-pkg
Date: 09/19/2005 07:54:18
The bulk builder start build of each package by doing "make clean"
in the prerequisite packages, and end the build of the package by
once again doing "make clean" in them.  I assume that this is to
ensure that there are no old work directories in case the build
of the package need to rebuild some of the prerequisites. Are
there other reasons?

I have two issues with this mechanism:

1. It is slow
    The combined time for the pre- and post-cleaning for a package
    such as x11/kde3-i18n-uk is about 1 minute on my amd64 box, and
    much more on my slower machines.

2. It does not work
    The dependency graph is calculated using "make show-depends-dirs"
    which makes it contain too few packages when you use PKGLIST.
    For example, setting PKGLIST=x11/kde3-i18n-uk will give you a
    list of 6 prerequisites, instead of the 58 prerequisites that
    are needed to build it.

But I don't understand what this mechanism buys us: issue 2 forces
me to do

   find /usr/pkgsrc -name work | xargs rm -rf

before starting a PKGLIST build, or some packages will fail.

On the other hand, packages that are in the prerequisites list have
already been built (and have thus cleaned up after themselves), so
the "make clean" of them is only wasting time.

So I think the pre- and post-cleaning of prerequisites can be
removed.  Or have I missed something? (if so, then I'd like to
change it to only clean the packages that will be rebuilt...)

I propose to fix issue 2 by creating a full dependency list for
the packages (i.e. packages reported by "make show-depends-dirs"
will automatically be prepended to PKGLIST during the dependency
graph creation).

Comments?

    /Krister