This page describes how to make AlphaTcl releases from CVS on the SourceForge shell servers. It is only useful to SourceForge alphatcl project developers with shell access.
If you have done the setup before, jump to 'Quick Start' below.
When doing ssh cvs on the SF shell servers, it's best to login to SF from a local unix box so that you can run ssh-agent and enter your ssh password only once, otherwise every cvs operation done on the shell server will require your password; some suggestions for setup: (assumes cvs ssh access has been setup as detailed in CVS.AlphaTclCVS)
- In local ~/.ssh/config (replace developername by your SF username):
Host alphatcl alphatcl.sourceforge.net
- start ssh-agent on your local machine and enter password:
eval `ssh-agent`; ssh-add
- now the following should login to SF without asking for a password:
Setup for your SF home directory:
update -P -d
- for convenience, execute in ~ : (assumed by instructions below)
ln -s /home/groups/a/al/alphatcl .
- you generally also want to execute the following before changing anything in /home/groups/a/al/alphatcl to ensure files you write can be modified by others in the alphatcl group:
Assuming the setup above has been done (including starting ssh-agent), the following steps will create a release based on the 'HEAD' of the repository, with updaters from the last release: (starting from a prompt on your local unix box)
to release file revisions that you have already tagged as 'LATEST', replace the last line by:
to release the HEAD but build updaters based on e.g. relase version 7.5:
alphatcl-makerelease HEAD 7.5
to release the tip of branch 'branch-7_4_1' with updaters based on version 7.4.1:
alphatcl-makerelease branch-7_4_1 7.4.1
Release Script Details
The alphatcl-makerelase[http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/alphatcl/Developer/Tools/alphatcl-makerelease.tcl] script is used to automatically tag the CVS repository, build update archives, add new version entries to AlphaBugzilla? etc; it operates on a local copy of the repository in ~/alphatcl/cvs.
The script takes two optional parameters: tag
- tag: a branch tag ('HEAD' for the trunk ) or 'LATEST' (default value). Designates the file revisions to release, i.e. either the tip of the given branch or revisions tagged by 'LATEST'.
- version: version number of an existing release, defaults to the version number preceding the current one in the 'Changes - AlphaTcl' file. Serves as the base version for updater archives. Note that patch files are always made against the default value of version regardless of the option setting (because patch files can't be applied out of sequence anyway).
Using tag=='LATEST' :
- allows the release of a well defined set of revisions in a busy repository where the HEAD might change rapidly
- allows releasing revisions that are not on the tip of the trunk or a branch.
- to tag the current state of a local repository as 'LATEST' execute the following in its top directory: (ignore the warning about 'CVS' being specified in the argument)
cvs tag -F LATEST *
Overview of operation
The release script executes the following steps:
- If a branch tag argument is given, tag the tip of that branch as 'LATEST', and continue on as if 'LATEST' or no argument had been given.
- verify that the first version number in 'Changes - AlphaTcl' coincides with the version number in 'Tcl/SystemCode/alphaVersionInfo.tcl' and that a versiontag for this version doesn't already exist in the repository.
- update states and tags in the repository according to the scheme detailed in CVS.AlphaTclCVSModulesStatesAndTags.
- backup the current nightly cvs tarball into ~/alphatcl/cvs (and preserve the last backup).
- update ~/alphatcl/cvs/ChangeLog with 'cvs2cl -accum'.
- build a full archive in ~/alphatcl/htdocs/updates with 'cvs export', latin1tomacromaniso translation and 'tar czf'.
- build an update archive in ~/alphatcl/htdocs/updates by determining what files have changed since the version with 'cvs rdiff -s', 'cvs export'ing them, building READ.TO.INSTALL from 'cvs rdiff -u' on 'Changes - AlphaTcl', followed by latin1tomacromaniso translation and 'tar czf'.
- build an update patch in ~/alphatcl/htdocs/updates with 'cvs rdiff -u', latin1tomacromaniso translation and 'gzip'.
- add the new version to Alpha-Bugzilla (using 'package http' and a hardcoded cookie specific to the SF shell server).