mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 09:32:32 +01:00
86 lines
2.9 KiB
Python
Executable File
86 lines
2.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# This script generates the compile expansions file used by MCI as part of the push/
|
|
# release process.
|
|
#
|
|
# You can invoke it either with git describe:
|
|
# $ git describe | python generate_compile_expansions.py > compile_expansions.yml
|
|
# or with the version.json file
|
|
# $ python generate_compile_expansions.py version.json > compile_expansions.yml
|
|
#
|
|
|
|
import fileinput
|
|
import json
|
|
import re
|
|
import os
|
|
import sys
|
|
|
|
# This function matches a version string and captures the "extra" part
|
|
# If the version is a release like "2.3.4" or "2.3.4-rc0", this will return
|
|
# ( None )
|
|
# If the version is a pre-release like "2.3.4-325-githash" or "2.3.4-pre-", this will return
|
|
# ( "-pre-" ) or ( "-325-githash" )
|
|
# If the version begins with the letter 'r', it will also match, e.g.
|
|
# r2.3.4, r2.3.4-rc0, r2.3.4-git234, r2.3.4-rc0-234-githash
|
|
# If the version is invalid (i.e. doesn't start with "2.3.4" or "2.3.4-rc0", this will return
|
|
# False
|
|
def match_verstr(verstr):
|
|
res = re.match(r'^r?(?:\d+\.\d+\.\d+(?:-rc\d+)?)(-.*)?', verstr)
|
|
if not res:
|
|
return False
|
|
return res.groups()
|
|
|
|
input_obj = fileinput.input()
|
|
version_line = input_obj.readline()
|
|
version_parts = match_verstr(version_line)
|
|
if not version_parts:
|
|
if input_obj.filename().endswith(".json"):
|
|
version_data_buf = "".join([ version_line ] + [ l for l in input_obj ])
|
|
try:
|
|
version_data = json.loads(version_data_buf)
|
|
except Exception as e:
|
|
print "Unable to load json file: %s" % e
|
|
exit(1)
|
|
version_parts = match_verstr(version_data['version'])
|
|
version_line = version_data['version']
|
|
else:
|
|
version_line = version_line.lstrip("r").rstrip()
|
|
|
|
# If the version still doesn't match, give up and print an error message!
|
|
if not version_parts:
|
|
print "Unable to parse version data!"
|
|
exit(1)
|
|
|
|
if version_parts[0]:
|
|
print "suffix: latest"
|
|
print "src_suffix: latest"
|
|
else:
|
|
print "suffix: {0}".format(version_line)
|
|
print "src_suffix: r{0}".format(version_line)
|
|
|
|
print "version: {0}".format(version_line)
|
|
|
|
# configuration for scons cache.
|
|
#
|
|
if sys.platform.startswith("win"):
|
|
system_id_path = r"c:\mongodb-build-system-id"
|
|
default_cache_path_base = r"z:\data\scons-cache"
|
|
else:
|
|
system_id_path = "/etc/mongodb-build-system-id"
|
|
default_cache_path_base = "/data/scons-cache"
|
|
|
|
if os.path.isfile(system_id_path):
|
|
with open(system_id_path, "r") as f:
|
|
default_cache_path = os.path.join(default_cache_path_base, f.readline().strip())
|
|
|
|
print "scons_cache_path: {0}".format(default_cache_path)
|
|
|
|
scons_cache_mode = os.getenv("SCONS_CACHE_MODE")
|
|
|
|
if scons_cache_mode in (None, ""):
|
|
scons_cache_mode = "nolinked"
|
|
|
|
if os.getenv("USE_SCONS_CACHE") not in (None, False, "false", ""):
|
|
print "scons_cache_args: --cache={0} --cache-dir='{1}'".format(scons_cache_mode,
|
|
default_cache_path)
|