Release process
What to do when releasing a new igraph version
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- Drafting
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
We don't have release.sh 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 https:/
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/fatbuild.sh
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/
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-
export version=0.6
mkdir -p igraph-new/download
mkdir -p igraph-
mkdir -p igraph-
ln -s doc-${version} igraph-new/doc
ln -s ../igraph-new htdocs/
cd /home/frs/
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/
10. Upload the C html documentation:
scp -rC doc/html/ <email address hidden>
cd doc && mv html igraph-
tar czf igraph-
mv igraph-
scp doc/igraph-
<email address hidden>
scp -C doc/igraph.info doc/igraph-docs.pdf \
<email address hidden>
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 index.html.in homepage file.
13. Create and upload the homepage itself:
cd doc/homepage
./generate.py 0.6
scp -Cr * <email address hidden>
cd ../..
14. Upload the R documentation
cd interfaces/R
R CMD INSTALL --html -l /tmp/ igraph
Then one needs to edit the /tmp/igraph/
scp -rC /tmp/igraph/html/* \
<email address hidden>
rm -r igraph.pdf && R CMD Rd2pdf igraph
scp igraph.pdf \
<email address hidden>
cd ../..
15. Upload the Python documentation
cd interfaces/python
scripts/mkdoc.sh
scp -rC doc/api/html/* \
<email address hidden>
scp -rC doc/api/pdf/api.pdf \
<email address hidden>
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>
make dist
make msvc
scp igraph-
scp igraph-
cd interfaces/R
make
scp igraph_
scp igraph_
scp igraph_
18. Upload the Python source package to Pypi
cd interfaces/python
python setup.py 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/
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-
export version=0.6
mv igraph-
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.