2005 02 21 A little info on how we build a typical release like 3.14.0int3 The process is the same on different platforms except in the last step where the number of CPUs used in the build is specified . For fcdfsgi2 p=12 , and for cdfpca p=7 . Part A ( tagging ) is done as yourself on a local CDF machine. Part B ( building ) is done on all the central build machines, as cdfsoft (currently only cdfcode is build machine) Part A - Defining a release 0) Log in as yourself. If bash is not your login shell, do exec bash 1) Initialization . ~cdfsoft/cdf2.shrc setup cdfsoft2 development old_release=3.14.0int2 new_release=3.14.0int3 tag_string=v3_14_0int3 cd mkdir work cd work cvs -Q checkout Release # Q refers to quiet (not much print out) cd Release/Releases 2) Clone the release from the last release ../Scripts/Clone_release ${old_release} ${new_release} 3a) If building directly from tags, find out what has been tagged. ../Scripts/MakeIntRetags ${tag_string} ${new_release}.retags 3b) If building from patches file, patch=3.14.0int2a # usually the patches file for the base release. # Retrieve patches file cd ../patches cvs update . # copy patches file to Releases cp $patch.patches ../Release # Convert to retags format cd ../Releases ../Scripts/prepare_patches $patch.patches mv $patch_name.patches ${new_release).retags 4) edit ${new_release}.retags Check that there are no inconsistencies. If there are problems fix them. 5) run the retagger script ../Scripts/retagger ${new_release} ${new_release}.retags Part B - Building the release Do not setup cdfsoft2. Prebuild_new_release will do the appropriate setup. new_release=3.14.0int3 1) Do the pre build. ./Prebuild_new_release ${new_release} 2) Do the build ! Use the instructions echoed at the end of Prebuild_new_release These will look something like cd ~/dist/releases/${new_release}/results ../Release/Scripts/Build_release ${new_release} clean Q=default p=6 E=3 >\ Build.log 2>&1 & NOTE: To build other than the default, change Q=default to Q=maxopt, or other useful value. To do incremental build remove "clean". The build will take about 2 hours on cdfcode. You will want to look at: a) tail -f rebuild_default.prog b) once in a while to check the error status. grep gmake build-logs-default/* Part C --- making corrections ---- Often, the first attempt fails to build and requests for corrections should be sent to the developers and/or cdf_code_librarians. When it is determined that the fixes have been tagged, (this is usually determined by the person guiding the release), login as yourself and as abve use bash as your shell setup cdfsoft2 development 1a) If Building directly from tags, cd ~/work/Release/Releases new_release=3.14.0int3 tag_string=v3_14_0int3a ../Scripts/MakeIntRetags ${tag_string} ${new_release}.retags '8 hours ago' # NOTE: The tag can be the SAME tag as originally used. If there are additional tags (v3_14_0int3a, v3_14_0int3a1, etc) MakeIntRetags knows how to deal with those. However, if the tag string is known, it is better to use it explicitly and avoid other difficulties (the time designation is not needed in this case) The time is any format acceptable to CVS and determines the earliest time to be accepted. I usually use the number of hours since the last retag, approximately. An overlap should not be of major importance. The default is "21 days ago". If an entry is in the new and old *.retags file, it will add a new version to a package with identical content and is not critical, but not ideal. 1b) If building from patches, cd ~/work/Release/patches new_release=3.14.0int3 patches=3.14.0int3a # Note these are now patches for the new release. setup cdfsoft2 development cvs update . cp $patches.patches ../Releases cd ../Releases ../Scripts/prepare_patches $patches.patches mv $patches.patches $new_release.retags NOTE It is important to separate out the new patches from the existing patches. The easiest way is to create a new patches file for each set of fixes. Otherwise a diff will be needed. Of course, the only thing that will be caused by overlap is new version of packages with identical content. 2) Review the ${new_release}.retags file for consistency as advised by MakeIntRetags. 3) ../Scripts/retagger ${new_release} ${new_release}.retags Proceed with the Prebuild_new_release and Build_release on the build machines as above.