Release process

Registered by Gábor Csárdi

What to do when releasing a new igraph version

Blueprint information

Not started
Needs approval
Series goal:
Milestone target:

Related branches



We don't have anymore, and it was outdated anyway. So it would be nice to have some notes about the release process.

1 Test the C library on OSX, 32-bit Linux (Ubuntu), 64-bit Linux (Ubuntu), Windows with some VIsual Studio compiler (I have XP, so on XP), Solaris with Sun Studio. If you feel so, check for memory leaks using test/leakcheck on Linux (valgrind is needed).

2 Test the R package on OSX, 32-bit Linux (Ubuntu), 64-bit Linux (Ubuntu), Windows (32 bit and 64 bit) using the current stable R version and possibly R-devel, on the CRAN win-builder site, and on Solaris. 'R CMD check' must be clean on all these platforms.

3 Test building the Debian/Ubuntu packages. This is easiest by launching a nightly build in using the igraph-daily recipe at . Make sure that the recipe checks out the appropriate branch.

4. Test building a fat library on Mac OS X. The fat library should include the 32-bit and 64-bit versions of the igraph library

rm -rf fatbuild && tools/

You might have to tweak a few variables in the script before building, especially after new major releases of Mac OS X. Once the library is built, check that it does not depend on any library other than the ones in /usr/lib using "otool -L fatbuild/libigraph.dylib".

5. Submit the R package to CRAN. Wait until it goes through.

6. Make the documentation, PDF and info files are best built on (Ubuntu) Linux:

cd doc
make html
make pdf
make info

7. Create the directory structure for the new version on the SourceForge http server:

ssh -t csardi,<email address hidden> create
cd /home/project-web/igraph
export version=0.6
mkdir -p igraph-new/download
mkdir -p igraph-new/doc-${version}/{R,html,python}
mkdir -p igraph-new/images/screenshots
ln -s doc-${version} igraph-new/doc
ln -s ../igraph-new htdocs/

cd /home/frs/project/igraph
mkdir "C library"/${version}
mkdir "R source package"/${version}
mkdir "R Windows binary package"/${version}
mkdir "R MacOSX binary package"/${version}
mkdir "Visual studio"/${version}

8. Update the NEWS file

9. Write the release notes in the doc/homepage/ file.

10. Upload the C html documentation:

scp -rC doc/html/ <email address hidden>:/home/project-web/igraph/igraph-new/doc/
cd doc && mv html igraph-docs-${version} &&
tar czf igraph-docs-${version}.tar.gz igraph-docs-${version} &&
mv igraph-docs-${version} html && cd ..
scp doc/igraph-docs-${version}.tar.gz \
      <email address hidden>:/home/project-web/igraph/igraph-new/doc/
scp -C doc/ doc/igraph-docs.pdf \
      <email address hidden>:/home/project-web/igraph/igraph-new/doc/

11. Create a new branch, change that to 'trunk' on Launchpad, bump its version number.

12. Create a new feed on Feedburner, activate BuzzBoost for it, update the Feedburner links in homepage file.

13. Create and upload the homepage itself:

cd doc/homepage
./ 0.6
scp -Cr * <email address hidden>:/home/project-web/igraph/igraph-new/
cd ../..

14. Upload the R documentation

cd interfaces/R
R CMD INSTALL --html -l /tmp/ igraph

Then one needs to edit the /tmp/igraph/html/00Index.html file, and remove the links to the package list, demos and DESCRIPTION file. The url to logo.jpg must be updated, too, and the logo.jpg file copied from the R installation to /tmp/igraph/html/

scp -rC /tmp/igraph/html/* \
      <email address hidden>:/home/project-web/igraph/igraph-new/doc/R/
rm -r igraph.pdf && R CMD Rd2pdf igraph
scp igraph.pdf \
      <email address hidden>:/home/project-web/igraph/igraph-new/doc/R/
cd ../..

15. Upload the Python documentation

cd interfaces/python
scp -rC doc/api/html/* \
      <email address hidden>:/home/project-web/igraph/igraph-new/doc/python/
scp -rC doc/api/pdf/api.pdf \
      <email address hidden>:/home/project-web/igraph/igraph-new/doc/python/igraph.pdf
cd ../..

(This needs Epydoc and of course LaTeX).

16. Check the links to the documentation in the release notes

17. Upload the packages to SourceForge. The Windows and OSX R packages can be downloaded from CRAN, after they were built.

export version=0.6
export url="csardi,<email address hidden>:/home/frs/project/igraph"

make dist
make msvc
scp igraph-${version}.tar.gz ${url}"/C\ library/"${version}/
scp igraph-${version} ${url}"/Visual\ studio/"${version}/

cd interfaces/R
scp igraph_${version}.tar.gz ${url}/"R\ source\ package/"${version}/
scp igraph_${version}.zip ${url}/"R\ Windows\ binary\ package/"${version}/
scp igraph_${version}.tgz ${url}/"R\ MacOSX\ binary\ package/"${version}/

18. Upload the Python source package to Pypi

cd interfaces/python
python sdist register upload
(or something like that, untested yet, will check)

19. Build the Python binary packages for Mac OS X and Windows

For Mac OS X, simply run scripts/ to compile everything and create a disk image in dist. For Windows, you have to do it manually :(

20. Check the download links on the homepage

21. Make the igraph-new directory active:

ssh -t csardi,<email address hidden> create
cd /home/project-web/igraph
export version=0.6
mv igraph-new/doc-${version} htdocs/
rm igraph-new/doc
cp -r igraph-new/* htdocs/
rm -rf igraph-new
rm htdocs/doc
ln -s doc-${version} htdocs/doc

22. Create an announcement about the release on Launchpad

23. Send an email about the release to the igraph-announce mailing list

24. Send an email about the release to the R-packages mailing list, but don't forget that there is a limit of one announcement per year, so only announce major new versions here.

25. Create the release on Launchpad (by converting it from the milestone corresponding to the released version) and create a new milestone for the next major/minor version (whichever is applicable).

26. Re-target every open bug targeted at the released version (i.e. those we were too lazy to fix :)) to the next milestone.

27. Make a cappuccino and drink it slowly while sitting in an armchair.


Work Items

This blueprint contains Public information 
Everyone can see this information.


No subscribers.