wiki:MapServerReleasePackagingHowTo

Version 2 (modified by dmorissette, 15 years ago) ( diff )

Added build_package.sh

MapServer Release Packaging HowTo

Step by step release packaging instructions

  1. Make sure the source builds and works locally
  1. Test with the buildbots at http://buildbot.osgeo.org:8504/
  1. Edit mapserver.h and HISTORY.TXT to update version info

Note that in HISTORY.TXT we remove the "Current Version (SVN trunk)" header and replace it with a version header, with the release number followed by the release date inside round brackets, e.g.

    Version 5.0.0 (2007-09-17)
    --------------------------

... then *after* the tag is created we come back and reinsert the "Current Version (SVN trunk)" above the release header in preparation for more history.

  1. Create release tag, e.g.

Look in http://svn.osgeo.org/mapserver/tags/ to see how we usually name the tags, here are a few examples:

       rel-5-0-0-beta1
       rel-5-0-0-beta2
       ...
       rel-5-0-0-beta6
       rel-5-0-0-rc1
       rel-5-0-0-rc2
       rel-5-0-0
       rel-5-0-1
       rel-5-0-2
       rel-5-0-3
       rel-5-2-0-beta1
       ...

If working from trunk:

$ svn mkdir -m "Creating rel-5-0-0 release tag" https://svn.osgeo.org/mapserver/tags/rel-5-0-0/
$ svn copy -m "Tagging source as rel-5-0-0" \
         https://svn.osgeo.org/mapserver/trunk/mapserver/ \
         https://svn.osgeo.org/mapserver/tags/rel-5-0-0/mapserver/
$ svn copy  -m "Tagging msautotest as rel-5-0-0" \
         https://svn.osgeo.org/mapserver/trunk/msautotest/ \
         https://svn.osgeo.org/mapserver/tags/rel-5-0-0/msautotest/

If working from a branch:

$ svn mkdir  -m "Creating rel-5-0-3 release tag" \
         https://svn.osgeo.org/mapserver/tags/rel-5-0-3/
$ svn copy -m "Tagging source as rel-5-0-3" \
         https://svn.osgeo.org/mapserver/branches/branch-5-0/mapserver/ \
         https://svn.osgeo.org/mapserver/tags/rel-5-0-3/mapserver/
$ svn copy -m "Tagging msautotest as rel-5-0-3" \
         https://svn.osgeo.org/mapserver/branches/branch-5-0/msautotest/ \
         https://svn.osgeo.org/mapserver/tags/rel-5-0-3/msautotest/
  1. Prepare source package on upload.osgeo.org server (this server is used to package the releases, it NFS mounts the download directory):
$ ssh upload.osgeo.org
$ cd /osgeo/mapserver/
$ ./build_package.sh 5.0.3 https://svn.osgeo.org/mapserver/tags/rel-5-0-3/mapserver
$ mv mapserver-5.0.3.tar.gz /osgeo/download/mapserver/
  1. Update download area on website, one of:

http://mapserver.gis.umn.edu/download/current

or

http://mapserver.gis.umn.edu/download/beta

Make sure to move the link to the top of the list of packages so it is easy for users to find.

  1. Prepare and send announcement to mapserver-users and mapserver-dev, also include mapserver-announce for official releases (but not for betas).

Make sure announcement includes a summary of changes since last release and link to source package download at a minimum.

  1. When to create branches?

Branches are created as late as possible in the release cycle, ideally after the final release (i.e. after all betas and RCs are done). For the list of existing branches, see https://svn.osgeo.org/mapserver/branches/

Here are a few examples of branch names:

     branch-4-8
     branch-4-10
     branch-5-0
     branch-5-2
     ...

To create a branch, use:

$ svn mkdir -m "Creating branch-5-2 directory" \
         https://svn.osgeo.org/mapserver/branches/branch-5-2/
$ svn copy -m "Branching source to branch-5-2" \
         https://svn.osgeo.org/mapserver/trunk/mapserver/ \
         https://svn.osgeo.org/mapserver/branches/branch-5-2/mapserver/
$ svn copy -m "Branching msautotest to branch-5-2" \
         https://svn.osgeo.org/mapserver/trunk/msautotest/ \
         https://svn.osgeo.org/mapserver/branches/branch-5-2/msautotest/

build_package.sh script

Here is what the build_package.sh script looked like as of this writing. The version on upload.osgeo.org is the master:

#!/bin/sh

PATH=/usr/local/bin:$PATH

cd /osgeo/mapserver

##
## Check command args
##

if [ "$1" = "-q" ] ; then
  QUIET=1
  shift
else
  QUIET=0
fi

VERSION=$1
SVNPATH=$2

if [ -z "$VERSION" -o -z "$SVNPATH" ] ; then
  echo "Usage: $0 [-q] <version> <svnpath>"
  echo ""
  echo "e.g."
  echo "  $0 5.0.0 https://svn.osgeo.org/mapserver/tags/rel-5-0-0/mapserver"
  echo "or"
  echo "  $0 nightly https://svn.osgeo.org/mapserver/trunk/mapserver"
  echo ""
  exit
fi

ARCHIVE=mapserver-$VERSION.tar.gz
BASEDIR=mapserver-$VERSION

if [ "$QUIET" = "0" ] ; then
  echo "Packaging $ARCHIVE using $SVNPATH"
fi

##
## Build the actual package
##

svn export -q $SVNPATH $BASEDIR

cd $BASEDIR

rm -rf gdft

cd mapscript/perl
swig -perl5 -shadow -outdir . -o mapscript_wrap.c ../mapscript.i >& /dev/null

cd ../python
swig -python -shadow -outdir . -o mapscript_wrap.c ../mapscript.i

cd ../csharp
swig -csharp -o mapscript_wrap.c ../mapscript.i

cd ../java

cd ../tcl

cd ../../..

tar czf $ARCHIVE $BASEDIR

##
## And cleanup
## 

rm -rf $BASEDIR
Note: See TracWiki for help on using the wiki.