diff options
Diffstat (limited to 'site_scons')
-rw-r--r-- | site_scons/mongo/__init__.py | 8 | ||||
-rw-r--r-- | site_scons/mongo/platform.py | 66 |
2 files changed, 74 insertions, 0 deletions
diff --git a/site_scons/mongo/__init__.py b/site_scons/mongo/__init__.py new file mode 100644 index 00000000000..510bd7bcc2f --- /dev/null +++ b/site_scons/mongo/__init__.py @@ -0,0 +1,8 @@ +# -*- mode: python; -*- + +# General utility functions live in this file. + +def print_build_failures(): + from SCons.Script import GetBuildFailures + for bf in GetBuildFailures(): + print "%s failed: %s" % (bf.node, bf.errstr) diff --git a/site_scons/mongo/platform.py b/site_scons/mongo/platform.py new file mode 100644 index 00000000000..c60ef0f9298 --- /dev/null +++ b/site_scons/mongo/platform.py @@ -0,0 +1,66 @@ +# -*- mode: python; -*- + +""" +Support code related to OS detection in general. System specific facilities or customization +hooks live in mongo_platform_<PLATFORM>.py files. +""" + +import os + +# --- OS identification --- +# +# This needs to precede the options section so that we can only offer some options on certain +# operating systems. + +# This function gets the running OS as identified by Python +# It should only be used to set up defaults for options/variables, because +# its value could potentially be overridden by setting TARGET_OS on the +# command-line. Treat this output as the value of HOST_OS +def get_running_os_name(): + running_os = os.sys.platform + if running_os.startswith('linux'): + running_os = 'linux' + elif running_os.startswith('freebsd'): + running_os = 'freebsd' + elif running_os.startswith('openbsd'): + running_os = 'openbsd' + elif running_os == 'sunos5': + running_os = 'solaris' + elif running_os == 'win32': + running_os = 'windows' + elif running_os == 'darwin': + running_os = 'macOS' + else: + running_os = 'unknown' + return running_os + +def env_get_os_name_wrapper(self): + return self['TARGET_OS'] + +def is_os_raw(target_os, os_list_to_check): + okay = False + + darwin_os_list = [ 'macOS', 'tvOS', 'tvOS-sim', 'iOS', 'iOS-sim' ] + posix_os_list = [ 'linux', 'openbsd', 'freebsd', 'solaris' ] + darwin_os_list + + for p in os_list_to_check: + if p == 'posix' and target_os in posix_os_list: + okay = True + break + if p == 'darwin' and target_os in darwin_os_list: + okay = True + break + elif p == target_os: + okay = True + break + return okay + +# This function tests the running OS as identified by Python +# It should only be used to set up defaults for options/variables, because +# its value could potentially be overridden by setting TARGET_OS on the +# command-line. Treat this output as the value of HOST_OS +def is_running_os(*os_list): + return is_os_raw(get_running_os_name(), os_list) + +def env_os_is_wrapper(self, *os_list): + return is_os_raw(self['TARGET_OS'], os_list) |