Gold Version to do List
We aim to release a gold version of the code every two years. This is the well-tested version which should be used in publications. This gives the steps that we need to take.
A major release exists as a separate branch in the svn repository, beneath the /branches directory. The name consists of the last to digits of the year ending in "_branch". An example is "c08_branch". The branch should be created when the new release goes into beta, and no further major changes are expected.
The actual release is a tag created from the release branch, which will be in the /tags/release directory. The tag should have a name like c08.00, where the last two digits indicate the minor release version number: 00 should be used for the first release in a new release series, 01 for the first bug-fix roll-up, etc.
Starting with the c08 release series, we will also post patch updates to each release. These have names like c08.02_pl01 (this would be the first patch to the c08.02 bug-fix roll-up release), etc. Every time a hot-fix is posted, it should be accompanied by a UNIX patch file. The procedure for creating a patch update is described on the HotFixToDo page.
For all types of releases (main release, bug-fix roll-up, patch update) make sure that the variables CLD_MAJOR, CLD_MINOR, CLD_PATCH in version.h have values that correspond to the version number in the svn tags directory. For main releases and bug-fix roll-ups CLD_PATCH should be zero. If you check out the release or patch_versions tag with svn and run the code (e.g. the smoke test) it will test if CLD_MAJOR, CLD_MINOR, and CLD_PATCH are set correctly (i.e. agree with the name of the tag). A PROBLEM string will be printed at the start of the output if a mismatch is found.
Preparing the trunk for a gold version
Check that there are no blocking tickets.
Top directory
- check copyright year across all of source including license.txt and license_doc.txt [automate, generate errors for non-standard headers]
- others.txt - this is a list of those who contributed to the code. Mail file to developers list to confirm whether it needs to be updated.
source/
- list_headers.pl - This checks on any header files that are not used. [=> regular hygiene]
It produces following output files:
- headers.txt is a summary of all header files
- listfiles.list with all source files using each header
- todo_search.pl This makes a prioritized list of todo's, [=> regular hygiene]
creates todo_table.txt and todo_table.htm, checks no TODO criticality 0
- doc_atomic_data.pl - This extracts all atomic data references. [=> build of Hazy]
The files created are:
doc_atomic_data_refer.txt containing new references
doc_atomic_data_refer_old.txt containing old references.
- fabden should stop with statement that it needs to be replaced [=> crash subdirectory of test suite]
- fudge factors - check that fudge factors are used appropriately [=> test suite]
- run doxygen
data/
- readme_data.htm [=> move to wiki/hazy auto update] review and update
tsuite/auto/
- readme_tests.htm
review
- doc_tsuite.pl
this creates a list of all test cases, including the input commands and a description of its purpose
OUTPUT:
doc_tsuite.txt: contains a tab delimited list of the files,
doc_tsuite.htm: formatted list
- valgrind - run on cloud9
- Run suite through on systems [=>which do we support? how to run?]
Run checkall.pl to diagnose results
Check for sims close to an assert - this is in close.txt
Check that no debugging information is present - this is listed in debug.txt
Review minor problems - these are listed in minor.txt
do grep on "C-" to see what cautions there are. There should be no warnings, "W-"
save files
- Check coverage run to confirm that all punch options are used in at least one of the tests.
- CheckPunchSharp.pl
Save files should start with a header saying what the column indicate. The first character should be a sharp sign. This script lists all files that do not start with "#". This is an error, and may indicate that the header was not properly produced.
tsuite/slow/
- run, confirm ok
tsuite/programs/
- run the programs then check the output
- run_programs.pl will run the set of programs with either gcc or icc.
It obtains a list of the programs from run_programs.dat
docs/latex/
- In head_info.tex check that copyright and citation information,
any other numbers that might have changed, are correct.
- Update table atomic data sources.
- Check whether in press papers in references have appeared
- Replace any old pdf versions of hazy in the top directory with current version
Creating the branch
A branch lives in the branch directory on svn and will have a name like c10_branch. The following should be changed on the branch after it is copied off from the trunk:
- Version numbers are set at top of version.cpp. Typically it will look something like the following:
static const int CLD_MAJOR = 8; static const int CLD_MINOR = 1; static const int CLD_PATCH = 0;
- If this is a beta version then set nBetaVer in version.cpp to a non-zero value, 1 for first beta. etc.
- The flag lgRelease in version.cpp is true if this is a release. This says not to print comments about fixits, broken, todo etc.
- The flags nBetaVer and lgRelease should not both be set - use one or the other.
- The flag lgReleaseBranch should be set to true right after the release branch is created, it is OK to keep it true for releases.
Note that nBetaVer, lgRelease, and lgReleaseBranch will be set automatically in svn working copies. The explicit versions in the else-clause in the constructor in the file version.h are the ones that need to be modified by hand and are only used in source code that was not retrieved via svn.
Creating the tag
- In date.h set YEAR, MONTH, and DAY
- In version.cpp set lgReleaseBranch = true, and increment lgBetaVer. If this is a gold copy release also set lgRelease = true
- Copy branch to tag directory on svn
Creating distribution files
- create tarball from tag. Log into the web server and go to the data area associated with data.nublado.org. Use the commands
cd cloudy_releases svn export http://svn.nublado.org/cloudy/tags/release/c08.01/ tar cvfz c08.01.tar.gz c08.01 rm -rf c08.01
Never use the "file://" form in the svn command since that would expose internal information of the server!
- output files from full set of machines
The release
- post on front page of web site
- make discussion group announcement
- update DownloadLinks page
Return to DeveloperPages
Return to main wiki page
Return to nublado.org
