| |
|
|
| import logging |
| import os |
| import hashlib |
|
|
| logger = logging.getLogger("verify-checksum-models") |
|
|
|
|
| def sha256sum(file): |
| block_size = 16 * 1024 * 1024 |
| b = bytearray(block_size) |
| file_hash = hashlib.sha256() |
| mv = memoryview(b) |
| with open(file, 'rb', buffering=0) as f: |
| while True: |
| n = f.readinto(mv) |
| if not n: |
| break |
| file_hash.update(mv[:n]) |
|
|
| return file_hash.hexdigest() |
|
|
|
|
| |
| llama_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) |
|
|
| |
| hash_list_file = os.path.join(llama_path, "SHA256SUMS") |
|
|
| |
| if not os.path.exists(hash_list_file): |
| logger.error(f"Hash list file not found: {hash_list_file}") |
| exit(1) |
|
|
| |
| with open(hash_list_file, "r") as f: |
| hash_list = f.read().splitlines() |
|
|
| |
| results = [] |
|
|
| |
| for line in hash_list: |
| |
| hash_value, filename = line.split(" ") |
|
|
| |
| file_path = os.path.join(llama_path, filename) |
|
|
| |
| logger.info(f"Verifying the checksum of {file_path}") |
|
|
| |
| if os.path.exists(file_path): |
| |
| file_hash = sha256sum(file_path) |
|
|
| |
| if file_hash == hash_value: |
| valid_checksum = "V" |
| file_missing = "" |
| else: |
| valid_checksum = "" |
| file_missing = "" |
| else: |
| valid_checksum = "" |
| file_missing = "X" |
|
|
| |
| results.append({ |
| "filename": filename, |
| "valid checksum": valid_checksum, |
| "file missing": file_missing |
| }) |
|
|
|
|
| |
| print("filename".ljust(40) + "valid checksum".center(20) + "file missing".center(20)) |
| print("-" * 80) |
|
|
| |
| for r in results: |
| print(f"{r['filename']:40} {r['valid checksum']:^20} {r['file missing']:^20}") |
|
|