123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- 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
- 0. Preparations
- #check if still compile; fix otherwise
- ( cd doc/raster/r.example/ ; make clean ; make )
- ( cd doc/vector/v.example/ ; make clean ; make )
- # fix typos in source code with
- tools/fix_typos.sh
- # i18N: sync from Transifex (https://www.transifex.com/grass-gis/grass7/dashboard/)
- # - except for Latvian; Latvian is directly edited in git and then sync'ed from master .po files
- cd locale
- sh ~/software/grass-addons/tools/transifex_merge.sh
- make
- make verify
- # ... then fix .po files as needed.
- #
- # requires https://trac.osgeo.org/grass/ticket/3539
- ## after that push fixes to transifex:
- #cd locale/transifex/
- #tx --debug push -t
- #### end of i18N
- 1. Local work
- # done by release manager
- # Only allowed RC cycle, not final!:
- # Check that autoconf scripts are up-to-date:
- 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
- git diff config.guess config.sub
- autoconf-2.13
- # check and submit to git:
- git add config.guess config.sub configure
- git commit -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
- # update from git
- git fetch --all --prune
- git push origin master
- # cleanup rubbish:
- rm -f locale/templates/*.pot
- rm -f locale/po/messages.mo
- rm -f demolocation/PERMANENT/.bash*
- 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
- find . -name 'OBJ.*' | xargs rm -r
- rm -f gui/wxpython/menustrings.py gui/wxpython/build_ext.pyc gui/wxpython/xml/menudata.xml gui/wxpython/xml/module_tree_menudata.xml
- chmod -R a+r *
- # double check
- git status
- # Create release branch (only if not yet existing)
- # ... see below
- # Update VERSION file to release version:
- vim include/VERSION
- #example:
- 7
- 4
- 1RC1
- 2018
- # cleanup
- rm -f include/VERSION~
- # Update OSGeo4W setup.hint file
- ### no longer needed
- #vim mswindows/osgeo4w/setup_x86.hint.tmpl
- #vim mswindows/osgeo4w/setup_x86_64.hint.tmpl
- #### Changelog and tagging etc
- # create version env var for convenience:
- 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
- TODO: add feature_branch...
- git add include/VERSION
- git commit -m"GRASS GIS $VERSION" include/VERSION
- # Create Changelog file on release branch:
- python tools/gitlog2changelog.py
- mv ChangeLog ChangeLog_$VERSION
- head ChangeLog_$VERSION
- gzip ChangeLog_$VERSION
- # TODO:
- # Tag release ...
- TODAY=`date +"%Y%m%d"`
- RELEASETAG=release_${TODAY}_grass_${MAJOR}_${MINOR}_${RELEASE}
- echo $RELEASETAG
- TODO...
- # create source package (in the source directory):
- echo grass-${VERSION}
- mkdir grass-${VERSION}
- mv * grass-${VERSION}/
- # create the package:
- tar cvfzh grass-${VERSION}.tar.gz --exclude-vcs grass-${VERSION}/*
- # restore src code location:
- mv ./grass-${VERSION}/* .
- rmdir ./grass-${VERSION}
- # Calculating MD5 sum:
- md5sum grass-${VERSION}.tar.gz > grass-${VERSION}.md5sum
- # reset include/VERSION file to git version:
- vim include/VERSION
- #example
- 7
- 4
- 1dev
- 2018
- rm -f include/VERSION~
- git add include/VERSION
- git commit -m"back to git" include/VERSION
- # Store the source tarball (twice) in (use scp -p FILES grass:):
- SERVER1=grass.osgeo.org
- SERVER1DIR=/var/www/grass/grass-cms/grass$MAJOR$MINOR/source/
- SERVER2=upload.osgeo.org
- SERVER2DIR=/osgeo/download/grass/grass$MAJOR$MINOR/source/
- echo $SERVER1:$SERVER1DIR
- echo $SERVER2:$SERVER2DIR
- # upload along with associated files:
- scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \
- INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER1:$SERVER1DIR
- scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \
- INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER2:$SERVER2DIR
- # Only full release!
- # generate link to "latest" source code
- ssh neteler@$SERVER1 "cd $SERVER1DIR ; rm -f grass-$MAJOR.$MINOR-latest.tar.gz"
- ssh neteler@$SERVER1 "cd $SERVER1DIR ; ln -s grass-$VERSION.tar.gz grass-$MAJOR.$MINOR-latest.tar.gz"
- # update winGRASS related files: Update the winGRASS version
- vim grass-addons/tools/wingrass-packager/grass_packager_release.bat
- vim grass-addons/tools/wingrass-packager/grass_addons.sh
- vim grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh
- vim grass-addons/tools/wingrass-packager/cronjob.sh # major/minor release only
- # update addons - major/minor release only
- vim grass-addons/tools/addons/grass-addons-publish.sh
- vim grass-addons/tools/addons/grass-addons-build.sh
- vim grass-addons/tools/addons/grass-addons.sh
- ###################
- # update web site to new version: CMS
- - News section
- - https://grass.osgeo.org/download/software/
- - https://grass.osgeo.org/download/software/sources/
- - https://grass.osgeo.org/download/software/linux/
- - https://grass.osgeo.org/home/history/releases/
- # TODO: git tags
- - https://grass.osgeo.org/development/svn/svn-tags/ (add tag): echo $RELEASETAG
- # write announcement
- - store in trac:
- https://trac.osgeo.org/grass/wiki/Release/7.6.x-News
- https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures76 <- add content of major changes only
- - 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? (dropped since CMS)
- # only when new major release
- # update cronjob 'cron_grass_HEAD_src_snapshot.sh' on grass.osgeo.org to next but one release tag for the differences
- # wiki updates, only when new major release:
- - {{cmd|xxxx}} macro: https://grasswiki.osgeo.org/wiki/Template:Cmd
- - update last version on main page
- # trac updates, only when new major release:
- - Add new release to https://trac.osgeo.org/grass/admin/ticket/versions
- - Set "complete" flag in https://trac.osgeo.org/grass/milestone/7.6.x --> Edit Milestone
- - also: Retarget associated open tickets to milestone 7.6.x
- - Batch modify tickets, set to next milestone (update this query accordingly: two entries to change)
- https://trac.osgeo.org/grass/query?status=assigned&status=new&status=reopened&milestone=7.6.0&milestone=7.6.1&group=status&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority
- - Set max items to 1000, then select all shown tickets via Status: assigned/new/reopened sections
- - Scroll down to "Batch modify": under the "Comment" section, add Field "Milestone" and set to next version
- - then use "Change ticket" button, done.
- - Only in case of new release branch being created:
-
- - Add Wiki Macro definitions for manual pages G7X:modulename
- - Edit: https://trac.osgeo.org/grass/wiki/InterMapTxt
- # WinGRASS notes:
- - Update grass_packager_release.bat, eg.
- set MAJOR=7
- set MINOR=4
- set PATCH=1RC1
- - Update addons (grass_addons.sh) rules, eg.
- compile $SVN_PATH/grass7 $GISBASE_PATH/grass760RC1 $ADDON_PATH/grass760RC1/addons
- - Modify grass_copy_wwwroot.sh accordingly, eg.
- copy_addon 761RC1 7.6.1RC1
- # 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/grass-trunk
- # Packaging notes:
- https://trac.osgeo.org/grass/wiki/BuildHints
- - https://trac.osgeo.org/grass/wiki/DebianUbuntuPackaging
- - https://trac.osgeo.org/grass/wiki/CompileOnWindows
- ############
- # Marketing - tell others about release:
- * Notify all packagers (MN has email list)
- * If release candidate:
- - <grass-announce@lists.osgeo.org>
- - <grass-dev@lists.osgeo.org>
- * 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
- <grass-announce@lists.osgeo.org>
- http://lists.osgeo.org/mailman/listinfo/grass-dev
- <grass-dev@lists.osgeo.org>
- http://lists.osgeo.org/mailman/listinfo/grassuser
- <grass-user@lists.osgeo.org>
- DebianGIS: <debian-gis@lists.debian.org> - send only small note
- FreeGIS: <freegis-list@intevation.de>
- Geowanking: <geowanking@geowanking.org>
- OSGeo.org: <news_item@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)
- mfeilner@linuxnewmedia.de
- info@harzer.de
- 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: https://grass.osgeo.org/wiki/Contact_Databases
- ... anywhere else? Please add here.
|