Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions scripts/make_generated_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class GenerationScript:
def __init__(self, script: Path, files: List[Path],
output_dir_option: Optional[str] = None,
output_file_option: Optional[str] = None,
optional: bool = False):
optional: bool = False) -> None:
# Path from the root of Mbed TLS or TF-PSA-Crypto of the generation script
self.script = script

Expand Down Expand Up @@ -55,7 +55,7 @@ def __init__(self, script: Path, files: List[Path],
# consuming repository hasn't been updated yet.
self.optional = optional

def get_generation_script_files(generation_script: str):
def get_generation_script_files(generation_script: str) -> List[Path]:
"""
Get the list of the default paths of the files that a given script
generates. It is assumed that the script supports the "--list" option.
Expand Down Expand Up @@ -182,7 +182,7 @@ def get_generation_script_files(generation_script: str):
get_generation_script_files("scripts/generate_visualc_files.pl"),
"--directory", None))

def get_generated_files(generation_scripts: List[GenerationScript]):
def get_generated_files(generation_scripts: List[GenerationScript]) -> List[Path]:
"""
List the generated files in Mbed TLS or TF-PSA-Crypto. The path from root
is returned for each generated files.
Expand All @@ -193,19 +193,21 @@ def get_generated_files(generation_scripts: List[GenerationScript]):

return files

def make_generated_files(generation_scripts: List[GenerationScript]):
def make_generated_files(generation_scripts: List[GenerationScript]) -> None:
"""
Generate the configuration independent files in their default location in
the Mbed TLS or TF-PSA-Crypto tree.
"""
for generation_script in generation_scripts:
subprocess.run([generation_script.exe, str(generation_script.script)], check=True)

def check_generated_files(generation_scripts: List[GenerationScript], root: Path):
def check_generated_files(generation_scripts: List[GenerationScript],
root: Path) -> bool:
"""
Check that the given root directory contains the generated files as expected/
generated by this script.
"""
ok = True
for generation_script in generation_scripts:
for file in generation_script.files:
file = root / file
Expand Down Expand Up @@ -240,6 +242,7 @@ def check_generated_files(generation_scripts: List[GenerationScript], root: Path
# there's nothing to compare to, or clean up.
continue
if not filecmp.cmp(file, bak_file):
ok = False
ref_file = file.with_name(file.name + ".ref")
ref_file = root / ref_file
if ref_file.exists():
Expand All @@ -248,8 +251,9 @@ def check_generated_files(generation_scripts: List[GenerationScript], root: Path
print(f"Generated file {file} not identical to the reference one {ref_file}.")
file.unlink()
bak_file.rename(file)
return ok

def main():
def main() -> int:
"""
Main function of this program
"""
Expand Down Expand Up @@ -280,10 +284,13 @@ def main():
files = get_generated_files(generation_scripts)
for file in files:
print(str(file))
return 0
elif args.check:
check_generated_files(generation_scripts, Path(args.root or "."))
ok = check_generated_files(generation_scripts, Path(args.root or "."))
return 0 if ok else 1
else:
make_generated_files(generation_scripts)
return 0 # Any error causes an exception

if __name__ == "__main__":
sys.exit(main())