From 89002b45626c251bc2b8d8bad5b2e37016991868 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Thu, 8 Jun 2023 17:33:47 +0530 Subject: [PATCH] meson: Don't override RUSTFLAGS in the env Meson does not add RUSTFLAGS to rustc.cmd_array(), so the effect of this code is to override that value in the env. This is hacky, since the env has to match during setup and compile now, and rust_args added in the cross / native file will be ignored. But at least it fixes this regression: Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/372 Part-of: --- cargo_wrapper.py | 9 ++++++--- meson.build | 13 ++----------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/cargo_wrapper.py b/cargo_wrapper.py index c13a7b05..dadd0984 100644 --- a/cargo_wrapper.py +++ b/cargo_wrapper.py @@ -7,6 +7,7 @@ import os import shutil import subprocess import sys +import shlex from argparse import ArgumentParser from pathlib import Path as P @@ -83,14 +84,16 @@ if __name__ == "__main__": env['PKG_CONFIG_PATH'] = os.pathsep.join(pkg_config_path) rustc_target = None - if 'RUSTFLAGS' in env: + if 'RUSTC' in env: + rustc_cmdline = shlex.split(env['RUSTC']) # grab target from RUSTFLAGS - rust_flags = env['RUSTFLAGS'].split() + rust_flags = rustc_cmdline[1:] + shlex.split(env.get('RUSTFLAGS', '')) if '--target' in rust_flags: rustc_target_idx = rust_flags.index('--target') _ = rust_flags.pop(rustc_target_idx) # drop '--target' rustc_target = rust_flags.pop(rustc_target_idx) - env['RUSTFLAGS'] = ' '.join(rust_flags) + env['RUSTFLAGS'] = shlex.join(rust_flags) + env['RUSTC'] = rustc_cmdline[0] features = opts.features if opts.command == 'build': diff --git a/meson.build b/meson.build index 3d5a7209..05b9a3d8 100644 --- a/meson.build +++ b/meson.build @@ -386,17 +386,8 @@ if pkg_config_path.length() > 0 extra_env += {'PKG_CONFIG_PATH': pathsep.join(pkg_config_path)} endif -# get compiler and flags for rust (if any) -rustc_cmd = '' -rust_flags = [] -foreach rustc_arg : rustc.cmd_array() - if rustc_cmd == '' - rustc_cmd = rustc_arg - else - rust_flags += [rustc_arg] - endif -endforeach -extra_env += {'RUSTC': rustc_cmd, 'RUSTFLAGS': ' '.join(rust_flags)} +# get cmdline for rust +extra_env += {'RUSTC': ' '.join(rustc.cmd_array())} rs_plugins = custom_target('gst-plugins-rs', build_by_default: true,