gh-103053: Skip test_freeze_simple_script() on PGO build (#109591)

Skip test_freeze_simple_script() of test_tools.test_freeze if Python
is built with "./configure --enable-optimizations", which means with
Profile Guided Optimization (PGO): it just makes the test too slow.
The freeze tool is tested by many other CIs with other (faster)
compiler flags.

test.pythoninfo now gets also get_build_info() of
test.libregrtests.utils.
This commit is contained in:
Victor Stinner 2023-09-20 03:58:34 +02:00 committed by GitHub
parent 3e3a7da590
commit 81cd1bd713
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 10 deletions

View File

@ -310,16 +310,8 @@ def get_build_info():
elif '-flto' in ldflags_nodist:
optimizations.append('LTO')
# --enable-optimizations
pgo_options = (
# GCC
'-fprofile-use',
# clang: -fprofile-instr-use=code.profclangd
'-fprofile-instr-use',
# ICC
"-prof-use",
)
if any(option in cflags_nodist for option in pgo_options):
if support.check_cflags_pgo():
# PGO (--enable-optimizations)
optimizations.append('PGO')
if optimizations:
build.append('+'.join(optimizations))

View File

@ -956,6 +956,16 @@ def collect_tempfile(info_add):
info_add('tempfile.gettempdir', tempfile.gettempdir())
def collect_libregrtest_utils(info_add):
try:
from test.libregrtest import utils
except ImportError:
return
info_add('libregrtests.build_info', ' '.join(utils.get_build_info()))
def collect_info(info):
error = False
info_add = info.add
@ -995,6 +1005,7 @@ def collect_info(info):
collect_tkinter,
collect_windows,
collect_zlib,
collect_libregrtest_utils,
# Collecting from tests should be last as they have side effects.
collect_test_socket,

View File

@ -773,6 +773,21 @@ def python_is_optimized():
return final_opt not in ('', '-O0', '-Og')
def check_cflags_pgo():
# Check if Python was built with ./configure --enable-optimizations:
# with Profile Guided Optimization (PGO).
cflags_nodist = sysconfig.get_config_var('PY_CFLAGS_NODIST') or ''
pgo_options = (
# GCC
'-fprofile-use',
# clang: -fprofile-instr-use=code.profclangd
'-fprofile-instr-use',
# ICC
"-prof-use",
)
return any(option in cflags_nodist for option in pgo_options)
_header = 'nP'
_align = '0n'
_vheader = _header + 'n'

View File

@ -15,6 +15,10 @@ with imports_under_tool('freeze', 'test'):
@support.requires_zlib()
@unittest.skipIf(sys.platform.startswith('win'), 'not supported on Windows')
@support.skip_if_buildbot('not all buildbots have enough space')
# gh-103053: Skip test if Python is built with Profile Guided Optimization
# (PGO), since the test is just too slow in this case.
@unittest.skipIf(support.check_cflags_pgo(),
'test is too slow with PGO')
class TestFreeze(unittest.TestCase):
@support.requires_resource('cpu') # Building Python is slow

View File

@ -0,0 +1,4 @@
Skip test_freeze_simple_script() of test_tools.test_freeze if Python is built
with ``./configure --enable-optimizations``, which means with Profile Guided
Optimization (PGO): it just makes the test too slow. The freeze tool is tested
by many other CIs with other (faster) compiler flags. Patch by Victor Stinner.