Steps in doing an ns-3 release 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 - confirm that the release builds cleanly. - cd ns-3-dev - ensure that tests pass (./test.py) - ensure no regressions (./waf --regression) 2. prepare the source files - revise and check in AUTHORS, if needed - revise and check in RELEASE_NOTES - DO NOT change VERSION at this time - confirm that Doxygen builds cleanly and without warnings (./waf doxygen), and check in any necessary changes 3. build an ns-3-allinone distribution - change back 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 - ./waf --regression - other scripts you can think of 5. once you are happy with the tarball, tag ns-3-dev and ns-3-dev-ref-traces - cd into ns-3-dev - hg tag "ns-3.x" - hg push - cd into ns-3-dev-ref-traces - hg tag "ns-3.x" - hg push 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.1x - cd /home/code/repos/ns-3.x/.hg and edit the hgrc appropriately: "description = ns-3.x release name = ns-3.x" - clone the ns-3-dev-ref-traces and place it on the repository as above but use the name ns-3.x-ref-traces and edit the hgrc appropriately 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 - 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 for the regression tests to work. - hg commit -m "update VERSION to ns-3.x" - 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 - hg clone http://code.nsnam.org/ns-3-allinone ns-3-allinone-3.x - cd !$ - ./download.py -n ns-3.x -r ns-3.x-ref-traces - ./build.py - cd ns-3.x - ./test.py - ./test.py -g - ./waf --regression - ./waf --valgrind --regression (for valgrind version) - ./waf -d optimized configure - ./waf - ./test.py - ./test.py -g - ./waf --regression - ./waf --valgrind --regression (for valgrind version) - There should be no regression errors at this time 10. Create final tarballs - cd into ns-3-allinone level - ./dist.py - 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 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 - 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) - 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) - update references to releases in scripts/ - update roadmap on wiki - commit and push changes 14. 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. Final checks - download tarball from web, build and run regression tests for as many targets as you can - download release from mercurial, build and run regression tests for as many targets as you can - test and verify until you're confident the release is solid. 16. announce to ns-developers, with summary of release notes