NSS:HOWTOCreateRelease: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Update instructions for HG)
Line 1: Line 1:
==HOWTO create and publish an NSS release==
==HOWTO create and publish an NSS release==


* Announce to the nss-dev mailing list that a release is coming
* announce to the nss-dev mailing list that a release is planned
* Make sure you are in possession of an SSH account at Mozilla's staging server for FTP, and that your user account is a member of group "security".
* make sure you are in possession of an SSH account at Mozilla's staging server for FTP, and that your user account is a member of group "security".
* Check with people on the list what the minimum required NSPR release number should be for this NSS release. Coordinate with NSPR developers that this NSPR release is ready by the time you create the NSS release.
* check with people on the list what the minimum required NSPR release number should be for this NSS release. Coordinate with NSPR developers that this NSPR release is ready by the time you create the NSS release.
* Announce when the repository shall be frozen, so you can proceed with the release without disturbances
* announce when the repository shall be frozen, so you can proceed with the release without disturbances
* Update the status message on the tinderbox page to make people aware that the tree is frozen and that people should coordinate any checkins with the nss-dev mailing list.
* ask the Sheriff to update the status message on the buildbot waterfall page, to make people aware that the tree is frozen and that people should coordinate any checkins with the nss-dev mailing list.
* check out the latest code, for exampling using
* use appropriate HG commands, to update your tree to the latest state, on the branch that will be used for the release (usually the tip of the default branch)
  cvs -z3 -q co mozilla/security/nss mozilla/security/coreconf mozilla/security/dbm mozilla/dbm
* ensure your local tree doesn't have any local changes
* ensure your local tree doesn't have any local changes
* make sure nobody else has checked in unexpected code (for example by using the link to the recent checkins on the tinderbox page)
  hg summary
* make sure nobody else has checked in unexpected code (look at the list of commits on the NSS HG status page)
* The version numbers in the source code mention "Beta", both as a string and as a boolean value. Carefully change the version numbers to final release, exactly as shown in the following illustrative patch (but of course using the appropriate numbers).
* The version numbers in the source code mention "Beta", both as a string and as a boolean value. Carefully change the version numbers to final release, exactly as shown in the following illustrative patch (but of course using the appropriate numbers).


  Index: mozilla/security/nss/lib/util/nssutil.h
   diff --git a/lib/nss/nss.h b/lib/nss/nss.h
   diff -u mozilla/security/nss/lib/util/nssutil.h:1.29 mozilla/security/nss/lib/util/nssutil.h:1.30
   --- a/lib/nss/nss.h
   --- mozilla/security/nss/lib/util/nssutil.h:1.29 Wed Feb 15 22:41:27 2012
   +++ b/lib/nss/nss.h
   +++ mozilla/security/nss/lib/util/nssutil.h Sat Feb 18 23:22:44 2012
 
  @@ -51,12 +51,12 @@
   -#define NSS_VERSION "3.15.1" _NSS_ECC_STRING _NSS_CUSTOMIZED " Beta"
    * The format of the version string should be
   +#define NSS_VERSION "3.15.1" _NSS_ECC_STRING _NSS_CUSTOMIZED
    *    "<major version>.<minor version>[.<patch level>[.<build number>]][ <Beta>]"
   #define NSS_VMAJOR   3
    */
   #define NSS_VMINOR   15
   -#define NSSUTIL_VERSION "3.13.3.0 Beta"
   #define NSS_VPATCH   1
   +#define NSSUTIL_VERSION "3.13.3.0"
   #define NSS_VBUILD   0
   #define NSSUTIL_VMAJOR   3
   -#define NSS_BETA     PR_TRUE
   #define NSSUTIL_VMINOR   13
   +#define NSS_BETA     PR_FALSE
   #define NSSUTIL_VPATCH   3
   #define NSSUTIL_VBUILD   0
   -#define NSSUTIL_BETA     PR_TRUE
   +#define NSSUTIL_BETA     PR_FALSE
    
    
  SEC_BEGIN_PROTOS
  diff --git a/lib/softoken/softkver.h b/lib/softoken/softkver.h
  --- a/lib/softoken/softkver.h
  +++ b/lib/softoken/softkver.h
    
    
  Index: mozilla/security/nss/lib/softoken/softkver.h
   -#define SOFTOKEN_VERSION  "3.15.1" SOFTOKEN_ECC_STRING " Beta"
  diff -u mozilla/security/nss/lib/softoken/softkver.h:1.26 mozilla/security/nss/lib/softoken/softkver.h:1.27
   +#define SOFTOKEN_VERSION  "3.15.1" SOFTOKEN_ECC_STRING
  --- mozilla/security/nss/lib/softoken/softkver.h:1.26 Wed Feb 15 22:41:26 2012
  +++ mozilla/security/nss/lib/softoken/softkver.h Sat Feb 18 23:22:43 2012
  @@ -57,11 +57,11 @@
    * The format of the version string should be
    *    "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]"
    */
   -#define SOFTOKEN_VERSION  "3.13.3.0" SOFTOKEN_ECC_STRING " Beta"
   +#define SOFTOKEN_VERSION  "3.13.3.0" SOFTOKEN_ECC_STRING
   #define SOFTOKEN_VMAJOR  3
   #define SOFTOKEN_VMAJOR  3
   #define SOFTOKEN_VMINOR  13
   #define SOFTOKEN_VMINOR  15
   #define SOFTOKEN_VPATCH  3
   #define SOFTOKEN_VPATCH  1
   #define SOFTOKEN_VBUILD  0
   #define SOFTOKEN_VBUILD  0
   -#define SOFTOKEN_BETA    PR_TRUE
   -#define SOFTOKEN_BETA    PR_TRUE
   +#define SOFTOKEN_BETA    PR_FALSE
   +#define SOFTOKEN_BETA    PR_FALSE
    
    
  #endif /* _SOFTKVER_H_ */
   diff --git a/lib/util/nssutil.h b/lib/util/nssutil.h
  Index: mozilla/security/nss/lib/nss/nss.h
   --- a/lib/util/nssutil.h
   diff -u mozilla/security/nss/lib/nss/nss.h:1.90 mozilla/security/nss/lib/nss/nss.h:1.91
   +++ b/lib/util/nssutil.h
   --- mozilla/security/nss/lib/nss/nss.h:1.90 Wed Feb 15 22:41:26 2012
   +++ mozilla/security/nss/lib/nss/nss.h Sat Feb 18 23:22:43 2012
  @@ -66,12 +66,12 @@
    * The format of the version string should be
    *    "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]"
    */
  -#define NSS_VERSION  "3.13.3.0" _NSS_ECC_STRING _NSS_CUSTOMIZED " Beta"
  +#define NSS_VERSION  "3.13.3.0" _NSS_ECC_STRING _NSS_CUSTOMIZED
  #define NSS_VMAJOR  3
  #define NSS_VMINOR  13
  #define NSS_VPATCH  3
  #define NSS_VBUILD  0
  -#define NSS_BETA    PR_TRUE
  +#define NSS_BETA    PR_FALSE
    
    
   #ifndef RC_INVOKED
  -#define NSSUTIL_VERSION  "3.15.1 Beta"
    
  +#define NSSUTIL_VERSION  "3.15.1"
 
  #define NSSUTIL_VMAJOR  3
* run cvs diff after changing the beta versions to ensure your happy with the changes
   #define NSSUTIL_VMINOR  15
   cvs -z3 -q diff -u security/nss security/coreconf security/dbm dbm
   #define NSSUTIL_VPATCH  1
* Commit the change to cvs (If you have permission from the NSS development team to create the release, you don't need separate permission to check in this change.)
  #define NSSUTIL_VBUILD  0
  -#define NSSUTIL_BETA    PR_TRUE
  +#define NSSUTIL_BETA    PR_FALSE
* after changing the beta versions, look at the diff, to ensure your happy with the changes, look at the diff
   hg diff
* Commit and push the change to HG (If you have permission from the NSS development team to create the release, you don't need separate permission to check in this change.)
  hg commit
  hg push
* The code you have created is the first release candidate. The 4th number in NSS version numbers is the release candidate number. The first release candidate has number zero.
* The code you have created is the first release candidate. The 4th number in NSS version numbers is the release candidate number. The first release candidate has number zero.
* Create a release candidate tag, as a static tag. It should follow the style "NSS_3_13_3_RC0". The final number should be the same number as in the version number. To create the tag use this command:
* If you want to start by creating a release candidate tag, it should follow the style "NSS_3_15_1_RC0". The final number should be the same number as in the version number. To create and publish the tag:
   cd mozilla
   hg tag NSS_3_15_1_RC0
   cvs tag NSS_3_13_3_RC0 dbm security/dbm security/coreconf security/nss
   hg push
* Proceed to test the tag, for example by landing it into Mozilla. See also: [https://developer.mozilla.org/en/Updating_NSPR_or_NSS_in_mozilla-central Updating NSPR or NSS in mozilla-central]
* If you created a release candidate tag, proceed to test the tag, for example by landing it into mozilla-central. See also: [https://developer.mozilla.org/en/Updating_NSPR_or_NSS_in_mozilla-central Updating NSPR or NSS in mozilla-central]
* If additional changes are necessary, increase the release candidate number in all files, commit your change, create a new release candidate tag, etc.
* If additional changes are necessary, increase the release candidate number in all files, commit your change, create a new release candidate tag, etc.
* Once the decision is made that your release candidate is indeed the final release, create the release tag, such as NSS_3_13_3_RTM
* Once the decision is made that your release candidate is indeed the final release, create the release tag, such as NSS_3_15_1_RTM
  hg tag NSS_3_15_1_RTM
  hg push
* Update https://wiki.mozilla.org/NSS:Tags to mention the new tag
* Update https://wiki.mozilla.org/NSS:Tags to mention the new tag
* Prepare cvs for development of the next version, by increasing all version numbers, resetting release candidate number to zero, and adding back the "Beta" information, exactly as shown in the following illustrative patch
  Index: mozilla/security/nss/lib/util/nssutil.h
  diff -u mozilla/security/nss/lib/util/nssutil.h:1.30 mozilla/security/nss/lib/util/nssutil.h:1.31
  --- mozilla/security/nss/lib/util/nssutil.h:1.30 Sat Feb 18 23:22:44 2012
  +++ mozilla/security/nss/lib/util/nssutil.h Wed Feb 22 10:00:09 2012
  @@ -51,12 +51,12 @@
    * The format of the version string should be
    *    "<major version>.<minor version>[.<patch level>[.<build number>]][ <Beta>]"
    */
  -#define NSSUTIL_VERSION  "3.13.3.0"
  +#define NSSUTIL_VERSION  "3.13.4.0 Beta"
  #define NSSUTIL_VMAJOR  3
  #define NSSUTIL_VMINOR  13
  -#define NSSUTIL_VPATCH  3
  +#define NSSUTIL_VPATCH  4
  #define NSSUTIL_VBUILD  0
  -#define NSSUTIL_BETA    PR_FALSE
  +#define NSSUTIL_BETA    PR_TRUE
 
  SEC_BEGIN_PROTOS
 
  Index: mozilla/security/nss/lib/softoken/softkver.h
  diff -u mozilla/security/nss/lib/softoken/softkver.h:1.27 mozilla/security/nss/lib/softoken/softkver.h:1.28
  --- mozilla/security/nss/lib/softoken/softkver.h:1.27 Sat Feb 18 23:22:43 2012
  +++ mozilla/security/nss/lib/softoken/softkver.h Wed Feb 22 10:00:08 2012
  @@ -57,11 +57,11 @@
    * The format of the version string should be
    *    "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]"
    */
  -#define SOFTOKEN_VERSION  "3.13.3.0" SOFTOKEN_ECC_STRING
  +#define SOFTOKEN_VERSION  "3.13.4.0" SOFTOKEN_ECC_STRING " Beta"
  #define SOFTOKEN_VMAJOR  3
  #define SOFTOKEN_VMINOR  13
  -#define SOFTOKEN_VPATCH  3
  +#define SOFTOKEN_VPATCH  4
  #define SOFTOKEN_VBUILD  0
  -#define SOFTOKEN_BETA    PR_FALSE
  +#define SOFTOKEN_BETA    PR_TRUE
 
  #endif /* _SOFTKVER_H_ */
  Index: mozilla/security/nss/lib/nss/nss.h
  diff -u mozilla/security/nss/lib/nss/nss.h:1.91 mozilla/security/nss/lib/nss/nss.h:1.92
  --- mozilla/security/nss/lib/nss/nss.h:1.91 Sat Feb 18 23:22:43 2012
  +++ mozilla/security/nss/lib/nss/nss.h Wed Feb 22 10:00:08 2012
  @@ -66,12 +66,12 @@
    * The format of the version string should be
    *    "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]"
    */
  -#define NSS_VERSION  "3.13.3.0" _NSS_ECC_STRING _NSS_CUSTOMIZED
  +#define NSS_VERSION  "3.13.4.0" _NSS_ECC_STRING _NSS_CUSTOMIZED " Beta"
  #define NSS_VMAJOR  3
  #define NSS_VMINOR  13
  -#define NSS_VPATCH  3
  +#define NSS_VPATCH  4
  #define NSS_VBUILD  0
  -#define NSS_BETA    PR_FALSE
  +#define NSS_BETA    PR_TRUE
 
  #ifndef RC_INVOKED
 
* Announce the creation of the release tag to the nss-dev mailing list.
* Announce the creation of the release tag to the nss-dev mailing list.
* Create a new local directory for preparing the release tar archives and cd to it, for example
* We'll use the hg archive command to create release tar archives. (Note we still use old gzip for maximum compatibility with consumers.) We'll use an additional directory level, that's why we require the --prefix parameter. Run the command from within the top nss directory. We assume you haven't made any changes to your local tree yet, after you created the release tag. (That's why we don't need the --rev argument.) In the following command, use the correct version number in both places.
  mkdir 3133rtm
   hg archive --prefix=nss-3.15.1/nss ../nss-3.15.1.tar.gz -X ".hgtags"
  cd 3133rtm
* Multiple consuming projects have asked us to provide combined tar archives that contain both NSS and the corresponding minimum NSPR version that it requires. Get the respective NSPR version, for example by downloading the published release.
* Create another directory named after the version number, for example
* The NSPR release archive will contain a directory hierarchy like nspr-4.10/nspr. Extract it, and move the nspr subdirectory to the nss-3.15.1 directory. As a result, the nss-3.15.1 directory should contain two subdirectories: nss and nspr
  mkdir nss-3.13.3
  cd nss-3.13.3
* Use the release tag to export the code, and afterwards go up one level
   cvs -z3 export -r NSS_3_13_3_RTM mozilla/dbm mozilla/security/nss mozilla/security/coreconf mozilla/security/dbm
  cd ..
* Create a tar archive (we still use old gzip for maximum compatibility with consumers):
  tar czvf nss-3.13.3.tar.gz nss-3.13.3
* Multiple consuming projects have asked us to provide combined tar archives that contain both NSS and the corresponding minimum NSPR version that it requires. Get that NSPR version, for example by exporting the tag from CVS:
  cvs -z3 export -r NSPR_4_9_RTM mozilla/nsprpub
* Move nsprpub into your NSS tree:
  mv -i your-temporary-directory-for-nspr/mozilla/nsprpub nss-3.13.3/mozilla/
* verify that nss-3.13.3/mozilla contains 3 directories: dbm + nsprpub + security
  ls -l nss-3.13.3/mozilla
* Create the combined tar archive:
* Create the combined tar archive:
   tar czvf nss-3.13.3-with-nspr-4.9.tar.gz nss-3.13.3
   tar czvf nss-3.15.1-with-nspr-4.10.tar.gz nss-3.15.1
* create MD5SUMS and SHA1SUMS files:
* create MD5SUMS and SHA1SUMS files:
   md5sum *.gz > MD5SUMS
   md5sum *.gz > MD5SUMS
   sha1sum *.gz > SHA1SUMS
   sha1sum *.gz > SHA1SUMS
* prepare the directory hierarchy that will be used on the FTP server, move the files into it, and copy the directory to the staging server
* prepare the directory hierarchy that will be used on the FTP server, move the files into it, and copy the directory to the staging server
   mkdir -p NSS_3_13_3_RTM/src
   mkdir -p NSS_3_15_1_RTM/src
   mv -i *.tar.gz *SUMS NSS_3_13_3_RTM/src
   mv -i nss-*.tar.gz *SUMS NSS_3_15_1_RTM/src
   scp -pr NSS_3_13_3_RTM user@stagingserver.mozilla:
   scp -pr NSS_3_15_1_RTM user@stagingserver.mozilla:
* Now connect to the shell on the staging server for final preparations of the files, change the group ownership, set the right persmissions, and finally move them to the right place
* Now connect to the shell on the staging server for final preparations of the files, change the group ownership, set the right persmissions, and finally move them to the right place
   ssh user@stagingserver.mozilla
   ssh user@stagingserver.mozilla
   chgrp -R security NSS_3_13_3_RTM
   chgrp -R security NSS_3_15_1_RTM
   chmod -R g+w NSS_3_13_3_RTM
   chmod -R g+w NSS_3_15_1_RTM
* ensure that everything looks correct with both user and group readable/writeable, world readable, directories also executable, and all groups set to security.
* ensure that everything looks correct with both user and group readable/writeable, world readable, directories also executable, and all groups set to security.
   $ ls -ld NSS_3_13_3_RTM
   $ ls -ld NSS_3_15_1_RTM
   drwxrwxr-x 3 kaie security 4096 Feb 22 01:50 NSS_3_13_3_RTM
   drwxrwxr-x 3 kaie security 4096 Feb 22 01:50 NSS_3_15_1_RTM
   $ ls -l NSS_3_13_3_RTM
   $ ls -l NSS_3_15_1_RTM
   drwxrwxr-x 2 kaie security 4096 Feb 22 01:50 src
   drwxrwxr-x 2 kaie security 4096 Feb 22 01:50 src
   $ ls -l NSS_3_13_3_RTM/src
   $ ls -l NSS_3_15_1_RTM/src
   -rw-rw-r-- 1 kaie security    118 Feb 22 01:49 MD5SUMS
   -rw-rw-r-- 1 kaie security    118 Feb 22 01:49 MD5SUMS
   -rw-rw-r-- 1 kaie security 6083507 Feb 22 01:47 nss-3.13.3.tar.gz
   -rw-rw-r-- 1 kaie security 6083507 Feb 22 01:47 nss-3.15.1.tar.gz
   -rw-rw-r-- 1 kaie security 7295947 Feb 22 01:49 nss-3.13.3-with-nspr-4.9.tar.gz
   -rw-rw-r-- 1 kaie security 7295947 Feb 22 01:49 nss-3.15.1-with-nspr-4.10.tar.gz
   -rw-rw-r-- 1 kaie security    134 Feb 22 01:49 SHA1SUMS
   -rw-rw-r-- 1 kaie security    134 Feb 22 01:49 SHA1SUMS
* check that the publishing area still exists at the expected position
* check that the publishing area still exists at the expected position
   ls -l /home/ftp/pub/security/nss/releases/
   ls -l /home/ftp/pub/security/nss/releases/
* you're ready to publish, move the directory from your home directory to the publishing area:
* you're ready to publish, move the directory from your home directory to the publishing area:
   mv -iv NSS_3_13_3_RTM /home/ftp/pub/security/nss/releases/
   mv -iv NSS_3_15_1_RTM /home/ftp/pub/security/nss/releases/
* Shortly afterwards the new directory should appear in the [ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/ NSS releases FTP directory]
* Shortly afterwards the new directory should appear in the [ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/ NSS releases FTP directory]
* Announce the availability of the new release to the mozilla-dev-tech-crypto list, with a link to FTP and potentially with release notes.
* Announce the availability of the new release to the mozilla-dev-tech-crypto list, with a link to FTP and potentially with release notes.
* Finally, prepare HG for development of the next version, by increasing all version numbers, resetting release candidate number to zero, and adding back the " Beta" information (with a space in front of the word Beta), as shown in the following illustrative patch


  diff --git a/lib/nss/nss.h b/lib/nss/nss.h
  --- a/lib/nss/nss.h
  +++ b/lib/nss/nss.h
 
  -#define NSS_VERSION  "3.15.1" _NSS_ECC_STRING _NSS_CUSTOMIZED
  +#define NSS_VERSION  "3.15.2" _NSS_ECC_STRING _NSS_CUSTOMIZED " Beta"
  #define NSS_VMAJOR  3
  #define NSS_VMINOR  15
  -#define NSS_VPATCH  1
  +#define NSS_VPATCH  2
  #define NSS_VBUILD  0
  -#define NSS_BETA    PR_FALSE
  +#define NSS_BETA    PR_TRUE
 
  diff --git a/lib/softoken/softkver.h b/lib/softoken/softkver.h
  --- a/lib/softoken/softkver.h
  +++ b/lib/softoken/softkver.h
 
  -#define SOFTOKEN_VERSION  "3.15.1" SOFTOKEN_ECC_STRING
  +#define SOFTOKEN_VERSION  "3.15.2" SOFTOKEN_ECC_STRING " Beta"
  #define SOFTOKEN_VMAJOR  3
  #define SOFTOKEN_VMINOR  15
  -#define SOFTOKEN_VPATCH  1
  +#define SOFTOKEN_VPATCH  2
  #define SOFTOKEN_VBUILD  0
  -#define SOFTOKEN_BETA    PR_FALSE
  +#define SOFTOKEN_BETA    PR_TRUE
 
  diff --git a/lib/util/nssutil.h b/lib/util/nssutil.h
  --- a/lib/util/nssutil.h
  +++ b/lib/util/nssutil.h
 
  -#define NSSUTIL_VERSION  "3.15.1 Beta"
  +#define NSSUTIL_VERSION  "3.15.2"
  #define NSSUTIL_VMAJOR  3
  #define NSSUTIL_VMINOR  15
  -#define NSSUTIL_VPATCH  1
  +#define NSSUTIL_VPATCH  2
  #define NSSUTIL_VBUILD  0
  -#define NSSUTIL_BETA    PR_FALSE
  +#define NSSUTIL_BETA    PR_TRUE


[[Category:NSS]]
[[Category:NSS]]

Revision as of 19:01, 29 May 2013

HOWTO create and publish an NSS release

  • announce to the nss-dev mailing list that a release is planned
  • make sure you are in possession of an SSH account at Mozilla's staging server for FTP, and that your user account is a member of group "security".
  • check with people on the list what the minimum required NSPR release number should be for this NSS release. Coordinate with NSPR developers that this NSPR release is ready by the time you create the NSS release.
  • announce when the repository shall be frozen, so you can proceed with the release without disturbances
  • ask the Sheriff to update the status message on the buildbot waterfall page, to make people aware that the tree is frozen and that people should coordinate any checkins with the nss-dev mailing list.
  • use appropriate HG commands, to update your tree to the latest state, on the branch that will be used for the release (usually the tip of the default branch)
  • ensure your local tree doesn't have any local changes
 hg summary
  • make sure nobody else has checked in unexpected code (look at the list of commits on the NSS HG status page)
  • The version numbers in the source code mention "Beta", both as a string and as a boolean value. Carefully change the version numbers to final release, exactly as shown in the following illustrative patch (but of course using the appropriate numbers).
 diff --git a/lib/nss/nss.h b/lib/nss/nss.h
 --- a/lib/nss/nss.h
 +++ b/lib/nss/nss.h
  
 -#define NSS_VERSION  "3.15.1" _NSS_ECC_STRING _NSS_CUSTOMIZED " Beta"
 +#define NSS_VERSION  "3.15.1" _NSS_ECC_STRING _NSS_CUSTOMIZED
  #define NSS_VMAJOR   3
  #define NSS_VMINOR   15
  #define NSS_VPATCH   1
  #define NSS_VBUILD   0
 -#define NSS_BETA     PR_TRUE
 +#define NSS_BETA     PR_FALSE
  
 diff --git a/lib/softoken/softkver.h b/lib/softoken/softkver.h
 --- a/lib/softoken/softkver.h
 +++ b/lib/softoken/softkver.h
  
 -#define SOFTOKEN_VERSION  "3.15.1" SOFTOKEN_ECC_STRING " Beta"
 +#define SOFTOKEN_VERSION  "3.15.1" SOFTOKEN_ECC_STRING
  #define SOFTOKEN_VMAJOR   3
  #define SOFTOKEN_VMINOR   15
  #define SOFTOKEN_VPATCH   1
  #define SOFTOKEN_VBUILD   0
 -#define SOFTOKEN_BETA     PR_TRUE
 +#define SOFTOKEN_BETA     PR_FALSE
  
 diff --git a/lib/util/nssutil.h b/lib/util/nssutil.h
 --- a/lib/util/nssutil.h
 +++ b/lib/util/nssutil.h
  
 -#define NSSUTIL_VERSION  "3.15.1 Beta"
 +#define NSSUTIL_VERSION  "3.15.1"
  #define NSSUTIL_VMAJOR   3
  #define NSSUTIL_VMINOR   15
  #define NSSUTIL_VPATCH   1
  #define NSSUTIL_VBUILD   0
 -#define NSSUTIL_BETA     PR_TRUE
 +#define NSSUTIL_BETA     PR_FALSE

  • after changing the beta versions, look at the diff, to ensure your happy with the changes, look at the diff
 hg diff
  • Commit and push the change to HG (If you have permission from the NSS development team to create the release, you don't need separate permission to check in this change.)
 hg commit
 hg push
  • The code you have created is the first release candidate. The 4th number in NSS version numbers is the release candidate number. The first release candidate has number zero.
  • If you want to start by creating a release candidate tag, it should follow the style "NSS_3_15_1_RC0". The final number should be the same number as in the version number. To create and publish the tag:
 hg tag NSS_3_15_1_RC0
 hg push
  • If you created a release candidate tag, proceed to test the tag, for example by landing it into mozilla-central. See also: Updating NSPR or NSS in mozilla-central
  • If additional changes are necessary, increase the release candidate number in all files, commit your change, create a new release candidate tag, etc.
  • Once the decision is made that your release candidate is indeed the final release, create the release tag, such as NSS_3_15_1_RTM
 hg tag NSS_3_15_1_RTM
 hg push
  • Update https://wiki.mozilla.org/NSS:Tags to mention the new tag
  • Announce the creation of the release tag to the nss-dev mailing list.
  • We'll use the hg archive command to create release tar archives. (Note we still use old gzip for maximum compatibility with consumers.) We'll use an additional directory level, that's why we require the --prefix parameter. Run the command from within the top nss directory. We assume you haven't made any changes to your local tree yet, after you created the release tag. (That's why we don't need the --rev argument.) In the following command, use the correct version number in both places.
 hg archive --prefix=nss-3.15.1/nss ../nss-3.15.1.tar.gz -X ".hgtags"
  • Multiple consuming projects have asked us to provide combined tar archives that contain both NSS and the corresponding minimum NSPR version that it requires. Get the respective NSPR version, for example by downloading the published release.
  • The NSPR release archive will contain a directory hierarchy like nspr-4.10/nspr. Extract it, and move the nspr subdirectory to the nss-3.15.1 directory. As a result, the nss-3.15.1 directory should contain two subdirectories: nss and nspr
  • Create the combined tar archive:
 tar czvf nss-3.15.1-with-nspr-4.10.tar.gz nss-3.15.1
  • create MD5SUMS and SHA1SUMS files:
 md5sum *.gz > MD5SUMS
 sha1sum *.gz > SHA1SUMS
  • prepare the directory hierarchy that will be used on the FTP server, move the files into it, and copy the directory to the staging server
 mkdir -p NSS_3_15_1_RTM/src
 mv -i nss-*.tar.gz *SUMS NSS_3_15_1_RTM/src
 scp -pr NSS_3_15_1_RTM user@stagingserver.mozilla:
  • Now connect to the shell on the staging server for final preparations of the files, change the group ownership, set the right persmissions, and finally move them to the right place
 ssh user@stagingserver.mozilla
 chgrp -R security NSS_3_15_1_RTM
 chmod -R g+w NSS_3_15_1_RTM
  • ensure that everything looks correct with both user and group readable/writeable, world readable, directories also executable, and all groups set to security.
 $ ls -ld NSS_3_15_1_RTM
 drwxrwxr-x 3 kaie security 4096 Feb 22 01:50 NSS_3_15_1_RTM
 $ ls -l NSS_3_15_1_RTM
 drwxrwxr-x 2 kaie security 4096 Feb 22 01:50 src
 $ ls -l NSS_3_15_1_RTM/src
 -rw-rw-r-- 1 kaie security     118 Feb 22 01:49 MD5SUMS
 -rw-rw-r-- 1 kaie security 6083507 Feb 22 01:47 nss-3.15.1.tar.gz
 -rw-rw-r-- 1 kaie security 7295947 Feb 22 01:49 nss-3.15.1-with-nspr-4.10.tar.gz
 -rw-rw-r-- 1 kaie security     134 Feb 22 01:49 SHA1SUMS
  • check that the publishing area still exists at the expected position
 ls -l /home/ftp/pub/security/nss/releases/
  • you're ready to publish, move the directory from your home directory to the publishing area:
 mv -iv NSS_3_15_1_RTM /home/ftp/pub/security/nss/releases/
  • Shortly afterwards the new directory should appear in the NSS releases FTP directory
  • Announce the availability of the new release to the mozilla-dev-tech-crypto list, with a link to FTP and potentially with release notes.
  • Finally, prepare HG for development of the next version, by increasing all version numbers, resetting release candidate number to zero, and adding back the " Beta" information (with a space in front of the word Beta), as shown in the following illustrative patch
 diff --git a/lib/nss/nss.h b/lib/nss/nss.h
 --- a/lib/nss/nss.h
 +++ b/lib/nss/nss.h
  
 -#define NSS_VERSION  "3.15.1" _NSS_ECC_STRING _NSS_CUSTOMIZED
 +#define NSS_VERSION  "3.15.2" _NSS_ECC_STRING _NSS_CUSTOMIZED " Beta"
  #define NSS_VMAJOR   3
  #define NSS_VMINOR   15
 -#define NSS_VPATCH   1
 +#define NSS_VPATCH   2
  #define NSS_VBUILD   0
 -#define NSS_BETA     PR_FALSE
 +#define NSS_BETA     PR_TRUE
  
 diff --git a/lib/softoken/softkver.h b/lib/softoken/softkver.h
 --- a/lib/softoken/softkver.h
 +++ b/lib/softoken/softkver.h
  
 -#define SOFTOKEN_VERSION  "3.15.1" SOFTOKEN_ECC_STRING
 +#define SOFTOKEN_VERSION  "3.15.2" SOFTOKEN_ECC_STRING " Beta"
  #define SOFTOKEN_VMAJOR   3
  #define SOFTOKEN_VMINOR   15
 -#define SOFTOKEN_VPATCH   1
 +#define SOFTOKEN_VPATCH   2
  #define SOFTOKEN_VBUILD   0
 -#define SOFTOKEN_BETA     PR_FALSE
 +#define SOFTOKEN_BETA     PR_TRUE
  
 diff --git a/lib/util/nssutil.h b/lib/util/nssutil.h
 --- a/lib/util/nssutil.h
 +++ b/lib/util/nssutil.h
  
 -#define NSSUTIL_VERSION  "3.15.1 Beta"
 +#define NSSUTIL_VERSION  "3.15.2"
  #define NSSUTIL_VMAJOR   3
  #define NSSUTIL_VMINOR   15
 -#define NSSUTIL_VPATCH   1
 +#define NSSUTIL_VPATCH   2
  #define NSSUTIL_VBUILD   0
 -#define NSSUTIL_BETA     PR_FALSE
 +#define NSSUTIL_BETA     PR_TRUE