mirror of https://github.com/openXC7/prjxray.git
67 lines
1.5 KiB
Python
Executable File
67 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (C) 2017-2021 The Project X-Ray Authors.
|
|
#
|
|
# Use of this source code is governed by a ISC-style
|
|
# license that can be found in the LICENSE file or at
|
|
# https://opensource.org/licenses/ISC
|
|
#
|
|
# SPDX-License-Identifier: ISC
|
|
import argparse
|
|
import multiprocessing as mp
|
|
import os
|
|
import re
|
|
import subprocess
|
|
import yaml
|
|
|
|
from prjxray import util
|
|
|
|
|
|
def worker(arglist):
|
|
part, cwd = arglist
|
|
cmd = "make roi_only"
|
|
|
|
env = os.environ.copy()
|
|
env['XRAY_PART'] = part
|
|
|
|
print("running subprocess")
|
|
subprocess.run(cmd.split(' '), check=True, env=env, cwd=cwd)
|
|
|
|
|
|
def main():
|
|
"""Rois all parts for a family by calling "make roi_only" over all parts
|
|
with the same device as XRAY_PART.
|
|
|
|
Example:
|
|
prjxray$ ./utils/roi_all.py --db-root database/artix7/ --part xc7a100tfgg676-1
|
|
"""
|
|
env = os.environ.copy()
|
|
db_root = util.get_db_root()
|
|
assert db_root
|
|
part = util.get_part()
|
|
assert part
|
|
|
|
information = util.get_part_information(db_root, part)
|
|
|
|
valid_devices = []
|
|
for name, device in util.get_devices(db_root).items():
|
|
if device['fabric'] == information['device']:
|
|
valid_devices.append(name)
|
|
|
|
tasks = []
|
|
|
|
for part, data in util.get_parts(db_root).items():
|
|
if data['device'] in valid_devices:
|
|
cwd = os.getenv('XRAY_FUZZERS_DIR')
|
|
|
|
tasks.append((part, cwd))
|
|
|
|
with mp.Pool() as pool:
|
|
for _ in pool.imap_unordered(worker, tasks):
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|