diff options
Diffstat (limited to 'buildstream/_site.py')
-rw-r--r-- | buildstream/_site.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/buildstream/_site.py b/buildstream/_site.py index 622839511..f4780ef3d 100644 --- a/buildstream/_site.py +++ b/buildstream/_site.py @@ -19,6 +19,8 @@ # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> import os +import shutil +import subprocess # # Private module declaring some info about where the buildstream @@ -45,3 +47,50 @@ build_all_template = os.path.join(root, 'data', 'build-all.sh.in') # Module building script template build_module_template = os.path.join(root, 'data', 'build-module.sh.in') + +# Cached bwrap version +_bwrap_major = None +_bwrap_minor = None +_bwrap_patch = None + + +# check_bwrap_version() +# +# Checks the version of installed bwrap against the requested version +# +# Args: +# major (int): The required major version +# minor (int): The required minor version +# patch (int): The required patch level +# +# Returns: +# (bool): Whether installed bwrap meets the requirements +# +def check_bwrap_version(major, minor, patch): + # pylint: disable=global-statement + + global _bwrap_major + global _bwrap_minor + global _bwrap_patch + + # Parse bwrap version and save into cache, if not already cached + if _bwrap_major is None: + bwrap_path = shutil.which('bwrap') + if not bwrap_path: + return False + cmd = [bwrap_path, "--version"] + version = str(subprocess.check_output(cmd).split()[1], "utf-8") + _bwrap_major, _bwrap_minor, _bwrap_patch = map(int, version.split(".")) + + # Check whether the installed version meets the requirements + if _bwrap_major > major: + return True + elif _bwrap_major < major: + return False + else: + if _bwrap_minor > minor: + return True + elif _bwrap_minor < minor: + return False + else: + return _bwrap_patch >= patch |