mirror of
https://github.com/zeldaret/ph
synced 2026-06-13 22:05:24 -04:00
Verify SHA1 checksum
This commit is contained in:
@@ -179,6 +179,12 @@ def main():
|
||||
)
|
||||
n.newline()
|
||||
|
||||
n.rule(
|
||||
name="sha1",
|
||||
command=f"{PYTHON} tools/sha1.py $in -c $sha1_file"
|
||||
)
|
||||
n.newline()
|
||||
|
||||
game_build = build_path / game_version
|
||||
game_extract = extract_path / game_version
|
||||
|
||||
@@ -249,6 +255,16 @@ def add_mwld_and_rom_builds(n: ninja_syntax.Writer, game_build: Path, game_confi
|
||||
)
|
||||
n.newline()
|
||||
|
||||
n.build(
|
||||
inputs=rom_file,
|
||||
rule="sha1",
|
||||
variables={
|
||||
"sha1_file": str(Path(rom_file).with_suffix(".sha1"))
|
||||
},
|
||||
outputs="sha1",
|
||||
)
|
||||
n.newline()
|
||||
|
||||
|
||||
def add_mwcc_builds(n: ninja_syntax.Writer, game_version: str, game_build: Path, mwcc_implicit: list[Path]):
|
||||
for source_file in get_c_cpp_files([src_path, libs_path]):
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import hashlib
|
||||
import sys
|
||||
|
||||
def eprint(*args, **kwargs):
|
||||
print(*args, file=sys.stderr, **kwargs)
|
||||
|
||||
parser = argparse.ArgumentParser(description="Computes and verifies a SHA1 checksum")
|
||||
parser.add_argument('file', help="Input file to verify")
|
||||
parser.add_argument('-c', type=str, dest='checksum_file', required=False, help='Checksum file')
|
||||
args = parser.parse_args()
|
||||
|
||||
file_path = Path(args.file)
|
||||
checksum_path = Path(args.checksum_file)
|
||||
|
||||
with checksum_path.open('r') as file:
|
||||
target_sha1, _ = file.readline().split(' ', 1)
|
||||
|
||||
with file_path.open('rb') as file:
|
||||
file_sha1 = hashlib.sha1(file.read()).hexdigest()
|
||||
|
||||
if target_sha1 != file_sha1:
|
||||
eprint(f"{file_path}: FAILED")
|
||||
exit(1)
|
||||
else:
|
||||
eprint(f"{file_path}: OK")
|
||||
Reference in New Issue
Block a user