diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2016-06-23 18:48:11 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-07-01 16:08:52 +0100 |
commit | 181e92e7a1bccf678b3eb1bf547608a142784f97 (patch) | |
tree | 1b19e0378003c2b7585424899d36846c4b618541 /scripts | |
parent | e9f18e63220e452f2b0c878998e57d944ae83980 (diff) | |
download | openembedded-core-181e92e7a1bccf678b3eb1bf547608a142784f97.tar.gz openembedded-core-181e92e7a1bccf678b3eb1bf547608a142784f97.tar.bz2 openembedded-core-181e92e7a1bccf678b3eb1bf547608a142784f97.zip |
oe-build-perf-test: enable locking
Makes it possible to guard that multiple tests are not run in parallel.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/oe-build-perf-test | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/scripts/oe-build-perf-test b/scripts/oe-build-perf-test index 9dd073cdfb..64873c90aa 100755 --- a/scripts/oe-build-perf-test +++ b/scripts/oe-build-perf-test @@ -15,6 +15,8 @@ # """Build performance test script""" import argparse +import errno +import fcntl import logging import os import sys @@ -33,6 +35,19 @@ logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) log = logging.getLogger() +def acquire_lock(lock_f): + """Acquire flock on file""" + log.debug("Acquiring lock %s", os.path.abspath(lock_f.name)) + try: + fcntl.flock(lock_f, fcntl.LOCK_EX | fcntl.LOCK_NB) + except IOError as err: + if err.errno == errno.EAGAIN: + return False + raise + log.debug("Lock acquired") + return True + + def pre_run_sanity_check(): """Sanity check of build environment""" build_dir = os.environ.get("BUILDDIR") @@ -72,6 +87,9 @@ def parse_args(argv): help='Enable debug level logging') parser.add_argument('--globalres-file', help="Append results to 'globalres' csv file") + parser.add_argument('--lock-file', default='./oe-build-perf.lock', + metavar='FILENAME', + help="Lock file to use") return parser.parse_args(argv) @@ -83,6 +101,11 @@ def main(argv=None): if args.debug: log.setLevel(logging.DEBUG) + lock_f = open(args.lock_file, 'w') + if not acquire_lock(lock_f): + log.error("Another instance of this script is running, exiting...") + return 1 + if not pre_run_sanity_check(): return 1 |