devenv: Always include env for HOST machine

Cross compiled executables could still be run with an exe wrapper, or
with proper binfmt installed.

Fixes: #10999
pull/10990/head
Xavier Claessens 2 years ago
parent f73970cc8f
commit 302a29593a
  1. 4
      mesonbuild/backend/backends.py
  2. 8
      mesonbuild/mdevenv.py

@ -1854,10 +1854,8 @@ class Backend:
host_machine = self.environment.machines[MachineChoice.HOST] host_machine = self.environment.machines[MachineChoice.HOST]
need_wine = not build_machine.is_windows() and host_machine.is_windows() need_wine = not build_machine.is_windows() and host_machine.is_windows()
for t in self.build.get_targets().values(): for t in self.build.get_targets().values():
cross_built = not self.environment.machines.matches_build_machine(t.for_machine)
can_run = not cross_built or not need_exe_wrapper or need_wine
in_default_dir = t.should_install() and not t.get_install_dir()[2] in_default_dir = t.should_install() and not t.get_install_dir()[2]
if not can_run or not in_default_dir: if t.for_machine != MachineChoice.HOST or not in_default_dir:
continue continue
tdir = os.path.join(self.environment.get_build_dir(), self.get_target_dir(t)) tdir = os.path.join(self.environment.get_build_dir(), self.get_target_dir(t))
if isinstance(t, build.Executable): if isinstance(t, build.Executable):

@ -150,6 +150,14 @@ def run(options: argparse.Namespace) -> int:
print(f'export {name}') print(f'export {name}')
return 0 return 0
if b.environment.need_exe_wrapper():
m = 'An executable wrapper could be required'
exe_wrapper = b.environment.get_exe_wrapper()
if exe_wrapper:
cmd = ' '.join(exe_wrapper.get_command())
m += f': {cmd}'
mlog.log(m)
install_data = minstall.load_install_data(str(privatedir / 'install.dat')) install_data = minstall.load_install_data(str(privatedir / 'install.dat'))
write_gdb_script(privatedir, install_data, workdir) write_gdb_script(privatedir, install_data, workdir)

Loading…
Cancel
Save