env2mfile: Don't hard-code Debian as always being Linux

All official Debian release architectures use the Linux kernel, but
unofficial ports like hurd-i386 and kfreebsd-amd64 use the Hurd and
FreeBSD kernel, respectively.

Map Linux to 'linux' and kFreeBSD ports to 'freebsd' as per the
reference tables in Meson's documentation. For now, use the Debian
system name such as 'hurd' for anything else (see #13740 for the
question of whether Hurd should identify its kernel differently).

Signed-off-by: Simon McVittie <smcv@debian.org>
pull/13866/head
Simon McVittie 2 months ago committed by Jussi Pakkanen
parent 1909a8180b
commit 114a3e2914
  1. 7
      mesonbuild/scripts/env2mfile.py
  2. 7
      unittests/internaltests.py

@ -147,6 +147,11 @@ deb_os_map = {
'hurd': 'gnu',
}
# map from DEB_HOST_ARCH_OS to Meson machine.kernel()
deb_kernel_map = {
'kfreebsd': 'freebsd',
}
def replace_special_cases(special_cases: T.Mapping[str, str], name: str) -> str:
'''
If name is a key in special_cases, replace it with the value, or otherwise
@ -195,7 +200,7 @@ def dpkg_architecture_to_machine_info(output: str, options: T.Any) -> MachineInf
host_arch = data['DEB_HOST_GNU_TYPE']
host_os = replace_special_cases(deb_os_map, data['DEB_HOST_ARCH_OS'])
host_subsystem = host_os
host_kernel = 'linux'
host_kernel = replace_special_cases(deb_kernel_map, data['DEB_HOST_ARCH_OS'])
host_cpu_family = replace_special_cases(deb_cpu_family_map, data['DEB_HOST_GNU_CPU'])
host_cpu = replace_special_cases(deb_cpu_map, data['DEB_HOST_ARCH'])
host_endian = data['DEB_HOST_ARCH_ENDIAN']

@ -1935,7 +1935,9 @@ class InternalTests(unittest.TestCase):
},
system='gnu',
subsystem='gnu',
# TODO: Currently linux, but should be gnu/hurd/mach?
# TODO: Currently hurd; should match whatever happens
# during native builds, but at the moment native builds
# fail when kernel() is called.
# https://github.com/mesonbuild/meson/issues/13740
kernel='TODO',
# TODO: Currently hurd-i386, but should be i686
@ -1977,8 +1979,7 @@ class InternalTests(unittest.TestCase):
},
system='kfreebsd',
subsystem='kfreebsd',
# TODO: Currently linux but should be freebsd
kernel='TODO',
kernel='freebsd',
# TODO: Currently kfreebsd-amd64 but should be x86_64
cpu='TODO',
cpu_family='x86_64',

Loading…
Cancel
Save