From:	Alex Armanasu
Sent:	Monday, January 31, 2000 8:19 PM
To:	NTW Migration Services Dev
Subject:	Building our code

     I have successfully managed to build all the depots that we use.  Here are the rules for building the depots.  Murthy will be producing complete checkin guidelines soon.  One of the rules is that you have to try to check in code that compiles and doesn't cause anyone else's code to stop compiling (don't break the build). The obvious way to accomplish that is to always build the depot before checking in.  This does not work because it takes 6 hours to clean build all the depots we use.  Unfortunately, incremental builds of the depots aren't guarenteed to work.  For now, everyone should try to build all the depots they are enlisted in at least once.  We will clean build every time we check in a header file used outside our binaries.

Depot			Our Binaries			Disk space required to clean build
windows		winstate				1G
ds			Roaming User Profiles		1.7G
shell			Roaming User Profiles applet	1.8G
com			storage				1G
tools							50M
public							350M

     When you create your razzle window, do not use the no_opt option.  The no_opt option tells the compiler not to optimized the code.  This is very useful for debugging.  You should use the no_opt option when you compile code to debug.  However, when clean building, some code will not compile with no_opt, so don't use it.

     When you create your razzle window, do use the no_binaries option.  Normally build tries to create a cd image for installing that is huge.  We don't have enough disk space for it.  Until I get more disks for everyone, use no_binaries so you don't get the install image.

rem This command gives you exactly the same files that are on the lab 4 branch build machines.
rem Use this command from 12PM to 8PM, when the build lab is not syncing the days changes.
rem You can also use "sdx sync @mgmtx86free" to sync all depots you are enlisted in.
cd \nt\<project>
sd sync @mgmtx86fre

rem Use this command to build.  You must use uppercase Z or header files will not get built in the correct order.
rem If you have sunk or changed multiple depots, you must run this command from \nt so that header files from
rem all depots get built before any other files.
build -cZ

     The command "perl \nt\tools\timebuild.pl" does a scorch, sync, and clean build.  This is the command that the build lab uses.  Unfortunately, it does not process its options correctly, so it will always try to build the setup binaries.  Also, it has some race conditions so that the build does not always complete successfully.  Do not use this command at this time.