How to release GRASS GIS binaries and source code $Date$ Note: This text contains *some* rules only applicable to the development coordinator (currently Markus Neteler, PSC Chair). ########################################### Contents (A) HOWTO create a release (B) HOWTO create a branch ########################################### (A) HOWTO create a release 1. Local work (done by release coordinator) - svn up - check if ( cd doc/raster/r.example/ ; make clean ; make ) ( cd doc/vector/v.example/ ; make clean ; make ) still compile; fix otherwise - Check that autoconf scripts are up-to-date (to do only in RC cycle!): rm -f config.guess config.sub wget http://git.savannah.gnu.org/cgit/config.git/plain/config.guess wget http://git.savannah.gnu.org/cgit/config.git/plain/config.sub svn diff config.guess config.sub autoconf-2.13 # check and submit to SVN: svn ci -m"config.guess + config.sub: updated from http://git.savannah.gnu.org/cgit/config.git/plain/" config.guess config.sub configure # test by running ./configure - make distclean - cleanup rubbish: rm -f locale/templates/*.pot rm -f locale/po/messages.mo find . -name '*~' | xargs rm find . -name '*.bak' | xargs rm find . -name '.#*' | xargs rm find . -name '*.orig' | xargs rm find . -name '*.rej' | xargs rm find . -name '*.o' | xargs rm find . -name '*.pyc' | xargs rm chmod -R a+r * svn status - Create release branch (only if not yet existing) - Update VERSION file to release version: vim include/VERSION #example: 6 4 6RC1 2017 rm -f include/VERSION~ - Update OSGeo4W setup.hint file mswindows/osgeo4w/setup.hint for RC candidates use 'test' keyword for final version use 'curr' keyword #version: MAJOR=`cat include/VERSION | head -1 | tail -1` MINOR=`cat include/VERSION | head -2 | tail -1` RELEASE=`cat include/VERSION | head -3 | tail -1` VERSION=${MAJOR}.${MINOR}.${RELEASE} echo $VERSION svn ci -m"GRASS GIS $VERSION" include/VERSION mswindows/osgeo4w/setup.hint svn up o Create Changelog file on release branch: # http://ch.tudelft.nl/~arthur/svn2cl/ svn2cl mv ChangeLog ChangeLog_$VERSION head ChangeLog_$VERSION gzip ChangeLog_$VERSION o Tag release (http://trac.osgeo.org/grass/browser/grass/tags): http://svnbook.red-bean.com/en/1.4/svn.branchmerge.tags.html TODAY=`date +"%Y%m%d"` RELEASETAG=release_${TODAY}_grass_${MAJOR}_${MINOR}_${RELEASE} echo $RELEASETAG URL=https://svn.osgeo.org/grass svn copy $URL/grass/branches/releasebranch_6_4 \ $URL/grass/tags/$RELEASETAG \ -m "Tagging release grass_${MAJOR}_${MINOR}_${RELEASE}" o create source package (in the source directory): echo grass-${VERSION} mkdir grass-${VERSION} mv * grass-${VERSION}/ # do not include the debian control files: mv grass-${VERSION}/debian . # create the package: tar cvfzh grass-${VERSION}.tar.gz grass-${VERSION}/* --exclude=.svn # restore src code location: mv ./grass-${VERSION}/* . rmdir ./grass-${VERSION} # Calculating MD5 sum: md5sum grass-${VERSION}.tar.gz > grass-${VERSION}.md5sum o reset include/VERSION file to SVN version: vim include/VERSION #example 6 4 6svn 2017 rm -f include/VERSION~ svn ci -m"back to SVN" include/VERSION o Store the source tarball (twice) in (use scp -p FILES grass:): SERVER1=grass.osgeo.org:/var/www/grass/grass-cms/grass$MAJOR$MINOR/source/ SERVER2=upload.osgeo.org:/osgeo/download/grass/grass$MAJOR$MINOR/source/ echo $SERVER1 echo $SERVER2 # copy along with associated files: scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \ INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER1 scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \ INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER2 o update winGRASS related files - Update the winGRASS version grass-addons/tools/wingrass-packager/grass_packager_release.bat grass-addons/tools/wingrass-packager/grass_addons.sh grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh o update web site to new version: CMS - News section - http://grass.osgeo.org/download/software/ - http://grass.osgeo.org/download/software/sources/ - http://grass.osgeo.org/grass64/ - http://grass.osgeo.org/home/history/releases/ - http://grass.osgeo.org/development/svn/svn-tags/ (add tag): echo $RELEASETAG write announcement - store in trac: http://trac.osgeo.org/grass/wiki/Release/6.XX.YY-News - update version in https://grasswiki.osgeo.org/wiki/GRASS-Wiki - store in Web as announces/announce_grass$MAJOR$MINOR$RELEASE.html <- how? with protected PHP upload page? full release: - update trac - milesstone/add next: https://trac.osgeo.org/grass/admin/ticket/milestones - add released version: https://trac.osgeo.org/grass/admin/ticket/versions o upload user HTML manual in case of *final release* from compiled English version at (warning: needs stuff to be compiled). - download new source code package, compile with most settings - cd dist.$ARCH/docs/html echo www/grass$MAJOR$MINOR/manuals/ scp -r * neteler@grass.osgeo.org:/osgeo/grass/grass-cms/grass$MAJOR$MINOR/manuals/ scp -r * neteler@upload.osgeo.org:/osgeo/download/grass/grass$MAJOR$MINOR/manuals/ o stable release: update cronjob 'cron_grass6_releasebranch_64_src_snapshot.sh' on grass.osgeo.org to next but one release tag for the differences o Trac updates: - Add new release to https://trac.osgeo.org/grass/admin/ticket/versions - Set "complete" flag in https://trac.osgeo.org/grass/milestone/6.4.x --> Edit Milestone (this ideally batch-migrates assigned tickets to next milestone) - batch modify tickets, set to next milestone (update this query accordingly) https://trac.osgeo.org/grass/query?status=assigned&status=new&status=reopened&milestone=6.4.4&milestone=6.4.5&group=status&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority - under "Comment" add Field "Milestone" and set to next version - Select all shown tickets via Status: assigned/new/reopened - then "Change ticket" button o WinGRASS notes: Update grass_packager_release.bat, eg. set MAJOR=6 set MINOR=4 set PATCH=6RC1 Update addons (grass_addons.sh) rules, eg. compile $SVN_PATH/grass6 $GISBASE_PATH/grass646RC1 $ADDON_PATH/grass646RC1/addons Modify grass_copy_wwwroot.sh accordingly, eg. copy_addon 646RC1 6.4.6RC1 o Launchpad notes: Create milestone and release: https://launchpad.net/grass/+series Upload tarball for created release Update daily recipe contents: https://code.launchpad.net/~grass/+recipe/grass64-release o Packaging notes: https://trac.osgeo.org/grass/wiki/BuildHints - https://trac.osgeo.org/grass/wiki/DebianUbuntuPackaging - https://trac.osgeo.org/grass/wiki/CompileOnWindows 2. Tell others about it: * If release candidate: - - * If official release: - publish related announcement press release at: Our GRASS web site: /announces/ Note: DON'T use relative links there Our main mailing lists: http://lists.osgeo.org/mailman/listinfo/grass-announce http://lists.osgeo.org/mailman/listinfo/grass-dev http://lists.osgeo.org/mailman/listinfo/grassuser DebianGIS: FreeGIS: Geowanking: OSGeo.org: Email: info@osgeo.org http://www.gis-news.de/ (franz-josef.behr@gismngt.de) http://spatialnews.geocomm.com/submitnews.html (not free any more, convince editor@geocomm.com) redazione@geoforus.it mfeilner@linuxnewmedia.de info@harzer.de pr@geocomm.com editor-geo@geoconnexion.com Web: https://plus.google.com/u/0/communities/111147786674687562495 (G+ GRASS GIS community) http://linuxtoday.com/contribute.php3 https://joinup.ec.europa.eu/software/grassgis/home (submit news, MN) http://www.macnn.com/contact/newstips/1 http://www10.giscafe.com/submit_material/submit_options.php#Press (MN) --> Press releases http://www.directionsmag.com/pressreleases/ (News -> Submit Press Release) http://directory.fsf.org/wiki/GRASS_%28Geographic_Resources_Analysis_Support_System%29 https://www.linux-apps.com/p/1128004/edit/ (MN) https://news.eoportal.org/web/eoportal/share-your-news (MN) -> Share your news with the EO community https://www.heise.de/download/product/grass-gis-7105 (update, MN) See also: http://grass.osgeo.org/wiki/Contact_Databases ... anywhere else? Please add here. ########################################### (B) HOWTO create a branch 1. see SVN book: http://svnbook.red-bean.com/en/1.1/ch04s07.html GRASS 6.4 development branch: BRANCH=develbranch_6 URL=https://svn.osgeo.org/grass svn copy $URL/grass/trunk \ $URL/grass/branches/$BRANCH \ -m "Development branch for GRASS 6.4.x" Switching current local copy to above development branch: (http://svnbook.red-bean.com/en/1.1/ch04s05.html) cd /path/to/your/local/copy/trunk svn switch https://svn.osgeo.org/grass/grass/branches/develbranch_6 .