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.
This commit is contained in:
Zachary Ware 2016-10-01 00:47:27 -05:00
parent efd1bf4434
commit 6a6967e827
6 changed files with 25 additions and 0 deletions

View File

@ -1671,6 +1671,7 @@ Florent Xicluna
Arnon Yaari Arnon Yaari
Alakshendra Yadav Alakshendra Yadav
Hirokazu Yamamoto Hirokazu Yamamoto
Masayuki Yamamoto
Ka-Ping Yee Ka-Ping Yee
Chi Hsuan Yen Chi Hsuan Yen
Jason Yeo Jason Yeo

View File

@ -173,6 +173,9 @@ Windows
Build 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 - Issue #28258: Fixed build with Estonian locale (python-config and distclean
targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.

View File

@ -957,7 +957,11 @@ fill_siginfo(siginfo_t *si)
PyStructSequence_SET_ITEM(result, 4, _PyLong_FromUid(si->si_uid)); PyStructSequence_SET_ITEM(result, 4, _PyLong_FromUid(si->si_uid));
PyStructSequence_SET_ITEM(result, 5, PyStructSequence_SET_ITEM(result, 5,
PyLong_FromLong((long)(si->si_status))); PyLong_FromLong((long)(si->si_status)));
#ifdef HAVE_SIGINFO_T_SI_BAND
PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(si->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()) { if (PyErr_Occurred()) {
Py_DECREF(result); Py_DECREF(result);
return NULL; return NULL;

12
configure vendored
View File

@ -13087,6 +13087,18 @@ cat >>confdefs.h <<_ACEOF
_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 <signal.h>
"
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 fi

View File

@ -3907,6 +3907,8 @@ AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[
#include <sys/types.h> #include <sys/types.h>
#include <pwd.h> #include <pwd.h>
]]) ]])
+# Issue #21085: In Cygwin, siginfo_t does not have si_band field.
+AC_CHECK_MEMBERS([siginfo_t.si_band], [], [], [[#include <signal.h>]])
AC_MSG_CHECKING(for time.h that defines altzone) AC_MSG_CHECKING(for time.h that defines altzone)
AC_CACHE_VAL(ac_cv_header_time_altzone,[ AC_CACHE_VAL(ac_cv_header_time_altzone,[

View File

@ -856,6 +856,9 @@
/* Define to 1 if you have the `sigaltstack' function. */ /* Define to 1 if you have the `sigaltstack' function. */
#undef HAVE_SIGALTSTACK #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. */ /* Define to 1 if you have the `siginterrupt' function. */
#undef HAVE_SIGINTERRUPT #undef HAVE_SIGINTERRUPT