NSS:HOWTOCreateRelease: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(this page is now obsolete, added link to new page)
 
Line 1: Line 1:
==HOWTO create and publish an NSS release==
This page is obsolete.


* announce to the nss-dev mailing list that a release is planned
Please see the [[NSS/Release_Management|new page]].
* 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: [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.
* 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 -r NSS_3_15_1_RTM --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 SHA1SUMS and SHA256SUMS files:
  sha1sum *.gz > SHA1SUMS
  sha256sum *.gz > SHA256SUMS
* 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    185 Feb 22 01:49 SHA256SUMS
  -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 [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.
* 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]]

Latest revision as of 11:51, 22 December 2016

This page is obsolete.

Please see the new page.