summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorjannaerin <golden.janna@gmail.com>2021-09-28 16:16:40 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-09-28 17:08:47 +0000
commitcabde0df1c9976c44067e4b10c3e4e96096fd83a (patch)
tree42d948efda83864f48a02b92db2b7415b125560d /SConstruct
parent78ef9784e77a2411e8aa2b582bc80033f0f36228 (diff)
downloadmongo-cabde0df1c9976c44067e4b10c3e4e96096fd83a.tar.gz
SERVER-59918 Create mongoqd binary
Diffstat (limited to 'SConstruct')
-rw-r--r--SConstruct31
1 files changed, 31 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct
index 2d80cba783d..07dc5e427ab 100644
--- a/SConstruct
+++ b/SConstruct
@@ -5096,6 +5096,35 @@ if get_option('legacy-tarball') == 'true':
module_sconscripts = moduleconfig.get_module_sconscripts(mongo_modules)
+# This generates a numeric representation of the version string so that
+# you can easily compare versions of MongoDB without having to parse
+# the version string.
+#
+# Examples:
+# 5.1.1-123 => ['5', '1', '1', '123', None, None] => [5, 1, 2, -100]
+# 5.1.1-rc2 => ['5', '1', '1', 'rc2', 'rc', '2'] => [5, 1, 1, -23]
+# 5.1.1-rc2-123 => ['5', '1', '1', 'rc2-123', 'rc', '2'] => [5, 1, 1, -23]
+# 5.1.0-alpha-123 => ['5', '1', '0', 'alpha-123', 'alpha', ''] => [5, 1, 0, -50]
+# 5.1.0-alpha1-123 => ['5', '1', '0', 'alpha1-123', 'alpha', '1'] => [5, 1, 0, -49]
+# 5.1.1 => ['5', '1', '1', '', None, None] => [5, 1, 1, 0]
+
+version_parts = [ x for x in re.match(r'^(\d+)\.(\d+)\.(\d+)-?((?:(rc|alpha)(\d?))?.*)?',
+ env['MONGO_VERSION']).groups() ]
+version_extra = version_parts[3] if version_parts[3] else ""
+if version_parts[4] == 'rc':
+ version_parts[3] = int(version_parts[5]) + -25
+elif version_parts[4] == 'alpha':
+ if version_parts[5] == '':
+ version_parts[3] = -50
+ else:
+ version_parts[3] = int(version_parts[5]) + -50
+elif version_parts[3]:
+ version_parts[2] = int(version_parts[2]) + 1
+ version_parts[3] = -100
+else:
+ version_parts[3] = 0
+version_parts = [ int(x) for x in version_parts[:4]]
+
# The following symbols are exported for use in subordinate SConscript files.
# Ideally, the SConscript files would be purely declarative. They would only
# import build environment objects, and would contain few or no conditional
@@ -5121,6 +5150,8 @@ Export([
'use_system_version_of_library',
'use_vendored_libunwind',
'usemozjs',
+ 'version_extra',
+ 'version_parts',
'wiredtiger',
])