This page describes the process of creating and publishing a release of Apache C++ Standard Library.

  1. Create a Release Candidate [RC].

    1. Export the latest rc tag corresponding to the release into a clean local copy without the .svn directories normally created by svn co.
      Example:
           $ svn export http://svn.apache.org/viewvc/stdcxx/tags/4.2.1-rc-3/ $HOME/stdcxx-4.2.1/ 
    2. Create a tarball of the local copy named stdcxx-X.Y.Z.tar.gz with X.Y.X corresponding to the version to be released, an MD5 sum file of the tarball with the same name as the tarball and the .md5 extension, and a PGP signature file for the tarball with a .asc extension. See Signing Releases for details.
      Example:
           $    tar -cf stdcxx-4.2.1.tar stdcxx-4.2.1 \
             && gzip stdcxx-4.2.1.tar && md5sum stdcxx-4.2.1.tar.gz \
             && gpg --armor --output stdcxx-4.2.1.tar.gz.asc --detach-sig stdcxx-4.2.1.tar.gz
  2. Copy the tarball and all its artifacts to a publicly accessible location such as $HOME/public_html/ visible on the web.
    Example:
        $ cp stdcxx-4.2.1.tar.gz{,asc,md5} $HOME/public_html/
  3. Start a vote on the RC on dev@stdcxx.apache.org, optionally CC'ing user@stdcxx.apache.org, allowing at least 72 hours before closing it. The subject of the post should start with the string [VOTE] followed by the version to be released. In the body of the post include links to the tarball and all the relevant artifacts. See for example: [VOTE stdcxx-4.2.1 release].

  4. Once the vote passes with at least three +1 binding votes and no vetoes after 72 hours or more, close it by announcing the results in a post with the string [VOTE RESULT] in the subject line. For an example of a [VOTE RESULT] post, see: [VOTE RESULT stdcxx 4.2.1 release].

  5. With the vote successfully closed, tag the final release candidate as the approved release.
    Example:
        $ svn cp https://svn.apache.org/repos/asf/stdcxx/tags/4.2.1-rc-3 https://svn.apache.org/repos/asf/stdcxx/tags/4.2.1
  6. Copy the release candidate and all necessary artifacts to people.apache.org:/www/www.apache.org/dist/stdcxx/ and, if necessary, update the KEYS file with the public key used to sign the release. If this is your first time, upload your public key to the MIT PGP Public Key Server. See also the Apache Mirroring Information page. To verify the validity of the signature, check Henk Penning's pgp signature checks page.
    Example:
        $    scp people.apache.org:/www.apache.org/dist/stdcxx/KEYS . \
          && (gpg --list-sigs sebor && gpg --armor --export sebor) >>KEYS \
          && scp KEYS stdcxx-4.2.1.tar.gz.asc stdcxx-4.2.1.tar.gz.md5 people.apache.org:/www.apache.org/dist/stdcxx/ 
  7. After double-checking that all issues scheduled to be resolved in this release of the project have been resolved, release this version of the project on the Manage Versions screen in Jira.
  8. With the tarball uploaded and accessible from the web (it might take an hour or more for the files to become visible), update the Download page with links pointing to the tarball containing the release, the MD5 sum, and the [VOTE RESULT] thread in the archives. The following commit shows how to update the Downloads page. (Note this correction to the first change.)

  9. While waiting for mirrors to pick up the tarball, update all unresolved Jira issues whose Affects Version/s field is set to the development branch (ending in .x, such as 4.2.x) for the current release or to trunk to the version of the current release (such as 4.2.1).
  10. 24 hours or more after uploading the tarball (after it has been picked up by mirrors) and when the updates to the Download page are visible on the web, using your Apache email account announce the release. In the announcement, rather than pointing to the tarball on the Apache server, point to one of the available mirrors. The announcement should be made on the project lists: dev@stdcxx.apache.org, user@stdcxx.apache.org, on announce@apache.org, and on major usenet groups including comp.std.c++, comp.lang.c++, and comp.lang.c++.moderated. Be prepared to respond to questions and comments about the release. See for example: Apache C++ Standard Library 4.2.0 released.
  • No labels