summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBo Anderson <mail@boanderson.me>2023-10-09 13:21:20 (GMT)
committerGitHub <noreply@github.com>2023-10-09 13:21:20 (GMT)
commitf4cb0d27cc08f490c42a22e646eb73cc7072d54a (patch)
tree0649c25cdf9621fcabe5740e85684a29e4ae85e5
parent12cc6792d0ca1d0b72712d77c6efcb0aa0c7e7ba (diff)
downloadcpython-f4cb0d27cc08f490c42a22e646eb73cc7072d54a.zip
cpython-f4cb0d27cc08f490c42a22e646eb73cc7072d54a.tar.gz
cpython-f4cb0d27cc08f490c42a22e646eb73cc7072d54a.tar.bz2
gh-109191: Fix build with newer editline (gh-110239)
-rw-r--r--Misc/NEWS.d/next/Build/2023-10-05-11-46-20.gh-issue-109191.imUkVN.rst1
-rw-r--r--Modules/readline.c2
-rwxr-xr-xconfigure19
-rw-r--r--configure.ac7
-rw-r--r--pyconfig.h.in3
5 files changed, 31 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Build/2023-10-05-11-46-20.gh-issue-109191.imUkVN.rst b/Misc/NEWS.d/next/Build/2023-10-05-11-46-20.gh-issue-109191.imUkVN.rst
new file mode 100644
index 0000000..27e5df7
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2023-10-05-11-46-20.gh-issue-109191.imUkVN.rst
@@ -0,0 +1 @@
+Fix compile error when building with recent versions of libedit.
diff --git a/Modules/readline.c b/Modules/readline.c
index 4b47302..fde552d 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -446,7 +446,7 @@ readline_set_completion_display_matches_hook_impl(PyObject *module,
default completion display. */
rl_completion_display_matches_hook =
readlinestate_global->completion_display_matches_hook ?
-#if defined(_RL_FUNCTION_TYPEDEF)
+#if defined(HAVE_RL_COMPDISP_FUNC_T)
(rl_compdisp_func_t *)on_completion_display_matches_hook : 0;
#else
(VFunction *)on_completion_display_matches_hook : 0;
diff --git a/configure b/configure
index 7c5fdec..1799323 100755
--- a/configure
+++ b/configure
@@ -24668,6 +24668,25 @@ printf "%s\n" "#define HAVE_RL_APPEND_HISTORY 1" >>confdefs.h
fi
+ # in readline as well as newer editline (April 2023)
+ ac_fn_c_check_type "$LINENO" "rl_compdisp_func_t" "ac_cv_type_rl_compdisp_func_t" "
+ #include <stdio.h> /* Must be first for Gnu Readline */
+ #ifdef WITH_EDITLINE
+ # include <editline/readline.h>
+ #else
+ # include <readline/readline.h>
+ # include <readline/history.h>
+ #endif
+
+"
+if test "x$ac_cv_type_rl_compdisp_func_t" = xyes
+then :
+
+printf "%s\n" "#define HAVE_RL_COMPDISP_FUNC_T 1" >>confdefs.h
+
+fi
+
+
CFLAGS=$save_CFLAGS
diff --git a/configure.ac b/configure.ac
index 6093afa..cafc6df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5999,6 +5999,13 @@ AS_VAR_IF([with_readline], [no], [
AC_DEFINE([HAVE_RL_APPEND_HISTORY], [1], [Define if readline supports append_history])
])
+ # in readline as well as newer editline (April 2023)
+ AC_CHECK_TYPE([rl_compdisp_func_t],
+ [AC_DEFINE([HAVE_RL_COMPDISP_FUNC_T], [1],
+ [Define if readline supports rl_compdisp_func_t])],
+ [],
+ [readline_includes])
+
m4_undefine([readline_includes])
])dnl WITH_SAVE_ENV()
])
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 9924a90..f07e677 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -983,6 +983,9 @@
/* Define if you can turn off readline's signal handling. */
#undef HAVE_RL_CATCH_SIGNAL
+/* Define if readline supports rl_compdisp_func_t */
+#undef HAVE_RL_COMPDISP_FUNC_T
+
/* Define if you have readline 2.2 */
#undef HAVE_RL_COMPLETION_APPEND_CHARACTER