summaryrefslogtreecommitdiff
path: root/automation/release
diff options
context:
space:
mode:
authorJ.C. Jones <jjones@mozilla.com>2019-12-04 05:35:16 +0000
committerJ.C. Jones <jjones@mozilla.com>2019-12-04 05:35:16 +0000
commit76a9d6d5bed12ae94027363e98ed8b182cc5f84d (patch)
tree39b33ddc614f0dfc2347e86bb2999756125130bf /automation/release
parent52870835214aae3b95eab07053ab9ba0df86507e (diff)
downloadnss-hg-76a9d6d5bed12ae94027363e98ed8b182cc5f84d.tar.gz
Bug 1535787 - Further improvements to the release-helper API r=mt
Differential Revision: https://phabricator.services.mozilla.com/D55763
Diffstat (limited to 'automation/release')
-rwxr-xr-xautomation/release/nss-release-helper.py154
1 files changed, 68 insertions, 86 deletions
diff --git a/automation/release/nss-release-helper.py b/automation/release/nss-release-helper.py
index e7d5b0ca0..8cc0a725e 100755
--- a/automation/release/nss-release-helper.py
+++ b/automation/release/nss-release-helper.py
@@ -49,17 +49,26 @@ def check_files_exist():
exit_with_failure("cannot find expected header files, must run from inside NSS hg directory")
-def inplace_replace(cmds=[], filename=""):
- for c in cmds:
- if "regex" not in c or "repl" not in c:
- raise Exception("Expecting a list of dicts with 'regex' and 'repl' as members")
- c["matcher"] = re.compile(c["regex"])
+class Replacement():
+ def __init__(self, regex="", repl=""):
+ self.regex = regex
+ self.repl = repl
+ self.matcher = re.compile(self.regex)
+
+ def replace(self, line):
+ return self.matcher.sub(self.repl, line)
+
+
+def inplace_replace(replacements=[], filename=""):
+ for r in replacements:
+ if not isinstance(r, Replacement):
+ raise TypeError("Expecting a list of Replacement objects")
with tempfile.NamedTemporaryFile(mode="w", delete=False) as tmp_file:
with open(filename) as in_file:
for line in in_file:
- for c in cmds:
- line = c["matcher"].sub(c["repl"], line)
+ for r in replacements:
+ line = r.replace(line)
tmp_file.write(line)
shutil.copystat(filename, tmp_file.name)
@@ -70,56 +79,38 @@ def toggle_beta_status(is_beta):
check_files_exist()
if (is_beta):
print("adding Beta status to version numbers")
- inplace_replace(filename=nssutil_h, cmds=[
- {
- "regex": r'^(#define *NSSUTIL_VERSION *\"[0-9.]+)\" *$',
- "repl": r'\g<1> Beta"'
- }, {
- "regex": r'^(#define *NSSUTIL_BETA *)PR_FALSE *$',
- "repl": r'\g<1>PR_TRUE'
- }])
- inplace_replace(filename=softkver_h, cmds=[
- {
- "regex": r'^(#define *SOFTOKEN_VERSION *\"[0-9.]+\" *SOFTOKEN_ECC_STRING) *$',
- "repl": r'\g<1> " Beta"'
- }, {
- "regex": r'^(#define *SOFTOKEN_BETA *)PR_FALSE *$',
- "repl": r'\g<1>PR_TRUE'
- }])
- inplace_replace(filename=nss_h, cmds=[
- {
- "regex": r'^(#define *NSS_VERSION *\"[0-9.]+\" *_NSS_CUSTOMIZED) *$',
- "repl": r'\g<1> " Beta"'
- }, {
- "regex": r'^(#define *NSS_BETA *)PR_FALSE *$',
- "repl": r'\g<1>PR_TRUE'
- }])
+ inplace_replace(filename=nssutil_h, replacements=[
+ Replacement(regex=r'^(#define *NSSUTIL_VERSION *\"[0-9.]+)\" *$',
+ repl=r'\g<1> Beta"'),
+ Replacement(regex=r'^(#define *NSSUTIL_BETA *)PR_FALSE *$',
+ repl=r'\g<1>PR_TRUE')])
+ inplace_replace(filename=softkver_h, replacements=[
+ Replacement(regex=r'^(#define *SOFTOKEN_VERSION *\"[0-9.]+\" *SOFTOKEN_ECC_STRING) *$',
+ repl=r'\g<1> " Beta"'),
+ Replacement(regex=r'^(#define *SOFTOKEN_BETA *)PR_FALSE *$',
+ repl=r'\g<1>PR_TRUE')])
+ inplace_replace(filename=nss_h, replacements=[
+ Replacement(regex=r'^(#define *NSS_VERSION *\"[0-9.]+\" *_NSS_CUSTOMIZED) *$',
+ repl=r'\g<1> " Beta"'),
+ Replacement(regex=r'^(#define *NSS_BETA *)PR_FALSE *$',
+ repl=r'\g<1>PR_TRUE')])
else:
print("removing Beta status from version numbers")
- inplace_replace(filename=nssutil_h, cmds=[
- {
- "regex": r'^(#define *NSSUTIL_VERSION *\"[0-9.]+) *Beta\" *$',
- "repl": r'\g<1>"'
- }, {
- "regex": r'^(#define *NSSUTIL_BETA *)PR_TRUE *$',
- "repl": r'\g<1>PR_FALSE'
- }])
- inplace_replace(filename=softkver_h, cmds=[
- {
- "regex": r'^(#define *SOFTOKEN_VERSION *\"[0-9.]+\" *SOFTOKEN_ECC_STRING) *\" *Beta\" *$',
- "repl": r'\g<1>'
- }, {
- "regex": r'^(#define *SOFTOKEN_BETA *)PR_TRUE *$',
- "repl": r'\g<1>PR_FALSE'
- }])
- inplace_replace(filename=nss_h, cmds=[
- {
- "regex": r'^(#define *NSS_VERSION *\"[0-9.]+\" *_NSS_CUSTOMIZED) *\" *Beta\" *$',
- "repl": r'\g<1>'
- }, {
- "regex": r'^(#define *NSS_BETA *)PR_TRUE *$',
- "repl": r'\g<1>PR_FALSE'
- }])
+ inplace_replace(filename=nssutil_h, replacements=[
+ Replacement(regex=r'^(#define *NSSUTIL_VERSION *\"[0-9.]+) *Beta\" *$',
+ repl=r'\g<1>"'),
+ Replacement(regex=r'^(#define *NSSUTIL_BETA *)PR_TRUE *$',
+ repl=r'\g<1>PR_FALSE')])
+ inplace_replace(filename=softkver_h, replacements=[
+ Replacement(regex=r'^(#define *SOFTOKEN_VERSION *\"[0-9.]+\" *SOFTOKEN_ECC_STRING) *\" *Beta\" *$',
+ repl=r'\g<1>'),
+ Replacement(regex=r'^(#define *SOFTOKEN_BETA *)PR_TRUE *$',
+ repl=r'\g<1>PR_FALSE')])
+ inplace_replace(filename=nss_h, replacements=[
+ Replacement(regex=r'^(#define *NSS_VERSION *\"[0-9.]+\" *_NSS_CUSTOMIZED) *\" *Beta\" *$',
+ repl=r'\g<1>'),
+ Replacement(regex=r'^(#define *NSS_BETA *)PR_TRUE *$',
+ repl=r'\g<1>PR_FALSE')])
print("please run 'hg stat' and 'hg diff' to verify the files have been verified correctly")
@@ -167,50 +158,45 @@ def set_major_versions(major):
for name, file in [["NSSUTIL_VMAJOR", nssutil_h],
["SOFTOKEN_VMAJOR", softkver_h],
["NSS_VMAJOR", nss_h]]:
- inplace_replace(filename=file, cmds=[{
- "regex": r'^(#define *{} ?).*$'.format(name),
- "repl": r'\g<1>{}'.format(major),
- }])
+ inplace_replace(filename=file, replacements=[
+ Replacement(regex=r'^(#define *{} ?).*$'.format(name),
+ repl=r'\g<1>{}'.format(major))])
def set_minor_versions(minor):
for name, file in [["NSSUTIL_VMINOR", nssutil_h],
["SOFTOKEN_VMINOR", softkver_h],
["NSS_VMINOR", nss_h]]:
- inplace_replace(filename=file, cmds=[{
- "regex": r'^(#define *{} ?).*$'.format(name),
- "repl": r'\g<1>{}'.format(minor),
- }])
+ inplace_replace(filename=file, replacements=[
+ Replacement(regex=r'^(#define *{} ?).*$'.format(name),
+ repl=r'\g<1>{}'.format(minor))])
def set_patch_versions(patch):
for name, file in [["NSSUTIL_VPATCH", nssutil_h],
["SOFTOKEN_VPATCH", softkver_h],
["NSS_VPATCH", nss_h]]:
- inplace_replace(filename=file, cmds=[{
- "regex": r'^(#define *{} ?).*$'.format(name),
- "repl": r'\g<1>{}'.format(patch),
- }])
+ inplace_replace(filename=file, replacements=[
+ Replacement(regex=r'^(#define *{} ?).*$'.format(name),
+ repl=r'\g<1>{}'.format(patch))])
def set_build_versions(build):
for name, file in [["NSSUTIL_VBUILD", nssutil_h],
["SOFTOKEN_VBUILD", softkver_h],
["NSS_VBUILD", nss_h]]:
- inplace_replace(filename=file, cmds=[{
- "regex": r'^(#define *{} ?).*$'.format(name),
- "repl": r'\g<1>{}'.format(build),
- }])
+ inplace_replace(filename=file, replacements=[
+ Replacement(regex=r'^(#define *{} ?).*$'.format(name),
+ repl=r'\g<1>{}'.format(build))])
def set_full_lib_versions(version):
for name, file in [["NSSUTIL_VERSION", nssutil_h],
["SOFTOKEN_VERSION", softkver_h],
["NSS_VERSION", nss_h]]:
- inplace_replace(filename=file, cmds=[{
- "regex": r'^(#define *{} *\")([0-9.]+)(.*)$'.format(name),
- "repl": r'\g<1>{}\g<3>'.format(version),
- }])
+ inplace_replace(filename=file, replacements=[
+ Replacement(regex=r'^(#define *{} *\")([0-9.]+)(.*)$'.format(name),
+ repl=r'\g<1>{}\g<3>'.format(version))])
def set_root_ca_version():
@@ -219,17 +205,13 @@ def set_root_ca_version():
minor = args[2].strip()
version = major + '.' + minor
- inplace_replace(filename=nssckbi_h, cmds=[
- {
- "regex": r'^(#define *NSS_BUILTINS_LIBRARY_VERSION *\").*$',
- "repl": r'\g<1>{}"'.format(version)
- }, {
- "regex": r'^(#define *NSS_BUILTINS_LIBRARY_VERSION_MAJOR ?).*$',
- "repl": r'\g<1>{}'.format(major)
- }, {
- "regex": r'^(#define *NSS_BUILTINS_LIBRARY_VERSION_MINOR ?).*$',
- "repl": r'\g<1>{}'.format(minor)
- }])
+ inplace_replace(filename=nssckbi_h, replacements=[
+ Replacement(regex=r'^(#define *NSS_BUILTINS_LIBRARY_VERSION *\").*$',
+ repl=r'\g<1>{}"'.format(version)),
+ Replacement(regex=r'^(#define *NSS_BUILTINS_LIBRARY_VERSION_MAJOR ?).*$',
+ repl=r'\g<1>{}'.format(major)),
+ Replacement(regex=r'^(#define *NSS_BUILTINS_LIBRARY_VERSION_MINOR ?).*$',
+ repl=r'\g<1>{}'.format(minor))])
def set_all_lib_versions(version, major, minor, patch, build):