{section: Building Condor in NMI} {subsection: Building a branch in NMI} Significant new features should be committed into the git repository on their own branch, and this branch should successfully build and pass all regression tests on all supported platforms _before_ the code is merged back into the master branch. *Step-by-step instructions:* 1: Log into nmi-s006 (get an account if necessary). 2: Become the cndrauto user. Hint: you probably have sudo access, from there su to cndrauto. 3: As the cndrauto user, run git fetch to update the git repo on nmi-s006 from the latest copy on the central repository. Make sure that /prereq/bin (where git is found on nmi-s006) is in your PATH. $ git --git-dir=/space/git/CONDOR_SRC.git fetch 4: Exit back to your real login. 5: Submit the build as yourself. Assuming the branch you want to build is _V7_3-Thread-branch_, you'd use the following: {code} % /home/cndrauto/condor/nmi_tools/condor_nmi_submit --build --git \ --desc="Testing my fix to Foo" \ --module=UNUSED --use-externals-cache \ --src-tag=V7_3-Thread-branch \ --other-tag=V7_2-branch {endcode} *Some notes:* *: To build the trunk, use the src and other tag "master". (This is relatively obvious, but is mentioned because it was not nearly so obvious with CVS.) *: The =--src-tag= describes your branch; the =--other-tag= is the branch to use to pull the docs from. *: If you don't want builds on all supported platforms, use option =--platforms=. *: Note the above will submit both a build and a test. {subsection: Building a Condor workspace in NMI} Here is a common scenario: You would like to do a build on some platform or set of platforms in order to ensure that you haven't broken the build process. What are your options? You could check in the code and wait for the nightly builds, but you may well break the build and receive fifty lashes with a wet noodle. A better solution is to *not* check in your code, but use NMI to build it on any platform that you like. Before you start, make sure that you have an account on nmi-s006.cs.wisc.edu. You also need to be in the cndr-cvs group. NMI staff can set you up with both. This assumes that the changes you want to test are checked into your local git repo in a branch named =feature-branch=. (Another option is to scp your workspace to nmi-s006.) Here's how it works: From your usual machine, % ssh nmi-s006 mkdir workspace % cd path-to-git-dir % git archive feature-branch | ssh nmi-s006 cd workspace \&\& tar xf - Then, log into nmi-s006, and run the following commands % PATH=/prereq/bin:$PATH % cd workspace % git --git-dir=/space/git/CONDOR_DOC.git archive origin/master | tar xf - % cd nmi_tools % ./condor_nmi_submit --build --git --workspace=../ --notify-fail-only --use-externals-cache --desc="A Description" Note that you probably only need the git archive operation the first time you do this. Some important options: *: =--without-tests= suppresses the automatic submission of tests when the build is done. *: =--platforms= takes a comma separated list of platforms. Omitting it will build your workspace on all platforms Condor supports. For a list of available platforms, see "Platforms" below. *: =--use-externals-cache= uses cached externals to speed the build. If you're testing a new external, do *not* use this option. *: =--release-only= returns a tarball of your binaries, but not a final package suitable for distribution. If you're just doing a compile test, or you don't need the rest of the packaging, this will speed the build by about 45 minutes. If you need to generate a package to give to a user (or to submit for testing), omit this option. *: =--desc= specifies a description that appears in the NMI web pages and can help identify your build. *: =--workspace=../= is the location of your workspace. *Warning:* due to a bug in condor_nmi_submit, as of 2006-02-14 the only valid option is "=../=" as given in the example. The script has a couple of other options. run condor_nmi_submit without options for a summary. {subsection: Platforms} If you don't know what platforms to use, you may view the {link: http://nmi-s006.cs.wisc.edu/nmi/?page=pool/index NMI pool status page} (select a host link for more information about installed prerequisite software) or use the /nmi/bin/nmi_condor_status command. It's best to make your terminal window wide and use the -ww option to get the most output. For example: % nmi_condor_status -ww vm1@nmi-build14.cs.wisc.edu | ppc_aix_5.2 | Claimed | Busy | 06:05:338 | cndrauto@cs.wisc.ed| 11358 vm2@nmi-build14.cs.wisc.edu | ppc_aix_5.2 | Claimed | Busy | 02:11:690 | cndrauto@cs.wisc.ed| 11360 nmi-hpux | hppa_hpux_B.10.2| Unclaimed | Idle | 02:15:906 | (None) | (None) vm1@nmi-build34.cs.wisc.edu | irix_6.5 | Unclaimed | Idle | 03:45:272 | (None) | (None) vm2@nmi-build34.cs.wisc.edu | irix_6.5 | Unclaimed | Idle | 03:45:270 | (None) | (None) vm1@nmi-irix.cs.wisc.edu | irix_6.5 | Unclaimed | Idle | 02:05:323 | (None) | (None) vm2@nmi-irix.cs.wisc.edu | irix_6.5 | Unclaimed | Idle | 02:05:309 | (None) | (None) ... vm2@nmi-build29.cs.wisc.edu | sun4u_sol_5.8 | Claimed | Busy | 1+04:31:191 | cndrauto@cs.wisc.ed| 11328 vm1@nmi-0050.cs.wisc.edu | sun4u_sol_5.9 | Unclaimed | Idle | 35:21 | (None) | (None) vm2@nmi-0050.cs.wisc.edu | sun4u_sol_5.9 | Unclaimed | Idle | 35:21 | (None) | (None) nmi-build18 | sun4u_sol_5.9 | Claimed | Busy | 06:26:157 | cndrauto@cs.wisc.ed| 11357 vm1@nmi-solaris10.cs.wisc.edu| sun4u_sol_5.9 | Claimed | Busy | 11:04:270 | cndrauto@cs.wisc.ed| 11350 vm2@nmi-solaris10.cs.wisc.edu| sun4u_sol_5.9 | Claimed | Busy | 15:18:113 | cndrauto@cs.wisc.ed| 11336 janet.cs.wisc.edu | x86_winnt_5.1 | Unclaimed | Idle | 03:34:209 | (None) | (None) {subsection: Testing a Condor NMI workspace build in NMI} Assuming you're still in the nmi_tools subdirectory of your workspace, and that your build with runid 1234 is completed, you can submit a test run with the following: % ./condor_nmi_submit --test --platforms=all \ --buildid=1234 \ --desc="Description of this build" --workspace=../