howto_release.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. How to release GRASS GIS binaries and source code
  2. $Date$
  3. Note: This text contains *some* rules only applicable to the
  4. development coordinator (currently Markus Neteler, PSC Chair).
  5. ###########################################
  6. Contents
  7. (A) HOWTO create a release
  8. (B) HOWTO create a branch
  9. ###########################################
  10. (A) HOWTO create a release
  11. 1. Local work (done by release coordinator)
  12. - svn up
  13. - svn status --no-ignore
  14. - check if
  15. ( cd doc/raster/r.example/ ; make clean ; make )
  16. ( cd doc/vector/v.example/ ; make clean ; make )
  17. still compile; fix otherwise
  18. - fix typos with tools/fix_typos.sh
  19. - Check that autoconf scripts are up-to-date (to do only in RC cycle!):
  20. rm -f config.guess config.sub
  21. wget http://git.savannah.gnu.org/cgit/config.git/plain/config.guess
  22. wget http://git.savannah.gnu.org/cgit/config.git/plain/config.sub
  23. svn diff config.guess config.sub
  24. autoconf-2.13
  25. # check and submit to SVN:
  26. svn ci -m"config.guess + config.sub: updated from http://git.savannah.gnu.org/cgit/config.git/plain/" config.guess config.sub configure
  27. # test by running ./configure
  28. - make distclean
  29. - cleanup rubbish:
  30. rm -f locale/templates/*.pot
  31. rm -f locale/po/messages.mo
  32. find . -name '*~' | xargs rm
  33. find . -name '*.bak' | xargs rm
  34. find . -name '.#*' | xargs rm
  35. find . -name '*.orig' | xargs rm
  36. find . -name '*.rej' | xargs rm
  37. find . -name '*.o' | xargs rm
  38. find . -name '*.pyc' | xargs rm
  39. rm -f gui/wxpython/menustrings.py gui/wxpython/build_ext.pyc gui/wxpython/xml/menudata.xml gui/wxpython/xml/module_tree_menudata.xml
  40. chmod -R a+r *
  41. svn status
  42. - Create release branch (only if not yet existing)
  43. - Update VERSION file to release version:
  44. vim include/VERSION
  45. #example:
  46. 7
  47. 2
  48. 1RC1
  49. 2017
  50. rm -f include/VERSION~
  51. - Update OSGeo4W setup.hint file
  52. - for RC candidates use 'test' keyword
  53. - for final version use 'curr' keyword
  54. vim mswindows/osgeo4w/setup.hint.tmpl
  55. #version:
  56. MAJOR=`cat include/VERSION | head -1 | tail -1`
  57. MINOR=`cat include/VERSION | head -2 | tail -1`
  58. RELEASE=`cat include/VERSION | head -3 | tail -1`
  59. VERSION=${MAJOR}.${MINOR}.${RELEASE}
  60. echo $VERSION
  61. svn ci -m"GRASS GIS $VERSION" include/VERSION mswindows/osgeo4w/setup.hint.tmpl
  62. svn up
  63. o Create Changelog file on release branch:
  64. # http://ch.tudelft.nl/~arthur/svn2cl/
  65. svn2cl
  66. mv ChangeLog ChangeLog_$VERSION
  67. head ChangeLog_$VERSION
  68. gzip ChangeLog_$VERSION
  69. o Tag release (http://trac.osgeo.org/grass/browser/grass/tags):
  70. http://svnbook.red-bean.com/en/1.4/svn.branchmerge.tags.html
  71. TODAY=`date +"%Y%m%d"`
  72. RELEASETAG=release_${TODAY}_grass_${MAJOR}_${MINOR}_${RELEASE}
  73. echo $RELEASETAG
  74. URL=https://svn.osgeo.org/grass
  75. svn copy $URL/grass/branches/releasebranch_7_2 \
  76. $URL/grass/tags/$RELEASETAG \
  77. -m "Tagging release grass_${MAJOR}_${MINOR}_${RELEASE}"
  78. o create source package (in the source directory):
  79. echo grass-${VERSION}
  80. mkdir grass-${VERSION}
  81. mv * grass-${VERSION}/
  82. # do not include the debian control files:
  83. mv grass-${VERSION}/debian .
  84. # create the package:
  85. tar cvfzh grass-${VERSION}.tar.gz grass-${VERSION}/* --exclude=.svn
  86. # restore src code location:
  87. mv ./grass-${VERSION}/* .
  88. rmdir ./grass-${VERSION}
  89. # Calculating MD5 sum:
  90. md5sum grass-${VERSION}.tar.gz > grass-${VERSION}.md5sum
  91. o reset include/VERSION file to SVN version:
  92. vim include/VERSION
  93. #example
  94. 7
  95. 2
  96. 1svn
  97. 2017
  98. rm -f include/VERSION~
  99. svn ci -m"back to SVN" include/VERSION
  100. o Store the source tarball (twice) in (use scp -p FILES grass:):
  101. SERVER1=grass.osgeo.org:/var/www/grass/grass-cms/grass$MAJOR$MINOR/source/
  102. SERVER2=upload.osgeo.org:/osgeo/download/grass/grass$MAJOR$MINOR/source/
  103. echo $SERVER1
  104. echo $SERVER2
  105. # copy along with associated files:
  106. scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \
  107. INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER1
  108. scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \
  109. INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER2
  110. o update winGRASS related files
  111. - Update the winGRASS version
  112. grass-addons/tools/wingrass-packager/grass_packager_release.bat
  113. grass-addons/tools/wingrass-packager/grass_addons.sh
  114. grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh
  115. o update web site to new version: CMS
  116. - News section
  117. - http://grass.osgeo.org/download/software/
  118. - http://grass.osgeo.org/download/software/sources/
  119. - http://grass.osgeo.org/download/software/linux/
  120. - http://grass.osgeo.org/home/history/releases/
  121. - http://grass.osgeo.org/development/svn/svn-tags/ (add tag): echo $RELEASETAG
  122. write announcement
  123. - store in trac:
  124. http://trac.osgeo.org/grass/wiki/Release/7.XX.YY-News
  125. https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures72 <- major releases only
  126. - update version in https://grasswiki.osgeo.org/wiki/GRASS-Wiki
  127. - store in Web as announces/announce_grass$MAJOR$MINOR$RELEASE.html <- how? with protected PHP upload page?
  128. full release:
  129. - update trac
  130. - milesstone/add next: https://trac.osgeo.org/grass/admin/ticket/milestones
  131. - add released version: https://trac.osgeo.org/grass/admin/ticket/versions
  132. o upload user HTML manual in case of *final release* from compiled English
  133. version at (warning: needs stuff to be compiled).
  134. - download new source code package, compile with most settings
  135. - cd dist.$ARCH/docs/html
  136. echo www/grass$MAJOR$MINOR/manuals/
  137. scp -r * neteler@grass.osgeo.org:/osgeo/grass/grass-cms/grass$MAJOR$MINOR/manuals/
  138. scp -r * neteler@upload.osgeo.org:/osgeo/download/grass/grass$MAJOR$MINOR/manuals/
  139. o stable release: update cronjob 'cron_grass_HEAD_src_snapshot.sh' on grass.osgeo.org to next but one
  140. release tag for the differences
  141. o Trac updates:
  142. - Add new release to https://trac.osgeo.org/grass/admin/ticket/versions
  143. - Set "complete" flag in https://trac.osgeo.org/grass/milestone/7.2.x --> Edit Milestone
  144. - Batch modify tickets, set to next milestone (update this query accordingly: two entries to change)
  145. https://trac.osgeo.org/grass/query?status=assigned&status=new&status=reopened&milestone=7.2.0&milestone=7.2.1&group=status&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority
  146. - Set max items to 1000, then select all shown tickets via Status: assigned/new/reopened sections
  147. - Scroll down to "Batch modify": under the "Comment" section, add Field "Milestone" and set to next version
  148. - then use "Change ticket" button, done.
  149. - Only in case of new release branch being created:
  150. Add Wiki Macro definitions for manual pages G7X:modulename
  151. - Edit: https://trac.osgeo.org/grass/wiki/InterMapTxt
  152. o WinGRASS notes:
  153. Update grass_packager_release.bat, eg.
  154. set MAJOR=7
  155. set MINOR=2
  156. set PATCH=0RC1
  157. Update addons (grass_addons.sh) rules, eg.
  158. compile $SVN_PATH/grass7 $GISBASE_PATH/grass720RC1 $ADDON_PATH/grass720RC1/addons
  159. Modify grass_copy_wwwroot.sh accordingly, eg.
  160. copy_addon 720RC1 7.2.0RC1
  161. o Launchpad notes:
  162. Create milestone and release: https://launchpad.net/grass/+series
  163. Upload tarball for created release
  164. Update daily recipe contents: https://code.launchpad.net/~grass/+recipe/grass-trunk
  165. o Packaging notes:
  166. https://trac.osgeo.org/grass/wiki/BuildHints
  167. - https://trac.osgeo.org/grass/wiki/DebianUbuntuPackaging
  168. - https://trac.osgeo.org/grass/wiki/CompileOnWindows
  169. 2. Tell others about it:
  170. * If release candidate:
  171. - <grass-announce@lists.osgeo.org>
  172. - <grass-dev@lists.osgeo.org>
  173. * If official release:
  174. - publish related announcement press release at:
  175. Our GRASS web site: /announces/
  176. Note: DON'T use relative links there
  177. Our main mailing lists:
  178. http://lists.osgeo.org/mailman/listinfo/grass-announce
  179. <grass-announce@lists.osgeo.org>
  180. http://lists.osgeo.org/mailman/listinfo/grass-dev
  181. <grass-dev@lists.osgeo.org>
  182. http://lists.osgeo.org/mailman/listinfo/grassuser
  183. <grass-user@lists.osgeo.org>
  184. DebianGIS: <debian-gis@lists.debian.org>
  185. FreeGIS: <freegis-list@intevation.de>
  186. Geowanking: <geowanking@geowanking.org>
  187. OSGeo.org: <news_item@osgeo.org>
  188. Email:
  189. info@osgeo.org
  190. http://www.gis-news.de/ (franz-josef.behr@gismngt.de)
  191. http://spatialnews.geocomm.com/submitnews.html (not free any more, convince editor@geocomm.com)
  192. redazione@geoforus.it
  193. mfeilner@linuxnewmedia.de
  194. info@harzer.de
  195. pr@geocomm.com
  196. editor-geo@geoconnexion.com
  197. Web:
  198. https://plus.google.com/u/0/communities/111147786674687562495 (G+ GRASS GIS community)
  199. http://linuxtoday.com/contribute.php3
  200. https://joinup.ec.europa.eu/software/grassgis/home (submit news, MN)
  201. http://www.macnn.com/contact/newstips/1
  202. http://www10.giscafe.com/submit_material/submit_options.php#Press (MN) --> Press releases
  203. http://www.directionsmag.com/pressreleases/ (News -> Submit Press Release)
  204. http://directory.fsf.org/wiki/GRASS_%28Geographic_Resources_Analysis_Support_System%29
  205. https://www.linux-apps.com/p/1128004/edit/ (MN)
  206. https://news.eoportal.org/web/eoportal/share-your-news (MN)
  207. -> Share your news with the EO community
  208. https://www.heise.de/download/product/grass-gis-7105 (update, MN)
  209. See also: http://grass.osgeo.org/wiki/Contact_Databases
  210. ... anywhere else? Please add here.
  211. ###########################################
  212. (B) HOWTO create a branch
  213. 1. see SVN book:
  214. http://svnbook.red-bean.com/en/1.1/ch04s07.html
  215. GRASS 7.2 release branch:
  216. BRANCH=releasebranch_7_2
  217. URL=https://svn.osgeo.org/grass
  218. svn copy $URL/grass/trunk \
  219. $URL/grass/branches/$BRANCH \
  220. -m "Development branch for GRASS 7.2.x"
  221. Switching current local copy to above development branch:
  222. (http://svnbook.red-bean.com/en/1.1/ch04s05.html)
  223. cd /path/to/your/local/copy/trunk
  224. svn switch https://svn.osgeo.org/grass/grass/branches/releasebranch_7_2 .
  225. ----------
  226. Example: GRASS GIS 7.2 release branch creation
  227. svn copy https://svn.osgeo.org/grass/grass/trunk/ \
  228. https://svn.osgeo.org/grass/grass/branches/releasebranch_7_2 \
  229. -m "Creating the GRASS GIS 7.2 release branch (branch started in 05/2016, r68500)"