-
-
Notifications
You must be signed in to change notification settings - Fork 332
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
howto_release converted to MD incl cleanup (#96)
- Loading branch information
Showing
2 changed files
with
334 additions
and
307 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,334 @@ | ||
# How to release GRASS GIS binaries and source code | ||
|
||
*Note: Some steps in this text are to be done by the development coordinator (currently Markus Neteler, PSC Chair) due to needed logins.* | ||
|
||
## HOWTO create a release | ||
|
||
### Preparations | ||
|
||
Check examples if still compiling | ||
|
||
```bash | ||
( cd doc/raster/r.example/ ; make clean ; make ) | ||
( cd doc/vector/v.example/ ; make clean ; make ) | ||
``` | ||
|
||
### Fix typos in source code with | ||
|
||
```bash | ||
tools/fix_typos.sh | ||
``` | ||
|
||
### i18N: sync from Transifex | ||
See https://www.transifex.com/grass-gis/grass7/dashboard/ | ||
|
||
Exception Latvian as Latvian is directly edited in git and then sync'ed from master .po files | ||
|
||
```bash | ||
cd locale | ||
sh ~/software/grass_addons_git/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 | ||
``` | ||
|
||
### Update of configure base files | ||
|
||
*Only allowed in RC cycle, not for final release!* | ||
|
||
Check that autoconf scripts are up-to-date: | ||
```bash | ||
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 | ||
``` | ||
Now check if configure still works. | ||
|
||
If yes, submit to git: | ||
```bash | ||
git add config.guess config.sub configure | ||
git checkout -b config_sub_update_r78 | ||
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 | ||
|
||
git push origin config_sub_update_r78 | ||
# open PR and merge | ||
``` | ||
|
||
### Cleanup leftover rubbish files | ||
|
||
```bash | ||
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: | ||
```bash | ||
git status | ||
``` | ||
|
||
### Create release branch (only if not yet existing) | ||
|
||
.. see section below at end of file. | ||
|
||
### Update VERSION file to release version number | ||
|
||
TODO: probably better done in GH interface?! | ||
|
||
```bash | ||
vim include/VERSION | ||
|
||
#example: | ||
7 | ||
8 | ||
0RC1 | ||
2019 | ||
``` | ||
|
||
Cleanup: | ||
```bash | ||
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~~ | ||
|
||
### Create release tag | ||
|
||
See https://help.github.com/en/articles/creating-releases | ||
|
||
Done in GH interface. | ||
|
||
### Changelog and tagging etc | ||
|
||
```bash | ||
# 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 | ||
|
||
git checkout -b release_GRASS_GIS_$VERSION | ||
git add include/VERSION | ||
git commit -m"GRASS GIS $VERSION" include/VERSION | ||
git push origin release_GRASS_GIS_$VERSION | ||
|
||
# Create Changelog file on release branch: | ||
python tools/gitlog2changelog.py | ||
mv ChangeLog ChangeLog_$VERSION | ||
head ChangeLog_$VERSION | ||
gzip ChangeLog_$VERSION | ||
|
||
TODAY=`date +"%Y%m%d"` | ||
RELEASETAG=release_${TODAY}_grass_${MAJOR}_${MINOR}_${RELEASE} | ||
echo $RELEASETAG | ||
``` | ||
|
||
### Tag release (on GitHub) | ||
|
||
```bash | ||
echo "grass_$VERSION" | ||
``` | ||
|
||
Do this in https://github.com/OSGeo/grass/releases/new | ||
|
||
### Packaging of source code tarball | ||
|
||
TODO: add checkout of code via release tag | ||
|
||
```bash | ||
# 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: | ||
|
||
TODO: probably better done in GH interface | ||
|
||
```bash | ||
vim include/VERSION | ||
|
||
#example | ||
7 | ||
8 | ||
0dev | ||
2019 | ||
|
||
rm -f include/VERSION~ | ||
git checkout -b back_to_git_dev | ||
git add include/VERSION | ||
git commit -m"back to git" include/VERSION | ||
git push origin back_to_git_dev | ||
# open PR and merge | ||
``` | ||
|
||
### Upload source code tarball to OSGeo servers | ||
|
||
```bash | ||
# 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 at 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 | ||
``` | ||
|
||
Release is done. | ||
|
||
### Advertise new release | ||
|
||
#### Update CMS web site to show new version | ||
|
||
- 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 and publish it | ||
- store in trac: | ||
- https://trac.osgeo.org/grass/wiki/Release/7.8.x-News | ||
- https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures78 <- 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: | ||
- Set "complete" flag in https://trac.osgeo.org/grass/milestone/7.8.x --> Edit Milestone | ||
- also: Retarget associated open tickets to milestone 7.8.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.8.0&milestone=7.8.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=8 | ||
set PATCH=0RC1 | ||
``` | ||
- Update addons (grass_addons.sh) rules, eg. | ||
``` | ||
compile $GIT_PATH/grass7 $GISBASE_PATH/grass780RC1 $ADDON_PATH/grass780RC1/addons | ||
``` | ||
- Modify grass_copy_wwwroot.sh accordingly, eg. | ||
``` | ||
copy_addon 781RC1 7.8.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/grass-user | <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> | ||
|
||
Via 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 | ||
|
||
Via 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. |
Oops, something went wrong.