-10. Directory permissions must be lax enough for the **exim** user running the test suite to be able to access the files that user farm has checked out. Make the **farm** user's home directory be world readable and world searchable:
-`chmod o+rx $HOME`
-11. Test the build process by running `./run_build.pl --test --verbose=2`. If there are build errors, make adjustments, install additional packages, etc, and repeat the test. You can repeat this as many times as you want because test mode does not store the status of the git repo or the status of each stage of the build.
-12. The official process can be kicked off by running `/home/farm/code/run_cron.sh`. This will run the default build configuration and upload the results to the server.
-13. Once that command runs with no complaints, add it to the **farm** user crontab. You can run it at whatever frequency you choose, I suggest 1 hour. If a previous instantiation is still running, the script will detect the lockfile and exit.
-14. In the default configuration, a full rebuild of Exim will occur every 7 days, and it will also build and run the test suite. You can choose to also have it also build the docs, but there are several extra package requirements for it to build the documentation.
-15. Review your enabled features in the Makefile and make adjustments to your *build-farm.conf* to enable those features, using either the makefile_set, makefile_add, or makefile_regex. You may also receive requests from the developers to enable specific features on your build.
-16 The default build configuration will build all branches specified in a text file on the server. Most of the time this will only be HEAD, but occasionally the developers may have an interest in building some experimental code on a different branch. The above configuration will do all of it automatically for you. The *run_cron.sh* will also check the master repo at github and update itself (the Exim Build Farm Client software).
\ No newline at end of file
+**CAUTION:** Do not ever change anything in the git repo under that is created in *$HOME/buildfarm/HEAD/exim/*. It will cause the build to fail in the Git-Checkout phase.
+11. Directory permissions must be lax enough for the **exim** user running the test suite to be able to access the files that user farm has checked out. One recommendation that we know works is to make the **farm** user's home directory be both group and world readable and group and world searchable:
+`chmod og+rx $HOME`. Additionally, every subdirectory between */* and *$HOME/buildfarm* should have this permissive access. Some users have reported they must set *$HOME/buildfarm* to 0775 for the test suite to run. What do these open permissions fix? One thing that tighter permissions will break, for example, is test 0005, because the sudo'd exim process in the test suite will be unable to read that test config file.
+12. Make sure that your umask is 0022: `umask 0022`. This also will need to be set in any script you call the run_build script.
+13. Test the configure process by running `./run_build --test --verbose=2 --only-steps=configure`. If there are errors, you'll need to correct them until the process succeeds (ends with OK). You can repeat this as many times as necessary because test mode does not store the status of the git repo or the status of each stage of the build.
+14. Test the build process by running `./run_build --test --verbose=2 --only-steps=configure,make`. If there are build errors, make adjustments, install additional packages, etc, and repeat the test.
+15. Test the test suite by running `./run_build --test --verbose=2 --only-steps=configure,make,test --override range_num_tests='1 2'`. There will be one error on a standard system: the Exim test suite uses ifconfig to obtain the IP address, and this binary is frequently not in a regular user's path. Temporarily fix this by running `export PATH="/usr/sbin:/sbin:$PATH"` to prepend the probably directories where that command is located to your regular user path. (Instructions on how to do this automatically in the cron job are below). If there are build errors when building the test suite, or runtime errors trying to run the test suite, you may need to install additional packages (you shouldn't though).
+16. If you enabled the documentation building process in the *build-farm.conf*, then you can try to build it with `./run_build --test --verbose=2 --only-steps=configure,make-doc`. For documentation generation to succeed, it will require extra packages to be installed to support xml, xslt, pdf, and a few other things. Please see the comments on the [Building Documentation](./BuildingDocs.html) page.
+17. If you can get past each of these steps, then your build farm system meets the minimum requirements.
+18. The official process can be kicked off by running `/home/farm/code/run_cron --run-all`. This will run the default build configuration, keep track of the git repository status, and upload the build results to the server.
+19. Once that command runs with no complaints, add it to the **farm** user crontab. You can run it at whatever frequency you choose, I suggest 2 hours. If a previous instantiation is still running, the script will detect the lockfile and exit so as not to step on each other. I had a problem running the *run_cron* script in that cron gives a highly sanitized path to the script when it runs it. I made a second script to call the first one so I could insert path elements in that were needed:
+
+ ````
+ $ more /home/farm/bin/build_farm.sh
+ #!/bin/bash
+ export PATH="/usr/local/bin:/sbin:/usr/sbin:$PATH"
+ $HOME/code/run_cron.sh --run-all $@
+ ````
+20. The default tests that are run are a limited set, from 1 to 999. This covers basic Exim functions, but does not exercise a lot of the advanced functions. Once a few cronjob runs complete successfully, increase the range of tests to run. Edit the *build-farm.conf* file and change the `range_num_tests => '1 999',` to `range_num_tests => '1 5999',` and it will run more advanced tests.
+
+
+## Multiple build clients on one machine
+As mentioned above, you can start at step 9 for each additional build you'll do on the same machine. A second application must be filled out to put the appropriate data in the database because this is treated a separate BuildFarm client:
+
+1. Make a second copy of the *build-farm.conf* with a different name, such as *build-farm-alias2.conf*.
+2. Set the path for build_root and the CCACHE_DIR environment settings, each to a new subdirectory from the first configuration.
+3. Create the new build_root directory.
+4. When testing, pass this additional parameter to any build script you run: `--config /path/to/build-farm-machine2.conf`.
+5. Add a new cron job for this second build farm client in the same way you chose to do the first one, just make sure to specify the --config option with it.
+
+## Further documentation
+* Details of options in [build-farm.conf](./BuildConfigConf.html)
+* Details of [potential testing commandlines](./TestingBuilds.html)
+* Details of [building documentation](./BuildingDocs.html)