[3.6] pythoninfo: ignore OSError(ENOSYS) on getrandom() (GH-3655) (#3657)

(cherry picked from commit a92941ff12)
This commit is contained in:
Miss Islington (bot) 2017-09-19 08:34:24 -07:00 committed by Victor Stinner
parent f37dd11f0d
commit 72c05e31d6

View file

@ -2,6 +2,7 @@
Collect various informations about Python to help debugging test failures. Collect various informations about Python to help debugging test failures.
""" """
from __future__ import print_function from __future__ import print_function
import errno
import re import re
import sys import sys
import traceback import traceback
@ -222,12 +223,18 @@ def collect_os(info_add):
if hasattr(os, 'getrandom'): if hasattr(os, 'getrandom'):
# PEP 524: Check if system urandom is initialized # PEP 524: Check if system urandom is initialized
try:
try: try:
os.getrandom(1, os.GRND_NONBLOCK) os.getrandom(1, os.GRND_NONBLOCK)
state = 'ready (initialized)' state = 'ready (initialized)'
except BlockingIOError as exc: except BlockingIOError as exc:
state = 'not seeded yet (%s)' % exc state = 'not seeded yet (%s)' % exc
info_add('os.getrandom', state) info_add('os.getrandom', state)
except OSError as exc:
# Python was compiled on a more recent Linux version
# than the current Linux kernel: ignore OSError(ENOSYS)
if exc.errno != errno.ENOSYS:
raise
def collect_readline(info_add): def collect_readline(info_add):