201 lines
7.0 KiB
Plaintext
201 lines
7.0 KiB
Plaintext
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 http://code.nsnam.org/ns-3-allinone
|
|
- ./download.py
|
|
- ./build.py --enable-examples --enable-tests
|
|
- try building static, optimized, and debug versions
|
|
- try Python visualizer (not tested by buildbots)
|
|
-- ./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --vis
|
|
- cd ns-3-dev
|
|
- ensure that tests pass (./test.py -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
|
|
candidate.
|
|
|
|
1. check out a clean ns-3-allinone again
|
|
- change into the allinone directory
|
|
- ./download.py
|
|
- 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 dist.py script to name the directory properly.
|
|
- cd into allinone directory and type "./dist.py"; 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-0.15.0.795
|
|
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
|
|
- ./test.py -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 code.nsnam.org, 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://code@code.nsnam.org//home/code/repos/ns-3-dev
|
|
- else if final release
|
|
-- hg tag "ns-3.x"
|
|
-- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3-dev
|
|
|
|
2. copy the tagged ns-3-dev and place it on the repository
|
|
- ssh code.nsnam.org; 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:
|
|
[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>
|
|
|
|
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 http://code.nsnam.org/ns-3.x 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 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
|
|
|
|
creating the distribution tarball
|
|
---------------------------------
|
|
|
|
1. 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
|
|
- cd ns-3-allinone
|
|
- ./download.py -n ns-3.x
|
|
- ./dist.py (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 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 !$
|
|
|
|
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
|
|
http://www.nsnam.org/ns-3.x
|
|
- New Features
|
|
- Download
|
|
- Bugs Fixed
|
|
- Documentation
|
|
|
|
2. Repoint http://www.nsnam.org/releases/latest to the new page
|
|
Repoint /var/www/html/doxygen-release to the new release doxygen.
|
|
|
|
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
|
|
Documentation)
|
|
|
|
4. The main page http://www.nsnam.org 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
|
|
|
|
Bugzilla
|
|
--------
|
|
|
|
1. Add a product version "ns-3.x" to the available versions.
|
|
|
|
Announcing
|
|
----------
|
|
|
|
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
|
|
|