summaryrefslogtreecommitdiff
path: root/site_scons
diff options
context:
space:
mode:
Diffstat (limited to 'site_scons')
-rw-r--r--site_scons/mongo/__init__.py8
-rw-r--r--site_scons/mongo/platform.py66
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)