1
1
Steps in doing an ns-3 release
2
2
3
- We typically post release candidates for testing at the following URL:
4
- https://www.nsnam.org/release/ns-allinone-3.X.rcX.tar.bz2
3
+ Starting with ns-3.45, there are two release versions-- the "mainline"
4
+ release (ns-3-dev by itself) and the "allinone" release (ns-3 plus
5
+ compatible app store modules).
5
6
6
- This overview covers the following release stages:
7
+ We typically post release candidates for testing at the following URLs:
8
+
9
+ (mainline): https://www.nsnam.org/release/ns-3.X.rcX.tar.bz2
10
+ (allinone): https://www.nsnam.org/release/ns-allinone-3.X.rcX.tar.bz2
11
+
12
+ This overview covers the following release stages for the mainline release:
7
13
1) new feature additions and bug fixing
8
14
2) preparing release candidates for testing
9
15
3) making the actual release
10
16
4) maintaining the release
11
17
18
+ Some additional notes for the allinone release are also included.
19
+
12
20
1) new feature additions and bug fixing
13
21
---------------------------------------
14
22
@@ -26,48 +34,41 @@ when the release is imminent.
26
34
-------------------------------------------
27
35
28
36
This step presumes that you have a reasonably solid ns-3-dev that you
29
- and/or the buildbots have been testing
37
+ and/or the CI have been testing
30
38
- building static, optimized, and debug versions
31
39
- try Python visualizer (not tested by buildbots)
32
40
-- ./ns3 run src/flow-monitor/examples/wifi-olsr-flowmon.py --vis
33
- - ensure that tests pass (./test.py -g) and make sure that the buildbots
41
+ - ensure that tests pass (./test.py -g) and make sure that the CI scripts
34
42
are reporting 'pass' state, based on the tip of the repository
35
43
- revise and check in AUTHORS, RELEASE_NOTES.md, and CHANGES.html
36
44
- required versions for related libraries (netanim, cppyy)
37
45
are correct
38
46
- confirm that Doxygen builds cleanly (./ns3 doxygen),
39
- - confirm that the new bake configurations for the release work correctly
40
47
- confirm all documents build: './ns3 docs' and check outputs
41
48
42
49
2.1) Update the tutorial "Getting Started" and "Quick Start" pages to use the new release number.
43
50
44
51
An example commit (July 14, 2021) to review is 9df8ef4b2.
45
52
46
- 2.2) Prepare some bakeconf.xml updates for the new release. Note that the
47
- new release 'ns-3.x' will not be yet available as a tagged release, so
48
- the 'ns-3.x' module may need some indirection to fetch ns-3-dev in its place.
49
-
50
- 2.3) Check out a clean ns-3-dev somewhere using ns-3-allinone
53
+ 2.2) Check out a clean ns-3-dev somewhere using ns-3-allinone
51
54
- git clone https://gitlab.com/nsnam/ns-3-allinone.git
52
55
- cd ns-3-allinone
53
- - ./download.py
56
+ - git clone https://gitlab.com/nsnam/ns-3-dev.git
54
57
- cd ns-3-dev
55
- - edit VERSION such as "ns-3.31 .rc1" (DO NOT commit this change to ns-3-dev)
58
+ - edit VERSION such as "ns-3.45 .rc1" (DO NOT commit this change to ns-3-dev)
56
59
- generate a version.cache file via './ns3 configure --enable-build-version'
57
60
- remove other files generated by the previous step ('./ns3 clean')
58
- - cd ../bake
59
- - copy over the modified bakeconf.xml that is being tested
60
61
- cd ..
61
62
- ./dist.py
62
63
63
- This should yield a compressed tarfile, such as: ns-allinone-3.31 .rc1.tar.bz2
64
+ This should yield a compressed tarfile, such as: ns-3.45 .rc1.tar.bz2
64
65
Test this, and when satisfied, upload it to
65
66
www.nsnam.org:/var/www/html/releases/ (with apache:apache file ownership)
66
67
67
68
Release candidates from previous releases can be deleted at this point.
68
69
69
70
Announce the release candidate to ns-developers as:
70
- https://www.nsnam.org/release/ns-allinone-3.31 .rc1.tar.bz2
71
+ https://www.nsnam.org/release/ns-3.45 .rc1.tar.bz2
71
72
72
73
Iterate the above as needed during the release testing phase.
73
74
@@ -95,31 +96,25 @@ The desired outcome is to have a git commit history looking like this:
95
96
96
97
$ git log --graph --decorate --oneline --all
97
98
* 4b27025 (master) Update release files to start next release
98
- * fd075f6 Merge ns-3.34 -release branch
99
+ * fd075f6 Merge ns-3.45 -release branch
99
100
|\
100
- | * 3fab3cf (HEAD, tag: ns-3.34 ) Update availability in RELEASE_NOTES
101
- | * c50aaf7 Update VERSION and documentation tags for ns-3.34 release
101
+ | * 3fab3cf (HEAD, tag: ns-3.45 ) Update availability in RELEASE_NOTES
102
+ | * c50aaf7 Update VERSION and documentation tags for ns-3.45 release
102
103
|/
103
104
* 9df8ef4 doc: Update ns-3 version in tutorial examples
104
105
* 9319cdd (origin/master, origin/HEAD) Update CHANGES.html and RELEASE_NOTES
105
106
106
- 2. Create a final bakeconf.xml and commit it.
107
-
108
- Now that the ns-3.34 tagged release is available, a final bakeconf.xml with
109
- final release components can be committed. For a sample commit, view
110
- bake commit ba47854c (July 14, 2021).
111
-
112
- 3. Create a final distribution tarball
107
+ 2. Create a final distribution tarball (here, 'nn' stands for the version number):
113
108
- git clone https://gitlab.com/nsnam/ns-3-allinone.git
114
109
- cd ns-3-allinone
115
110
- ./download.py
116
111
- cd ns-3-dev
117
- - git checkout -b 'ns-3.x -release' ns-3.x
112
+ - git checkout -b 'ns-3.nn -release' ns-3.nn
118
113
- ./ns3 configure --enable-build-version
119
114
- ./ns3 clean
120
115
- cd ../
121
116
- ./dist.py (notice we did not build here)
122
- - this will create an ns-allinone-3.x .tar.bz2 tarball
117
+ - this will create an ns-3.nn .tar.bz2 tarball
123
118
124
119
Make sure that the version.cache file included in the source archive looks
125
120
something like the below example:
@@ -135,32 +130,28 @@ VERSION_TAG = '"ns-3.37"'
135
130
VERSION_TAG_DISTANCE = '0'
136
131
VERSION_BUILD_PROFILE = 'default'
137
132
138
- 4. Test this tarball on at least one system
139
- - check that ns-3-allinone build.py works
140
- - check that bake ns-3.x and ns-allinone-3.x targets work
133
+ 4. Test this tarball works on at least one system
141
134
142
- 5. upload "ns-allinone-3.x .tar.bz2" to the /var/www/html/releases/ directory on
135
+ 5. upload "ns-3.nn .tar.bz2" to the /var/www/html/releases/ directory on
143
136
the www.nsnam.org server
144
- - scp ns-allinone-3.x .tar.bz2 www.nsnam.org:~
137
+ - scp ns-3.nn .tar.bz2 www.nsnam.org:~
145
138
- ssh www.nsnam.org
146
- - sudo cp ns-allinone-3.x .tar.bz2 /var/www/html/releases
139
+ - sudo cp ns-3.nn .tar.bz2 /var/www/html/releases
147
140
- cd !$
148
141
149
142
6. give it 644 file permissions, and user/group = apache if it is not already
150
- - sudo chown apache:apache ns-allinone-3.x .tar.bz2
151
- - sudo chmod 644 ns-allinone-3.x .tar.bz2
143
+ - sudo chown apache:apache ns-3.nn .tar.bz2
144
+ - sudo chmod 644 ns-3.nn .tar.bz2
152
145
153
146
7. Create a patch file for the releases/patches directory, and upload it
154
147
to the server. The main idea is to extract the previous release's
155
- ns-3.(x -1) directory and the new ns-3.x directory, and run a diff over it.
148
+ ns-3.(nn -1) directory and the new ns-3.nn directory, and run a diff over it.
156
149
- mkdir patchdir && cd patchdir
157
- - wget https://www.nsnam.org/releases/ns-allinone-3.(x-1).tar.bz2
158
- - tar xjf ns-allinone-3.(x-1).tar.bz2
159
- - mv ns-allinone-3.(x-1)/ns-3.(x-1) .
160
- - wget https://www.nsnam.org/releases/ns-allinone-3.x.tar.bz2
161
- - tar xjf ns-allinone-3.x.tar.bz2
162
- - mv ns-allinone-3.x/ns-3.x .
163
- - diff -Naur -x '*.dia' -x '*.pcap' -x '*.png' ns-3.(x-1) ns-3.x > ns-3.(x-1)-to-ns-3.x.patch
150
+ - wget https://www.nsnam.org/releases/ns-3.(nn-1).tar.bz2
151
+ - tar xjf ns-3.(nn-1).tar.bz2
152
+ - wget https://www.nsnam.org/releases/ns-3.nn.tar.bz2
153
+ - tar xjf ns-3.nn.tar.bz2
154
+ - diff -Naur -x '*.dia' -x '*.pcap' -x '*.png' ns-3.(nn-1) ns-3.nn > ns-3.(nn-1)-to-ns-3.nn.patch
164
155
165
156
preparing the documentation
166
157
----------------------------
0 commit comments