From 612785a3d4acb599368ba9a8ac234d86fcc564e1 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Sun, 29 Dec 2019 17:27:04 -0500 Subject: [PATCH] build: try calling python-config with --embed To get the flags required to link an application with Python 3.8 (such as to embed Python in the application), it is necessary to use the "--embed" flag of python-config. These flags include "-lpython3.8". Without "--embed", the printed flags are for building a Python extension. These don't require being linked with the Python library, since they are dlopen'ed by the library itself. Our Python plugin provider requires being linked with Python, since it embeds a Python interpreter. Since we don't use "--embed" currently when getting link flags, we don't link with the Python library, and therefore the provider is not usable with Python 3.8. The solution proposed here: https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build is to try calling python-config with --embed first, and then without if that didn't work. With this patch, I am able to use the Python plugin provider with Python 3.8. Change-Id: I0c0e61dd3bded853abf124c651efe98ee7700101 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/2726 Reviewed-by: Michael Jeanson --- configure.ac | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index b1edd9ee..7cbe3ba7 100644 --- a/configure.ac +++ b/configure.ac @@ -510,7 +510,10 @@ AM_PATH_PYTHON([3.0], [ AS_IF([test -z "$PYTHON_LDFLAGS"], [ AC_MSG_CHECKING([Python library flags]) - PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` + # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag. + AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [ + PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` + ]) AC_MSG_RESULT([$PYTHON_LDFLAGS]) ]) ]) -- 2.34.1