Hi all,

I have been codifying the recent discussions on team-cellml into a shell 
script which can be used to control the build process. This shell script 
will be sourced into the scripts used launch automated builds, and also 
into the scripts which package snapshots and put them onto the FTP 
server in the snapshot directory.

I propose the following process for releases:
1) Any major outstanding bugs on the trunk are fixed, and the latest 
snapshot is tested.
2) The trunk directory in Subversion is copied to a 
branches/versionnumber subdirectory in the relevant Suversion tree, with 
svn cp.
3) The branch configuration script (below) is updated specify the new 
versions (this implies there will only ever be one branch open at the 
same time as the trunk).
4) Automated builds (which also run the unit tests) with BRANCH=yes are 
enabled in cron, in addition to the standard non-branch builds.
5) The documentation on the branch is updated to specify the version 
number as being a stable version, instead of the text on the trunk, 
which claims the code is an unstable trunk release.
6) Snapshots are also put out periodically, by running the snapshot 
release scripts with BRANCH=yes. The filename for these snapshots will 
have the date on them, as with the other builds, but will also have the 
suffix "branch" followed by the name of the branch (with _ replacing . 
in the version number). As with other snapshots, these releases will 
automatically be put on the FTP server.
7) Snapshots will be put through an informal functional tests. Any 
community feedback on snapshots will also be looked into. Any resulting 
patches will be applied to the trunk, and if the bug is serious enough, 
and the patch worked out properly on the trunk, it will also be applied 
to the branch.
8) When a snapshot which passes the functional tests has been created, 
the snapshot will be renamed (but not modified), and put into the 
applicable Plone software centre as a release candidates. Notifications 
of the release candidate will be sent to [EMAIL PROTECTED]
9) Should any bugs in the release candidate by the community be 
reported, they will be looked into, and any resulting patch will be 
applied to the trunk. If the bug is serious enough, it will be put onto 
the branch, and the process will go back to step 7.
10) The CellML team will discuss and vote on whether to release the 
release candidate at the next CellML meeting. If the vote is in favour 
of a release, the release candidate will be put in the Plone software 
centre as a stable release. If the vote is not to release it, members of 
the team opposed to the release will give a reason why it should not be 
released. If the reason is that they need more time to review the 
release, or that the community should have more time to review the 
release, this step will repeat at the next meeting. Otherwise, any 
identified issues will be corrected on the trunk, and once the patch 
works on the trunk, will be moved onto the branch. The process will then 
go back to step 7.

The proposed script controlling version numbers (with step 3 already 
incorporated for the next release) is below...

REPO_PREFIX="https://svn.physiomeproject.org/svn/physiome/";
if [[ x$BRANCH == xyes ]]; then
        VERSION_CELLML_API=1.0
        VERSION_XPCELLML_API=1.0
        VERSION_PCENV=0.1
        VERSION_XPCORBA=0.1
       
        
REPO_CELLML_API="${REPO_PREFIX}CellML_DOM_API/branches/$VERSION_CELLML_API"
        
REPO_XPCELLML_API="${REPO_PREFIX}xpcellml_api/branches/$VERSION_XPCELLML_API"
        REPO_PCENV="${REPO_PREFIX}pcenv/branches/$VERSION_PCENV"
        REPO_XPCORBA="${REPO_PREFIX}XPCORBA/branches/$VERSION_XPCORBA"

        SUF_CELLML_API=branch$(echo $VERSION_CELLML_API | tr . _)
        SUF_XPCELLML_API=branch$(echo $VERSION_XPCELLML_API | tr . _)
        SUF_PCENV=branch$(echo $VERSION_PCENV | tr . _)
        SUF_XPCORBA=branch$(echo $VERSION_XPCORBA | tr . _)
else
        VERSION_CELLML_API=trunk
        VERSION_XPCELLML_API=trunk
        VERSION_PCENV=trunk
        VERSION_XPCORBA=trunk

        REPO_CELLML_API="${REPO_PREFIX}CellML_DOM_API/trunk"
        REPO_XPCELLML_API="${REPO_PREFIX}xpcellml_api/trunk"
        REPO_PCENV="${REPO_PREFIX}pcenv/trunk"
        REPO_XPCORBA="${REPO_PREFIX}XPCORBA/trunk"

        SUF_CELLML_API=""
        SUF_XPCELLML_API=""
        SUF_PCENV=""
        SUF_XPCORBA=""
fi
if [[ x$DEBUG_BRANCH == xyes ]]; then
        echo "VERSION_CELLML_API=$VERSION_CELLML_API"
        echo "VERSION_XPCELLML_API=$VERSION_XPCELLML_API"
        echo "VERSION_PCENV=$VERSION_PCENV"
        echo "VERSION_XPCORBA=$VERSION_XPCORBA"
        echo "REPO_CELLML_API=$REPO_CELLML_API"
        echo "REPO_XPCELLML_API=$REPO_XPCELLML_API"
        echo "REPO_PCENV=$REPO_PCENV"
        echo "REPO_XPCORBA=$REPO_XPCORBA"
        echo "SUF_CELLML_API=$SUF_CELLML_API"
        echo "SUF_XPCELLML_API=$SUF_XPCELLML_API"
        echo "SUF_PCENV=$SUF_PCENV"
        echo "SUF_XPCORBA=$SUF_XPCORBA"
fi

The output of this script when DEBUG_BRANCH=yes BRANCH=yes is:
VERSION_CELLML_API=1.0
VERSION_XPCELLML_API=1.0
VERSION_PCENV=0.1
VERSION_XPCORBA=0.1
REPO_CELLML_API=https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/branches/1.0
REPO_XPCELLML_API=https://svn.physiomeproject.org/svn/physiome/xpcellml_api/branches/1.0
REPO_PCENV=https://svn.physiomeproject.org/svn/physiome/pcenv/branches/0.1
REPO_XPCORBA=https://svn.physiomeproject.org/svn/physiome/XPCORBA/branches/0.1
SUF_CELLML_API=branch1_0
SUF_XPCELLML_API=branch1_0
SUF_PCENV=branch0_1
SUF_XPCORBA=branch0_1

Note:
1) The proposed version number for the next CellML API stable release is 
version 1.0. This version number has been chosen because there has been 
concern that the version number of the previous stable release, 0.1, 
suggested that the API wasn't ready for general use.
2) xpcellml_api has been given a version number paired with the CellML 
API, because xpcellml_api must always correspond to the exact same 
version of the CellML API (as it is a wrapper around the CellML API). It 
would cause confusion if it was given a different number.
3) PCEnv and XPCORBA are versioned at 0.1, because this is the first 
release branch ever to be made.

Please  let me know if you can suggest any improvements to the release 
process (or the choice of version numbers).

Best regards,
Andrew

_______________________________________________
cellml-discussion mailing list
[email protected]
http://www.cellml.org/mailman/listinfo/cellml-discussion

Reply via email to