forked from Mirror/pmbootstrap
With the new chroot type, we can now write fancy paths in the pythonic way. Convert most of the codebase over, as well as adding various other type hints. Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
33 lines
1,022 B
Python
33 lines
1,022 B
Python
# Copyright 2023 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
from pmb.helpers import logging
|
|
import pmb.config
|
|
|
|
# Get magic and mask from binfmt info file
|
|
# Return: {magic: ..., mask: ...}
|
|
|
|
|
|
def binfmt_info(arch_qemu):
|
|
# Parse the info file
|
|
full = {}
|
|
info = pmb.config.pmb_src / "pmb/data/qemu-user-binfmt.txt"
|
|
logging.verbose(f"parsing: {info}")
|
|
with open(info, "r") as handle:
|
|
for line in handle:
|
|
if line.startswith('#') or "=" not in line:
|
|
continue
|
|
split = line.split("=")
|
|
key = split[0].strip()
|
|
value = split[1]
|
|
full[key] = value[1:-2]
|
|
|
|
ret = {}
|
|
logging.verbose("filtering by architecture: " + arch_qemu)
|
|
for type in ["mask", "magic"]:
|
|
key = arch_qemu + "_" + type
|
|
if key not in full:
|
|
raise RuntimeError(
|
|
f"Could not find key {key} in binfmt info file: {info}")
|
|
ret[type] = full[key]
|
|
logging.verbose("=> " + str(ret))
|
|
return ret
|