From 9ec7f5b5078903320e7f706d059d5e0178196d51 Mon Sep 17 00:00:00 2001 From: Catherine Date: Tue, 28 Feb 2023 13:40:59 +0000 Subject: [PATCH] build.plat: accept lists as build option overrides. This was unintentionally removed in 9eb208c3. Fixes #727. --- amaranth/build/plat.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/amaranth/build/plat.py b/amaranth/build/plat.py index 9663f30..974cb5c 100644 --- a/amaranth/build/plat.py +++ b/amaranth/build/plat.py @@ -1,4 +1,5 @@ from collections import OrderedDict +from collections.abc import Iterable from abc import ABCMeta, abstractmethod, abstractproperty import os import textwrap @@ -331,10 +332,12 @@ class TemplatedPlatform(Platform): var_env_value = os.environ[var_env] return re.sub(r'^\"\"$', "", var_env_value) elif var in kwargs: - if not isinstance(kwargs[var], expected_type) and not expected_type is None: - raise TypeError("Override '{}' must be a {}, not {!r}".format(var, expected_type.__name__, kwargs[var])) - else: - return kwargs[var] + kwarg = kwargs[var] + if issubclass(expected_type, str) and isinstance(var, Iterable): + kwarg = " ".join(kwarg) + if not isinstance(kwarg, expected_type) and not expected_type is None: + raise TypeError("Override '{}' must be a {}, not {!r}".format(var, expected_type.__name__, kwarg)) + return kwarg else: return jinja2.Undefined(name=var)