doc/release_steps.txt
changeset 7289 f74bc8bee060
parent 7024 4392d52b3536
child 7473 ef9866e968ab
--- a/doc/release_steps.txt	Wed May 25 16:02:46 2011 -0400
+++ b/doc/release_steps.txt	Wed May 25 18:23:23 2011 -0400
@@ -3,44 +3,73 @@
 1. check out a clean ns-3-dev somewhere using ns-3-allinone (you will need it)
    - hg clone http://code.nsnam.org/ns-3-allinone
    - ./download.py
-   - ./build.py
+   - ./build.py --enable-examples --enable-tests
    - confirm that the release builds cleanly.
    - cd ns-3-dev
    - ensure that tests pass (./test.py)
 2. prepare the source files
    - revise and check in AUTHORS, if needed
-   - revise and check in RELEASE_NOTES.  Make sure to add the Availability 
-     section.
+   - revise and check in RELEASE_NOTES.  Make sure to edit the Availability 
+     section if this is a final release.
    - DO NOT change VERSION at this time
    - confirm that Doxygen builds cleanly (./waf doxygen), 
-     and check in any necessary changes 
+     and check in any necessary changes. Currently, doxygen does not build
+     cleanly, we need to fix this over time.
 3. build an ns-3-allinone distribution
-   - change back into the allinone directory
+   - you may want to check out a clean ns-3-allinone and ns-3-dev somewhere, 
+     otherwise the tarball will be huge
+   - change into the allinone directory
    - ./dist.py
    - this will create an ns-allinone-dev.tar.bz2 tarball
 4. test dev tarball on release platforms 
    - ./test.py 
    - other scripts you can think of
-5. once you are happy with the tarball and tag ns-3-dev
+5. once you are happy with the tarball, tag ns-3-dev
    - cd into ns-3-dev
-   - hg tag "ns-3.x"
-   - hg push 
+   - if release candidate
+     -- hg tag "ns-3.x-RCy"
+     -- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x-RCy
+   - else if final release
+     -- hg tag "ns-3.x"
+     -- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x
 6. clone the tagged ns-3-dev and place it on the repository
    - ssh code.nsnam.org; sudo bash; su code;
-   - cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x
-   - cd /home/code/repos/ns-3.x/.hg and edit the hgrc appropriately:
-     "description = ns-3.x release
-      name = ns-3.x"
-7. check out a clean version of the new release (ns-3.x) somewhere
-   - hg clone http://code.nsnam.org/ns-3.x
-8. Update the VERSION for this new release
+   - if release candidate
+     -- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x-RCy
+     -- cd /home/code/repos/ns-3.x-RCy/.hg and edit the hgrc appropriately:
+       [paths]
+       default = /home/code/repos/ns-3.x-RCy
+       [web]
+       description = ns-3.x-RCy release
+       name = ns-3.x-RCy
+       contact = <ns-developers@isi.edu>
+   - else if final release
+     -- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x
+     -- cd /home/code/repos/ns-3.x/.hg and edit the hgrc appropriately:
+       [paths]
+       default = /home/code/repos/ns-3.x
+       [web]
+       description = ns-3.x release
+       name = ns-3.x
+       contact = <ns-developers@isi.edu>
+7. If this is a final release (not RC)
+   - archive ns-3.x RCs in /home/code/archived-repos
+   - delete ns-3.x RCs from /home/code/repos
+8. check out a clean version of the new release (ns-3.x) or (ns-3.x-RCy) somewhere 
+   - hg clone http://code.nsnam.org/ns-3.x or (-RCy)
+9. Update the VERSION for this new release
    - change the string 3-dev in the VERSION file to the real version 
      (e.g. 3.7 or 3.7-RC1)  This must agree with the version name you chose in the clone.
-   - hg commit -m "update VERSION to ns-3.x"
+   - change the version and release string for the documentation in 
+     doc/manual/source, doc/tutorial/source, and doc/models/source conf.py files
+     This should hopefully be updated in the future to simply pull from the
+     VERSION file.
+   - hg commit -m "update VERSION to ns-3.x" or (-RCy), you get the point
    - hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x
-
-9. Run the tests on the new release (debug and optimized) like a user would
-   You need to use ns-3-allinone since you will use that to make the distro
+10. Run the tests on the new release (debug and optimized) like a user would
+    You need to use ns-3-allinone since you will use that to make the distro
+    It is convenient to let buildbot do much of this work for you, the day of
+    the release
    - hg clone http://code.nsnam.org/ns-3-allinone ns-3-allinone-3.x-test
    - cd !$
    - ./download.py -n ns-3.x
@@ -53,7 +82,7 @@
    - ./test.py
    - ./test.py -g
    - There should be no test errors at this time
-10. Create final tarballs
+11. Create final tarballs
     You need to work with a clean ns-3-allinone-3.x directory
    - hg clone http://code.nsnam.org/ns-3-allinone ns-3-allinone-3.x
    - cd !$
@@ -61,46 +90,43 @@
    - ./dist.py
    - notice we did not build here
    - this will create an ns-allinone-3.x.tar.bz2 tarball
-11. upload "ns-allinone-3.x.tar.bz2" to the /var/www/html/releases/ directory on 
+   - test this tarball out somewhere just to make sure everything went ok
+12. upload "ns-allinone-3.x.tar.bz2" to the /var/www/html/releases/ directory on 
    the www.nsnam.org server
    - scp ns-allinone-3.x.tar.bz2 www.nsnam.org:~
    - ssh www.nsnam.org
    - sudo cp ns-allinone-3.x.tar.bz2 /var/www/html/releases
    - cd !$
-12. give it 644 file permissions, and user/group = apache if it is not already
+13. give it 644 file permissions, and user/group = apache if it is not already
    - sudo chown apache:apache ns-allinone-3.x.tar.bz2
    - sudo chmod 644 ns-allinone-3.x.tar.bz2
-13. update web pages on www.nsnam.org (source is in the www/ module)
+14. if this is a final release (not RC)
+   - delete RC releases from /var/www/html/releases
+15. if final release (not RC) build release documentation
+   - sudo bash; su nsnam; cd /home/nsnam/bin 
+   - edit ./update-manual-release, ./update-tutorial-release,
+     ./update-doxygen-release and make sure RELEASE variable is 
+     set correctly
+   - run ./update-manual-release, ./update-tutorial-release,
+     ./update-doxygen-release
+16. update web pages on www.nsnam.org (source is in the www/ module)
    - clone the source repo (hg clone http://code.nsnam.org/www)
    - update references to releases in html_src 
      (consider "grep 'ns-3\.' *.html" for a new release)
      (consider "grep 'RCx' *.html" for a new RC)
+     (consider looking at past commits to www for changes)
    - update references to releases in scripts/
+   - commit and push changes
    - update roadmap on wiki
-   - commit and push changes
-14. update the server
+17. update the server
    - build and update HTML directory on the server
      -- ssh www.nsnam.org; sudo bash; su nsnam;
      -- run ~/bin/update-html
-   - build and update Doxygen directory on the server
-     -- edit ~/bin/update-doxygen-release file and change RELEASE variable 
-        to the right version number 
-     -- run ~/bin/update-doxygen-release
-15. build release documentation
-   - if this is final release (not RC)
-     -- archive old release documentation in /var/www/html/docs/release 
-        by creating release specific folder and moving current 
-        documenation into this folder
-     -- from ns-3.x/doc, enter manual/ testing/ and tutorial directories 
-        and build the documentation using make
-     -- copy this newly created documentation into 
-        /var/www/html/docs/release making sure to copy only the 
-        necessary files
-16. Final checks
-   - check manual, testing, and tutorial documentation links
+18. Final checks
+   - check manual, tutorial, model, and doxygen documentation links
    - download tarball from web, build and run tests for as many
      targets as you can
    - download release from mercurial, build and run tests for as
      many targets as you can
    - test and verify until you're confident the release is solid.
-17. announce to ns-developers, with summary of release notes
+19. announce to ns-developers, with summary of release notes