ninja: response file threshold now more accurate, overridable, portable.

pull/7245/head
Dan Kegel 5 years ago
parent 877dcdbcca
commit 10e6a989ba
  1. 22
      mesonbuild/backend/ninjabackend.py

@ -86,8 +86,26 @@ else:
execute_wrapper = []
rmfile_prefix = ['rm', '-f', '{}', '&&']
# a conservative estimate of the command-line length limit on windows
rsp_threshold = 4096
def get_rsp_threshold():
'''Return a conservative estimate of the commandline size in bytes
above which a response file should be used. May be overridden for
debugging by setting environment variable MESON_RSP_THRESHOLD.'''
if mesonlib.is_windows():
# Usually 32k, but some projects might use cmd.exe,
# and that has a limit of 8k.
limit = 8192
else:
# On Linux, ninja always passes the commandline as a single
# big string to /bin/sh, and the kernel limits the size of a
# single argument; see MAX_ARG_STRLEN
limit = 131072
# Be conservative
limit = limit / 2
return int(os.environ.get('MESON_RSP_THRESHOLD', limit))
# a conservative estimate of the command-line length limit
rsp_threshold = get_rsp_threshold()
# ninja variables whose value should remain unquoted. The value of these ninja
# variables (or variables we use them in) is interpreted directly by ninja

Loading…
Cancel
Save