From a0b540b6d131ada37dade13f6832390cf9abd014 Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Sun, 17 Sep 2017 01:15:28 +0200 Subject: utils/generate_config.py: Add dpkg_arch filter PDF populates the canonical arch name, as reported by $(uname -m). In some cases, we need to pass the architecture read from PDF to software components that expect it to be represend in DPKG format (e.g. MaaS, APT on Debian systems use "amd64" instead of "x86_64"). Change-Id: I5fcef0a2c2a5cdc5332b5fab1fd284386bb865d0 Signed-off-by: Alexandru Avadanii --- utils/generate_config.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/utils/generate_config.py b/utils/generate_config.py index 353cd47..d7109b5 100755 --- a/utils/generate_config.py +++ b/utils/generate_config.py @@ -10,6 +10,13 @@ PARSER.add_argument("--yaml", "-y", type=str, required=True) PARSER.add_argument("--jinja2", "-j", type=str, required=True) ARGS = PARSER.parse_args() +# Processor architecture vs DPKG architecture mapping +DPKG_ARCH_TABLE = { + 'aarch64': 'arm64', + 'x86_64': 'amd64', +} +ARCH_DPKG_TABLE = dict(zip(DPKG_ARCH_TABLE.values(), DPKG_ARCH_TABLE.keys())) + # Custom filter to allow simple IP address operations returning # a new address from an upper or lower (negative) index def ipaddr_index(base_address, index): @@ -21,8 +28,18 @@ def ipaddr_index(base_address, index): base_address_str = str(base_address) return ipaddress.ip_address(base_address_str) + int(index) +# Custom filter to convert between processor architecture +# (as reported by $(uname -m)) and DPKG-style architecture +def dpkg_arch(arch, to_dpkg=True): + """Return DPKG-compatible from processor arch and vice-versa""" + if to_dpkg: + return DPKG_ARCH_TABLE[arch] + else: + return ARCH_DPKG_TABLE[arch] + ENV = Environment(loader=FileSystemLoader('./')) ENV.filters['ipaddr_index'] = ipaddr_index +ENV.filters['dpkg_arch'] = dpkg_arch with open(ARGS.yaml) as _: DICT = yaml.safe_load(_) -- cgit 1.2.3-korg