Speedup for make clean-depends (and thus make clean)

Alexander Leidinger Alexander at Leidinger.net
Tue May 22 07:27:24 UTC 2007


Quoting Jeremy Lea <reg at FreeBSD.ORG> (from Mon, 21 May 2007 15:28:16 -0700):

> Hi,
>
> On Mon, May 21, 2007 at 10:20:26AM +0200, Alexander Leidinger wrote:
>> I tried to do the WRKDIR and _DEPEND_DIRS part in one go myself, but
>> it was slower than the patch I did post (in the case where all dirs
>> are already clean). But I did use another implementation, I did a "set
>> -- $$children" and used shift instead of state variables. Did you
>> compare the speed of your patch with the speed of my patch (in a
>> directory with a lot of dependencies like e.g. gnome2)?
>
> In /usr/ports/x11/gnome2 (on an up to date port's tree):
>
> make clean-depends:
> real 1030.98	user 916.21	sys 102.80
> make all-depends-list:
> real 348.25	user 310.27	sys 32.01
> make clean-depends-list: (Your patch)
> real 685.53	user 611.60	sys 65.93
> make clean-depends-full:
> real 346.18	user 310.53	sys 31.94
> make clean-depends-quick:
> real 124.72	user 119.88	sys 3.73
>
> In other words, it takes my poor old machine 17 minutes to do a 'make
> clean' of gnome2 with no existing work directories (i.e. to do nothing).
> Of that 5.8 minutes is spent building the list of directories to clean.
> Your patch increases that to 11.4 minutes (meaning that 'make clean' is
> 33% faster - which matches the numbers you posted).  With my patch it
> takes the same time to build the list (meaning 'make clean' is 66%
> faster).
>
> The cheating quick version takes one tenth of the time, because gnome2
> directly depends on 57 ports, out of 508 total (on my machine).

Yay! Please send-pr and assign to portmgr.

> From bsd.port.mk:
> # clean		- Remove ${WRKDIR} and other temporary files used for building.
> # clean-depends	- Do a "make clean" for all dependencies.
>
> This is the only documentation of the targets that I found.  Using the
> limited-clean target would get users exactly the this behaviour - it
> would clean up the port and all of the other ports it depended on that
> were built to statisfy the building of this port.

I think this should speed up the ports build on the cluster (if they  
don't already cheat and have a dedicated FS which is newfs'ed each  
time) a little bit (together with the other patches we have, it is a  
very nice improvement overall).

> I've added some more to the attched patch, including the idea of a
> pre-clean, which would be useful for portupgrade, since it could define
> DEPENDS_PRECLEAN and not have to worry about cleaning before building...

Yes, sounds nice.

Bye,
Alexander.

-- 
  Leela: Okay, this has gotta stop. I'm going to remind Fry of his
    humanity the way only a woman can.
  Professor: You're going to do his laundry?

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-ports mailing list