summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorTausif Rahman <tausif.rahman@mongodb.com>2022-11-14 15:16:54 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-11-14 16:14:16 +0000
commit93612bf95f8003a1e1d6af27fb1b67c57c6f3e39 (patch)
tree8a1ce23b1224d6069b15bc1ce4a5ec568279e157 /SConstruct
parent31f5c4c0dc92f1bc3dd7b4a9f2613cfabf070e35 (diff)
downloadmongo-93612bf95f8003a1e1d6af27fb1b67c57c6f3e39.tar.gz
SERVER-69636 Collect SCons Metrics
Diffstat (limited to 'SConstruct')
-rw-r--r--SConstruct14
1 files changed, 12 insertions, 2 deletions
diff --git a/SConstruct b/SConstruct
index 23392f3c577..83d42997c8e 100644
--- a/SConstruct
+++ b/SConstruct
@@ -15,6 +15,7 @@ import subprocess
import sys
import textwrap
import uuid
+from datetime import datetime
from glob import glob
from pkg_resources import parse_version
@@ -38,6 +39,8 @@ from mongo.build_profiles import BUILD_PROFILES
EnsurePythonVersion(3, 6)
EnsureSConsVersion(3, 1, 1)
+utc_starttime = datetime.utcnow()
+
# Monkey patch SCons.FS.File.release_target_info to be a no-op.
# See https://github.com/SCons/scons/issues/3454
@@ -49,6 +52,7 @@ SCons.Node.FS.File.release_target_info = release_target_info_noop
from buildscripts import utils
from buildscripts import moduleconfig
+from buildscripts.metrics.scons_tooling_metrics import setup_scons_metrics_collection_atexit
import psutil
@@ -1030,7 +1034,7 @@ env_vars.Add(
def validate_dwarf_version(key, val, env):
- if val == '4' or val == '5':
+ if val == '4' or val == '5' or val == '':
return
print(f"Invalid DWARF_VERSION '{val}'. Only valid versions are 4 or 5.")
@@ -1041,7 +1045,8 @@ env_vars.Add(
'DWARF_VERSION',
help='Sets the DWARF version (non-Windows). Incompatible with SPLIT_DWARF=1.',
validator=validate_dwarf_version,
- converter=int,
+ converter=lambda val: int(val) if val != '' else '',
+ default='',
)
env_vars.Add(
@@ -1546,6 +1551,11 @@ env = Environment(variables=env_vars, **envDict)
del envDict
env.AddMethod(lambda env, name, **kwargs: add_option(name, **kwargs), 'AddOption')
+# Setup atexit method to store tooling metrics
+# The placement of this is intentional. We should only register this function atexit after
+# env, env_vars and the parser have been properly initialized.
+setup_scons_metrics_collection_atexit(utc_starttime, env_vars, env, _parser, sys.argv)
+
if get_option('build-metrics'):
env['BUILD_METRICS_ARTIFACTS_DIR'] = '$BUILD_ROOT/$VARIANT_DIR'
env.Tool('build_metrics')