wiki:ReleaseEngineering

Version 3 (modified by rme, 5 years ago) (diff)

--

Release Engineering

Create a new release branch

svn copy svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/trunk \
         svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/release/1.5

Getting a release branch working copy

When making a new release, it can be convenient to have the whole source tree available. I do this with:

svn co --ignore-externals svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/release/1.5 ccl-1.5-all

This way, I don't end up with useless copies of the sources under the platform-specific directories.

It also makes sense to remember to say

svn up --ignore-externals

to avoid picking up the useless copies of the sources later.

Fixing externals

I generally think it's preferable for release branches to be self-contained. This script changes the externals to point to the release branch instead of the trunk. Run it while in the top-level directory of the working copy.

#!/bin/sh
progname=`basename $0`
for target in darwinppc darwinx86 freebsdx86 linuxppc linuxx86 solarisx86 windows; do
    newprops=`mktemp /tmp/${progname}.XXXXXX` || exit 1
    svn propget svn:externals ${target}/ccl | sed -e s,trunk,release/1.5, >$newprops
    cat $newprops
    svn propset svn:externals ${target}/ccl -F $newprops
    rm $newprops
done

Building binaries

Be sure to use "-n" when starting ccl, or otherwise ensure that junk in your init file doesn't creep into the binaries.