[Kfwdev] comments on current build script

Ken Raeburn raeburn at MIT.EDU
Sat Apr 21 21:40:33 EDT 2007


I tried doing a build in AFS this weekend.  Actually, I was trying  
Friday, but ran into a number of mostly minor issues.  Saturday I got  
it going.  From my ramblings in jabber and other observations:


[07/04/21 17:28:11] A    krb5\README
[07/04/21 17:28:11] Exported revision 19519.
[07/04/21 17:34:40]
[07/04/21 17:34:41] \project\kfw\sources\pismere\athena\*.* copied to  
\project\kfw\sources\public\ziptemp\src\athena\

It would be useful if a message is printed before doing anything that  
may take some time.  Like copying big trees into "ziptemp", which  
took six minutes in my setup.  Well, maybe other stuff was happening  
then too, but I didn't see anything reported.


Is there a reason to require that cygwin be installed in the non- 
default location \tools\cygwin other than the hard-coded path for the  
cygwin "find" program?  (1) Using the default location for cygwin  
would be nicer, and (2) you could search PATH for "bash" and assume  
UNIX "find" will be in the same directory.


"bkw.pl ... /s ..\sources" didn't work.

Pathname parameters should be allowed to be relative.  It's not that  
hard to figure out where you're running from and convert relative  
paths to absolute ones.  (Well, maybe on Windows it's a little  
trickier, if C:foo is supposed to mean "foo" relative to whereever  
you'd be when you switch back to C: drive, which you're not in at the  
moment.  But requiring either relative paths with no drive prefix or  
absolute paths would be reasonable, I would think.)


"bkw.pl ... /s \blah\blah\blah\sources" didn't work in Z:.

The /out parameter should probably default to $src\public, not a  
separately hard-coded directory in C: under the default source location.


[07/04/21 17:34:54] Info -- Looking for filenames containing CVS
[07/04/21 17:36:45] Info -- Looking for filenames containing .cvsignore
[07/04/21 17:38:21] Info -- Looking for filenames containing Changelog

The multiple invocations of find to hunt for CVS and .cvsignore and  
ChangeLog took over five minutes.  This could be improved: "find . ( - 
name CVS -o -iname .cvsignore -o -iname ChangeLog ) ..." would find  
them in one pass.  And if the find option "-exec rm -rf {} \;"  
doesn't work in Windows, you could still run one "rm -rf" command  
with all the items to be deleted, instead of one "rm -rf" command per  
item.  And since I specified an export with a CVS tag name, you can  
skip looking for CVS anyways, I think.


[07/04/21 17:38:21] Info -- Looking for filenames containing Changelog
[07/04/21 17:49:47] Using build_local_opts.pm
[07/04/21 17:49:47] <<mit-k73bd7p53jg>>
[07/04/21 17:49:47] build.pl invoking NMAKE with the following options:

Allowing a couple of minutes for the ChangeLog search, I'm not at all  
sure where the other 9+ minutes went here.


All told, it was over 20 minutes from the end of the checkout process  
to the first compilation command, and the whole process took me two  
and a half hours.  The build I did into local "disk" (a VMware  
virtual disk, stored in a file on the host) took about 38 minutes  
total, including doing the initial checkouts (which I think were full  
checkouts, not exports, so probably involved more file system work,  
actually).  Jeff's AFS build took 3 hours, he reported, but he's in  
NYC and using a file server here at MIT.  My file server access was  
via the VPN on campus to a file server running on a SunBlade 1500 in  
my office that wasn't doing much else at the time.

It looks like a fair bit of time is spent waiting for files to be  
read or written; the VMware process doesn't get above about 80% usage  
of the host cpu unless the compiler is working on a relatively big  
file.  It's too bad Windows nmake doesn't support parallel jobs --  
let one compiler invocation crunch on one file while another one (or  
more) blocks on AFS....

Ken



More information about the kfwdev mailing list