Frysk logo Home  |  Wiki  |  Use Cases  |  Work Flows  |  FAQ  |  Get Involved  |  Bugzilla  |  Build  |  Blog  |  Documentation
triangle
 

Making A Release

Branch
Release Upload Announce

frysk is making point release, cut from the Git repository's HEAD, on the first Wednesday of each month. This lets us deliver new features quickly, with a relatively low overhead.

The relese branch is taken on the first Wednesday at 00:00 GMT, just in time for frysk's Wednesday meeting. We then, during the meeting, conduct a brief review, check the NEWS file, and make a go/no-go decision. It is then pushed out, perhaps with a few minor fixes.

The process is also relatively simplistic. It assumes for instance:

  • there's never a pre-release tar-ball
    that would require extra pre-release version numbers such as 0.1.90... and then only at the last moment set the real version (0.2).
  • if there's ever a need for a re-spin, it just gets assigned a patch-level number like 0.2.1 and use the original releases branch

Cutting the Branch

Here's a suggested sequence:

  • To make things easier, first lets set up a few standard shell variables; you'll want to set version to something more meaningful:
    cd frysk  (change dir to where you have a current frysk checked out)
    version=0.2 ! ! ! change this
    echo $version
    date=`date -u +"%Y.%m.%d"`
    echo date=$date 1>&2
    shar1=`git-rev-list --before=$date -n1 HEAD`
    echo shar1=$shar1 1>&2
    branch=frysk/$version
    echo $branch
    
  • Next we create a branch (frysk release branches are named frysk/<version>), and push that upstream:
    echo branch=$branch shar1=$shar1
    git branch $branch $shar1
    git push origin $branch
    
  • Finally, we update the version number of the branch, and push that:
    git checkout $branch
    echo $version > frysk-common/version.in
    cat frysk-common/version.in
    git add frysk-common/version.in
    git commit -m "Set version.in to $version"
    git push origin $branch
    

The branch can then be checked out by everyone and build locally. Of course the keen will have already checked out the branch point using something like:

git checkout `git-rev-list --before='00:00 GMT' -n1 HEAD`

Making the Release

Here's a sequence for releasing frysk, we're assuming that $version was set above:

  • First lets find the shar1 of the branch head (so that it can be refered to later), and the corresponding release tag:
    echo branch=$branch
    shar1=`git-rev-list -n1 $branch`
    echo shar1=$shar1
    release=`git show $shar1:frysk-common/version.in`
    echo release=$release
    
  • Then create a tar-ball using that shar1 marker:
    rm -rf frysk-$release
    git archive --prefix=frysk-$release/ $shar1 | tar xpf -
    tar cfj frysk-$release.tar.bz2 frysk-$release
    
  • as a sanity check try to build the tar-ball locally:
    rm -rf build-$release && mkdir build-$release
    ( cd build-$release \
      && bunzip2 < ../frysk-$release.tar.bz2 | tar xpf - \
      && mkdir build \
      && cd build \
      && ../frysk-$release/autogen.sh \
      && make -j2 )
    
  • finally, assuming the results are good, tag the release and push it:
    git tag -u <gpg-name> -m frysk-$release frysk-$release $shar1
    git push --tags
    

Upload to Sourceware

You might need access to sourceware for this:

chmod a=r frysk-$release.tar.bz2
scp frysk-$release.tar.bz2 'sourceware.org:~ftp/pub/frysk'
ssh sourceware.org 'rm -f ~ftp/pub/frysk/.message'
cat <<EOF | ssh sourceware.org 'dd of=~ftp/pub/frysk/.message'

            Frysk $release

    `md5sum frysk-$release.tar.bz2`
    $shar1   GIT SHAR1

EOF
ssh sourceware.org 'chmod a=r ~ftp/pub/frysk/.message'

Announce the Release

Some people like to immediatly post the announcement, while others prefer to delay it a day or so giving the distros a chance to prepare local frysk packages. Either way, the announcement should at least include:

  • All the contributors to this release (you can get this by going through GIT and, perhaps, the ChangeLog files; something like: git-log --after=frysk/0.2 --pretty=format:"%an %ae" | sort -u
  • The contents of the NEWS entry.

and might also include:

  • Where to download frysk
  • file check-sums
  • a description of frysk
  • ???