Subject: Re: redundant "make clean" when bulk building
To: None <pkgsrc-bulk@NetBSD.org>
From: Juan RP <juan@xtrarom.org>
List: tech-pkg
Date: 09/19/2005 07:59:02
On Mon, 19 Sep 2005 07:54:18 +0200 (CEST)
Krister Walfridsson <cato@df.lth.se> wrote:

> 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

pkgtools/pkgclean will clean packages that were used in the past,
and it's much faster than find(1).

> 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).

Agreed, I think we should remove the clean-depends calls and switch
to pkgtools/pkgclean.