User Tools

Site Tools


library-create-release

======== How to make a new release? ======== This page is work in progress. It gathers all the operations that should be done when making a new release of the ROHC library. The following steps make the assumption that the developer wants to release version X.Y.Z of the library. ===== Preparation ===== ==== Make sure all bugs affected to the milestone X.Y.Z are fixed ==== Go to <nowiki>https://launchpad.net/rohc/+milestone/X.Y.Z</nowiki>. Check the section that lists all the bugs affected to the milestone. The bugs should all be in state 'Fix committed'. If not, the release is not ready :-( ==== Check sources ==== Download the repository that contains the source code of the new release:<code> $ git clone --depth 10 https://github.com/didier-barvaux/rohc.git (type password) $ cd rohc $ git co X.Y.x # for a maintenance release # git co master # for a major release</code> Build the sources:<code> $ ./autogen.sh $ make clean $ make -j10 all $ make -j10 check $ make -j10 distcheck $ make qa $ ./test/non_regression/other_inputs/run_tests.sh all</code> No error should occur. Check other configure options too! Additional checks: * check the [[http://buildbot.rohc-lib.org:8011/builders|buildbot statuses]]. * check the [[http://buildbot.rohc-lib.org:8011/ccc_html_report/|report of the Clang static analyzer]]. * check the [[https://travis-ci.org/didier-barvaux/rohc/branches|Travis-CI statuses]]. * check the [[https://scan.coverity.com/projects/5127?tab=overview|Coverity Scan status]]. * check the man pages. * dry-run the build the Debian DEB package. * dry-run the build the CentOS 6.x RPM package. * dry-run the build the Gentoo ebuild package. ==== Prepare source code for the release ==== Update the ChangeLog file with the following format:<code> dd Mon YYYY - release X.Y.Z TODO: put changelog format here</code> The following command may help generating the changelog:<code> $ git log rohc-X.Y.(Z-1).. </code> Commit the changes:<code> $ git add ChangeLog $ git ci -m "Update ChangeLog for release X.Y.Z."</code> ===== Tag the release ===== ==== Tag source code for the release ==== <code>git tag -a -m 'Release X.Y.Z' -s -u 1B2BB9C1 rohc-X.Y.Z</code> ==== Prepare branch to the next release ==== The release is marked by a tag, so we can put the next version number in configure.ac:<code> - AC_INIT(rohc, X.Y.Z, http://launchpad.net/rohc/) + AC_INIT(rohc, X.Y.(Z+1), http://launchpad.net/rohc/)</code> Then, commit the changes:<code> $ git add configure.ac $ git ci -m "Prepare for next X.Y.(Z+1) release."</code> ==== Make source changes public ==== All changes were done locally, so we have to push them to the public branch hosted on GitHub:<code> $ git push (type password)</code> ==== Create source tarballs ==== Export tag sources:<code> $ git archive --format=tar --prefix=rohc-X.Y.Z/ --output=rohc-X.Y.Z.tar rohc-X.Y.Z</code> Prepare dist archive:<code> $ tar -xvf rohc-X.Y.Z.tar $ rm -f rohc-X.Y.Z.tar $ cd rohc-X.Y.Z/ $ ./autogen.sh && make clean && make -j10 distcheck # make dist should be enough, but better be safe... $ mv rohc-X.Y.Z.tar.bz2 .. $ cd .. && rm -rf rohc-X.Y.Z/ </code> Re-compress sources:<code> $ bunzip2 rohc-X.Y.Z.tar.bz2 $ xz -9 rohc-X.Y.Z.tar </code> Create checksums:<code> $ sha256sum rohc-X.Y.Z.tar.xz > rohc-X.Y.Z.tar.xz.sha256 $ sha256sum -c rohc-X.Y.Z.tar.xz.sha256 </code> Create GPG signatures:<code> $ gpg --armor --sign --detach-sig rohc-X.Y.Z.tar.xz $ gpg --verify rohc-X.Y.Z.tar.xz.asc </code> ===== Publish ===== ==== Mark bugs as 'Fix Released' ==== Go to <nowiki>https://launchpad.net/rohc/+milestone/X.Y.Z</nowiki> and change the status of all bugs listed on the page to 'Fix Released' for the branch X.Y.x. ==== Create a release from the milestone in Launchpad ==== Go to <nowiki>https://launchpad.net/rohc/+milestone/X.Y.Z</nowiki>. Follow the 'Create release' link and fulfill the form as follow: * Keep the X.Y.Z milestone active: keep the checkbox unchecked. * Date released: put the current date. * Release notes: short description of the release, for example:<code>The X.Y.Z release fixes N bugs found in release X.Y.Z-1 and is compatible with all releases X.Y.x.</code> * Changelog: copy/paste the changelog written before. ==== Upload release files ==== * Upload release files: * Go to <nowiki>https://launchpad.net/rohc/+milestone/X.Y.Z</nowiki>. Follow the 'Add download file' link for the file created before. * Upload the checksums and the API documentation on website. * Update the [[https://rohc-lib.org/support/documentation/|documentation]] page of the website, * Update the [[library-api|documentation]] page of the wiki, * Update the [[https://rohc-lib.org/support/download/|download]] pages of the website. * Update the [[https://rohc-lib.org/doc/rohc-man-2.0.0/|man pages]] of the website. * Update documentation: * Update the [[https://rohc-lib.org/wiki/doku.php?id=library-release-numbering|release numering]] on the wiki. * Update the [[library-compliance-rfcs|list of features]] on the wiki. * Update the [[https://rohc-lib.org/presentation/features/|list of features]] on the website. * Update the [[library-todo|TODO list]] on the wiki. * Update the [[ideas-list|ideas list]] on the wiki. * Update the [[library-migration|migration instructions]] on the wiki. * Update the [[library-first-application|beginner's tutorial]] on the wiki. * Update the [[http://rohc-lib.org/presentation/getting-started/|getting started tutorial]] on the website. * Update the [[https://rohc-lib.org/support/faq/|FAQ]] on the website. * Update the [[http://rohc-lib.org/rohc-lib-doap.rdf|project's DOAP file]]. * Update packages for Debian, Gentoo, and Arch Linux. ===== Advertisement ===== ==== Advertise that a new release is available ==== * Publish a [[https://launchpad.net/rohc/+announce|new announcement]] on Launchpad / website * Send an email to the ROHC mailing list ([[https://lists.launchpad.net/rohc/msg00163.html|example]]) * Advertise the new release on all [[library-references|web sites that reference the project]] * Make press release (LWN.net? Linuxfr.org? ...)

library-create-release.txt · Last modified: 2016/08/27 17:42 by didier