Find file
Fetching contributors…
Cannot retrieve contributors at this time
200 lines (158 sloc) 6.95 KB
Steps in doing an ns-3 release
ns-3-dev preparation
1. check out a clean ns-3-dev somewhere using ns-3-allinone (you will need it)
- hg clone
- ./
- ./ --enable-examples --enable-tests
- try building static, optimized, and debug versions
- try Python visualizer (not tested by buildbots)
-- ./waf --pyrun src/flow-monitor/examples/ --vis
- cd ns-3-dev
- ensure that tests pass (./ -g) and make sure that the buildbots
are reporting greens based on the tip of the repository
2. prepare the source files
- revise and check in AUTHORS, if needed
- 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. Currently, doxygen does not build
cleanly, we need to fix this over time.
At this point, the ns-3-dev should be ready, except for changing the
name of this repo from "3-dev" to the numbered release. That will come
in subsequent steps.
ns-allinone-3.X.tar.bz2 dry run
This phase is optional to dry-run a tarball before tagging. You may skip
to the next phase if you are ready to just make the release or release
1. check out a clean ns-3-allinone again
- change into the allinone directory
- ./
- cd ns-3-dev
- change VERSION to the appropriate string, either "3.X" (for a release) or
"3.X.RC1" Do not commit this VERSION change to ns-3-dev. It is used
by script to name the directory properly.
- cd into allinone directory and type "./"; you should see something
like this:
NS-3 version: '3.12'
Adding ns-3-dev as ns-allinone-3.12/ns-3.12
Adding pybindgen as ns-allinone-3.12/pybindgen-
Adding nsc as ns-allinone-3.12/nsc-0.5.2
Adding the build script files
This will create an ns-allinone-3.X.tar.bz2 tarball
2. test tarball on release platforms
- optimized, debug, and static builds
- ./ -g
- make latexpdf in the doc/manual, doc/models, and doc/tutorial directories
- ./waf --doxygen
At this point, you are ready for final packaging and repository/site work
tagging ns-3-dev and creating ns-3.X repositories
The steps here involve tagging ns-3-dev, copying over ns-3-dev to ns-3.X
on, cloning it locally, making changes from "3-dev" to "3.X"
in various places, and checking in those changes to the new ns-3.X repository.
1. once you are happy with the tarball, tag ns-3-dev
- cd into ns-3-dev
- if release candidate
-- hg tag "ns-3.x-RCy"
-- hg push ssh://
- else if final release
-- hg tag "ns-3.x"
-- hg push ssh://
2. copy the tagged ns-3-dev and place it on the repository
- ssh; sudo bash; su code;
- 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:
default = /home/code/repos/ns-3.x-RCy
description = ns-3.x-RCy release
name = ns-3.x-RCy
contact = <>
- 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:
default = /home/code/repos/ns-3.x
description = ns-3.x release
name = ns-3.x
contact = <>
3. If this is a final release (not RC)
- move (mv) ns-3.x RCs in /home/code/archived-repos
4. check out a clean version of the new release (ns-3.x) or (ns-3.x-RCy)
to your local machine
- hg clone or (-RCy)
5. 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.
- change the version and release string for the documentation in
doc/manual/source, doc/tutorial/source, and doc/models/source files
This should hopefully be updated in the future to simply pull from the
- hg commit -m "update VERSION to ns-3.x" or (-RCy), you get the point
- hg push ssh://
creating the distribution tarball
1. Create final tarballs
You need to work with a clean ns-3-allinone-3.x directory
- hg clone
- cd ns-3-allinone
- ./ -n ns-3.x
- ./ (notice we did not build here)
- this will create an ns-allinone-3.x.tar.bz2 tarball
- sanity check this tarball just to make sure everything went ok
2. upload "ns-allinone-3.x.tar.bz2" to the /var/www/html/releases/ directory on
the server
- scp ns-allinone-3.x.tar.bz2
- ssh
- sudo cp ns-allinone-3.x.tar.bz2 /var/www/html/releases
- cd !$
3. 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
4. if this is a final release (not RC)
- delete RC releases from /var/www/html/releases
preparing the documentation
1. If final release, build release documentation
- sudo bash; su nsnam; cd /home/nsnam/bin
./update-doxygen-release ns-3.x
./update-manual-release ns-3.x
./update-tutorial-release ns-3.x
2. Check if these new files are available on the website
preparing the Wordpress-based main website
1. create a new ns-3.x page which should be visible from
- New Features
- Download
- Bugs Fixed
- Documentation
2. Repoint to the new page
3. Update the Older Releases page to create an entry for the previous
release (there are two such pages, one under Releases and one under
4. The main page should point to
ns-3.x in the "Download" and "Documentation" boxes
5. Create blog entry to announce release
ns-3 wiki edits
1. Create ns-3.(X+1) wiki page if not done already.
2. edit front page and Roadmap
1. Add a product version "ns-3.x" to the available versions.
1. 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.
2. announce to ns-developers and ns-3-users, with summary of release notes