diff options
| -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 @@ | |||
| 15 | # | 15 | # |
| 16 | """Build performance test script""" | 16 | """Build performance test script""" |
| 17 | import argparse | 17 | import argparse |
| 18 | import errno | ||
| 19 | import fcntl | ||
| 18 | import logging | 20 | import logging |
| 19 | import os | 21 | import os |
| 20 | import sys | 22 | import sys |
| @@ -33,6 +35,19 @@ logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) | |||
| 33 | log = logging.getLogger() | 35 | log = logging.getLogger() |
| 34 | 36 | ||
| 35 | 37 | ||
| 38 | def acquire_lock(lock_f): | ||
| 39 | """Acquire flock on file""" | ||
| 40 | log.debug("Acquiring lock %s", os.path.abspath(lock_f.name)) | ||
| 41 | try: | ||
| 42 | fcntl.flock(lock_f, fcntl.LOCK_EX | fcntl.LOCK_NB) | ||
| 43 | except IOError as err: | ||
| 44 | if err.errno == errno.EAGAIN: | ||
| 45 | return False | ||
| 46 | raise | ||
| 47 | log.debug("Lock acquired") | ||
| 48 | return True | ||
| 49 | |||
| 50 | |||
| 36 | def pre_run_sanity_check(): | 51 | def pre_run_sanity_check(): |
| 37 | """Sanity check of build environment""" | 52 | """Sanity check of build environment""" |
| 38 | build_dir = os.environ.get("BUILDDIR") | 53 | build_dir = os.environ.get("BUILDDIR") |
| @@ -72,6 +87,9 @@ def parse_args(argv): | |||
| 72 | help='Enable debug level logging') | 87 | help='Enable debug level logging') |
| 73 | parser.add_argument('--globalres-file', | 88 | parser.add_argument('--globalres-file', |
| 74 | help="Append results to 'globalres' csv file") | 89 | help="Append results to 'globalres' csv file") |
| 90 | parser.add_argument('--lock-file', default='./oe-build-perf.lock', | ||
| 91 | metavar='FILENAME', | ||
| 92 | help="Lock file to use") | ||
| 75 | 93 | ||
| 76 | return parser.parse_args(argv) | 94 | return parser.parse_args(argv) |
| 77 | 95 | ||
| @@ -83,6 +101,11 @@ def main(argv=None): | |||
| 83 | if args.debug: | 101 | if args.debug: |
| 84 | log.setLevel(logging.DEBUG) | 102 | log.setLevel(logging.DEBUG) |
| 85 | 103 | ||
| 104 | lock_f = open(args.lock_file, 'w') | ||
| 105 | if not acquire_lock(lock_f): | ||
| 106 | log.error("Another instance of this script is running, exiting...") | ||
| 107 | return 1 | ||
| 108 | |||
| 86 | if not pre_run_sanity_check(): | 109 | if not pre_run_sanity_check(): |
| 87 | return 1 | 110 | return 1 |
| 88 | 111 | ||
