Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Breakes with -OO flag in script #6345

Closed
baterflyrity opened this issue Nov 4, 2021 · 15 comments · Fixed by #6361
Closed

Breakes with -OO flag in script #6345

baterflyrity opened this issue Nov 4, 2021 · 15 comments · Fixed by #6361
Labels
area:dependency Caused by a dependency of PyInstaller

Comments

@baterflyrity
Copy link

Description of the issue

Running pyinstaller (python 3.10) with double optimization raises error: yacc: Can not build parser.

Context information (for bug reports)

  • Output of pyinstaller --version: (paste here)
  • Version of Python: 4.6
  • Platform: Windows 10 x64 (RU)
  • How you installed Python: chocolatey
  • Did you also try this on another platform? No

A minimal example program which shows the error

from PyInstaller.__main__ import run as pack
set PYTHONOPTIMIZE=2 && pyinstaller myscript.py

Stacktrace / full error message

C:\Python310\lib\site-packages\pycparser\c_parser.py:20: RuntimeWarning: parsing methods must have __doc__ for pycparser to work properly
  class CParser(PLYParser):
WARNING: There was a problem loading the table file: KeyError('p_direct_id_declarator_1')
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:513: No documentation string specified in function 'p_translation_unit_or_empty' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:522: No documentation string specified in function 'p_translation_unit_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:529: No documentation string specified in function 'p_translation_unit_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:540: No documentation string specified in function 'p_external_declaration_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:545: No documentation string specified in function 'p_external_declaration_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:550: No documentation string specified in function 'p_external_declaration_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:556: No documentation string specified in function 'p_external_declaration_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:561: No documentation string specified in function 'p_pp_directive' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:567: No documentation string specified in function 'p_pppragma_directive' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:579: No documentation string specified in function 'p_function_definition_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:596: No documentation string specified in function 'p_function_definition_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:607: No documentation string specified in function 'p_statement' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:660: No documentation string specified in function 'p_pragmacomp_or_statement' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:680: No documentation string specified in function 'p_decl_body' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:740: No documentation string specified in function 'p_declaration' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:749: No documentation string specified in function 'p_declaration_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:760: No documentation string specified in function 'p_declaration_specifiers_no_type_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:765: No documentation string specified in function 'p_declaration_specifiers_no_type_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:770: No documentation string specified in function 'p_declaration_specifiers_no_type_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:776: No documentation string specified in function 'p_declaration_specifiers_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:781: No documentation string specified in function 'p_declaration_specifiers_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:786: No documentation string specified in function 'p_declaration_specifiers_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:791: No documentation string specified in function 'p_declaration_specifiers_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:796: No documentation string specified in function 'p_declaration_specifiers_5' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:801: No documentation string specified in function 'p_declaration_specifiers_6' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:807: No documentation string specified in function 'p_storage_class_specifier' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:816: No documentation string specified in function 'p_function_specifier' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:821: No documentation string specified in function 'p_type_specifier_no_typeid' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:837: No documentation string specified in function 'p_type_specifier' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:845: No documentation string specified in function 'p_type_qualifier' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:852: No documentation string specified in function 'p_init_declarator_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:861: No documentation string specified in function 'p_init_declarator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:867: No documentation string specified in function 'p_id_init_declarator_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:873: No documentation string specified in function 'p_id_init_declarator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:881: No documentation string specified in function 'p_specifier_qualifier_list_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:886: No documentation string specified in function 'p_specifier_qualifier_list_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:891: No documentation string specified in function 'p_specifier_qualifier_list_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:896: No documentation string specified in function 'p_specifier_qualifier_list_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:905: No documentation string specified in function 'p_struct_or_union_specifier_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:916: No documentation string specified in function 'p_struct_or_union_specifier_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:934: No documentation string specified in function 'p_struct_or_union_specifier_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:953: No documentation string specified in function 'p_struct_or_union' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:961: No documentation string specified in function 'p_struct_declaration_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:970: No documentation string specified in function 'p_struct_declaration_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1008: No documentation string specified in function 'p_struct_declaration_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1013: No documentation string specified in function 'p_struct_declaration_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1018: No documentation string specified in function 'p_struct_declarator_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1027: No documentation string specified in function 'p_struct_declarator_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1032: No documentation string specified in function 'p_struct_declarator_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1041: No documentation string specified in function 'p_enum_specifier_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1047: No documentation string specified in function 'p_enum_specifier_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1052: No documentation string specified in function 'p_enum_specifier_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1058: No documentation string specified in function 'p_enumerator_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1071: No documentation string specified in function 'p_enumerator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1087: No documentation string specified in function 'p_declarator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1199: No documentation string specified in function 'p_pointer' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1229: No documentation string specified in function 'p_type_qualifier_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1235: No documentation string specified in function 'p_parameter_type_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1244: No documentation string specified in function 'p_parameter_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1264: No documentation string specified in function 'p_parameter_declaration_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1276: No documentation string specified in function 'p_parameter_declaration_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1307: No documentation string specified in function 'p_identifier_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1317: No documentation string specified in function 'p_initializer_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1322: No documentation string specified in function 'p_initializer_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1331: No documentation string specified in function 'p_initializer_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1343: No documentation string specified in function 'p_designation' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1351: No documentation string specified in function 'p_designator_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1357: No documentation string specified in function 'p_designator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1363: No documentation string specified in function 'p_type_name' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1374: No documentation string specified in function 'p_abstract_declarator_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1382: No documentation string specified in function 'p_abstract_declarator_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1387: No documentation string specified in function 'p_abstract_declarator_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1397: No documentation string specified in function 'p_direct_abstract_declarator_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1401: No documentation string specified in function 'p_direct_abstract_declarator_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1412: No documentation string specified in function 'p_direct_abstract_declarator_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1422: No documentation string specified in function 'p_direct_abstract_declarator_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1433: No documentation string specified in function 'p_direct_abstract_declarator_5' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1442: No documentation string specified in function 'p_direct_abstract_declarator_6' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1452: No documentation string specified in function 'p_direct_abstract_declarator_7' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1463: No documentation string specified in function 'p_block_item' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1471: No documentation string specified in function 'p_block_item_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1478: No documentation string specified in function 'p_compound_statement_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1484: No documentation string specified in function 'p_labeled_statement_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1488: No documentation string specified in function 'p_labeled_statement_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1492: No documentation string specified in function 'p_labeled_statement_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1496: No documentation string specified in function 'p_selection_statement_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1500: No documentation string specified in function 'p_selection_statement_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1504: No documentation string specified in function 'p_selection_statement_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1509: No documentation string specified in function 'p_iteration_statement_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1513: No documentation string specified in function 'p_iteration_statement_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1517: No documentation string specified in function 'p_iteration_statement_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1521: No documentation string specified in function 'p_iteration_statement_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1526: No documentation string specified in function 'p_jump_statement_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1530: No documentation string specified in function 'p_jump_statement_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1534: No documentation string specified in function 'p_jump_statement_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1538: No documentation string specified in function 'p_jump_statement_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1544: No documentation string specified in function 'p_expression_statement' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1551: No documentation string specified in function 'p_expression' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1564: No documentation string specified in function 'p_typedef_name' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1568: No documentation string specified in function 'p_assignment_expression' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1582: No documentation string specified in function 'p_assignment_operator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1597: No documentation string specified in function 'p_constant_expression' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1601: No documentation string specified in function 'p_conditional_expression' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1610: No documentation string specified in function 'p_binary_expression' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1636: No documentation string specified in function 'p_cast_expression_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1640: No documentation string specified in function 'p_cast_expression_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1644: No documentation string specified in function 'p_unary_expression_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1648: No documentation string specified in function 'p_unary_expression_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1655: No documentation string specified in function 'p_unary_expression_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1664: No documentation string specified in function 'p_unary_operator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1674: No documentation string specified in function 'p_postfix_expression_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1678: No documentation string specified in function 'p_postfix_expression_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1682: No documentation string specified in function 'p_postfix_expression_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1688: No documentation string specified in function 'p_postfix_expression_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1697: No documentation string specified in function 'p_postfix_expression_5' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1703: No documentation string specified in function 'p_postfix_expression_6' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1709: No documentation string specified in function 'p_primary_expression_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1713: No documentation string specified in function 'p_primary_expression_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1717: No documentation string specified in function 'p_primary_expression_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1723: No documentation string specified in function 'p_primary_expression_4' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1727: No documentation string specified in function 'p_primary_expression_5' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1735: No documentation string specified in function 'p_offsetof_member_designator' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1749: No documentation string specified in function 'p_argument_expression_list' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1759: No documentation string specified in function 'p_identifier' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1763: No documentation string specified in function 'p_constant_1' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1786: No documentation string specified in function 'p_constant_2' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1803: No documentation string specified in function 'p_constant_3' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1815: No documentation string specified in function 'p_unified_string_literal' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1826: No documentation string specified in function 'p_unified_wstring_literal' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1837: No documentation string specified in function 'p_brace_open' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1843: No documentation string specified in function 'p_brace_close' (ignored)
WARNING: C:\Python310\lib\site-packages\pycparser\c_parser.py:1849: No documentation string specified in function 'p_empty' (ignored)
ERROR: start symbol translation_unit_or_empty undefined
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Python310\lib\site-packages\PyInstaller\__init__.py", line 17, in <module>
    from PyInstaller import compat
  File "C:\Python310\lib\site-packages\PyInstaller\compat.py", line 206, in <module>
    from win32ctypes.pywin32 import pywintypes  # noqa: F401, E402
  File "C:\Python310\lib\site-packages\win32ctypes\pywin32\__init__.py", line 11, in <module>
    from win32ctypes.pywin32 import win32api
  File "C:\Python310\lib\site-packages\win32ctypes\pywin32\win32api.py", line 12, in <module>
    from win32ctypes.core import (
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 672, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 632, in _load_backward_compatible
  File "C:\Python310\lib\site-packages\win32ctypes\core\__init__.py", line 36, in load_module
    module = importlib.import_module(self.redirect_module)
  File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Python310\lib\site-packages\win32ctypes\core\cffi\_common.py", line 12, in <module>
    from ._util import ffi
  File "C:\Python310\lib\site-packages\win32ctypes\core\cffi\_util.py", line 17, in <module>
    ffi.set_unicode(True)
  File "C:\Python310\lib\site-packages\cffi\api.py", line 560, in set_unicode
    self.cdef("typedef wchar_t TBYTE;"
  File "C:\Python310\lib\site-packages\cffi\api.py", line 112, in cdef
    self._cdef(csource, override=override, packed=packed, pack=pack)
  File "C:\Python310\lib\site-packages\cffi\api.py", line 126, in _cdef
    self._parser.parse(csource, override=override, **options)
  File "C:\Python310\lib\site-packages\cffi\cparser.py", line 389, in parse
    self._internal_parse(csource)
  File "C:\Python310\lib\site-packages\cffi\cparser.py", line 394, in _internal_parse
    ast, macros, csource = self._parse(csource)
  File "C:\Python310\lib\site-packages\cffi\cparser.py", line 336, in _parse
    ast = _get_parser().parse(fullcsource)
  File "C:\Python310\lib\site-packages\cffi\cparser.py", line 53, in _get_parser
    _parser_cache = pycparser.CParser()
  File "C:\Python310\lib\site-packages\pycparser\c_parser.py", line 111, in __init__
    self.cparser = yacc.yacc(
  File "C:\Python310\lib\site-packages\pycparser\ply\yacc.py", line 3352, in yacc
    raise YaccError('Unable to build parser')
pycparser.ply.yacc.YaccError: Unable to build parser
python-BaseException
@baterflyrity baterflyrity added the triage Please triage and relabel this issue label Nov 4, 2021
@bwoodsend
Copy link
Member

This looks like a bug way down the dependency chain. Can you try this minimal example?

# test.py
import pycparser
pycparser.CParser()

Run it in optimized mode:

python -OO test.py

I expect that you get the same error but shorter?

@baterflyrity
Copy link
Author

@bwoodsend , it gives the same result. Btw -O flag is obviously working.

@bwoodsend
Copy link
Member

OK, in that case I suggest you report that that code snippet fails to eliben/pycparser.

For what it's worth, using -OO rarely saves more than 100KB or so in overall executable size - it's a fairly useless feature.

@bwoodsend bwoodsend added area:dependency Caused by a dependency of PyInstaller and removed triage Please triage and relabel this issue labels Nov 4, 2021
@baterflyrity
Copy link
Author

baterflyrity commented Nov 5, 2021

Thanks for hint. So waiting for pyCParser resolve this issue.

@baterflyrity
Copy link
Author

@bwoodsend , according to pyCParser -OO flag is not supported. So i suggest remove this section from docs and leave hint about this is unsupported.

@bwoodsend
Copy link
Member

Sounds like downgrading to pycparser==2.17 is an option (albeit a reluctant one)? But yes, let's just get rid of it. -OO shouldn't exist IMO anyway - in Python or PyInstaller.

@bwoodsend
Copy link
Member

I suppose if we really did want to keep it we could replace compiling via python -OO -m PyInstaller code.py with our own pyinstaller -OO code.py option which runs in normal mode but manually strips docstrings as part of the build process but I don't want to do that.

@bwoodsend
Copy link
Member

@rokm @Legorooj Any objections to completely scrapping the -OO section? Technically it should still work on the other platforms but I think I'd prefer consistency over the ability to strip a few KB.

@bwoodsend
Copy link
Member

Or another ugly option I suppose would be to add pycparser<=2.17 ; 'sys_platform=win32' into the install_requires section of the setup.cfg? I don't like the idea of that either.

@rokm
Copy link
Member

rokm commented Nov 5, 2021

@rokm @Legorooj Any objections to completely scrapping the -OO section? Technically it should still work on the other platforms but I think I'd prefer consistency over the ability to strip a few KB.

You mean somewhere in the docs, there's a section that encourages people to use -OO with PyInstaller? By all means, get rid of it...

@rokm
Copy link
Member

rokm commented Nov 5, 2021

Maybe we could also detect -OO and exit with a descriptive error?

@bwoodsend
Copy link
Member

Yeah it's here.

Maybe we could also detect -OO and exit with a descriptive error?

I think if we were to do that I'd prefer the logic to be if importing win32ctypes fails and -OO is enabled: reraise a descriptive error. Maybe start deliberately blocking -OO in v5.0.

@rokm
Copy link
Member

rokm commented Nov 5, 2021

I think if we were to do that I'd prefer the logic to be if importing win32ctypes fails and -OO is enabled: reraise a descriptive error. Maybe start deliberately blocking -OO in v5.0.

That sounds reasonable, too.

bwoodsend added a commit to bwoodsend/pyinstaller that referenced this issue Nov 10, 2021
Running with -OO no longer works on Windows, makes such an insignificant
difference to the overall output size and as generally agreed to be more trouble
than it's worth.
@bwoodsend bwoodsend linked a pull request Nov 10, 2021 that will close this issue
@Legorooj
Copy link
Member

No objections. Apologies for not responding sooner.

Legorooj added a commit that referenced this issue Nov 10, 2021
* Windows: Catch/re-raise failure to load win32ctypes under -OO.

  PyInstaller can no longer run under Python's optimised mode due to the
  dependency chain PyInstaller -> win32ctypes -> cffi -> pycparser which
  has started using/ Yacc which interprets grammars from docstrings.

* Docs: Remove running with optimisations section (#6345).

  Running with -OO no longer works on Windows, makes such an insignificant
  difference to the overall output size and as generally agreed to be more trouble
  than it's worth.

* Linux: Explicitly check that binutils tools are available.

  This should catch issues like:
  #6358 (comment)

* Abort build if any obsolete stdlib backports are installed.

  Most prominently, check for `enum34` - the backport of `enum` - which masks the
  stdlib variant causing  issues like #5728.

Co-authored-by: Jasper Harrison <legorooj@protonmail.com>
Legorooj added a commit that referenced this issue Nov 10, 2021
* Windows: Catch/re-raise failure to load win32ctypes under -OO.

  PyInstaller can no longer run under Python's optimised mode due to the
  dependency chain PyInstaller -> win32ctypes -> cffi -> pycparser which
  has started using/ Yacc which interprets grammars from docstrings.

* Docs: Remove running with optimisations section (#6345).

  Running with -OO no longer works on Windows, makes such an insignificant
  difference to the overall output size and as generally agreed to be more trouble
  than it's worth.

* Linux: Explicitly check that binutils tools are available.

  This should catch issues like:
  #6358 (comment)

* Abort build if any obsolete stdlib backports are installed.

  Most prominently, check for `enum34` - the backport of `enum` - which masks the
  stdlib variant causing  issues like #5728.

Co-authored-by: Jasper Harrison <legorooj@protonmail.com>
Drapersniper added a commit to Drapersniper/Qbitrr that referenced this issue Feb 1, 2022
…t sure why it didn't cause problems before tbh)
RoadrunnerWMC added a commit to NSMBW-Community/Reggie-Updated that referenced this issue Feb 5, 2022
1) PyInstaller no longer lets you use -OO for built apps. Which is a shame, because -OO did significantly improve performance on some systems. In any case, the optimization level's been reduced to -O, which is hopefully still good enough for everyone. See pyinstaller/pyinstaller#6345
2) It seems the PyInstaller initialization code itself now uses the threading module, so excluding it is no longer safe even if the target application doesn't use that module. So I removed that option.
@LefterisJP
Copy link

Hey guys just to add to this issue. Some programs make sense to run with any -O argument to remove asserts and any if __debug__ branches.

This is why this cffi + pycparser issue is so frustrating.

Apart from downgrading pycparser, is there a more general way to have 1 dependency be unoptimized and the rest optimized with pyinstaller?

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area:dependency Caused by a dependency of PyInstaller
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants