Skip to content

Commit

Permalink
env2mfile: Don't hard-code Debian as always being Linux
Browse files Browse the repository at this point in the history
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.

Signed-off-by: Simon McVittie <[email protected]>
  • Loading branch information
smcv committed Oct 2, 2024
1 parent 3ccce9e commit 92ef134
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
8 changes: 7 additions & 1 deletion mesonbuild/scripts/env2mfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,11 @@ def get_args_from_envvars(infos: MachineInfo) -> None:
'hurd': 'gnu',
}

# map from DEB_HOST_ARCH_OS to Meson machine.kernel()
deb_kernel_map = {
'kfreebsd': 'freebsd',
}

def deb_detect_cmake(infos: MachineInfo, data: T.Dict[str, str]) -> None:
system_name_map = {'linux': 'Linux', 'kfreebsd': 'kFreeBSD', 'hurd': 'GNU'}
system_processor_map = {'arm': 'armv7l', 'mips64el': 'mips64', 'powerpc64le': 'ppc64le'}
Expand Down Expand Up @@ -203,7 +208,8 @@ def dpkg_architecture_to_machine_info(output: str, options: T.Any) -> MachineInf
host_os = deb_os_map.get(data['DEB_HOST_ARCH_OS'],
data['DEB_HOST_ARCH_OS'])
host_subsystem = host_os
host_kernel = 'linux'
host_kernel = deb_kernel_map.get(data['DEB_HOST_ARCH_OS'],
data['DEB_HOST_ARCH_OS'])
host_cpu_family = deb_cpu_family_map.get(data['DEB_HOST_GNU_CPU'],
data['DEB_HOST_GNU_CPU'])
host_cpu = deb_cpu_map.get(data['DEB_HOST_ARCH'],
Expand Down
7 changes: 4 additions & 3 deletions unittests/internaltests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1978,7 +1978,9 @@ def locate_path(program: str) -> T.List[str]:
},
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:/mesonbuild/meson/issues/13740
kernel='TODO',
# TODO: Currently hurd-i386, but should be i686
Expand Down Expand Up @@ -2036,8 +2038,7 @@ def locate_path(program: str) -> T.List[str]:
},
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',
Expand Down

0 comments on commit 92ef134

Please sign in to comment.