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.
(cherry picked from commit
81cd1bd713624c3d26b647f3d28f2fd905887a0d)
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))
pass
+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
collect_tkinter,
collect_windows,
collect_zlib,
+ collect_libregrtest_utils,
# Collecting from tests should be last as they have side effects.
collect_test_socket,
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'
if hasattr(sys, "getobjects"):
@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
--- /dev/null
+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.