NSS:HOWTOCreateRelease: Difference between revisions
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 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 | * ensure your local tree doesn't have any local changes | ||
* make sure nobody else has checked in unexpected code ( | 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). | ||
diff --git a/lib/nss/nss.h b/lib/nss/nss.h | |||
diff - | --- 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 | #define NSS_VPATCH 1 | ||
+#define | #define NSS_VBUILD 0 | ||
#define | -#define NSS_BETA PR_TRUE | ||
#define | +#define NSS_BETA PR_FALSE | ||
#define | |||
#define | |||
-#define | |||
+#define | |||
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_VERSION "3. | |||
+#define SOFTOKEN_VERSION "3. | |||
#define SOFTOKEN_VMAJOR 3 | #define SOFTOKEN_VMAJOR 3 | ||
#define SOFTOKEN_VMINOR | #define SOFTOKEN_VMINOR 15 | ||
#define SOFTOKEN_VPATCH | #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 | ||
diff --git a/lib/util/nssutil.h b/lib/util/nssutil.h | |||
--- a/lib/util/nssutil.h | |||
diff - | +++ 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 | |||
* Commit the change to | #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. | ||
* | * 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. | * 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 | * 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 | ||
* 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. | ||
* | * 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 | |||
* 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 | |||
* | |||
* Create the combined tar archive: | * Create the combined tar archive: | ||
tar czvf nss-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 | mkdir -p NSS_3_15_1_RTM/src | ||
mv -i *.tar.gz *SUMS | mv -i nss-*.tar.gz *SUMS NSS_3_15_1_RTM/src | ||
scp -pr | 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 | chgrp -R security NSS_3_15_1_RTM | ||
chmod -R g+w | 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 | $ ls -ld NSS_3_15_1_RTM | ||
drwxrwxr-x 3 kaie security 4096 Feb 22 01:50 | drwxrwxr-x 3 kaie security 4096 Feb 22 01:50 NSS_3_15_1_RTM | ||
$ ls -l | $ 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 | $ 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. | -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. | -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 | 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