From 4efb361d475871064057fd698dcd1b7ef5146332 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sat, 6 Oct 2018 00:53:02 -0400 Subject: Move some cross file parsing validition to MachineInfo This is a domain-specific validation not tied to the surface syntax, so it belongs here in the pipeline. --- mesonbuild/environment.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index e872ba792..83a2f40a6 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -1052,12 +1052,6 @@ class CrossBuildInfo: except Exception: raise EnvironmentException('Malformed value in cross file variable %s.' % entry) - if entry == 'cpu_family' and res not in known_cpu_families: - mlog.warning('Unknown CPU family %s, please report this at https://github.com/mesonbuild/meson/issues/new' % value) - - if entry == 'endian' and res not in ('little', 'big'): - mlog.warning('Unknown endian %s in cross file' % res) - if self.ok_type(res): self.config[s][entry] = res elif isinstance(res, list): @@ -1143,11 +1137,20 @@ class MachineInfo: raise EnvironmentException( 'Machine info is currently {}\n'.format(literal) + 'but is missing {}.'.format(minimum_literal - set(literal))) + + cpu_family = literal['cpu_family'] + if cpu_family not in known_cpu_families: + mlog.warning('Unknown CPU family %s, please report this at https://github.com/mesonbuild/meson/issues/new' % cpu_family) + + endian = literal['endian'] + if endian not in ('little', 'big'): + mlog.warning('Unknown endian %s' % endian) + return MachineInfo( literal['system'], - literal['cpu_family'], + cpu_family, literal['cpu'], - literal['endian']) + endian) class MachineInfos: def __init__(self): -- cgit v1.2.3