This directory contains scripts that are used in the build process of CIPRES. These scripts fall into 2 categories: * nightly build scripts for updating the CIPRES web site * bootstrapping scripts to help developers get started. Because the non-Windows build system relies on autotools, the build procedures are quite different for Windows and non-Windows platforms. See $CIPRES_TOP/doc/notes.pdf for general instructions (if you just want to build CIPRES). ################################################################################ # Mac and *nix automated builds ################################################################################ To set up a machine to do nightly builds. These scripts are not very flexible (I assume that we'll have a pretty uniform set up for creating snapshots). For instance, they assume that you are using some form of Bourne shell. 1. Create a file and used it to set env variables (I use $HOME/shell/nightlyBuild.sh) Here is an example: ################################################################################ # CIPRES_TOP is the top of an svn-controlled copy of the source export CIPRES_TOP="/mholder_not_syncd/CIPRES-and-deps/cipres" # webServerName is the hostname of the CIPRES web site. export webServerName="myfiles.sdsc.edu" # webDir is the full path to the www.phylo.org directory on the server export webDir="/misc/www/projects/TOL" # buildMachine is a string describing OS an arch that is used to tag builds export buildMachine="Mac-10.4.7-PowerPC" # CIPRES_USER_DIR specifies a directory to be used as the user's home for # running CIPRES (e.g. in the automated tests). # You need to set it to something, and it should be something other # than ~/cipres only if you are going to be tweaking ~/cipres in ways that # might break the build export CIPRES_USER_DIR="/Users/Shared/CipresUserHome" # CIPRES_POSTED_BUILD_TEMPLATE is a dir that is a template for end-user distributions export CIPRES_POSTED_BUILD_TEMPLATE="$CIPRES_TOP/cipres-build-scripts/mac-distrib-template" # $CIPRES_TOP/cipres-build-scripts needs to be on the path export PATH="$PATH/:$CIPRES_TOP/cipres-build-scripts" ################################################################################ 2. CIPRES_TOP should be up-to-date and configured (you must have already built with dependencies). 3. CIPRES_DIST_CREATOR is NOT used in the scripts, but I use it in crontabs to refer to the full path to a clean cipres directory that is used to create the source distributions (using "make dist"). $CIPRES_DIST_CREATOR can be the same as $CIPRES_TOP. $CIPRES_DIST_CREATOR must be a configured before the scripts are called. export CIPRES_DIST_CREATOR="/Users/Shared/dist_creator/cipres" 4. CIPRES_FROM_DIST_BUILD_PARENT is NOT used in the scripts, but I use it in crontabs to refer to the full path to a CIPRES-and-deps directory that can be used for testing builds. This CIPRES-and-deps directory should be built once manually to bootstrap. When the scripts are run, the cipres* subdirectory will be deleted, so don't use a directory that has your code changes. This directory will accumulate old build logs (I like to look at them occassionally) so you'll need to periodically throw them away. export CIPRES_FROM_DIST_BUILD_PARENT="/Users/Shared/from_dist/CIPRES-and-deps" 5. CIPRES_AND_DEPS_TEMPLATE is NOT used in any scripts, but I use it to refer to directory that has a clean copy of the third party dependencies. This is the source of the CIPRES-and-deps directory that will be tarred and posted. export CIPRES_AND_DEPS_TEMPLATE="/Users/Shared/template/CIPRES-and-deps" 6. Make sure that passwordless authentication is configured for myfiles.sdsc.edu. 7. Make sure you can checkout from SDSC's svn repository (without a password). 8. Use "crontab -e" to create or edit your user crontab. Create an entry like: 01 18 * * * (source $HOME/.profile ; source $HOME/shell/nightlyBuild.sh ; sh $CIPRES_TOP/cipres-build-scripts/updateSDKArchive.sh $CIPRES_DIST_CREATOR $CIPRES_AND_DEPS_TEMPLATE $CIPRES_FROM_DIST_BUILD_PARENT) > $HOME/latestUpdateSDKArchiveOut.txt 2>&1 This script runs at 6:01PM, does an SDK build ("make dist" and then build from the distribution code). Then it posts build logs and test-reports to the web site. If CIPRES_POST_SDK_CODE_SNAPSHOT is set in the env, then the source snapshots are posted to the SDK page. Mark (and maybe one Windows developer need to have CIPRES_POST_SDK_CODE_SNAPSHOT in the env. Output is redirected to $HOME/latestUpdateSDKArchiveOut.txt ################################################################################ # Mark Holder only ################################################################################ Mark has a machine that posts the source snapshots. We might need a windows machine to do update the cipres-and-deps-win32.zip archive. On this machine I have export CIPRES_POST_SDK_CODE_SNAPSHOT=1 in my $HOME/shell/nightlyBuild.sh file, and I have another crontab: 42 17 * * * (source "$HOME/.profile" ; source "$HOME/shell/nightlyBuild.sh" ; sh $CIPRES_TOP/cipres-build-scripts/updateMaintainerArchive.sh $CIPRES_TOP $CIPRES_AND_DEPS_TEMPLATE) > $HOME/latestUpdateMaintainerArchiveOut.txt 2>&1 ################################################################################ # Windows automated builds ################################################################################ TO BE WRITTEN