From 6a6967e827e11d332598a9395adb9c578184f914 Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Sat, 1 Oct 2016 00:47:27 -0500 Subject: [PATCH] Issue #21085: add configure check for siginfo_t.si_band Patch by Masayuki Yamamoto, reviewed and rebased by Erik Bray. This is a first step on the long road toward resupporting Cygwin, which does not provide siginfo_t.si_band. --- Misc/ACKS | 1 + Misc/NEWS | 3 +++ Modules/signalmodule.c | 4 ++++ configure | 12 ++++++++++++ configure.ac | 2 ++ pyconfig.h.in | 3 +++ 6 files changed, 25 insertions(+) diff --git a/Misc/ACKS b/Misc/ACKS index a5465a2af99..467f3aae0e4 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1671,6 +1671,7 @@ Florent Xicluna Arnon Yaari Alakshendra Yadav Hirokazu Yamamoto +Masayuki Yamamoto Ka-Ping Yee Chi Hsuan Yen Jason Yeo diff --git a/Misc/NEWS b/Misc/NEWS index 8a0dac9fb5d..9d48ff8a0d6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -173,6 +173,9 @@ Windows Build ----- +- Issue #21085: Add configure check for siginfo_t.si_band, which Cygwin does + not provide. Patch by Masayuki Yamamoto with review and rebase by Erik Bray. + - Issue #28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index e27075b2001..bc36d41648e 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -957,7 +957,11 @@ fill_siginfo(siginfo_t *si) PyStructSequence_SET_ITEM(result, 4, _PyLong_FromUid(si->si_uid)); PyStructSequence_SET_ITEM(result, 5, PyLong_FromLong((long)(si->si_status))); +#ifdef HAVE_SIGINFO_T_SI_BAND PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(si->si_band)); +#else + PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(0L)); +#endif if (PyErr_Occurred()) { Py_DECREF(result); return NULL; diff --git a/configure b/configure index 860135b2987..cff86835419 100755 --- a/configure +++ b/configure @@ -13087,6 +13087,18 @@ cat >>confdefs.h <<_ACEOF _ACEOF +fi + +# Issue #21085: In Cygwin, siginfo_t does not have si_band field. +ac_fn_c_check_member "$LINENO" "siginfo_t" "si_band" "ac_cv_member_siginfo_t_si_band" "#include +" +if test "x$ac_cv_member_siginfo_t_si_band" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_SIGINFO_T_SI_BAND 1 +_ACEOF + + fi diff --git a/configure.ac b/configure.ac index d3956325b8b..8465afc963a 100644 --- a/configure.ac +++ b/configure.ac @@ -3907,6 +3907,8 @@ AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[ #include #include ]]) ++# Issue #21085: In Cygwin, siginfo_t does not have si_band field. ++AC_CHECK_MEMBERS([siginfo_t.si_band], [], [], [[#include ]]) AC_MSG_CHECKING(for time.h that defines altzone) AC_CACHE_VAL(ac_cv_header_time_altzone,[ diff --git a/pyconfig.h.in b/pyconfig.h.in index e7a836c5d42..bfccabe2f7a 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -856,6 +856,9 @@ /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK +/* Define to 1 if `si_band' is a member of `siginfo_t'. */ +#undef HAVE_SIGINFO_T_SI_BAND + /* Define to 1 if you have the `siginterrupt' function. */ #undef HAVE_SIGINTERRUPT