mirror of
https://github.com/PartialVolume/shredos.x86_64.git
synced 2026-02-20 17:42:10 +00:00
100 lines
2.8 KiB
Diff
100 lines
2.8 KiB
Diff
From 2d336d1fedb692350a1e4f131246f60a1195cd93 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|
Date: Sun, 7 Dec 2025 13:57:06 +0100
|
|
Subject: [PATCH] configure.ac: detect unusable termio operations
|
|
|
|
Some termio operations are not actually usable on some
|
|
architectures. For example, the TCGETA, TCSETA, TCSETAF and TCSETAW
|
|
are defined with a reference to "struct termio" on alpha, hppa and
|
|
sparc64, but "struct termio" is no longer defined since glibc 2.42,
|
|
causing a build failure.
|
|
|
|
Instead of using those operations as soon as they are defined, this
|
|
commit checks more carefully that they are actually usable. This is
|
|
done using a new m4 macro PY_CHECK_IOCTL.
|
|
|
|
Upstream: https://github.com/python/cpython/pull/142380
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|
---
|
|
Modules/termios.c | 8 ++++----
|
|
configure.ac | 26 ++++++++++++++++++++++++++
|
|
2 files changed, 30 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/Modules/termios.c b/Modules/termios.c
|
|
index f2c5a4bafa7..dbfe922d1e8 100644
|
|
--- a/Modules/termios.c
|
|
+++ b/Modules/termios.c
|
|
@@ -1115,7 +1115,7 @@ static struct constant {
|
|
#ifdef TCFLSH
|
|
{"TCFLSH", TCFLSH},
|
|
#endif
|
|
-#ifdef TCGETA
|
|
+#if defined(HAVE_TCGETA)
|
|
{"TCGETA", TCGETA},
|
|
#endif
|
|
#ifdef TCGETS
|
|
@@ -1127,13 +1127,13 @@ static struct constant {
|
|
#ifdef TCSBRKP
|
|
{"TCSBRKP", TCSBRKP},
|
|
#endif
|
|
-#ifdef TCSETA
|
|
+#if defined(HAVE_TCSETA)
|
|
{"TCSETA", TCSETA},
|
|
#endif
|
|
-#ifdef TCSETAF
|
|
+#if defined(HAVE_TCSETAF)
|
|
{"TCSETAF", TCSETAF},
|
|
#endif
|
|
-#ifdef TCSETAW
|
|
+#if defined(HAVE_TCSETAW)
|
|
{"TCSETAW", TCSETAW},
|
|
#endif
|
|
#ifdef TCSETS
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 34e4d5dd244..646aa24ecf3 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -101,6 +101,26 @@ AC_DEFUN([PY_STDLIB_MOD_SET_NA], [
|
|
AS_VAR_SET([py_cv_module_]mod, [n/a])])
|
|
])
|
|
|
|
+dnl PY_CHECK_IOCTL(IOCTL_SYMBOL)
|
|
+AC_DEFUN([PY_CHECK_IOCTL],
|
|
+[
|
|
+ AC_MSG_CHECKING([for $1])
|
|
+ AC_COMPILE_IFELSE(
|
|
+ [AC_LANG_PROGRAM(
|
|
+ [[#include <sys/ioctl.h>]],
|
|
+ [[
|
|
+ /* Test whether $1 is declared */
|
|
+ long val = $1;
|
|
+ return 0;
|
|
+ ]]
|
|
+ )],
|
|
+ [AC_MSG_RESULT([yes])
|
|
+ AC_DEFINE([HAVE_$1], [1],
|
|
+ [Define this if $1 termio operation is usable])],
|
|
+ [AC_MSG_RESULT([no])]
|
|
+ )
|
|
+])
|
|
+
|
|
AC_SUBST([BASECPPFLAGS])
|
|
if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then
|
|
# If we're building out-of-tree, we need to make sure the following
|
|
@@ -7955,6 +7975,12 @@ AC_ARG_ENABLE(idle3,
|
|
AS_HELP_STRING([--disable-idle3], [disable idle3 IDE]),
|
|
[ IDLE="${enableval}" ], [ IDLE=yes ])
|
|
|
|
+# ioctls used by Modules/termios.c but not usable on all platforms
|
|
+PY_CHECK_IOCTL([TCGETA])
|
|
+PY_CHECK_IOCTL([TCSETA])
|
|
+PY_CHECK_IOCTL([TCSETAF])
|
|
+PY_CHECK_IOCTL([TCSETAW])
|
|
+
|
|
# generate output files
|
|
AC_CONFIG_FILES(m4_normalize([
|
|
Makefile.pre
|
|
--
|
|
2.51.1
|
|
|