howto_release.txt 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  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. 0. Preparations
  12. #check if still compile; fix otherwise
  13. ( cd doc/raster/r.example/ ; make clean ; make )
  14. ( cd doc/vector/v.example/ ; make clean ; make )
  15. # fix typos in source code with
  16. tools/fix_typos.sh
  17. # i18N: sync from Transifex (https://www.transifex.com/grass-gis/grass7/dashboard/)
  18. # - except for Latvian; Latvian is directly edited in git and then sync'ed from master .po files
  19. cd locale
  20. sh ~/software/grass-addons/tools/transifex_merge.sh
  21. make
  22. make verify
  23. # ... then fix .po files as needed.
  24. #
  25. # requires https://trac.osgeo.org/grass/ticket/3539
  26. ## after that push fixes to transifex:
  27. #cd locale/transifex/
  28. #tx --debug push -t
  29. #### end of i18N
  30. 1. Local work
  31. # done by release manager
  32. # Only allowed RC cycle, not final!:
  33. # Check that autoconf scripts are up-to-date:
  34. rm -f config.guess config.sub
  35. wget http://git.savannah.gnu.org/cgit/config.git/plain/config.guess
  36. wget http://git.savannah.gnu.org/cgit/config.git/plain/config.sub
  37. git diff config.guess config.sub
  38. autoconf-2.13
  39. # check and submit to git:
  40. git add config.guess config.sub configure
  41. git commit -m"config.guess + config.sub: updated from http://git.savannah.gnu.org/cgit/config.git/plain/" config.guess config.sub configure
  42. # test by running ./configure
  43. # update from git
  44. git fetch --all --prune
  45. git push origin master
  46. # cleanup rubbish:
  47. rm -f locale/templates/*.pot
  48. rm -f locale/po/messages.mo
  49. rm -f demolocation/PERMANENT/.bash*
  50. find . -name '*~' | xargs rm
  51. find . -name '*.bak' | xargs rm
  52. find . -name '.#*' | xargs rm
  53. find . -name '*.orig' | xargs rm
  54. find . -name '*.rej' | xargs rm
  55. find . -name '*.o' | xargs rm
  56. find . -name '*.pyc' | xargs rm
  57. find . -name 'OBJ.*' | xargs rm -r
  58. rm -f gui/wxpython/menustrings.py gui/wxpython/build_ext.pyc gui/wxpython/xml/menudata.xml gui/wxpython/xml/module_tree_menudata.xml
  59. chmod -R a+r *
  60. # double check
  61. git status
  62. # Create release branch (only if not yet existing)
  63. # ... see below
  64. # Update VERSION file to release version:
  65. vim include/VERSION
  66. #example:
  67. 7
  68. 4
  69. 1RC1
  70. 2018
  71. # cleanup
  72. rm -f include/VERSION~
  73. # Update OSGeo4W setup.hint file
  74. ### no longer needed
  75. #vim mswindows/osgeo4w/setup_x86.hint.tmpl
  76. #vim mswindows/osgeo4w/setup_x86_64.hint.tmpl
  77. #### Changelog and tagging etc
  78. # create version env var for convenience:
  79. MAJOR=`cat include/VERSION | head -1 | tail -1`
  80. MINOR=`cat include/VERSION | head -2 | tail -1`
  81. RELEASE=`cat include/VERSION | head -3 | tail -1`
  82. VERSION=${MAJOR}.${MINOR}.${RELEASE}
  83. echo $VERSION
  84. TODO: add feature_branch...
  85. git add include/VERSION
  86. git commit -m"GRASS GIS $VERSION" include/VERSION
  87. # Create Changelog file on release branch:
  88. python tools/gitlog2changelog.py
  89. mv ChangeLog ChangeLog_$VERSION
  90. head ChangeLog_$VERSION
  91. gzip ChangeLog_$VERSION
  92. # TODO:
  93. # Tag release ...
  94. TODAY=`date +"%Y%m%d"`
  95. RELEASETAG=release_${TODAY}_grass_${MAJOR}_${MINOR}_${RELEASE}
  96. echo $RELEASETAG
  97. TODO...
  98. # create source package (in the source directory):
  99. echo grass-${VERSION}
  100. mkdir grass-${VERSION}
  101. mv * grass-${VERSION}/
  102. # create the package:
  103. tar cvfzh grass-${VERSION}.tar.gz --exclude-vcs grass-${VERSION}/*
  104. # restore src code location:
  105. mv ./grass-${VERSION}/* .
  106. rmdir ./grass-${VERSION}
  107. # Calculating MD5 sum:
  108. md5sum grass-${VERSION}.tar.gz > grass-${VERSION}.md5sum
  109. # reset include/VERSION file to git version:
  110. vim include/VERSION
  111. #example
  112. 7
  113. 4
  114. 1dev
  115. 2018
  116. rm -f include/VERSION~
  117. git add include/VERSION
  118. git commit -m"back to git" include/VERSION
  119. # Store the source tarball (twice) in (use scp -p FILES grass:):
  120. SERVER1=grass.osgeo.org
  121. SERVER1DIR=/var/www/grass/grass-cms/grass$MAJOR$MINOR/source/
  122. SERVER2=upload.osgeo.org
  123. SERVER2DIR=/osgeo/download/grass/grass$MAJOR$MINOR/source/
  124. echo $SERVER1:$SERVER1DIR
  125. echo $SERVER2:$SERVER2DIR
  126. # upload along with associated files:
  127. scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \
  128. INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER1:$SERVER1DIR
  129. scp -p grass-$VERSION.* AUTHORS COPYING ChangeLog_$VERSION.gz \
  130. INSTALL REQUIREMENTS.html SUBMITTING neteler@$SERVER2:$SERVER2DIR
  131. # Only full release!
  132. # generate link to "latest" source code
  133. ssh neteler@$SERVER1 "cd $SERVER1DIR ; rm -f grass-$MAJOR.$MINOR-latest.tar.gz"
  134. ssh neteler@$SERVER1 "cd $SERVER1DIR ; ln -s grass-$VERSION.tar.gz grass-$MAJOR.$MINOR-latest.tar.gz"
  135. # update winGRASS related files: Update the winGRASS version
  136. vim grass-addons/tools/wingrass-packager/grass_packager_release.bat
  137. vim grass-addons/tools/wingrass-packager/grass_addons.sh
  138. vim grass-addons/tools/wingrass-packager/grass_copy_wwwroot.sh
  139. vim grass-addons/tools/wingrass-packager/cronjob.sh # major/minor release only
  140. # update addons - major/minor release only
  141. vim grass-addons/tools/addons/grass-addons-publish.sh
  142. vim grass-addons/tools/addons/grass-addons-build.sh
  143. vim grass-addons/tools/addons/grass-addons.sh
  144. ###################
  145. # update web site to new version: CMS
  146. - News section
  147. - https://grass.osgeo.org/download/software/
  148. - https://grass.osgeo.org/download/software/sources/
  149. - https://grass.osgeo.org/download/software/linux/
  150. - https://grass.osgeo.org/home/history/releases/
  151. # TODO: git tags
  152. - https://grass.osgeo.org/development/svn/svn-tags/ (add tag): echo $RELEASETAG
  153. # write announcement
  154. - store in trac:
  155. https://trac.osgeo.org/grass/wiki/Release/7.6.x-News
  156. https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures76 <- add content of major changes only
  157. - update version in https://grasswiki.osgeo.org/wiki/GRASS-Wiki
  158. - store in Web as announces/announce_grass$MAJOR$MINOR$RELEASE.html <- how? with protected PHP upload page? (dropped since CMS)
  159. # only when new major release
  160. # update cronjob 'cron_grass_HEAD_src_snapshot.sh' on grass.osgeo.org to next but one release tag for the differences
  161. # wiki updates, only when new major release:
  162. - {{cmd|xxxx}} macro: https://grasswiki.osgeo.org/wiki/Template:Cmd
  163. - update last version on main page
  164. # trac updates, only when new major release:
  165. - Add new release to https://trac.osgeo.org/grass/admin/ticket/versions
  166. - Set "complete" flag in https://trac.osgeo.org/grass/milestone/7.6.x --> Edit Milestone
  167. - also: Retarget associated open tickets to milestone 7.6.x
  168. - Batch modify tickets, set to next milestone (update this query accordingly: two entries to change)
  169. 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
  170. - Set max items to 1000, then select all shown tickets via Status: assigned/new/reopened sections
  171. - Scroll down to "Batch modify": under the "Comment" section, add Field "Milestone" and set to next version
  172. - then use "Change ticket" button, done.
  173. - Only in case of new release branch being created:
  174. - Add Wiki Macro definitions for manual pages G7X:modulename
  175. - Edit: https://trac.osgeo.org/grass/wiki/InterMapTxt
  176. # WinGRASS notes:
  177. - Update grass_packager_release.bat, eg.
  178. set MAJOR=7
  179. set MINOR=4
  180. set PATCH=1RC1
  181. - Update addons (grass_addons.sh) rules, eg.
  182. compile $SVN_PATH/grass7 $GISBASE_PATH/grass760RC1 $ADDON_PATH/grass760RC1/addons
  183. - Modify grass_copy_wwwroot.sh accordingly, eg.
  184. copy_addon 761RC1 7.6.1RC1
  185. # Launchpad notes:
  186. - Create milestone and release: https://launchpad.net/grass/+series
  187. - Upload tarball for created release
  188. - Update daily recipe contents: https://code.launchpad.net/~grass/+recipe/grass-trunk
  189. # Packaging notes:
  190. https://trac.osgeo.org/grass/wiki/BuildHints
  191. - https://trac.osgeo.org/grass/wiki/DebianUbuntuPackaging
  192. - https://trac.osgeo.org/grass/wiki/CompileOnWindows
  193. ############
  194. # Marketing - tell others about release:
  195. * Notify all packagers (MN has email list)
  196. * If release candidate:
  197. - <grass-announce@lists.osgeo.org>
  198. - <grass-dev@lists.osgeo.org>
  199. * If official release:
  200. - publish related announcement press release at:
  201. Our GRASS web site: /announces/
  202. Note: DON'T use relative links there
  203. Our main mailing lists:
  204. http://lists.osgeo.org/mailman/listinfo/grass-announce
  205. <grass-announce@lists.osgeo.org>
  206. http://lists.osgeo.org/mailman/listinfo/grass-dev
  207. <grass-dev@lists.osgeo.org>
  208. http://lists.osgeo.org/mailman/listinfo/grassuser
  209. <grass-user@lists.osgeo.org>
  210. DebianGIS: <debian-gis@lists.debian.org> - send only small note
  211. FreeGIS: <freegis-list@intevation.de>
  212. Geowanking: <geowanking@geowanking.org>
  213. OSGeo.org: <news_item@osgeo.org>
  214. Email:
  215. info@osgeo.org
  216. http://www.gis-news.de/ (franz-josef.behr@gismngt.de)
  217. http://spatialnews.geocomm.com/submitnews.html (not free any more, convince editor@geocomm.com)
  218. mfeilner@linuxnewmedia.de
  219. info@harzer.de
  220. editor-geo@geoconnexion.com
  221. Web:
  222. https://plus.google.com/u/0/communities/111147786674687562495 (G+ GRASS GIS community)
  223. http://linuxtoday.com/contribute.php3
  224. https://joinup.ec.europa.eu/software/grassgis/home (submit news, MN)
  225. http://www.macnn.com/contact/newstips/1
  226. http://www10.giscafe.com/submit_material/submit_options.php#Press (MN) --> Press releases
  227. http://www.directionsmag.com/pressreleases/ (News -> Submit Press Release)
  228. http://directory.fsf.org/wiki/GRASS_%28Geographic_Resources_Analysis_Support_System%29
  229. https://www.linux-apps.com/p/1128004/edit/ (MN)
  230. https://news.eoportal.org/web/eoportal/share-your-news (MN)
  231. -> Share your news with the EO community
  232. https://www.heise.de/download/product/grass-gis-7105 (update, MN)
  233. See also: https://grass.osgeo.org/wiki/Contact_Databases
  234. ... anywhere else? Please add here.