mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-15 20:50:42 +00:00
* Add ability to generate ios static framework * Fix typos * Add pod cache clean, update some comments of previous commit * Fix CI failure with newly added cpuinfo library * Update test model (CoreML requires node has a name) * Addressed CR comments
69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
import json
|
|
import os
|
|
import pathlib
|
|
import re
|
|
import shutil
|
|
|
|
from typing import Dict, List
|
|
|
|
_script_dir = pathlib.Path(__file__).parent.resolve(strict=True)
|
|
repo_root = _script_dir.parents[3]
|
|
|
|
_template_variable_pattern = re.compile(r"@(\w+)@") # match "@var@"
|
|
|
|
|
|
def gen_file_from_template(template_file: pathlib.Path, output_file: pathlib.Path,
|
|
variable_substitutions: Dict[str, str]):
|
|
'''
|
|
Generates a file from a template file.
|
|
The template file may contain template variables that will be substituted
|
|
with the provided values in the generated output file.
|
|
In the template file, template variable names are delimited by "@"'s,
|
|
e.g., "@var@".
|
|
|
|
:param template_file The template file path.
|
|
:param output_file The generated output file path.
|
|
:param variable_substitutions The mapping from template variable name to value.
|
|
'''
|
|
with open(template_file, mode="r") as template:
|
|
content = template.read()
|
|
|
|
def replace_template_variable(match):
|
|
variable_name = match.group(1)
|
|
return variable_substitutions.get(variable_name, match.group(0))
|
|
|
|
content = _template_variable_pattern.sub(replace_template_variable, content)
|
|
|
|
with open(output_file, mode="w") as output:
|
|
output.write(content)
|
|
|
|
|
|
def copy_repo_relative_to_dir(patterns: List[str], dest_dir: pathlib.Path):
|
|
'''
|
|
Copies file paths relative to the repo root to a directory.
|
|
The given paths or path patterns are relative to the repo root, and the
|
|
repo root-relative intermediate directory structure is maintained.
|
|
|
|
:param patterns The paths or path patterns relative to the repo root.
|
|
:param dest_dir The destination directory.
|
|
'''
|
|
paths = [path for pattern in patterns for path in repo_root.glob(pattern)]
|
|
for path in paths:
|
|
repo_relative_path = path.relative_to(repo_root)
|
|
dst_path = dest_dir / repo_relative_path
|
|
os.makedirs(dst_path.parent, exist_ok=True)
|
|
shutil.copy(path, dst_path)
|
|
|
|
|
|
def load_framework_info(framework_info_file: pathlib.Path):
|
|
'''
|
|
Loads framework info from a file.
|
|
|
|
:param framework_info_file The framework info file path.
|
|
:return The framework info values.
|
|
'''
|
|
with open(framework_info_file, mode="r") as framework_info:
|
|
return json.load(framework_info)
|