summaryrefslogtreecommitdiff
path: root/mesonbuild/scripts
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2024-10-02 12:36:57 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2024-10-02 22:58:50 +0300
commited1d626c356e5d194b94943cd56bb99f14d38db0 (patch)
tree25a43c9254797958d4d2cc6f00fa30bfb0ed57d8 /mesonbuild/scripts
parent3ee9e358b4be10d982a59fabf6e247cd16ac94f5 (diff)
downloadmeson-ed1d626c356e5d194b94943cd56bb99f14d38db0.tar.gz
env2mfile: Convert MachineInfo into a dataclass
This will make it easier to unit-test functions that work with a MachineInfo, by constructing the expected object in a single call. Signed-off-by: Simon McVittie <smcv@debian.org>
Diffstat (limited to 'mesonbuild/scripts')
-rwxr-xr-xmesonbuild/scripts/env2mfile.py29
1 files changed, 15 insertions, 14 deletions
diff --git a/mesonbuild/scripts/env2mfile.py b/mesonbuild/scripts/env2mfile.py
index c6f22ae76..ff3fedafb 100755
--- a/mesonbuild/scripts/env2mfile.py
+++ b/mesonbuild/scripts/env2mfile.py
@@ -3,6 +3,7 @@
from __future__ import annotations
+from dataclasses import dataclass, field
import sys, os, subprocess, shutil
import shlex
import typing as T
@@ -47,21 +48,21 @@ def add_arguments(parser: 'argparse.ArgumentParser') -> None:
parser.add_argument('--endian', default='little', choices=['big', 'little'],
help='Define endianness for cross compilation.')
+@dataclass
class MachineInfo:
- def __init__(self) -> None:
- self.compilers: T.Dict[str, T.List[str]] = {}
- self.binaries: T.Dict[str, T.List[str]] = {}
- self.properties: T.Dict[str, T.Union[str, T.List[str]]] = {}
- self.compile_args: T.Dict[str, T.List[str]] = {}
- self.link_args: T.Dict[str, T.List[str]] = {}
- self.cmake: T.Dict[str, T.Union[str, T.List[str]]] = {}
-
- self.system: T.Optional[str] = None
- self.subsystem: T.Optional[str] = None
- self.kernel: T.Optional[str] = None
- self.cpu: T.Optional[str] = None
- self.cpu_family: T.Optional[str] = None
- self.endian: T.Optional[str] = None
+ compilers: T.Dict[str, T.List[str]] = field(default_factory=dict)
+ binaries: T.Dict[str, T.List[str]] = field(default_factory=dict)
+ properties: T.Dict[str, T.Union[str, T.List[str]]] = field(default_factory=dict)
+ compile_args: T.Dict[str, T.List[str]] = field(default_factory=dict)
+ link_args: T.Dict[str, T.List[str]] = field(default_factory=dict)
+ cmake: T.Dict[str, T.Union[str, T.List[str]]] = field(default_factory=dict)
+
+ system: T.Optional[str] = None
+ subsystem: T.Optional[str] = None
+ kernel: T.Optional[str] = None
+ cpu: T.Optional[str] = None
+ cpu_family: T.Optional[str] = None
+ endian: T.Optional[str] = None
#parser = argparse.ArgumentParser(description='''Generate cross compilation definition file for the Meson build system.
#