Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
9d3627e3
Commit
9d3627e3
authored
May 04, 2018
by
Antoine Pitrou
Committed by
GitHub
May 04, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpo-33332: Add signal.valid_signals() (GH-6581)
parent
491bbedc
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
171 additions
and
26 deletions
+171
-26
Doc/library/signal.rst
Doc/library/signal.rst
+11
-2
Lib/asyncio/unix_events.py
Lib/asyncio/unix_events.py
+2
-2
Lib/multiprocessing/resource_sharer.py
Lib/multiprocessing/resource_sharer.py
+1
-1
Lib/signal.py
Lib/signal.py
+8
-2
Lib/test/support/__init__.py
Lib/test/support/__init__.py
+1
-1
Lib/test/test_asyncio/test_unix_events.py
Lib/test/test_asyncio/test_unix_events.py
+12
-0
Lib/test/test_signal.py
Lib/test/test_signal.py
+30
-0
Misc/NEWS.d/next/Library/2018-04-23-21-41-30.bpo-33332.Y6OZ8Z.rst
...S.d/next/Library/2018-04-23-21-41-30.bpo-33332.Y6OZ8Z.rst
+2
-0
Modules/clinic/signalmodule.c.h
Modules/clinic/signalmodule.c.h
+30
-1
Modules/signalmodule.c
Modules/signalmodule.c
+59
-5
aclocal.m4
aclocal.m4
+10
-10
configure
configure
+1
-1
configure.ac
configure.ac
+1
-1
pyconfig.h.in
pyconfig.h.in
+3
-0
No files found.
Doc/library/signal.rst
View file @
9d3627e3
...
...
@@ -216,6 +216,15 @@ The :mod:`signal` module defines the following functions:
.. versionadded:: 3.8
.. function:: valid_signals()
Return the set of valid signal numbers on this platform. This can be
less than ``range(1, NSIG)`` if some signals are reserved by the system
for internal use.
.. versionadded:: 3.8
.. function:: pause()
Cause the process to sleep until a signal is received; the appropriate handler
...
...
@@ -268,8 +277,8 @@ The :mod:`signal` module defines the following functions:
argument.
*mask* is a set of signal numbers (e.g. {:const:`signal.SIGINT`,
:const:`signal.SIGTERM`}). Use
``range(1, signal.NSIG)`` for a full mask
including all signals.
:const:`signal.SIGTERM`}). Use
:func:`~signal.valid_signals` for a full
mask
including all signals.
For example, ``signal.pthread_sigmask(signal.SIG_BLOCK, [])`` reads the
signal mask of the calling thread.
...
...
Lib/asyncio/unix_events.py
View file @
9d3627e3
...
...
@@ -167,8 +167,8 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
if
not
isinstance
(
sig
,
int
):
raise
TypeError
(
f'sig must be an int, not
{
sig
!
r
}
'
)
if
not
(
1
<=
sig
<
signal
.
NSIG
):
raise
ValueError
(
f'
sig
{
sig
}
out of range(1,
{
signal
.
NSIG
}
)
'
)
if
sig
not
in
signal
.
valid_signals
(
):
raise
ValueError
(
f'
invalid signal number
{
sig
}
'
)
def
_make_read_pipe_transport
(
self
,
pipe
,
protocol
,
waiter
=
None
,
extra
=
None
):
...
...
Lib/multiprocessing/resource_sharer.py
View file @
9d3627e3
...
...
@@ -136,7 +136,7 @@ class _ResourceSharer(object):
def
_serve
(
self
):
if
hasattr
(
signal
,
'pthread_sigmask'
):
signal
.
pthread_sigmask
(
signal
.
SIG_BLOCK
,
range
(
1
,
signal
.
NSIG
))
signal
.
pthread_sigmask
(
signal
.
SIG_BLOCK
,
signal
.
valid_signals
(
))
while
1
:
try
:
with
self
.
_listener
.
accept
()
as
conn
:
...
...
Lib/signal.py
View file @
9d3627e3
...
...
@@ -65,8 +65,7 @@ if 'pthread_sigmask' in _globals:
if
'sigpending'
in
_globals
:
@
_wraps
(
_signal
.
sigpending
)
def
sigpending
():
sigs
=
_signal
.
sigpending
()
return
set
(
_int_to_enum
(
x
,
Signals
)
for
x
in
sigs
)
return
{
_int_to_enum
(
x
,
Signals
)
for
x
in
_signal
.
sigpending
()}
if
'sigwait'
in
_globals
:
...
...
@@ -76,4 +75,11 @@ if 'sigwait' in _globals:
return
_int_to_enum
(
retsig
,
Signals
)
sigwait
.
__doc__
=
_signal
.
sigwait
if
'valid_signals'
in
_globals
:
@
_wraps
(
_signal
.
valid_signals
)
def
valid_signals
():
return
{
_int_to_enum
(
x
,
Signals
)
for
x
in
_signal
.
valid_signals
()}
del
_globals
,
_wraps
Lib/test/support/__init__.py
View file @
9d3627e3
...
...
@@ -2810,7 +2810,7 @@ class SaveSignals:
def
__init__
(
self
):
import
signal
self
.
signal
=
signal
self
.
signals
=
list
(
range
(
1
,
signal
.
NSIG
)
)
self
.
signals
=
signal
.
valid_signals
(
)
# SIGKILL and SIGSTOP signals cannot be ignored nor caught
for
signame
in
(
'SIGKILL'
,
'SIGSTOP'
):
try
:
...
...
Lib/test/test_asyncio/test_unix_events.py
View file @
9d3627e3
...
...
@@ -69,6 +69,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_add_signal_handler_setup_error
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
m_signal
.
set_wakeup_fd
.
side_effect
=
ValueError
self
.
assertRaises
(
...
...
@@ -96,6 +97,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_add_signal_handler
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
cb
=
lambda
:
True
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
cb
)
...
...
@@ -106,6 +108,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_add_signal_handler_install_error
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
def
set_wakeup_fd
(
fd
):
if
fd
==
-
1
:
...
...
@@ -125,6 +128,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.base_events.logger'
)
def
test_add_signal_handler_install_error2
(
self
,
m_logging
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
class
Err
(
OSError
):
errno
=
errno
.
EINVAL
...
...
@@ -145,6 +149,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
errno
=
errno
.
EINVAL
m_signal
.
signal
.
side_effect
=
Err
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
assertRaises
(
RuntimeError
,
...
...
@@ -156,6 +161,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_remove_signal_handler
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
lambda
:
True
)
...
...
@@ -170,6 +176,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
def
test_remove_signal_handler_2
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
SIGINT
=
signal
.
SIGINT
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGINT
,
lambda
:
True
)
self
.
loop
.
_signal_handlers
[
signal
.
SIGHUP
]
=
object
()
...
...
@@ -187,6 +194,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.base_events.logger'
)
def
test_remove_signal_handler_cleanup_error
(
self
,
m_logging
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
lambda
:
True
)
m_signal
.
set_wakeup_fd
.
side_effect
=
ValueError
...
...
@@ -197,6 +205,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_remove_signal_handler_error
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
lambda
:
True
)
m_signal
.
signal
.
side_effect
=
OSError
...
...
@@ -207,6 +216,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_remove_signal_handler_error2
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
lambda
:
True
)
class
Err
(
OSError
):
...
...
@@ -219,6 +229,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_close
(
self
,
m_signal
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
lambda
:
True
)
self
.
loop
.
add_signal_handler
(
signal
.
SIGCHLD
,
lambda
:
True
)
...
...
@@ -236,6 +247,7 @@ class SelectorEventLoopSignalTests(test_utils.TestCase):
@
mock
.
patch
(
'asyncio.unix_events.signal'
)
def
test_close_on_finalizing
(
self
,
m_signal
,
m_sys
):
m_signal
.
NSIG
=
signal
.
NSIG
m_signal
.
valid_signals
=
signal
.
valid_signals
self
.
loop
.
add_signal_handler
(
signal
.
SIGHUP
,
lambda
:
True
)
self
.
assertEqual
(
len
(
self
.
loop
.
_signal_handlers
),
1
)
...
...
Lib/test/test_signal.py
View file @
9d3627e3
...
...
@@ -67,9 +67,28 @@ class PosixTests(unittest.TestCase):
script
=
os
.
path
.
join
(
dirname
,
'signalinterproctester.py'
)
assert_python_ok
(
script
)
def
test_valid_signals
(
self
):
s
=
signal
.
valid_signals
()
self
.
assertIsInstance
(
s
,
set
)
self
.
assertIn
(
signal
.
Signals
.
SIGINT
,
s
)
self
.
assertIn
(
signal
.
Signals
.
SIGALRM
,
s
)
self
.
assertNotIn
(
0
,
s
)
self
.
assertNotIn
(
signal
.
NSIG
,
s
)
self
.
assertLess
(
len
(
s
),
signal
.
NSIG
)
@
unittest
.
skipUnless
(
sys
.
platform
==
"win32"
,
"Windows specific"
)
class
WindowsSignalTests
(
unittest
.
TestCase
):
def
test_valid_signals
(
self
):
s
=
signal
.
valid_signals
()
self
.
assertIsInstance
(
s
,
set
)
self
.
assertGreaterEqual
(
len
(
s
),
6
)
self
.
assertIn
(
signal
.
Signals
.
SIGINT
,
s
)
self
.
assertNotIn
(
0
,
s
)
self
.
assertNotIn
(
signal
.
NSIG
,
s
)
self
.
assertLess
(
len
(
s
),
signal
.
NSIG
)
def
test_issue9324
(
self
):
# Updated for issue #10003, adding SIGBREAK
handler
=
lambda
x
,
y
:
None
...
...
@@ -922,6 +941,17 @@ class PendingSignalsTests(unittest.TestCase):
self
.
assertRaises
(
TypeError
,
signal
.
pthread_sigmask
,
1
)
self
.
assertRaises
(
TypeError
,
signal
.
pthread_sigmask
,
1
,
2
,
3
)
self
.
assertRaises
(
OSError
,
signal
.
pthread_sigmask
,
1700
,
[])
with
self
.
assertRaises
(
ValueError
):
signal
.
pthread_sigmask
(
signal
.
SIG_BLOCK
,
[
signal
.
NSIG
])
@
unittest
.
skipUnless
(
hasattr
(
signal
,
'pthread_sigmask'
),
'need signal.pthread_sigmask()'
)
def
test_pthread_sigmask_valid_signals
(
self
):
s
=
signal
.
pthread_sigmask
(
signal
.
SIG_BLOCK
,
signal
.
valid_signals
())
self
.
addCleanup
(
signal
.
pthread_sigmask
,
signal
.
SIG_SETMASK
,
s
)
# Get current blocked set
s
=
signal
.
pthread_sigmask
(
signal
.
SIG_UNBLOCK
,
signal
.
valid_signals
())
self
.
assertLessEqual
(
s
,
signal
.
valid_signals
())
@
unittest
.
skipUnless
(
hasattr
(
signal
,
'pthread_sigmask'
),
'need signal.pthread_sigmask()'
)
...
...
Misc/NEWS.d/next/Library/2018-04-23-21-41-30.bpo-33332.Y6OZ8Z.rst
0 → 100644
View file @
9d3627e3
Add ``signal.valid_signals()`` to expose the POSIX sigfillset()
functionality.
Modules/clinic/signalmodule.c.h
View file @
9d3627e3
...
...
@@ -341,6 +341,31 @@ PyDoc_STRVAR(signal_sigwait__doc__,
#endif
/* defined(HAVE_SIGWAIT) */
#if (defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS))
PyDoc_STRVAR
(
signal_valid_signals__doc__
,
"valid_signals($module, /)
\n
"
"--
\n
"
"
\n
"
"Return a set of valid signal numbers on this platform.
\n
"
"
\n
"
"The signal numbers returned by this function can be safely passed to
\n
"
"functions like `pthread_sigmask`."
);
#define SIGNAL_VALID_SIGNALS_METHODDEF \
{"valid_signals", (PyCFunction)signal_valid_signals, METH_NOARGS, signal_valid_signals__doc__},
static
PyObject
*
signal_valid_signals_impl
(
PyObject
*
module
);
static
PyObject
*
signal_valid_signals
(
PyObject
*
module
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
signal_valid_signals_impl
(
module
);
}
#endif
/* (defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS)) */
#if defined(HAVE_SIGWAITINFO)
PyDoc_STRVAR
(
signal_sigwaitinfo__doc__
,
...
...
@@ -459,6 +484,10 @@ exit:
#define SIGNAL_SIGWAIT_METHODDEF
#endif
/* !defined(SIGNAL_SIGWAIT_METHODDEF) */
#ifndef SIGNAL_VALID_SIGNALS_METHODDEF
#define SIGNAL_VALID_SIGNALS_METHODDEF
#endif
/* !defined(SIGNAL_VALID_SIGNALS_METHODDEF) */
#ifndef SIGNAL_SIGWAITINFO_METHODDEF
#define SIGNAL_SIGWAITINFO_METHODDEF
#endif
/* !defined(SIGNAL_SIGWAITINFO_METHODDEF) */
...
...
@@ -470,4 +499,4 @@ exit:
#ifndef SIGNAL_PTHREAD_KILL_METHODDEF
#define SIGNAL_PTHREAD_KILL_METHODDEF
#endif
/* !defined(SIGNAL_PTHREAD_KILL_METHODDEF) */
/*[clinic end generated code: output=
7b41486acf93aa8e
input=a9049054013a1b77]*/
/*[clinic end generated code: output=
f35d79e0cfee3f1b
input=a9049054013a1b77]*/
Modules/signalmodule.c
View file @
9d3627e3
...
...
@@ -841,11 +841,21 @@ iterable_to_sigset(PyObject *iterable, sigset_t *mask)
if
(
signum
==
-
1
&&
PyErr_Occurred
())
goto
error
;
if
(
0
<
signum
&&
signum
<
NSIG
)
{
/* bpo-33329: ignore sigaddset() return value as it can fail
* for some reserved signals, but we want the `range(1, NSIG)`
* idiom to allow selecting all valid signals.
*/
(
void
)
sigaddset
(
mask
,
(
int
)
signum
);
if
(
sigaddset
(
mask
,
(
int
)
signum
))
{
if
(
errno
!=
EINVAL
)
{
/* Probably impossible */
PyErr_SetFromErrno
(
PyExc_OSError
);
goto
error
;
}
/* For backwards compatibility, allow idioms such as
* `range(1, NSIG)` but warn about invalid signal numbers
*/
const
char
*
msg
=
"invalid signal number %ld, please use valid_signals()"
;
if
(
PyErr_WarnFormat
(
PyExc_RuntimeWarning
,
1
,
msg
,
signum
))
{
goto
error
;
}
}
}
else
{
PyErr_Format
(
PyExc_ValueError
,
...
...
@@ -1001,6 +1011,47 @@ signal_sigwait(PyObject *module, PyObject *sigset)
#endif
/* #ifdef HAVE_SIGWAIT */
#if defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS)
/*[clinic input]
signal.valid_signals
Return a set of valid signal numbers on this platform.
The signal numbers returned by this function can be safely passed to
functions like `pthread_sigmask`.
[clinic start generated code]*/
static
PyObject
*
signal_valid_signals_impl
(
PyObject
*
module
)
/*[clinic end generated code: output=1609cffbcfcf1314 input=86a3717ff25288f2]*/
{
#ifdef MS_WINDOWS
#ifdef SIGBREAK
PyObject
*
tup
=
Py_BuildValue
(
"(iiiiiii)"
,
SIGABRT
,
SIGBREAK
,
SIGFPE
,
SIGILL
,
SIGINT
,
SIGSEGV
,
SIGTERM
);
#else
PyObject
*
tup
=
Py_BuildValue
(
"(iiiiii)"
,
SIGABRT
,
SIGFPE
,
SIGILL
,
SIGINT
,
SIGSEGV
,
SIGTERM
);
#endif
if
(
tup
==
NULL
)
{
return
NULL
;
}
PyObject
*
set
=
PySet_New
(
tup
);
Py_DECREF
(
tup
);
return
set
;
#else
sigset_t
mask
;
if
(
sigemptyset
(
&
mask
)
||
sigfillset
(
&
mask
))
{
return
PyErr_SetFromErrno
(
PyExc_OSError
);
}
return
sigset_to_set
(
mask
);
#endif
}
#endif
/* #if defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS) */
#if defined(HAVE_SIGWAITINFO) || defined(HAVE_SIGTIMEDWAIT)
static
int
initialized
;
static
PyStructSequence_Field
struct_siginfo_fields
[]
=
{
...
...
@@ -1225,6 +1276,9 @@ static PyMethodDef signal_methods[] = {
SIGNAL_SIGWAIT_METHODDEF
SIGNAL_SIGWAITINFO_METHODDEF
SIGNAL_SIGTIMEDWAIT_METHODDEF
#if defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS)
SIGNAL_VALID_SIGNALS_METHODDEF
#endif
{
NULL
,
NULL
}
/* sentinel */
};
...
...
aclocal.m4
View file @
9d3627e3
# generated automatically by aclocal 1.15
.1
-*- Autoconf -*-
# generated automatically by aclocal 1.15 -*- Autoconf -*-
# Copyright (C) 1996-201
7
Free Software Foundation, Inc.
# Copyright (C) 1996-201
4
Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
...
...
@@ -12,9 +12,9 @@
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
#
pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
# serial 12 (pkg-config-0.29.2
)
dnl
pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
dnl serial 11 (pkg-config-0.29.1
)
dnl
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
dnl
...
...
@@ -55,7 +55,7 @@ dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
[m4_define([PKG_MACROS_VERSION], [0.29.
2
])
[m4_define([PKG_MACROS_VERSION], [0.29.
1
])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
...
...
@@ -156,7 +156,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
AC_MSG_CHECKING([for $
2
])
AC_MSG_CHECKING([for $
1
])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
...
...
@@ -166,11 +166,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
AC_MSG_RESULT([no])
AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
else
else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
...
...
@@ -187,7 +187,7 @@ installed software in a non-standard prefix.
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
AC_MSG_RESULT([no])
AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
...
...
configure
View file @
9d3627e3
...
...
@@ -11259,7 +11259,7 @@ for ac_func in alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf
\
sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam
\
sched_rr_get_interval
\
sigaction sigaltstack siginterrupt sigpending sigrelse
\
sigaction sigaltstack sig
fillset sig
interrupt sigpending sigrelse
\
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat
sync
\
sysconf tcgetpgrp tcsetpgrp tempnam timegm
times
tmpfile tmpnam tmpnam_r
\
truncate uname
unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4
\
...
...
configure.ac
View file @
9d3627e3
...
...
@@ -3474,7 +3474,7 @@ AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
sched_rr_get_interval \
sigaction sigaltstack siginterrupt sigpending sigrelse \
sigaction sigaltstack sig
fillset sig
interrupt sigpending sigrelse \
sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
...
...
pyconfig.h.in
View file @
9d3627e3
...
...
@@ -896,6 +896,9 @@
/* Define to 1 if you have the `sigaltstack' function. */
#undef HAVE_SIGALTSTACK
/* Define to 1 if you have the `sigfillset' function. */
#undef HAVE_SIGFILLSET
/* Define to 1 if `si_band' is a member of `siginfo_t'. */
#undef HAVE_SIGINFO_T_SI_BAND
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment