From 7ada5552cfe2d6cf4a3b62ec0b5812681cc1f40e Mon Sep 17 00:00:00 2001 From: Richard Belleville Date: Fri, 18 Jun 2021 16:43:42 -0700 Subject: [PATCH] Fix Python xDS User Agent (#26507) * Use Extension define_macros * Attempt fix to Windows quoting --- setup.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index bcd7ed35a38..4aad42e1ea0 100644 --- a/setup.py +++ b/setup.py @@ -230,9 +230,6 @@ EXTRA_ENV_COMPILE_ARGS = os.environ.get('GRPC_PYTHON_CFLAGS', None) EXTRA_ENV_LINK_ARGS = os.environ.get('GRPC_PYTHON_LDFLAGS', None) if EXTRA_ENV_COMPILE_ARGS is None: EXTRA_ENV_COMPILE_ARGS = ' -std=c++11' - EXTRA_ENV_COMPILE_ARGS += ' \'-DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\"\\\"Python\\\"\"\'' - EXTRA_ENV_COMPILE_ARGS += ' \'-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\"\\\"{}\\\"\"\''.format( - _metadata.__version__) if 'win32' in sys.platform: if sys.version_info < (3, 5): EXTRA_ENV_COMPILE_ARGS += ' -D_hypot=hypot' @@ -334,6 +331,22 @@ if BUILD_WITH_SYSTEM_RE2: DEFINE_MACROS = (('_WIN32_WINNT', 0x600),) asm_files = [] + +# Quotes on Windows build macros are evaluated differently from other platforms, +# so we must apply quotes asymmetrically in order to yield the proper result in +# the binary. +def _quote_build_define(argument): + if "win32" in sys.platform: + return '"\\\"{}\\\""'.format(argument) + return '"{}"'.format(argument) + + +DEFINE_MACROS += ( + ("GRPC_XDS_USER_AGENT_NAME_SUFFIX", _quote_build_define("Python")), + ("GRPC_XDS_USER_AGENT_VERSION_SUFFIX", + _quote_build_define(_metadata.__version__)), +) + asm_key = '' if BUILD_WITH_BORING_SSL_ASM and not BUILD_WITH_SYSTEM_OPENSSL: boringssl_asm_platform = BUILD_OVERRIDE_BORING_SSL_ASM_PLATFORM if BUILD_OVERRIDE_BORING_SSL_ASM_PLATFORM else util.get_platform(