# -*- mode: python; -*- import subprocess import SCons # Helper functions for generic toolchain things go here def get_toolchain_ver(env, tool): # By default we don't know the version of each tool, and only report what # command gets executed (gcc vs /opt/mongodbtoolchain/bin/gcc). verstr = "version unknown" proc = None if env.ToolchainIs("clang", "gcc"): proc = SCons.Action._subproc( env, env.subst("${%s} --version" % tool), stdout=subprocess.PIPE, stderr="devnull", stdin="devnull", universal_newlines=True, error="raise", shell=True, ) verstr = proc.stdout.readline() elif env.ToolchainIs("msvc") and env.TargetOSIs("windows"): proc = SCons.Action._subproc( env, env.subst("${%s}" % tool), stdout="devnull", stderr=subprocess.PIPE, stdin="devnull", universal_newlines=True, error="raise", shell=True, ) verstr = proc.stderr.readline() # If we started a process, we should drain its stdout/stderr and wait for # it to end. if proc: proc.communicate() return env.subst("${%s}: %s" % (tool, verstr))