From ce2db13e94fdeaff72d9e1f23b40072f9fb8818b Mon Sep 17 00:00:00 2001 From: byteblob Date: Mon, 8 Jan 2024 10:17:10 +0100 Subject: [PATCH] ninja: Use platform dependent quote instead of shlex.quote() in gcc_rsp_quote() --- mesonbuild/backend/ninjabackend.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 9acc39c2a82e..0e1413f850d7 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -14,7 +14,6 @@ import os import pickle import re -import shlex import subprocess import typing as T @@ -67,16 +66,6 @@ def cmd_quote(arg: str) -> str: return arg -def gcc_rsp_quote(s: str) -> str: - # see: the function buildargv() in libiberty - # - # this differs from sh-quoting in that a backslash *always* escapes the - # following character, even inside single quotes. - - s = s.replace('\\', '\\\\') - - return shlex.quote(s) - # How ninja executes command lines differs between Unix and Windows # (see https://ninja-build.org/manual.html#ref_rule_command) if mesonlib.is_windows(): @@ -88,6 +77,15 @@ def gcc_rsp_quote(s: str) -> str: execute_wrapper = [] rmfile_prefix = ['rm', '-f', '{}', '&&'] +def gcc_rsp_quote(s: str) -> str: + # see: the function buildargv() in libiberty + # + # this differs from sh-quoting in that a backslash *always* escapes the + # following character, even inside single quotes. + + s = s.replace('\\', '\\\\') + + return quote_func(s) def get_rsp_threshold() -> int: '''Return a conservative estimate of the commandline size in bytes