This document describes steps needed to make a new release of wendelin.core
make sure your working tree is clean:
$ git clean -fdX
$ git submodule foreach git clean -fdX
clone wendelin.core afresh:
$ git clone --recursive https://lab.nexedi.com/nexedi/wendelin.core
$ cd wendelin.core
Run set-up tox tests. This will test whether wendelin.core builds ok with
various python versions and various ZODB versions:
tail of output should be something like:
________ summary ________
py27-ZODB3: commands succeeded
py27-ZODB4: commands succeeded
py34-ZODB4: commands succeeded
if you experience failures, while running tox, e.g. code crashes saying zodbpickle module
is not found, before running tests, make sure your tox/virtualenv is uptodate.
e.g. on Debian system:
$ virtualenv venv-4release
$ . venv-4release/bin/activate
$ pip install tox
$ hash -r
Ensure to stage changes in setup.py and CHANGES for commit. E.g. with:
$ git add -p
( interactively select changes to commit )
Ensure all changes were staged and there will be no other changes in
worktree after commit:
$ git status
( should be absent or empty section "Changes not staged for commit:" )
Make release commit:
$ git commit -S -m "wendelin.core vX.y"
Make release tag:
$ git tag -s -m "wendelin.core vX.y" vX.y
The commit and tag are made gpg-signed (the -S and -s options)
$ python setup.py sdist
this should create dist/wendelin.core-X.y.tar.gz .
$ twine check dist/*
this checks that the syntax of the long description is written in a syntaxically
correct restructured text and will render properly on pypi.
It's also a good idea to use a spellchecker to detect English mistakes.
Unpack intended-to-release tarball somewhere and test it again with tox:
$ mkdir tmp
$ cd tmp
$ tar xfz ../dist/wendelin.core-X.y.tar.gz
$ cd wendelin.core-X.y
The output should be again:
investigate what is wrong / what needs to be corrected.
remove release tag and commit:
$ git tag -d vX.y
$ git reset HEAD~ # keeping made changes to setup.py & CHANGES
fix problems; go again to Make release commit.
If release tarball was tested ok - sign it:
$ gpg --armor --detach-sign wendelin.core-X.y.tar.gz
After release tarball is ready and signed - upload it to PyPI:
$ twine upload -u <your-pypi-account> wendelin.core-X.y.tar.gz*
Do not use PyPI web UI to upload new release. The UI has bugs which will
prevent uploading this release further even with twine or setup.py upload.
after uploading, make sure that
$ git push origin master vX.y
Tell the world - send email about new release to corresponding mailing lists,
LWN.net, etc . Make announcements on twitter and facebook.